三维引擎导入obj模型全黑总结

简介: 三维引擎导入obj模型全黑总结

最近有客户试用我们的三维平台,在导入模型的时候,会出现模型全黑和不可见的情况。本文说下全黑的情况。


经过测试,发现可能有如下几种情况。


obj 模型没有法线向量


如果obj模型导出的时候没有导出法线向量,会导致模型不能接受光照,从而导出的模型是全黑的。此种情况下,高光反射也没有。


解决方案上,一种是让建模人员重新导出模型,导出的时候勾选上导出法线向量。

另外也可以从程序上兼容一下,判断模型是否有法线向量,如果没有,程序自己计算法线向量。


以threejs为例,调用computeVertexNormals计算法线向量代码如下:


if(child.geometry && !child.geometry.hasAttribute('normal')) {
          child.geometry.computeVertexNormals();
  }


PS:如何判断模型是否有法线向量,只需要用文本编辑器打开*.obj文件,查看是否有“vn” 标记


mtl文件中设置模型颜色为黑色


一些建模人员在导出mtl文件时候, 参数Kd 是0 0 0, Kd参数会被解析成模型材质的color属性,既颜色。


此种情况下,虽然模型是全黑,但是高光的颜色是有的,也就是在特定的角度可以看到高光:


所以解决的 办法就是把Kd 0 0 0的设置全部去掉,或者建模师可以重新导出模型文件,让Kd 变成一个非全0的值。


mtl 也是文本文件,直接用文本编辑器可以打开查看:


微信图片_20220425141425.pngimage.png


PS mtl中 Kd 代表漫反射的颜色, Ks代表高光反射的颜色。


mtl文件中贴图引用了本地路径


有时候建模人员在导出mtl文件的时候,里面的贴图路径是本地的绝对路径,如下图所示:


微信图片_20220425141428.pngimage.png


此时导入的模型因为找不到贴图,而变成了黑色。此种情况下,虽然模型是全黑,但是高光的颜色是有的,也就是在特定的角度可以看到高光,同上。


解决方法就是把绝对路径改成相对路径,如下图:


微信图片_20220425141431.pngimage.png


可以手动编辑mtl文件修改,也可以建模人员导出的时候设置。


导入的场景没有设置灯光


还有一种情况,模型都没有问题,但是由于场景没有设置任何灯光,导致模型看不见,此种情况需要程序上添加灯光即可。


结语


上一张修改后的效果图


微信图片_20220425141404.pngimage.png

相关文章
|
4月前
|
机器学习/深度学习 数据可视化 PyTorch
PyTorch基础之模型保存与重载模块、可视化模块讲解(附源码)
PyTorch基础之模型保存与重载模块、可视化模块讲解(附源码)
97 1
|
27天前
LangChain 构建问题之定义zmng_query工具的具体实现函数如何解决
LangChain 构建问题之定义zmng_query工具的具体实现函数如何解决
19 0
|
4月前
GEE——Google dynamic world中在影像导出过程中无法完全导出较大面积影像的解决方案(投影的转换)EPSG:32630和EPSG:4326的区别
GEE——Google dynamic world中在影像导出过程中无法完全导出较大面积影像的解决方案(投影的转换)EPSG:32630和EPSG:4326的区别
91 0
|
4月前
|
数据可视化
R语言建立和可视化混合效应模型mixed effect model
R语言建立和可视化混合效应模型mixed effect model
|
4月前
|
人工智能 前端开发 API
graphengine图引擎模块 v2.2.10
graphengine图引擎模块 v2.2.10
60 1
|
4月前
|
Serverless 定位技术 C++
R语言raster包批量读取单一或大量栅格图像
R语言raster包批量读取单一或大量栅格图像
111 1
|
4月前
|
定位技术 Python
R语言raster包批量拼接、融合大量栅格图像
R语言raster包批量拼接、融合大量栅格图像
122 1
|
12月前
|
存储 JSON 物联网
如何将 OBJ 模型转换和压缩为 GLTF 以与 AWS IoT TwinMaker 配合使用
尝试开始使用 AWS IoT TwinMaker,需要将您的 OBJ 文件转换为 glTF?也许您已经使用 Matterport 对您的环境进行了点云扫描,但不清楚如何将 Matterpak 捆绑包导入 AWS IoT TwinMaker。在本博客中,您将应用模型转换管道来压缩 Matterpak 捆绑包并将其转换为 glTF 格式。此方法将在 AWS IoT TwinMaker 中提供最新的 3D 模型并缩短场景加载时间。
165 0
|
C++
PADS查看3D视图及导入元器件模型的方法
本来只是想讲解如何使用PADS设计原理图和PCB的基本操作,能从无到有设计出一个PCB并且掌握PADS的设计流程就算入门了。掌握了基础之后,再复杂的设计和功能自己就可以不断的学习、探索,所以像3D这些功能本来是不准备讲解的。但是看到有小伙伴留言说自己需要用到3D功能,想了解如何达到比较真实的3D效果。后来想想,3D视图可以让设计者直接看到实物的效果,不仅可以减少空间上犯错的可能,而且3D视图渲染的独特效果还可以放在文档、论文中添色,所以就讲一下PADS的3D视图功能以及如何给PCB中的元器件添加3D模型。
3411 0