Wie man die Gesichtsfarbe in Three.js ändert

Ich versuche, die Farbe auf einer einzelnen Seite eines Netzes zu ändern. Dies ist in einem WebGL-Kontext. Ich kann die gesamte Netzfarbe ändern, nur kein einziges Gesicht. Relevanter Code unten:

// Updated Per Lee!

var camera = _this.camera;      
var projector = new THREE.Projector();
var vector = new THREE.Vector3( ( event.clientX / window.innerWidth ) * 2 - 1,                                  - ( event.clientY / window.innerHeight ) * 2 + 1, 0.5 );
projector.unprojectVector( vector, camera );

var ray = new THREE.Ray( camera.position, vector.subSelf( camera.position ).normalize() );
var intersects = ray.intersectObjects( kage.scene.children );

if ( intersects.length > 0 ) {
    face = intersects[0].face;
    var faceIndices = ['a', 'b', 'c', 'd'];         
    var numberOfSides = ( face instanceof THREE.Face3 ) ? 3 : 4;
    // assign color to each vertex of current face
    for( var j = 0; j < numberOfSides; j++ )  {
        var vertexIndex = face[ faceIndices[ j ] ];
    // initialize color variable
    var color = new THREE.Color( 0xffffff );
    color.setRGB( Math.random(), 0, 0 );
    face.vertexColors[ j ] = color;
    }
}

Ich initialisiere auch das Objekt, in diesem Fall einen Würfel, wie folgt:

// this material causes a mesh to use colors assigned to vertices
var material = new THREE.MeshBasicMaterial( { 
    color: 0xf0f0f0, 
    shading: THREE.FlatShading,
    vertexColors: THREE.VertexColors 
});

var directionalLight = new THREE.DirectionalLight(0xEEEEEE);
directionalLight.position.set(10, 1, 1).normalize();
kage.scene.add(directionalLight);

var cube = new THREE.Mesh(new THREE.CubeGeometry(300, 300, 300,1,1,1), material);
cube.dynamic = true;
kage.scene.add(cube);

Durch Ändern des Materials wird der Würfel unabhängig von der Lichtfarbe weiß. Die Schnittlogik funktioniert immer noch, dh ich wähle das richtige Gesicht aus, aber leider ändert sich die Farbe nicht.

Ich bin neu bei Stackoverflow. [Nun, ich stelle eine Frage. Hoffentlich sind meine Änderungen nicht verwirrend.]

Antworten auf die Frage(5)

Ihre Antwort auf die Frage