Sto provando a raycast il mouse dalla mia macchina fotografica per fare qualche passaggio del mouse e fare clic sugli eventi sulle mesh nella mia scena.THREE.js Raycasting da una telecamera per bambini alla scena
Il mio problema è che la mia macchina fotografica è attualmente l'oggetto figlio di un'altra mesh (per facilitare il movimento/rotazione della telecamera) e ora il mio raycasting non funziona (presumo perché la telecamera è un bambino della mesh, e non la scena).
Questo è parte del mio codice:
//camera setup
var camera = new THREE.PerspectiveCamera(60, window.innerWidth/window.innerHeight, 0.1, 1000);
var cameraTargetGeom = new THREE.SphereGeometry(0.5);
var cameraTargetMaterial = new THREE.MeshLambertMaterial({color: 0xff0000, ambient: 0xff0000});
var cameraTarget = new THREE.Mesh(cameraTargetGeom, cameraTargetMaterial);
cameraTarget.position.set(0.15, 0, 5);
scene.add(cameraTarget);
cameraTarget.add(camera);
camera.position.y = 18;
camera.rotation.x = Math.PI * -90/180;
// click event
renderer.domElement.addEventListener('click', clickedCanvas);
function clickedCanvas(e) {
e.preventDefault();
mouse.x = (e.clientX/renderer.domElement.width) * 2 - 1;
mouse.y = -(e.clientY/renderer.domElement.height) * 2 + 1;
raycaster.setFromCamera(mouse, camera);
var intersects = raycaster.intersectObjects(scene.children, true);
console.log(intersects);
if (intersects.length > 0) {
>... (redacted code)
}
}
Si stava lavorando bene, prima ho aggiunto la fotocamera verso l'oggetto CameraTarget. Come posso raycast dalla fotocamera ora che è un figlio della cameraTarget?
Grazie! Ha funzionato perfettamente. – Ben
Hmm ha lottato con questo per una buona giornata, ancora non ha funzionato per me in r71, ma ha aggiornato la libreria su r73 (la più recente a questo punto) funziona. – Starwave
@Starwave Chi lo sa? Ho cambiato il numero di revisione per ogni evenienza. : -) – WestLangley