Я пытался заставить raycaster иметь возможность выбрать одну из созданных граней кубов, а затем изменить цвет лица, по которому щелкнули.Я смог заставить его работать с целым объектом, но не с индивидуальными гранями объектов.
Может кто-нибудь объяснить, пожалуйста, разницу между intersectObject () и intersectObjects (), так как я думаю, что это связано с проблемой.
Вот код попытки выбора грани куба, который загружается, но ничего не делает при нажатии на грань куба
function onDocumentMouseDown( event ){
event.preventDefault();
mouse.x = (event.clientX / renderer.domElement.width ) * 2 - 1;
mouse.y = - (event.clientY / renderer.domElement.height ) * 2 + 1;
raycaster.setFromCamera( mouse, camera );
var intersects = raycaster.intersectObject( mesh );
for (var i = 0; i < intersects.length; i++){
intersects[ i ].face.color.setHex( 0xDDC2A3 );
mesh.geometry.colorsNeedUpdating = true;
}
renderer.render(scene, camera);
}
}
А вот один из кубиков в моей сцене
var cubeGeometry2 = new THREE.BoxGeometry(5, 5, 5);
var cubeMaterial2 = new THREE.MeshLambertMaterial({color:0xffff00});
var cube2 = new THREE.Mesh(cubeGeometry2, cubeMaterial2);
//Cube position to sit on top of the plane, allow to cast shadows and add
cube2.position.x = -5;
cube2.position.y = -5;
cube2.position.z = -5;
scene.add(cube2);