有人告诉我,对于一个简单的立方体,当我想要 OpenGL ES 应用程序的颜色/纹理等时,我需要 36 个顶点,但是当我使用 Blender 将彩色立方体导出为 OBJ 格式时,我只得到 8 个顶点,而且我也没有得到甚至可以在 OBJ 中获取颜色数据,更不用说我在 OBJ 文件中只获取 8 个法线,但我需要每个三角形中的每个顶点的法线(总共 36 个法线)。
这是我得到的立方体 OBJ 文件的内容,该立方体的所有面都涂上了不同的颜色:
# Blender v2.56 (sub 0) OBJ File: ''
# www.blender.org
mtllib untitled.mtl
o Cube
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 0.999999 1.000000
v 0.999999 -1.000001 1.000000
v -1.000000 -1.000000 1.000000
v -1.000000 1.000000 1.000000
vn 0.666646 0.666646 0.333323
vn 0.408246 0.408246 -0.816492
vn -0.408246 0.816492 -0.408246
vn -0.666646 0.333323 0.666646
vn -0.577349 -0.577349 -0.577349
vn -0.577349 -0.577349 0.577349
vn 0.816492 -0.408246 -0.408246
vn 0.333323 -0.666646 0.666646
usemtl Material
s 1
f 5//1 1//2 4//3
f 5//1 4//3 8//4
f 3//5 7//6 8//4
f 3//5 8//4 4//3
f 2//7 6//8 3//5
f 6//8 7//6 3//5
f 1//2 5//1 2//7
f 5//1 6//8 2//7
f 5//1 8//4 6//8
f 8//4 7//6 6//8
f 1//2 2//7 3//5
f 1//2 3//5 4//3
这是MTL文件的内容:
# Blender MTL File: ''
# Material Count: 1
newmtl Material
Ns 96.078431
Ka 0.000000 0.000000 0.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ni 1.000000
d 1.000000
illum 2
立方体有 36 个顶点是不正确的。可能但没有必要。
A vertex是一种空间坐标,由 x、y、z 3 个参数组成。
由于立方体有 8 个角,因此应该只有 8 个顶点。
继顶点之后,有纹理坐标这是在 Blender 中进行 UV 映射后获得的。
纹理坐标之后是indices。它们是连接顶点的顺序,决定了立方体的绘制顺序。
最后,还有normals用于灯光效果。
在 Blender 中导出时,请确保仅突出显示以下内容:
Context:
所有场景
输出选项:
三角测量、材质、UV、法线、HQ
Blender 对象作为 OBJ:
objects
这会给你两个文件:OBJ and MTL
MTL包含纹理图像信息
OBJ 包含:
vertices以...的形式:
x、y、z
x、y、z
纹理坐标以...的形式:
VT x, y
VT x, y
indices以...的形式:
f i/j k/l m/n
f i/j k/l m/n
成功获取导出的 OBJ 和 MTL 文件后,将它们与纹理图像一起添加到您的项目中,并使用 OpenGLOBJLoader 类在 iOS 中渲染它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)