You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 12:01:02