2 / 2 / 1
Регистрация: 12.05.2014
Сообщений: 53
|
||||||
1 | ||||||
Загрузка модели через ASSIMP22.11.2019, 16:10. Показов 3214. Ответов 22
Метки нет (Все метки)
Загружаю obj модель с помощью библиотеки assimp
получается такая картинка для проверки написал свой загрузчик формата obj В чем ошибка при загрузке модели через assimp? процедура загрузки
assimp.zip
0
|
22.11.2019, 16:10 | |
Ответы с готовыми решениями:
22
Assimp некорректно загружает модели? Как загружать модели с Assimp? Загрузка 3д модели C++ Загрузка 3D модели OpenGL |
22.11.2019, 19:22 | 2 |
Я пробовал летом AssimpNET из C#. Насколько я помню нужно либо траингулировать модель в 3D редакторе. Например, в Blender'е 2.81 можно поставить галочку "Triangulate Faces" (в разделе "Geometry" в окне экспорта). Второй вариант - это в настройках Assimp выставить траингуляцию. Возможно, в этом причина, а может нет.
1
|
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
|
|
22.11.2019, 19:37 | 3 |
посмотрел его модель и увидел что это так, хотя там 50 на 50 тоисть в моделе есть и треугольники и полигоны
0
|
22.11.2019, 20:27 | 5 |
Не знаю, как вы так оценили, что треугольников и прямоугольников 50 на 50. Я крутил модель со всех сторон и не нашёл ни одного треугольника, вижу, что все face'ы - прямоугольники. Кстати, раньше в Blender была возможность выделить фейсы с определённым числом вертексов "In edit mode, select > by number of sides. Set parameters to “greater than 4”". А сейчас я этой возможности не нашёл. Её убрали и перенесли в другое место? Или я невнимательно искал?
0
|
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
|
|
22.11.2019, 20:38 | 6 |
0
|
22.11.2019, 21:18 | 7 |
То есть у вас получается по примерной оценке, что количество прямоугольных фейсов равно количеству треугольных фейсов? Вы не ошиблись и их точно 50% на 50%? Я опять открыл модель и внимательно покрутил её и не нашёл ни одного треугольника. Вы не могли бы в "Edit Mode" выделить хотя бы один треугольный фейс и показать на скриншоте, где он находится?
По моей примерной оценке соотношение такое:
0
|
2 / 2 / 1
Регистрация: 12.05.2014
Сообщений: 53
|
|
22.11.2019, 21:39 [ТС] | 8 |
Разве флаг "aiProcess_Triangulate" принудительно не разбивает все полигоны на треугольники при импорте модели?
0
|
22.11.2019, 22:23 | 9 |
Да, это то что я имел ввиду, когда написал про настройку. Я в коде его не заметил. Попробуйте убрать его, а модель траингулируйте при экспорте, либо в Blender'е выберите всей фейсы и нажмите "Ctrl+T". Попробуйте для интереса, но скорее всего, не в этом проблема.
Добавлено через 4 минуты Я попробовал AssimpNET, но мне больше понравился вариант с экспортом в файл формата .dae (Collada), потому что во всех современных языках есть парсинг XML и это упрощает парсинг, а .dae -это XML. А ещё .dae умеет хранить анимации в отличае от .obj. Я сейчас изучаю импорт скелетной анимации и работу со скелетной анимацией. Просто крутить статические модели совсем не интересно. Интересно создавать анимации, разбор механизмов, работу механизмов, а это можно сделать на скелетной анимации. Добавлено через 1 минуту Assimp не на всех языках реализован. На некоторых он реализован, но заброшен и не доделан, как например, на JavaScript/WebGL. Я пишу парсер на TypeScript/WebGL из .dae (Collada). Это даёт больше контроля и возможность быстро переписать свой парсер на любой язык.
0
|
1471 / 826 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
22.11.2019, 22:46 | 10 |
Никто не экспортирует на тесте сразу итоговую модель из 100500 вершин.
Создают пару треугольников в 3д редакторе ручками и смотрят во что превращает экспортер. В порядке сложности отладка: 1) Пытаются отладить первым делом играя с настройками 3д редактора т.к. они наиболее доступны. ИМХО это очевидно. 2) Лезут в справку \ гугл играть с опциями импортера. 3)Самый адовый…пишут свой экспортер, фактически это бред т.к. 2019 год и форматов есть 100500, редакторов тьма, спец прог экспорта\импорта…еще в древнем халфе были 3д модели с анимациями.
0
|
2 / 2 / 1
Регистрация: 12.05.2014
Сообщений: 53
|
|
23.11.2019, 00:55 [ТС] | 11 |
Excalibur921, где в моем вопросе шла речь про экспорт?
Добавлено через 5 минут 8Observer8, если в 3д редакторе принудительно разбить все полигоны на треугольники, то assimp импортирует нормально. Получается, что assimp не умеет триангулировать или делает это неверно. Возможно, я неверно выставляю ключи импорта (пробовал разные комбинации - результат не меняется). Единственное найденное мной решение - перед импортом разбивать все полигоны на треугольники, результат разбивки записывать в файл и этот файл импортировать assimp'ом. Но хотелось бы импорт делать через assimp без предобработки.
0
|
23.11.2019, 01:55 | 12 |
Я вспомнил. У меня тоже в AssimpNET этот ключ не работал и результат получался такой же. Поэтому я и обратил на это внимание. Может я неправильно комбинировал ключи. Не похоже, чтобы это был такой большой баг. Я не разобрался, почему не работало. Не хотел тратить время. Мне проще сделать траингуляцию во время экспорта.
Кстати, в Blender'е если экспортировать в файл .dae (Collada), то галочка "Triangulate" установлена поумолчанию. Assimp умеет загружать .dae Да и, в принципе, ничего плохого нет если ставить галочку при экспорте в .obj. А если найдёте, как заставить Assimp траингулировать, то ещё лучше.
0
|
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
|
|
23.11.2019, 09:11 | 13 |
я писал что ошибся так как одной программой проверял вообщем она не правильно показала, неважно какой,
0
|
23.11.2019, 10:59 | 14 |
Вы написали:
"не ошибся" и меня смутило "меньше треугольников", потому что я не видел ни одного треугольника. нашёл, как можно выделить фейсы с определённым числом вертексов. В "Edit Mode" > "Select" > "Select All by Trait" > "Face by Side" > выбрать количество вершин. Треугольников гораздо меньше, чем прямоугольников. Они оказывается на внутренних поверхностях зубов:
0
|
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
|
|
23.11.2019, 11:08 | 15 |
Надо было написать: я ошибся, их намногО меньше, почему? потому что пользовался другой программой с неверной настройкой, я понятно объяснил? Так же я скинул картинку с зубом и выделенным треугольником.
0
|
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
|
|
23.11.2019, 11:55 | 17 |
0
|
23.11.2019, 12:35 | 18 |
Скорее всего, этот ключ только в C++ работает, а может ещё в Java работает. В реализации на C# этот ключ не работает. В реализации на Pascal тоже не работает. Я хотел попробовать реализацию Assimp на JavaScript, но проект давно заброшен: https://github.com/assimp/assimp-web У него всего 4 звезды. Тем более что на TypeScript не @types для Assimp, а у меня приоритет на TypeScript и WebGL.
0
|
2 / 2 / 1
Регистрация: 12.05.2014
Сообщений: 53
|
||||||
24.11.2019, 04:11 [ТС] | 19 | |||||
Не знаю, почему не получилось заставить работать флаг триангуляции assimp при импорте модели (даже в свежесобранной с гитхаба версии 4.1.0).
Тогда произведем триангуляцию сами после импорта (естественно, нижеприведенный метод триангуляции работает только с выпуклыми полигонами))))
Antikl, скиньте, пожалуйста, dll вашей библиотеки, в которой работает флаг триангуляции
0
|
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
|
|
24.11.2019, 05:37 | 20 |
тока это к версии 4.0.1
0
|
24.11.2019, 05:37 | |
24.11.2019, 05:37 | |
Помогаю со студенческими работами здесь
20
Загрузка модели из файла Загрузка ASE модели Загрузка модели в формате STEP Загрузка obj модели в OpenGl загрузка 3D модели в OpenGL (с++), помогите незнающему Проблема с загрузка модели из файла DirectX 11 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |