0
평면이 메시가 있습니다. 사용자가 메쉬를 두 번 클릭하면 내 코드가 공을 그립니다. 이것은 R71에서 잘 작동하지만, R81로 전환하자마자 raycaster는 교차점을 반환하지 않습니다. 초기화에서ThreeJS 레이 캐스팅은 R71과 다릅니다. R71
() : doubleClickEvent에서
// Plane
plane = new THREE.Mesh(
new THREE.PlaneBufferGeometry(1000, 1000, 3, 3),
new THREE.MeshBasicMaterial({ color: 0xff0000, opacity: .5, transparent: true })
);
plane.visible = false;
scene.add(plane);
planes.push(plane);
() : 다음 코드의 내가 변경하는 경우
event.preventDefault();
var mouse = new THREE.Vector2((event.clientX/window.innerWidth) * 2 - 1, -(((event.clientY/window.innerHeight) * 2 - 1)));
var directionVector = new THREE.Vector3();
directionVector.set(mouse.x, mouse.y, 0.1);
directionVector.unproject(camera);
directionVector.sub(camera.position);
directionVector.normalize();
raycaster.set(camera.position, directionVector);
intersects = raycaster.intersectObjects(planes);
if (intersects.length) {
var sphereParent = new THREE.Object3D();
var sphereGeometry = new THREE.SphereGeometry(.1, 16, 8);
var sphereMaterial = new THREE.MeshLambertMaterial({ color: 0xffffff });
var sphere = new THREE.Mesh(sphereGeometry, sphereMaterial);
sphereParent.add(sphere);
sphereParent.position.set(intersects[0].point.x, intersects[0].point.y, 0.0);
scene.add(sphereParent);
objects.push(sphereParent);
}
intersects = raycaster.intersectObjects(planes);
에
intersects = raycaster.intersectObjects(scene.children);
공은 그려지지만 잘못된 위치에 그려집니다.
아이디어가 있으십니까?