Ok, voici le problème: J'utilise un PerspectiveCamera en tant qu'enfant d'un Object3d pour le chasser.Obtenir l'orientation d'un enfant Object3d
...
player.add(backCamera);
backCamera.position.set(0, 10, -80);
backCamera.lookAt(player.position);
...
Maintenant, je suis en train d'utiliser un raycaster pour trouver les objets entre la caméra et le joueur et les rendre invisibles, mais j'ai besoin de la position de la caméra et l'orientation de la caméra.
Merci à ce question j'ai pu trouver la position de la caméra « true » comme ça:
...
player.updateMatrixWorld();
var vector = new THREE.Vector3();
var temp = vector.setFromMatrixPosition(backCamera.matrixWorld);
...
mais je dois encore trouver l'orientation de la caméra « true ». J'ai essayé de suivre this approach et l'approche liée à cette question aussi.
...
var pLocal = new THREE.Vector3(0, 0, -1);
var pWorld = pLocal.applyMatrix4(backCamera.matrixWorld);
var direction = pWorld.sub(backCamera.position).normalize();
raycaster.set(temp, direction);
...
mais semble que le rayon n'est pas correctement orienté, probablement parce que l'orientation est relative à l'objet parent.
Étant donné que la caméra est un enfant d'un autre objet, vous devez soustraire la position du monde de la caméra - pas 'camera.position'. – WestLangley
hmm @WestLangley pourquoi n'existe-t-il pas de .setFromMatrixRotation? Je pensais qu'il pourrait juste l'utiliser, mais il manque ... – Doidel
Ah l'ai eu: https://github.com/mrdoob/three.js/issues/4585 – Doidel