Почему мой анализатор OBJ рендерит меши так?

Я взял на себя обязательство добавить поддержку парсера / импортера OBJ в движок 3D-рендеринга, над которым я работал. Я следовал спецификациинашел ЗДЕСЬ почти «до тройника», за исключением текущего ограничения ограничения всей поддержки группами, гранями, вершинами, нормалями и текстурными координатами (поэтому пока нет ни библиотеки материалов, ни поддержки произвольной формы). Моя цель состояла в том, чтобы просто анализировать построчно - генерировать объектно-ориентированный, иерархический древовидный граф сцены по мере того, как я продвигался вперед, - и позволить разработчику автоматически связывать данные с шейдерной программой с очень небольшим количеством ручных вызовов, чтобы начать манипулирование и просмотр сетки. Конечный результат - мой двигатель успешно разбираетсамый (если невсе) допустимые файлы формата OBJ, извлекая соответствующие данные и отправляя их в базовый шейдер для рендеринга. Однако, хотя данные, как представляется, правильно представлены в графе сцены, по тем или иным причинам они редко отображаются правильно ...

Обратите внимание, что простая плоскость (экспортированная из 3DS Max, содержащая только 4 вершины и 2 грани) отрисовывается идеально, но куб или что-то более продвинутое обычно выглядит примерно так:

http://youtu.be/1x6bnuhAXWY

Я не могу сказать, где что-то идет не так, и AFAIK мой код должен на самом деле анализировать и просто отображать базовую геометрию ... Так почему бы и нет? Для удобства я загрузил свойпроект ЗДЕСЬ, Он содержит проект NetBeans с минимальной версией моего движка и одно тестовое приложение. Я также включил 3 разные версии сетки кубов OBJ и одну плоскость сетки. Приложение настраивается путем редактирования значений в верхней части Test.java, и единственными элементами управления вводом являются A, S, W и D для перемещения сетки и движение мыши для вращения сетки. И хотя мне удалось значительно сократить проект, наиболее заметные классы включают дополнительные комментарии / информацию в верхней части файла.

Учитывая все обстоятельства, я возьму все мысли, которые смогу придумать ... и это точно не останется недооцененным!

Ответы на вопрос(1)

Ваш ответ на вопрос