1


Я написал небольшой синтаксический анализатор .obj для небольшого волнового фронта (формат 3D-модели), я могу правильно отображать геометрию, но у меня есть проблемы с текстурированием.
Единственный способ получить правильную текстуру - делить модель в моем 3d-редакторе, экспортировать и разглашать ее таким образом. Т.е.: я больше не использую данные вершин, каждый треугольник на ней так что массив indexBuffer выглядит так [0,1,2,3,4,5,6 ...], которого я хочу избежать.

Правильной текстура/неэффективная геометрия (нет повторного использования вершин: 36 вершин): Correct http://imageshack.us/a/img29/2242/textureright.jpg
Неправильной текстура/право топологии (Обмен данных: 8 вершин только = эффективные): Wrong http://imageshack.us/a/img443/6160/texturewrong.jpg

Я думал попробовать и отделить буфер UVs от indexBuffer, предназначенный для вершин, но не нашел способ сделать это; если это действительно выполнимо.
Я также испортил код агаля, но не добился никаких результатов.

Желаемый конец может передавать разные координаты UVs в одну и ту же вершину в контексте рисунка треугольника.
Что делать?
Спасибо. (Я новичок в программировании на 3d)Ультрафиолетовое картирование в Stage3D/AS3

ответ

1

Может показаться, что вам нужна только одна вершина на «место вершины» вашей модели, но из того, что я понимаю в партитуре .obj, вам нужно определить свои вершины вокруг FACES. Это означает, что у вас может быть несколько вершин для некоторых мест - в зависимости от того, сколько лиц примыкает к этому местоположению, - но окупаемость вы можете иметь разные координаты UV для этих вершин в том же месте.
Я бы предложил изменить ваш синтаксический анализатор, чтобы создать вершины на основе лиц, которые они определяют, а не только их позиции. Я знаю, что это набирает количество вершин, но из того, что я читал, неизбежно, если вам нужны разные УФ-лучи для того же места в вершине.
Итак, к сожалению, я уверен, что ваш первый вариант - это путь.

+0

Я не могу поверить, что это единственный вариант. Это не относится к парсеру .obj only: Предположим, что я хочу создать квад и иметь два треугольника двух разных цветов, я уверен, что это может быть достигнуто каким-то другим способом, чем с 6 вершинами для этого одного квадранта. Существующие игры stage3d не могут иметь количество вершин, которые экспоненциально экспонируются таким образом ... Спасибо за ответ, хотя :) – chadiik

+0

Если вы прокрутите вниз до заголовка, который читает «Определение геометрии с буферами вершин и буферами индексирования», на этой странице есть информация. .. http://www.adobe.com/devnet/flashplayer/articles/how-stage3d-works.html о том, как буфер вершин определяет грани. – moosefetcher

0

кажется, что ваша операция сварки неправильная. Для сварки вершин вы должны быть уверены, что позиции, UV-координаты, нормали и касательные (если они вам нужны) равны

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