Three.js Texturbild aktualisieren

Ich benutze three.js, um einen Minecraft-Textureditor zu erstellen, ähnlich wiediese. Ich versuche nur, die grundlegende Click-and-Paint-Funktionalität zu verbessern, aber ich kann es scheinbar nicht herausfinden. Derzeit habe ich Texturen für jede Fläche jedes Würfels und wende sie an, indem ich Shader-Materialien mit den folgenden Funktionen erstelle.

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


Wenn der Benutzer dann auf eine beliebige Stelle im Netz klickt, wird die Texturdatei selbst mithilfe der Zeichenfläche aktualisiert. Die Aktualisierung wird durchgeführt, die Änderung wird jedoch erst im Browser angezeigt, wenn die Seite aktualisiert wurde. Ich habe viele Beispiele gefunden, wie man das Texturbild in eine neue Datei ändert, aber nicht, wie man Änderungen in der gleichen Texturdatei zur Laufzeit anzeigt oder auch wenn es möglich ist. Ist das möglich und wenn nicht, welche Alternativen gibt es?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage