2013-02-16 2 views
4

Я написал простой читатель для формата файла 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.

ответ

6

Хорошо, я нашел решение, которому пришлось очистить свой разум простым самолетом. Поскольку каждое лицо является треугольником, конечное число вершин было в три раза больше, чем указано в атрибуте count полилиста. Таким образом, для куба было 36 - не 24. В конце концов, 36 действительно правильно рисует куб. Таким образом, в основном это был мой мозг.

Смежные вопросы