Импорт 3ds Max OBJ с использованием C ++ - PullRequest
1 голос
/ 29 декабря 2010

Я создал загрузчик OBJ, который может импортировать файлы .OBJ, которые были экспортированы из 3DS Max, в мое простое приложение / просмотрщик OpenGL.В основе этого был Vector3.h, написанный с помощью некоторых учебных пособий.

Он отлично работал на паре моделей, которые я использовал, но у той, с которой я хочу работать, есть что-то другое, что не учитываетсяза.В его вершинах 4 точки вместо 3. Вот пример строки, с которой я работаю:

g Box02
usemtl Wood_Bark
s 4
f 1/1/1 2/2/1 3/3/1 4/4/2
f 4/1/3 3/2/3 5/3/3 

Первая строка 'f' содержит 4 интересующие меня вершины. Мой Vertex3.hпринимает X, Y, Z. В других моих моделях все линии были похожи на вторую линию 'f', только с 3 элементами.Я получаю вершину вне диапазона, поэтому, когда я пошел, чтобы проверить, где это происходит, я увидел, что она находится в этой строке, поэтому я предположил, потому что на линии есть больше данных, которые можно обработать.Вот весь Vertex3.h

http://pastebin.com/dgGSBSFe

И эта строка кода не работает.вершины - это вектор 3.

tempVertices.push_back ( vertices[--vertex] );

Мой вопрос: что такое 4-ая точка?Как бы вы объяснили это в чем-то вроде моего файла Vector3.h?Похоже, мне нужно создать Vector4.h и игнорировать 4-ую переменную, если в строке только 3.Но я хотел бы узнать больше о том, с чем я имею дело, и какие-либо советы о том, как это сделать.4-й элемент - это альфа или что-то еще?Как его использовать или вообще использовать в моих вычислениях в Vector3.h?

Ответы [ 2 ]

3 голосов
/ 29 декабря 2010

Лицо с четырьмя точками называется четырехугольником. Обычно, если вы хотите сделать это, вы должны разбить его на два треугольника.

Так, например, у вас есть это:

 ___
|   |
|   |
|___|

Вам нужно превратить это в:

 ___
|\  |
| \ |
|__\|

Предполагая, что вершины идут против часовой стрелки (по умолчанию в OpenGL), начиная с верхнего левого угла, вы можете сделать два треугольника. Вершинами первого треугольника будут первые, вторые и третьи вершины четырехугольника. Вершинами второго треугольника будут третьи, четвертые и первые вершины четырехугольника.

0 голосов
/ 19 января 2011

Почему вы не экспортируете только в виде треугольников?Конвертировать в EMesh в 3ds max, сделать все ребра видимыми, экспортировать.Или просто используйте соответствующую опцию экспорта OBJ.

...