繁体   English   中英

创建了Blender Obj,但是在OpenGL中丢失了纹理吗?

[英]Created Blender Obj but in OpenGL it loses it's texture?

因此,我在Blender中创建了3D模型,将其导出为obj,然后将其导入到C ++ / OpenGL中。 尽管丢失了所有的颜色和纹理,模型仍可完美加载。 它只是一个基本的白色模型。是否可以解决此问题,或者是否无法导入带有纹理的模型,而必须在OpenGl中重做纹理?

.obj文件不包含纹理本身:每个顶点仅纹理坐标。

您需要自己加载和绑定纹理,而不是从obj文件加载。

其他文件格式可以嵌入纹理,但是从文件加载模型不在openGL API的范围内。

的确, obj文件不包含纹理或材质数据,但它们通常与mtl文件配对。 obj引用mtl文件与使用mtllib指令,并选择材料与随后的面孔usemtl

请参阅: http : //en.wikipedia.org/wiki/Wavefront_.obj_file#Material_template_library

但是,mtl文件仅包含颜色和纹理文件名,而不包含实际的纹理数据。 您必须单独研究加载纹理,然后使用它来加载mtl文件中引用的纹理。 然后创建OpenGL纹理,并用绑定的对象以及obj文件中的纹理坐标绘制对象。

在Blender中,确保在导出obj时选中了Write Materials 还要检查纹理的相对路径是否合适(只需在文本编辑器中打开mtl文件)。 附带说明一下,默认情况下不选中“ Include Normals是令人讨厌的。

因此,您的obj文件包含:

  • 顶点位置以及法线和纹理坐标也可以。
  • 顶点连通性或faces ,实际上可能是n边形,需要进行三角剖分。
  • 对材料文件的引用(如果有)。

mtl文件包含:

  • 许多材料定义
  • 每个由名称标识
  • 包含环境,漫反射,镜面反射等的颜色。
  • 还包含纹理贴图引用(文件名),并且可以是pngjpg等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM