Search code examples
javascriptthree.jsfabricjs

svg color inside fabricjs canvas not changing


i'm trying to change svg path's fill which is inside fabricjs canvas.

enter image description here

using this function

function changeColor(material) {

    console.log(svgGroup[0].fill)
    console.log(material);
    if (material == 'base') {
        svgGroup[0].fill = '#000000';
        console.log(svgGroup[0].fill)
    }
    texture.needsUpdate = true;
    object.children[0].material = textureMaterial;
    canvas.renderAll();
}

but it doesn't updated automatically

enter image description here

anyone have any idea why? any thought would be helpful


Solution

  • i found the solution, the problem iwas i didn't set the color correctly. instead of doing this

    svgGroup[0].fill = '#000000';
    

    it should've use this

    svgGroup._objects.forEach(obj => {
        if (obj.id == material) {
            obj.set('fill', color);
        }
    });
    

    that way it is rendered when renderAll() is called