您的位置:首页 > 文旅 > 旅游 > 郑州企业建站系统模板_一站式服务平台入口_seo优化一般包括_长春网站建设公司哪个好

郑州企业建站系统模板_一站式服务平台入口_seo优化一般包括_长春网站建设公司哪个好

2025/4/16 22:09:28 来源:https://blog.csdn.net/m0_65915285/article/details/147117345  浏览:    关键词:郑州企业建站系统模板_一站式服务平台入口_seo优化一般包括_长春网站建设公司哪个好
郑州企业建站系统模板_一站式服务平台入口_seo优化一般包括_长春网站建设公司哪个好

问题:当我选中其中某个网格模型并设置color的时候,相同种类的颜色都被改变,但是打印我选中的网格模型数据其实只有一个。

导致问题的原因:

加载Blender模型修改材质颜色

Blender创建一个模型对象,设置颜色,然后通过快捷键Shift + D复制模型对象时候,导出测试。

先通过模型name获取模型节点,然后修改颜色,这时候你发现,所有模型mesh的颜色都更改了,其实原因很简单,Blender创建模型时候共享了材质。

Blender取消材质共享

Blender通过快捷键Shift + D复制模型对象时候,材质是默认共享的。

如果你想取消材质共享,可以新建一个材质覆盖原来的。

gltf.scene.traverse(function(obj){if(obj.isMesh){// 材质对象执行克隆方法clone()会返回一个新的材质对象obj.material = obj.material.clone();}
})
// 这种情况下,你修改任何一栋楼材质颜色,其他楼材质颜色不受影响
const mesh = gltf.scene.getObjectByName('立方体')
mesh.material.color.set(0x00ffff)
 const model = new THREE.Group();loader.load("./modelZH.glb", (gltf) => {var group = gltf.scene.getObjectByName("粮仓");group.traverse((obj) => {if (obj.type === "Mesh") {obj.material = obj.material.clone(); //克隆材质,避免后面改变颜色相同材质一起变meshList.push(obj); //把所有可被选择的模型放进数组里const label = tag(obj.name);var pos = new THREE.Vector3();obj.getWorldPosition(pos); //获取obj世界坐标、if (obj.parent.name == "立筒仓") {pos.y += 36; //加上粮仓顶部高度} else if (obj.parent.name == "浅圆仓") {pos.y += 20;} else if (obj.parent.name == "平房仓") {pos.y += 17;}label.position.copy(pos);model.add(label);}});model.add(gltf.scene);scene.add(model);});

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com