三维引擎导入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 也是文本文件,直接用文本编辑器可以打开查看:
PS mtl中 Kd 代表漫反射的颜色, Ks代表高光反射的颜色。
mtl文件中贴图引用了本地路径
有时候建模人员在导出mtl文件的时候,里面的贴图路径是本地的绝对路径,如下图所示:
此时导入的模型因为找不到贴图,而变成了黑色。此种情况下,虽然模型是全黑,但是高光的颜色是有的,也就是在特定的角度可以看到高光,同上。
解决方法就是把绝对路径改成相对路径,如下图:
可以手动编辑mtl文件修改,也可以建模人员导出的时候设置。
导入的场景没有设置灯光
还有一种情况,模型都没有问题,但是由于场景没有设置任何灯光,导致模型看不见,此种情况需要程序上添加灯光即可。
#结语
上一张修改后的效果图
如果对可视化感兴趣,可以和我交流,微信541002349。 关注公号“ITMan彪叔” 可以及时收到更多有价值的文章。
三维引擎导入obj模型全黑总结相关推荐
- 【Three.js】解决使用Three.js导入obj模型不可见问题详细记录
问题描述: 近期在做三维重建项目,需要把最终生成的obj文件导入到web端浏览,这里使用的是three.js(另一个是babylon.js),但博主发现导入meshlab生成的obj时无法显示模型,但 ...
- 解决导入obj模型时出现模型镂空的问题
解决导入obj模型时出现模型镂空的问题 这实际上是因为导入的模型采用四边形而非三角形的面片,导致splish采样不全. 使用houdini的divide节点就能将任意面片转化为三角形面片.从而解决问题 ...
- Java 3D导入obj模型后颜色显示 出错显示白色,或者笔记本电脑显示彩色,但是台式机仍为白色
Java 3D导入obj模型后颜色显示 出错显示白色,或者笔记本电脑显示彩色,但是台式机仍为白色 代码问题 首先,确保代码中编辑了给模型导入颜色 //function:读取.obj文件,并将其添加到S ...
- 解决在OpenGL中导入.obj模型所遇一些问题的方法
解决在OpenGL中导入.obj模型所遇一些问题的方法 相对路径格式 "/"与"\" 相对路径起始 导入模型的限制 最近在学习 LearnOpenGL CN,学 ...
- zbrush导入obj模型不显示_ZBrush中如何导入和导出OBJ文件—ZBrush教程
原标题:ZBrush中如何导入和导出OBJ文件-ZBrush教程 ZBrush中如何导入和导出OBJ文件 ZBrush软件中对于文件的导出与储存格式是多样的.OBJ格式是如何导入和导出ZBrush的, ...
- 使用three.js导入OBJ模型,变更、修改成其他OBJ模型和模型不可见原因说明
最近的一个项目需要在HTML中对OBJ模型进行大量的变更,修改为其他模型.基于这个需求下,这里有一种解决方案. 另外在各大论坛上的相关博客基本都是那几种导入obj例子····并没有对后续操作进行说明. ...
- ArcGIS Pro2.7 导入obj模型后贴图丢失问题
.mtl文件已经修改贴图为相对路径,import模型后仍然丢失贴图. 可能是模型中文导致的.测试,mtl,obj及obj内的mtl都修改为英文后,可以正常导入贴图. 建议:在3dsMax中建模的时候模 ...
- zbrush导入obj模型不显示_zbrush软件怎么导入obj格式文件?Zbrush2018教程在哪可以看?...
回答: 关于ZBrush的学习,我大致整理了一些经常会被问到的问题和我的见解,可以参考一下. Q1:次世代ZB到底难不难?因为技术要求的全面升级,次世代确实不简单,但是新手能不能学习次世代呢? A1: ...
- 3Ds Max 精模obj模型导入ArcGIS Pro
一.检查模型贴图路径 首先找到文件夹下mtl文件,检查贴图路径是不是都是相对路径,如果是绝对路径需要修改,例如: 批量查找替换,将贴图路径都修改为相对路径. 如果修改为相对路径后还是出现丢贴图的问题, ...
- threeJs导入3D皮卡丘.obj模型,使用.jpg贴图,实现缩放旋转查看功能
先来看下最终的效果. 导入obj模型 如果仅使用Mesh几何而不加载任何外部资源,则网页应直接在文件系统中运行,只需双击HTML文件打开即可以预览.而由于3D模型是从外部加载进来的,由于浏览器的原始策 ...
最新文章
- 大快搜索城市运河大数据政务管理平台案例解读
- android常用代码
- 160 - 4 ajj.1
- 武汉理工大学计算机学院2018复试,武汉理工大学2018年自主招生复试揭秘
- Java:下拉列表绑定后台数据
- 从虚拟化到软件定义--重新定义IT产业格局
- opencv 指定分辨率_使用opencv拉伸图像扩大分辨率示例
- 某医院病房计算机管理数据库,毕业论文_数据库某医院病房计算机系统.doc
- STM32的选型参考
- 对象转为json形式
- html里怎么画斜线表头,excel里斜线表头怎么做
- vue-awsome-swiper安装和css引入问题
- ios个人小游戏开发者如何做到年收益过百万?
- 超链接 与众不同的鼠标滑过超链接下划线动画效果
- python识别ppt文件格式 ——(专栏:基于python编写简单office阅卷程序③)
- css3复习P2(文本属性+列表属性+其他样式)
- hash碰撞处理方法
- pytorch-lightning踩坑记录
- 微信公众平台安全模式消息体签名及加解密PHP代码示例
- ORA-00600:[qctcte1]内部错误一例