网上找到的部分解决方法

其实通过查找后不难发现网上给出了很多解决方法,但是大部分都无法从根本上解决问题。我之前看到有一篇文章对gltf的解决方法是让gltf增加自发光,相关的设置如下:

使用threeJS的过程中,刚开始总是会遇到些问题,就比如加载obj/gltf等带材质的模型时老是会出现显示效果较暗的问题。

object.traverse((child) => {
  if(child.isMesh) {
    child.material.emissiveMap = child.material.map;
  }
})

效果对比

在我也没有找到解决的办法下,我确实是使用了这种方法,正如我写的vue-3d-loader组件中,前期的代码中就是采用的这种方式,我们可以来看一下使用后的效果:

未使用以上代码时的gltf效果如下图:

windows11 中 3d viewer打开后的效果如下:

这一对比,差距确实很大啊。

下面是增加child.material.emissiveMap = child.material.map;代码后的效果:

这种方式,虽然光线看上去足够了,但是确丢失了细节以及发光太严重后,导致图像都失真了。经过与官方的代码的对比以及官方文档的查看,当然少不了github issue的查找,最终找到解决方法。

据官方文档所说WebGLRenderer部分,其中文档提到:

  • outputEncoding默认值是LinearEncoding

根据官方提供的examples中代码中也看到部分加载材质后的模型都修改了这个值,如下:

因此我确定,解决办法就是将LinearEncoding更换为sRGBEncoding即可。

修改代码后,可以直接看到效果如下:

可以自己在增加一些灯光效果,也就可以达到windows的3d viewer效果了

总结

默认情况下threeJS会使用线性编码(LinearEncoding)的方式渲染材质,因此会丢失真实颜色,需要改用RGB模式编码(sRGBEncoding)进行对材质进行渲染。

使用threeJS总是会遇到各种问题,不过我的建议还是多看看官方的examples代码,你会从中找到更多解决的方法的。如果你不是自己封装threeJS,那可以使用我编写好的vue-3d-loader,如果好用,记得给我start啊!记得给我start啊!如果有问题,欢迎提issue,我会及时解决bug

以上就是解决threeJS加载obj gltf模型后颜色太暗的方法的详细内容,更多关于threeJS加载obj gltf颜色太暗的资料请关注Devmax其它相关文章!

解决threeJS加载obj gltf模型后颜色太暗的方法的更多相关文章

  1. 使用threejs实现第一人称视角的移动的问题(示例代码)

    第一人称视角的场景巡检主要需要解决两个问题,人物在场景中的移动和碰撞检测。移动与碰撞功能是所有三维场景首先需要解决的基本问题,今天我们就通过最基本的threejs来完成第一人称视角的场景巡检功能,感兴趣的朋友一起看看吧

  2. 解决threeJS加载obj gltf模型后颜色太暗的方法

    这篇文章主要为大家介绍了解决threeJS加载obj gltf模型后颜色太暗的方法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  3. vue2.x引入threejs的实例代码

    这篇文章主要介绍了vue2.x引入threejs,如果在开发过程中出现threejs生成的canvas出现外边框,只需要用css样式修改,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下

  4. 如何用threejs实现实时多边形折射

    这篇文章主要介绍了如何用threejs实现实时多边形折射,对three.js库感兴趣的同学,可以参考下

  5. vue如何修改data中的obj数据的属性

    这篇文章主要介绍了vue如何修改data中的obj数据的属性,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  6. ThreeJS从创建场景到使用功能实例详解

    threejs是一个用于在浏览器中绘制3D图像的JS库,它是基于webgl实现了,包括了webgl1和webgl2的渲染引擎,下面这篇文章主要给大家介绍了关于ThreeJS从创建场景到使用功能的相关资料,需要的朋友可以参考下

  7. threejs后期处理的基本使用方法之加特效

    这篇文章主要给大家介绍了关于threejs后期处理的基本使用方法之加特效的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

  8. threejs太阳光与阴影效果实例代码

    在Threejs中类似于我们现实世界,物体显示的颜色是由物体本身的颜色及光照的颜色相互叠加而得到的,这篇文章主要给大家介绍了关于threejs太阳光与阴影效果的相关资料,需要的朋友可以参考下

  9. React + Threejs + Swiper 实现全景图效果的完整代码

    全景图效果非常漂亮给人带来极好的用户体验效果,那么基于前端开发如何实现这种效果呢,下面小编给大家带来了React + Threejs + Swiper 实现全景图效果,感兴趣的朋友一起看看吧

  10. three.js中正交与透视投影相机的实战应用指南

    在three.js中摄像机的作用就是不断的拍摄我们创建好的场景,然后通过渲染器渲染到屏幕中,下面这篇文章主要给大家介绍了关于three.js中正交与透视投影相机应用的相关资料,需要的朋友可以参考下

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部