我试图在 Android 中绘制一个地球仪,为此我使用 OpenGL。然而,为了更容易理解,我将从制作一个简单的 3D 立方体开始。我使用 Blender 创建我的 3D 对象(立方体),并在解包后将其导出为 .obj 文件以获取纹理坐标(vt)。问题是我得到 8 个不同的顶点和 9 个不同的纹理坐标。
V 1.000000 -1.0000 -1.000000 v
1.000000
-1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 来 入 _ 1.000000 VT -1.000000 -1.000000 VT -1.000000 0.000000 VT 0.000000 1.000000 VT 1.000000 1.000000 VT 1.000000 VT 1.000000 0.000000 VT -1.000000 1.000000 1.000000 VT 1.000000 -1.000000 -1.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 vt
因此,我也得到了一个真正混乱的索引设置,这使得无法重新排列纹理坐标的位置以匹配顶点中的位置。
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
f 5/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
由于我现在明白了,我只能使用一个数组作为索引,因为一个顶点由顶点和纹理坐标组成。因此,我需要重新排列其中一个 v/vt 数组。但我不能,因为如果我将 vt(在位置 1)移动到位置 5(第一行面),我需要再次移动它以使其一直通过索引数组。
所以基本上我想知道这是否是程序“Blender”的问题,或者是否有我可以应用的解决方案。