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

相关文章
|
前端开发 NoSQL Java
SpringBoot从入门到精通(二十)快速构建Restful Web API 服务
随着互联网化等逐渐深入,应用系统也变得越来越复杂,系统架构正在朝着微服务化,中台化的方向发展。这就需要各个系统、各个厂家之间的数据频繁交互。所以,使用 Restful 风格构建的应用接口适用于移动互联网厂商的业务场景,正在被越来越多的企业推荐使用。那么什么是 RESTful 呢?
SpringBoot从入门到精通(二十)快速构建Restful Web API 服务
|
8月前
|
负载均衡 物联网 测试技术
部署硬件负载均衡时,如何评估设备的处理能力?
部署硬件负载均衡时,如何评估设备的处理能力?
349 60
|
存储 算法 物联网
R-Tree算法:空间索引的高效解决方案
【5月更文挑战第17天】R-Tree是用于多维空间索引的数据结构,常用于地理信息系统、数据库和计算机图形学。它通过分层矩形区域组织数据,支持快速查询。文章介绍了R-Tree的工作原理、应用场景,如地理信息存储和查询,以及Python的`rtree`库实现示例。此外,还讨论了R-Tree的优势(如空间效率和查询性能)与挑战(如实现复杂和内存消耗),以及优化和变种,如R* Tree和STR。R-Tree在机器学习、实时数据分析等领域有广泛应用,并与其他数据结构(如kd-trees和quad-trees)进行比较。未来趋势将聚焦于优化算法、动态适应性和分布式并行计算。
640 1
|
10月前
|
数据采集 自然语言处理 Serverless
GPT-Sovits文本转语音服务测评报告
本文介绍了一款基于阿里云函数计算平台部署的GPT-Sovits文本生成语音服务。该服务以其高度仿真的声音合成效果和简便的部署方式受到关注。文章详细描述了技术架构、部署流程、功能测试及性能评估等内容,展示了GPT-Sovits在语音合成领域的卓越表现和广泛的应用前景。
586 8
|
传感器 机器学习/深度学习 算法
Isaac Sim教程01 Isaac Sim介绍
这篇文章是Isaac Sim的入门教程,介绍了NVIDIA Omniverse平台上的Isaac Sim机器人仿真工具包。内容包括Isaac Sim的背景、特点、应用场景、架构和工作流程,以及近期的更新情况。Isaac Sim支持物理精确的仿真和合成数据集的创建,与ROS/ROS2兼容,并能模拟多种传感器数据,适用于机器人导航、操作应用、计算机视觉研究和数据集生成等多种场景。
1746 2
Isaac Sim教程01 Isaac Sim介绍
|
12月前
|
架构师 关系型数据库 MySQL
MySQL最左前缀优化原则:深入解析与实战应用
【10月更文挑战第12天】在数据库架构设计与优化中,索引的使用是提升查询性能的关键手段之一。其中,MySQL的最左前缀优化原则(Leftmost Prefix Principle)是复合索引(Composite Index)应用中的核心策略。作为资深架构师,深入理解并掌握这一原则,对于平衡数据库性能与维护成本至关重要。本文将详细解读最左前缀优化原则的功能特点、业务场景、优缺点、底层原理,并通过Java示例展示其实现方式。
391 1
|
机器学习/深度学习 数据采集 图形学
基于深度学习的面片修复
面片修复(Mesh Repair)是计算机图形学和计算机视觉中的重要任务,旨在修复三维网格(mesh)中的缺陷,如孔洞、裂缝和噪声。基于深度学习的方法在面片修复中展现了强大的能力,通过学习数据中的几何特征,能够自动、高效地完成修复工作。
179 1
|
12月前
|
数据采集 SQL Java
TDengine在设备管理系统中应用
这篇文章介绍了TDengine时序数据库在设备管理系统中的应用,包括处理大规模数据插入、查询优化以及如何通过超级表管理多设备数据的具体实践。
201 0
|
SQL XML 缓存
认识 ORM 框架 Hibernate,为什么 2022 年了还在谈论它?
前言 Hibernate 作为一种全自动 ORM 框架,在几年前常与 Spring、Struts2 一起使用,并称 SSH,作为主流的企业级应用框架。伴随着 MyBatis 的诞生,以及 Hibernate 本身的一些缺陷,如今 Hibernate 已经慢慢淡出了大家的视野。
1191 0
认识 ORM 框架 Hibernate,为什么 2022 年了还在谈论它?
LabVIEW中NIPackageManager功能介绍
LabVIEW中NIPackageManager功能介绍
511 3