ThreeJS动态复制GLTF模型:修改Object3D材质颜色的问题
Three.js 动态复制GLTF模型并修改颜色问题
我需要动态复制GLTF模型,并为每个副本设置不同的位置和颜色,为此编写了以下代码:
const L_4_G = new Object3D(); ... const multiLoad_4 = (result, position) => { const model = result.scene.children[0]; model.position.copy(position); model.scale.set(0.05, 0.05, 0.05); // L_4_G.add(model.clone()) scene.add(model); }; ... function duplicateModel4() { L_4_G.translateX(-1.2) L_4_G.translateY(0.0)//0.48 L_4_G.translateZ(1.2) L_4_G.rotateY(Math.PI / 2); scene.add(L_4_G); }
我在ThreeJS官方文档中未找到修改Object3D颜色的方法,特此求助。
已尝试的方案及问题
- 论坛方案:在对象的
userData中存储颜色集,后续调用修改颜色:
报错提示*L_2_G.userData.colors = {green : #00FF00, red : ..., ...} L_2_G.children[0].material.color(userData.colors["green"])children[0]未定义*,尽管控制台显示该对象存在子元素、材质及颜色,但console.log(L_2_G.children.length)结果为0。 - 使用
getObjectByName方法:
同样出现*scene.getObjectByName(name).children[0].material.color.set(color);children[0]未定义*的问题,scene.getObjectByName(name).children.length结果为0。
内容的提问来源于stack exchange,提问作者Bilal
相关产品推荐
相关产品推荐

