How to change the color of an Object3D after cloning the GLTF

Viewed 74

I want to duplicate my GLTF models with different positions/colors dynamically, to do so I have done:

...
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);
}
...

I didn't find out how can I change the Object3D color from the documentation, can you please tell me how can I do that? thanks in advance.

Here is the full code that I'm using, and here are the models

Update

  1. I have seen this solution, to store a set of colors in the object's userData and choose the color later:
L_2_G.userData.colors = {green : #00FF00, red : ..., ...}
L_2_G.children[0].material.color(userData.colors["green"])

But I'm getting an error that children[0] undefined, but I can see that this object has a child and a material, and color via the console: console.log(L_2_G.children), console.log(L_2_G.children.length)--> 0

  1. Also I have tried getObjectByName as explained here:
scene.getObjectByName(name).children[0].material.color.set(color);

which also reslts: children[0] is undefined, scene.getObjectByName(name).children.length is 0.

0 Answers
Related