2014-11-07 2 views
1

직각 장면에서 사용하기 위해 THREE.PerspectiveCamera를 사용하고 있습니다. 이것은 THREE.OrthogonalCamera이 특정 유형의 상호 작용에 잘 맞지 않았기 때문입니다. 나는 또한 세 가지 TrackballControls를 사용하고 있습니다. 장면을 확대/축소하고 패닝하는 것은 지금까지 사용자에게 좋았지 만 이제는 프로그램으로 객체를 이동해야한다는 것을 알게되었고 카메라의 x 위치를 설정하는 것은 카메라의 x 위치를 변경하는 것이 아니라 적용됩니다 나도 원하지 않는 관점.THREE.PerspectiveCamera로 비 - 패닝 패닝

지도에서 Z 축을 내려다 보면서 내 원근 카메라를 X 및 Y 축을 따라 2D 평면 (예 :지도 패닝)으로 이동하려고합니다.

THREE.PerspectiveCamera의 경우 "camera.position.x + = 1000"으로 설정하면 카메라가 x 축을 따라 1000만큼 이동하지만 카메라를 회전하여 뷰에 원근감을 적용하고 2D 장면이 왜곡되어 보입니다 . 카메라의 회전 및 4 원 값이 변경되었음을 확인했습니다.

는 (0,0,5000)에서

초기 camera.position은 다음과 같다 :

Before

이어서 camera.position.x = 1000이 설정 같다 :

After

이 문제는이 질문에 언급되어 있습니다 : Moving camera on a perspective map, 나는이 SO 질문에 다루어 졌다고 생각합니다 : Three.js & OrbitControls.js - pan camera parallel to ground plane (like Google Earth).

매트릭스와 3D 영사법으로는별로 좋지 않습니다.하지만 솔루션이 자신의 작업에 포함되어 있다는 것을 알고 있습니다. 나는 또한 내 주위에지도를 드래그하면 현재 으로 올바르게 패닝되었음을 알 수 있습니다. - so the solution may also be embedded in the panning code in THREE.TrackballControls,하지만 이해할 수 없습니다.

누군가 나를 THREE.PerspectiveCamera와 함께 비 시각적 "패닝"을 달성하도록 도울 수 있습니까?

+0

카메라 위치만큼 카메라를 이동해야합니까? – GuyGood

+0

알 겠어 ... 나도 그걸 시도해보고 알게 해. – dps27a

+0

잠깐, 목표물을 회전시키는 거니? 카메라가 – dps27a

답변

0

필요한 것은 직교 카메라입니다. 절두 원뿔은 근본적으로 완벽한 큐브입니다 (원근감 카메라로 형성된 피라미드 구조가 아닌).

이것은 모든 오브젝트가 얼마나 멀리 떨어져 있더라도 같은 크기로 유지된다는 것을 의미합니다. (즉, 직교 카메라에는 깊이 인식이 없음)

원근 카메라의 예. Frustum은 zNear와 zFar 사이의 영역입니다. enter image description here

당신이 묻는 것을 달성하는 유일한 방법은 이것입니다.

이제 질문이 생깁니다. 어떤 상호 작용이 직교 카메라와 잘 작동하지 않았습니까?