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