最近有客户试用了我们的3D平台。导入模型时,模型会全黑不可见。这篇文章讲的是allblack的情况。经过测试,发现可能存在以下几种情况。obj模型没有法向量。如果obj模型在导出的时候没有导出法线向量,模型将无法受光,所以导出的模型会全黑。在这种情况下,镜面反射也不会。一种解决办法是让建模师重新导出模型,导出时勾选导出法向量。另外,还可以兼容程序判断模型是否有法向量。如果不是,程序会自行计算法向量。以threejs为例,调用computeVertexNormals计算法向量的代码如下:}PS:如何判断模型是否有规律线向量,用文本编辑器打开*.obj文件,看是否有“vn”标记即可。在mtl文件中将模型颜色设置为黑色。有些模型师导出mtl文件时,参数Kd为000,Kd参数会被解析成模型材质的颜色属性,也就是颜色。在这种情况下,虽然模型是全黑的,但是高光的颜色是有的,也就是在特定的角度可以看到高光:所以解决方法是把Kd000的设置全部去掉,或者modeler可以重新导出模型文件,使Kd变为非零值。mtl也是一个文本文件,可以直接用文本编辑器打开查看:PSmtl中的Kd表示漫反射的颜色,Ks表示镜面反射的颜色。mtl文件中的贴图指的是本地路径。有时候建模师导出mtl文件的时候,里面的贴图路径是本地的绝对路径,如下图:这时候导入的模型就变成黑色了。在这种情况下,虽然模型是全黑的,但是可以使用高亮颜色,即在特定角度可以看到高亮,如上。解决方法是将绝对路径改为相对路径,如下图:可以手动编辑mtl文件进行修改,也可以在建模器导出的时候设置。还有一种情况是导入的场景没有设置灯光。模型没有问题,但是因为场景没有设置任何灯光,所以看不到模型。在这种情况下,您需要以编程方式添加灯光。结语如果对上次修改效果图的可视化感兴趣,可以微信541002349与我交流。关注公众号“ITMan表叔”,及时收到更多有价值的文章。
