Массив различных индексов для текстуры / вершин - PullRequest
2 голосов
/ 01 мая 2011

Я пытаюсь нарисовать глобус в Android, я использую OpenGL для этого.Однако, чтобы было легче понять, я начну с создания простого трехмерного куба.Я использую Blender для создания своего трехмерного объекта (куба) и экспортирую его как файл .obj после того, как развернул его, чтобы получить текстуры Coords (vt).Проблема в том, что я получаю 8 разных вершин и 9 разных текстурных координат.

v 1.000000 -1.000000 -1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 -1.000000 1.000000
v -1,000000 -1,000000 -1,000000
v 1,000000 1,000000 -1,000000
v 0,999999
вт -1,000000 -1,000000
вт -1,000000 0,000000
вт 0,000000 1,000000
вт 1,000000 1,000000
вт 1,000000 0,000000
вт -1,000000 1,000000
вт 1,000000 -1,0000 * 10,00

Следовательно, я также получаю настоящую испорченную настройку Индексов, которая делает невозможным перестановку положения координат текстуры в соответствии с положением в вершинах.

f 5/1 1/ 2 4/3
f 5/1 4/3 8/4
f 3/1 7/5 8/6
f 3/1 8/6 4/7
f 2 /1 6/5 3/4
f 6/7 7/1 3/2
f 1/1 5/5 2/4
f 5/7 6/1 2/2
f5/5 8/8 6/1
f 8/1 7/2 6/9
f 1/1 2/2 3/3
f 1/1 3/3 4/4

С iv 'Теперь я могу использовать только один массив для индексов, поскольку одна вершина состоит из вершин и текстурных координат.Поэтому мне нужно немного переставить один из массивов v / vt.Но я не могу, поскольку, если я переместлю vt (в положение 1) в положение 5 (первая линия граней), мне нужно будет переместить его снова, чтобы он прошел весь путь через массив индексов.

В общем, мне интересно, если это проблема с программой "Blender" или есть решение, которое я могу применить.

1 Ответ

2 голосов
/ 01 мая 2011

То, что у вас там, совершенно нормально, и на самом деле я ожидал бы увидеть более 9 текстурных координат, если бы куб был развернут правильно.если сделать это обычным способом, куб будет развернут, я думаю, у вас должно быть 12 vts.

Вся вершина обычно состоит из координат xyz, а также из нормалей и текстурных координат.Одна вершина может содержать только одну позицию индекса (с учетом массива индекса в OpenGL), если все эти части одинаковы.Если вы посмотрите, как определены грани, они состоят из вершин, которые включают в себя как av, так и vt.Если у вас также есть нормали, у них будет дополнительное число для представления каждого используемого нормали (или строки vn в экспорте OBJ).В лицах возьмите вершины 5/1, 5/5 и 5/7.Координата xyz такая же, но координата текстуры - нет.Это связано с тем, что в развернутом виде одна и та же точка в трехмерном пространстве появляется в трех местах в редакторе UV / Image.Из-за этого в массиве индексов на стороне OpenGL будет 3 отдельных индекса.

...