Итак, я пишу синтаксический анализатор для файлов модели wavej для wavefront, и есть несколько нерегулярностей, которые я не уверен, как обращаться.Wavefront OBJ Format -> Groups & usemtl command
Так основаны от моего чтения, сетка может быть разбита на группы, используя команду «г» и материал может быть присвоен каждой группе, используя команду «usemtl»
Так идеальный файл будет выглядеть как это:
g group1
usemtl material1
//vertices
//UV coords
//faces
g group2
usemtl material2
//vertices
//UV coords
//faces
etc....
Однако в некоторых OBJ файлы я скачал (с места, как Turbosquid), я видел одну группу содержат несколько «usemtl», как это:
g group1
usemtl material1
//vertices, faces, etc
usemtl material2
//vertices, faces, etc
g group2
usematerial material3
//vertices, faces, etc
Так что, если в группе может быть несколько материалов, то какая точка группы?
Эти файлы считаются «нестандартными» или сломанными?
Следует ли мне группировать лица на основе общего материала вместо общей группы?
Наличие нескольких материалов в группе затруднит мой код (например, скажем, мне нужно создать набор из N случайных выборок на группе треугольников/граней с определенным материалом. Если есть только один материал в group Я могу просто просмотреть треугольники в этой группе и сгенерировать образцы. Но если эта группа содержала некоторые треугольники с правильным материалом, а некоторые без нее, мне пришлось бы сделать какую-то странную проверку материала поверх группы, проверяя, чтобы генерировать правильные образцы. Это только один пример - есть и другие, где это также становится проблемой).
лучше сделать его похожим на код с объяснением – Gahan