Я написал небольшой анализатор файлов .obj для wavefront (формат 3D-модели), я могу правильно отображать геометрию, но у меня проблемы с ее правильным текстурированием.
Единственный способ Я могу получить правильную текстуру, разделив модель в моем 3D-редакторе, экспортируя и анализируя ее таким образом.. то есть: я больше не делюсь данными вершин, каждый треугольник сам по себе, поэтому мой массив indexBuffer выглядит как это [0,1,2,3,4,5,6...], которого я хочу избежать.
Правильная текстура/неэффективная геометрия (без повторного использования вершин: 36 вершин): http://imageshack.us/a/img29/2242/textureright.jpg
Неверная текстура/правильная топология (Совместное использование данных: только 8 вершин = эффективно): http://imageshack.us/a/img443/6160/texturewrong.jpg
Я думал попробовать отделить буфер UV от indexBuffer, предназначенного для вершин, но не нашел способа сделать это; если это действительно выполнимо.
Я также возился с кодом agal, но не добился никаких результатов.
Желаемый результат — возможность передавать разные координаты UV в одну и ту же вершину в контексте рисуемого треугольника.
Что делать?
Спасибо. (я новичок в 3D-программировании)
Развертка UV в Stage3D/AS3
Ответы (2)
Может показаться, что вам нужна только одна вершина на «расположение вершины» вашей модели, но, насколько я понимаю парсер .obj, вам нужно определить свои вершины вокруг FACES. Это означает, что у вас может быть несколько вершин для некоторых местоположений — в зависимости от того, сколько граней примыкает к этому местоположению — но выигрыш в том, что вы можете иметь разные UV-координаты для этих вершин в одном и том же месте.
Я предлагаю изменить ваш синтаксический анализатор на создавать вершины на основе граней, которые они определяют, а не только их положения. Я знаю, что это увеличивает количество вершин, но из того, что я читал, это неизбежно, если вам нужны разные UV для одного и того же местоположения вершины.
Так что, к сожалению, я почти уверен, что ваш первый вариант - это способ идти.
похоже, что ваша операция сварки неверна. Для сварки вершин вы должны быть уверены, что позиции, UV-координаты, нормали и касательные (если они вам нужны) равны