Three.js Zaktualizuj obraz tekstury

Używam three.js do utworzenia edytora tekstur minecraft, podobnego doto. Staram się tylko obniżyć podstawową funkcjonalność „kliknij i maluj”, ale nie mogę tego zrozumieć. Obecnie mam tekstury dla każdej powierzchni każdej kostki i stosuję je, tworząc materiały cieniowania z następującymi funkcjami.

this.createBodyShaderTexture = function(part, update)
{
    sides = ['left', 'right', 'top', 'bottom', 'front', 'back'];
    images = [];
    for (i = 0; i < sides.length; i++)
    {
        images[i] = 'img/'+part+'/'+sides[i]+'.png'; 
    }
    texCube = new THREE.ImageUtils.loadTextureCube(images);
    texCube.magFilter = THREE.NearestFilter;
    texCube.minFilter = THREE.LinearMipMapLinearFilter;
    if (update)
    {
        texCube.needsUpdate = true;
        console.log(texCube);
    }
    return texCube;
}
this.createBodyShaderMaterial = function(part, update)
{

    shader = THREE.ShaderLib['cube'];
    shader.uniforms['tCube'].value = this.createBodyShaderTexture(part, update);
    shader.fragmentShader = document.getElementById("fshader").innerHTML;
    shader.vertexShader = document.getElementById("vshader").innerHTML;

    material = new THREE.ShaderMaterial({fragmentShader: shader.fragmentShader,  vertexShader: shader.vertexShader, uniforms: shader.uniforms});
    return material;
}

SkinApp.prototype.onClick = 
function(event)
{
    event.preventDefault();
        this.change(); //makes texture file a simple red square for testing
    this.avatar.remove(this.HEAD);

    this.HEAD = new THREE.Mesh(new THREE.CubeGeometry(8, 8, 8), this.createBodyShaderMaterial('head', false));
    this.HEAD.position.y = 10;
    this.avatar.add(this.HEAD);
    this.HEAD.material.needsUpdate = true;
        this.HEAD.dynamic = true;
}


Następnie, gdy użytkownik kliknie dowolne miejsce na siatce, sam plik tekstury zostanie zaktualizowany za pomocą kanwy. Aktualizacja następuje, ale zmiana nie pojawia się w przeglądarce, dopóki strona nie zostanie odświeżona. Znalazłem wiele przykładów, jak zmienić obraz tekstury na nowy plik, ale nie w jaki sposób pokazywać zmiany w tym samym pliku tekstury w czasie wykonywania, a nawet jeśli jest to możliwe. Czy to możliwe, a jeśli nie, jakie są alternatywy?

questionAnswers(2)

yourAnswerToTheQuestion