[英]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
文件包含:
该mtl
文件包含:
png
, jpg
等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.