三维引擎导入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

相关文章
|
定位技术
Echarts实战案例代码(10):echarts结合世界所有国家地图数据集geojson的(英文翻译映射)解决方案
Echarts实战案例代码(10):echarts结合世界所有国家地图数据集geojson的(英文翻译映射)解决方案
655 0
Echarts实战案例代码(10):echarts结合世界所有国家地图数据集geojson的(英文翻译映射)解决方案
|
6月前
GEE——Google dynamic world中在影像导出过程中无法完全导出较大面积影像的解决方案(投影的转换)EPSG:32630和EPSG:4326的区别
GEE——Google dynamic world中在影像导出过程中无法完全导出较大面积影像的解决方案(投影的转换)EPSG:32630和EPSG:4326的区别
119 0
|
6月前
|
人工智能 前端开发 API
graphengine图引擎模块 v2.2.10
graphengine图引擎模块 v2.2.10
69 1
|
6月前
|
存储 数据采集 数据可视化
支持CT、MR三维后处理的医学PACS源码
支持CT、MR三维后处理的医学PACS源码
88 0
|
存储 JSON 物联网
如何将 OBJ 模型转换和压缩为 GLTF 以与 AWS IoT TwinMaker 配合使用
尝试开始使用 AWS IoT TwinMaker,需要将您的 OBJ 文件转换为 glTF?也许您已经使用 Matterport 对您的环境进行了点云扫描,但不清楚如何将 Matterpak 捆绑包导入 AWS IoT TwinMaker。在本博客中,您将应用模型转换管道来压缩 Matterpak 捆绑包并将其转换为 glTF 格式。此方法将在 AWS IoT TwinMaker 中提供最新的 3D 模型并缩短场景加载时间。
174 0
|
前端开发 数据处理 数据格式
原生table实现矩阵展示打勾功能
原生table实现矩阵展示打勾功能
85 0
|
数据可视化 JavaScript 定位技术
Echarts参数属性学习:地图可视化视觉映射组件visualMap数组最大值max的获取方式
Echarts参数属性学习:地图可视化视觉映射组件visualMap数组最大值max的获取方式
413 0
|
机器学习/深度学习 移动开发 数据挖掘
R语言- data.table包加速大型数据集的加载和运算效率用法示例
本文根据个人使用经验和博客参考,总结分享了在R语言中使用data.table包来提升大型数据集处理效率的用法示例,以供参考
253 0
|
数据采集 传感器 编解码
点云数据处理方法的应用PCL函数库为例的设计与实现_kaic
在计算机视觉和虚拟现实技术的发展过程中,点云数据已成为主要的三维数据表达形式。将点云数据转换成灰值图时,测算每一个像素点周边领域的点云,但是其效率精密度比较低。文中探讨了点云数据的多视图拼凑和滤波处理,明确提出利用三角形面片法解决点云数据,将文件头和三角形面片信息分为两个存放,明确提出掌握坐标原点位置和方向两个核心平面反向值,点云部位转换优化算法。针对点云数据处理的相关技术研发成为近年来的研究热点,基于此,采用Python作为编程语言,并使用开源编程库Point.Cloud.Library,开发了点云数据处理系统。该系统实现了点云数据读取及数据处理、点云视点变换、重建点云效果显示等功能.