Вопрос

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

Это отлично сработало на паре моделей, которые я использовал, но тот, с которым я хочу работать, имеет что -то другое, что не учитывалось. Он имеет 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 элементами. Я получаю вершину из диапазона, поэтому, когда я пошел проверить, где это происходит, я увидел, что она была на этой линии, поэтому я предположил, потому что на линии есть больше данных, которые можно обработать. Вот вся вершина3.h

http://pastebin.com/dggsbsfe

И это строка кода, которая терпит неудачу. Вершины - вектор3.

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

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

Это было полезно?

Решение

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

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

 ___
|   |
|   |
|___|

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

 ___
|\  |
| \ |
|__\|

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top