效果图对比
网上的解决方案就是这些,不知道是我的threejs版本太高还是什么原因,对象里面没这些属性
// gltf.scene.traverse(function (child) {
// if (child.isMesh) {
// child.frustumCulled = false;
// //模型阴影
// child.castShadow = true;
// //模型自发光
// child.material.emissive = child.material.color;
// child.material.emissiveMap = child.material.map;
// }
// })
后面通过[其他文档发现需要更改材质,点击这里],发现应该是模型编码的原因,只需要加上
renderer.outputEncoding = sRGBEncoding;
即可(默认情况下threeJS会使用线性编码(LinearEncoding)的方式渲染材质,因此会丢失真实颜色,需要改用RGB模式编码(sRGBEncoding)进行对材质进行渲染。)