解决在OpenGL中导入.obj模型所遇一些问题的方法

解决在OpenGL中导入.obj模型所遇一些问题的方法

  • 相对路径格式
    • “/”与“\”
    • 相对路径起始
  • 导入模型的限制

最近在学习 LearnOpenGL CN,学到了模型加载那一章,遇到了一些错误,找到了一些解决办法,记录下来。

相对路径格式

“/”与“\”

在代码

Model ourModel(FileSystem::getPath("resources/objects/nanosuit/nanosuit.obj"));

处,我从文档中直接复制路径过来,粘贴,发现总是报错,原因是windows中路径分隔符像这样

D:\我的文件\OpenGL\input\input\resourses\objects\nanosuit

这里要注意“/”与“\”的区别,在VS中写“/”是最稳妥

相对路径起始

在这里填入的相对路径,指的是相对于main.cpp的路径,我的工程里,main.cpp的路径是
解决在OpenGL中导入.obj模型所遇一些问题的方法_第1张图片

而LearnOpenGL CN中下载的资源所在位置是
解决在OpenGL中导入.obj模型所遇一些问题的方法_第2张图片
可见,main.cpp的绝对路径是
D:\我的文件\OpenGL\input\input
nanosuit.obj的绝对路径是
D:\我的文件\OpenGL\input\input\resourses\objects\nanosuit
nanosuit.obj相对于main.cpp的路径就是
resourses\objects\nanosuit

导入模型的限制

在LearnOpenGL CN中,下载的模型nanosuit,此模型的纹理与模型文件在同一文件夹下,两者的关联属性可以在nanosuit.mtl中查看,这是个文本文件,要知道的是.mtl文件是.obj文件的附属文件,用以描述几何体表面的描影属性,告诉模型应该使用哪个贴图。
打开nanosuit.mtl
解决在OpenGL中导入.obj模型所遇一些问题的方法_第3张图片
文理文件前并没有路径,所以该纹理文件与模型文件在同一目录下才能读取。
从网上下载其他模型,往往纹理文件与模型文件不在同一目录中,比如我下载的skull模型。
解决在OpenGL中导入.obj模型所遇一些问题的方法_第4张图片
纹理保存在texture文件夹下,texture文件夹与模型文件.obj在同一目录下,这是应该查看.mtl文件,检查纹理与模型的关联路径,
解决在OpenGL中导入.obj模型所遇一些问题的方法_第5张图片
如果在红框一处不像上图显示的带有**texture/**的相对路径,那么在LearnOpenGL CN 给出的代码中运行就会报错。所以检查.mtl文件后,改成正确的相对路径就可以了。

附上运行的skull =-=
解决在OpenGL中导入.obj模型所遇一些问题的方法_第6张图片

你可能感兴趣的:(OpenGL)