THREE.js Raycasting d'une caméra enfant à la scène

J'essaie de rayonner la souris de ma caméra pour faire un survoltage et cliquer sur les événements sur les mailles de ma scène.

Mon problème est que ma caméra est actuellement l'objet enfant d'un autre maillage (pour faciliter le mouvement / la rotation de la caméra) et maintenant, mon raycast ne fonctionne pas (je suppose parce que la caméra est un enfant du maillage, et non la scène).

Cela fait partie de mon code:

//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) } } 

Il fonctionnait bien avant d'ajouter la caméra à l'objet CameraTarget. Comment puis-je rayonner de la caméra maintenant que c'est un enfant de la cameraTarget?

Vous pouvez utiliser le modèle suivant pour le raycast, et cela fonctionnera correctement même si la caméra est l'enfant d'un autre objet. Il fonctionne pour les caméras en perspective et orthographique.

 var raycaster = new THREE.Raycaster(); // create once and reuse var mouse = new THREE.Vector2(); // create once and reuse ... mouse.x = ( event.clientX / renderer.domElement.clientWidth ) * 2 - 1; mouse.y = - ( event.clientY / renderer.domElement.clientHeight ) * 2 + 1; raycaster.setFromCamera( mouse, camera ); var intersects = raycaster.intersectObjects( objects, recursiveFlag ); 

Trois.js r.84