Я написал простую читалку для файлового формата COLLADA
, и вроде работает нормально. Теперь у меня есть экспортированная из Blender сетка куба, которая разделена по ребрам и триангулирована, поэтому у нее должно быть 12 треугольников (2 на грань), 24 вершины (4 на грань) и 36 индексов (6 на грань). Эта сетка также имеет данные нормалей и UV-карты.
Файл COLLADA
имеет 24 вершины, 12 нормалей и 36 UV, поэтому я предполагаю, что нормали относятся к треугольнику, а UV - к индексу. Счетчик polylist
для треугольников равен 12, что правильно, а vcount
имеет двенадцать троек, так что это тоже правильно. Теперь <p>
, который является списком индексов, имеет 108 записей, где 0, 3, 6 и т. Д. - это индексы вершин, 1, 4, 7 и т. Д. - нормальные индексы, а 2, 5, 8 и т. Д. - UV-индексы.
У меня есть внутренняя структура для вершин, которая состоит из позиции (vec3
), нормали (vec3
) и координаты UV (vec2
). Для рисования сеток я использую буферы вершин OpenGL и имею отдельный список индексов.
Дело в том, что после загрузки меша у меня должно быть 24 вершины? 108 записей в <p>
переводятся в 36 вершин. В чем проблема с индексами?
Возможно, мне здесь не хватает чего-то очень простого, но я просто не могу этого увидеть.
Файл COLLADA
находится здесь.