이 질문은 여러 번 반복되었지만 특정 문제에 대한 답변을 찾을 수 없습니다.Three.js : 카메라가보고있는 방향을 잡으십시오.
나는 html5와 THREE.js를 사용하여 게임을 만들고 있는데, 나는 'YXZ'의 오일러 순서로 회전하는 카메라를 가지고 있습니다.
이렇게하면 카메라가 머리처럼 위, 아래, 왼쪽, 오른쪽으로 회전합니다. 1 인칭 관점에서와 마찬가지로.
이 오일러 순서에서는 camera.rotation의 z 속성이 사용되지 않습니다 (항상 0). x는 피치 또는 위도를 라디안으로 지정하는 데 사용되며 y는 경도를 나타냅니다.
필자는 구형 방식으로 사용자 주위를 움직이는 많은 대상을 가지고 있으며 카메라는이 구의 중심에 항상 위치합니다. 구체의 반지름이 1000이라고 가정 해 보겠습니다.
내 목표는 카메라가 보이는 위치와 대상이 이루는 각도를 계산하는 것입니다. I가 목표 (타겟 [0] .position)의 벡터가
var A = new THREE.Vector3(1,0,0);
var B = new THREE.Vector3(0,1,0);
var theta = Math.acos(A.dot(B)/A.length()/B.length());
// theta = PI/2;
:
는 I 2 개 벡터 사이의 각도를 계산하는 코드를 썼다.카메라가보고있는 위치의 벡터를 얻는 방법을 알아 내지 못합니다.
저는 Vector3.applyProjection 및 applyEuler 메서드를 살펴 보았지만 주위를 둘러 보았지만 여전히 좋은 결과를 얻을 수 없었습니다.
투영하기 전에 오일러 순서를 먼저 'XYZ'로 다시 변경해야한다고 생각합니까? 시도해 보았지만이 작업을 수행하는 방법을 잘 모르겠습니다. 문서를 이해하기가 어렵습니다.
카메라가 바로 옳게 보이면 현재 회전 방향에서 중심으로부터 RADIUS 거리만큼 떨어져있는 벡터를 가져와야한다고 말하십시오.
그래서 나는 계산을 할 수있는 2 개의 벡터로 끝낼 것입니다!
고맙습니다!
카메라가 어느 방향으로 향하고 있는지, 북쪽/남쪽 방향 등을 어떻게 알 수 있습니까? 또는 더 간단하게 : 카메라를 얼마나 많이 회전 시켰습니까? 나는 어떤 target.position가 –
인지 알지 못한다. 카메라는 이제 세계 공간에서 어떤 방향으로 향하고 있는지를 찾기 위해 getWorldDirection()을 가지고있다. – Neil