Three.js私はこの機能は、メッシュのハード顔をレイキャスティング -
を作成on.Thusにわたりたマウスのキューブ面にレイキャストしたいその後three.jsvar scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(100, window.innerWidth/window.innerHeight, 0.1, 1000);
camera.position.set(5, 5, 10);
var geo = new THREE.BoxGeometry(5,2,5);
var mat = new THREE.MeshBasicMaterial({color:0xff0ff0, wireframe:false, vertexColors: THREE.FaceColors});
var mesh = new THREE.Mesh(geo, mat);
scene.add(mesh);
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
renderer.render(scene, camera);
にボックスを作成しました
var raycaster = new THREE.Raycaster();
var mouse = new THREE.Vector2();
function onMouseMove(event) {
mouse.x = (event.clientX/window.innerWidth) * 2 - 1;
mouse.y = - (event.clientY/window.innerHeight) * 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.colorsNeedUpdate = true;
}
renderer.render(scene, camera);
}
window.addEventListener('mousemove', onMouseMove, false);
約が正しく機能します。つまり、顔の半分の色が変わります。あなたは、BoxGeometry()
によって作成されたメッシュが12 Face3
であることを知っています。私は完全な顔またはハード面またはFace3+Face3
によって形を取っFace4
をしたいです。どのように私はこれを達成することができますか?
の作品と同じ顔を持つすべての顔を見つけます法線方向を選択します。 – uhura
@uhuraも私のためにハッキー –
@ uhuraの答えはかなりまともなです。顔を見つける/選択するための魔法の方法はありません。 A)ループスルーフェイスを選択し、選択する必要があるものを決定するか、B)必要な構造の面索引のマップを事前計算するか、C)6つの別々のメッシュを使用してボックスを構築するBtw Face4はThreeJSから削除されました。 – msun