0
여러 개의 큐브를 만들고 각 큐브에 클릭 이벤트를 추가하고 GeometryUtils.merge를 사용하여 "부모"개체에서 결합하려고합니다.three.js - intersectObjects with GeometryUtils.merge
var cubes=[];
var mainGeom = new THREE.Geometry();
var cubegeometry = new THREE.CubeGeometry(50, 50, 50, 1, 1, 1);
cubes[1] = new THREE.Mesh(cubegeometry);
cubes[1].position.y = -50;
THREE.GeometryUtils.merge(mainGeom, cubes[1]);
cubes[2] = new THREE.Mesh(cubegeometry);
cubes[2].position.y = 50;
THREE.GeometryUtils.merge(mainGeom, cubes[2]);
cubes[3] = new THREE.Mesh(cubegeometry);
cubes[3].position.z = -50;
THREE.GeometryUtils.merge(mainGeom, cubes[3]);
cube = new THREE.Mesh(mainGeom,new THREE.MeshBasicMaterial({ color: 0xff0000 }));
결합이 잘 작동합니다. 하지만 각 이벤트에 클릭 이벤트를 어떻게 추가합니까? 나는 이것을 사용하고있다 :
function onDocumentMouseDown(event) {
event.preventDefault();
mouse = {x : (event.clientX/window.innerWidth) * 2 - 1, y :- (event.clientY/window.innerHeight) * 2 + 1 };
var vector = new THREE.Vector3(mouse.x, mouse.y, 0.5);
projector.unprojectVector(vector, camera);
var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize());
var intersects = raycaster.intersectObjects(cube);
if (intersects.length > 0) {
console.log(intersects);
}
}
그러나 intersects.length는 항상 0이다! 내가 뭘 잘못하고 있니?
고맙습니다.
감사합니다 - 한국 산업 안전 보건 공단
독립형 클릭을 원할 경우 왜 지오메트리를 병합 하시겠습니까? 병합하지 않고 단순히 부모 Object3D에 큐브를 추가 할 수 있어야합니다. –
'Raycaster.intersectObjects()'는 배열을 인수로받습니다. 메쉬로 전달 중입니다. – WestLangley
@WestLangley - 나는 그것을 알고 있고 또한 intersectObject를 사용하여 검사했지만 또한 작동하지 않았다. –