Change the colors of a cube's faces

前端 未结 2 1863
孤独总比滥情好
孤独总比滥情好 2020-12-10 04:06

I actually found this question, but it says material.color doesn\'t exist. I need to know how to change the colors of the various faces of a cube I\'m drawing:<

相关标签:
2条回答
  • 2020-12-10 04:28

    Here is how you set and change the colors of a cube's faces:

    var geometry = new THREE.BoxGeometry( size, size, size );
    for ( var i = 0; i < geometry.faces.length; i ++ ) {
        geometry.faces[ i ].color.setHex( Math.random() * 0xffffff );
    }
    
    var material = new THREE.MeshBasicMaterial( { color: 0xffffff, vertexColors: true } );
    

    If geometry.faces[i].color is changed after the geometry has been rendered, you must set geometry.colorsNeedUpdate = true. ( This is not required for canvasRenderer. )

    three.js r.84

    0 讨论(0)
  • 2020-12-10 04:42

    Here is a fiddle for people who end up here and want to see this code working.

    I made a box and tied 3 colors to the faces:

    // colors
    red = new THREE.Color(1, 0, 0);
    green = new THREE.Color(0, 1, 0);
    blue = new THREE.Color(0, 0, 1);
    var colors = [red, green, blue];
    
    for (var i = 0; i < 3; i++) {
        geometry.faces[4 * i].color = colors[i];
        geometry.faces[4 * i + 1].color = colors[i];
        geometry.faces[4 * i + 2].color = colors[i];
        geometry.faces[4 * i + 3].color = colors[i];
    }
    

    The face colors are changed in the animate loop.


    Also check a related question here with a great answer demonstrating the use of material indices and groups on THREE.BufferGeometry instances.

    0 讨论(0)
提交回复
热议问题