This seems to do what you're asking (though I've never used Three before, so I'm not 100% it's what you're asking for:
The key is (as morris4) says, setting the colors on the face, rather than the geometry.
You also need to set the material 'vertexColors' property so that it feeds through.
var renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
geometry = new THREE.CubeGeometry( 10, 10, 10 );
for ( faceIndex in geometry.faces )
{
var face = geometry.faces[ faceIndex ];
face.vertexColors[ 0 ] = new THREE.Color(0xFF0000);
face.vertexColors[ 1 ] = new THREE.Color(0x00FF00);
face.vertexColors[ 2 ] = new THREE.Color(0x0000FF);
face.vertexColors[ 3 ] = new THREE.Color(0xFFFFFF);
}
var material = new THREE.MeshBasicMaterial({ color: 0xFFFFFF, vertexColors: THREE.VertexColors });
var object = new THREE.Mesh( geometry, material );
object.position.z = -25;
scene.add(object);
function render() {
requestAnimationFrame(render);
object.rotation.x += 0.01;
object.rotation.y += 0.01;
renderer.render(scene, camera);
}
render();
I put this on a fiddle here: http://jsfiddle.net/87mcD/3/
You should note that it's r54, and the latest is r63. And it doesn't appear to work as is on the latest version.
Still, it may still be of use to you...
EDIT: This fiddle works on three.js r.63: http://jsfiddle.net/87mcD/4/