【问题标题】:How to get proper number of vertices in OBJ file from DCC tools such as Blender for use in OpenGL ES?如何从 DCC 工具(例如 Blender)中获取 OBJ 文件中适当数量的顶点以在 OpenGL ES 中使用?
【发布时间】:2011-06-30 13:37:07
【问题描述】:

有人告诉我,对于一个简单的立方体,当我想为 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

【问题讨论】:

    标签: opengl-es blender-2.50


    【解决方案1】:

    立方体的 36 个顶点是不正确的。可能但没必要。

    顶点是一种空间坐标,由x、y、z三个参数组成。
    立方体有8个角,那么应该只有8个顶点。 p>

    在顶点之后,有纹理坐标,是在Blender中UV映射后得到的。

    纹理坐标之后是索引。它们是连接顶点的顺序,决定了立方体的绘制顺序。

    最后,还有用于照明效果的法线



    在 Blender 中导出时,请确保仅突出显示:

    上下文
    所有场景

    输出选项
    三角测量、材质、UV、法线、HQ

    Blender 对象作为 OBJ
    对象

    这为您提供了两个文件:OBJMTL

    MTL 包含纹理图像信息
    而 OBJ 包含:

    顶点的形式:
    v x, y, z
    v x, y, z

    纹理坐标的形式为:
    vt x, y
    vt x, y

    指数的形式:
    f i/j k/l m/n
    f i/j k/l m/n

    在您成功获取导出的 OBJ 和 MTL 文件后,将它们与纹理图像一起添加到您的项目中,并使用 OpenGLOBJLoader 类在 iOS 中渲染它们。

    【讨论】:

    • 我选择了您指定的那些选项,但我仍然得到 8 个顶点和 8 个法线。我发布了文件的内容。
    • 您的模型上似乎没有纹理。
    • @erkanyildiz 你知道如何查找/删除这些行吗?我在导出的 obj 文件中得到即“l 5396 5386”。
    猜你喜欢
    • 2014-04-21
    • 2012-05-09
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 2017-07-26
    • 2012-12-18
    • 2017-04-22
    相关资源
    最近更新 更多