2012-01-27 2 views
4

카메라가 향하는 방향의 3D 벡터와 3D 공간의 3D 객체의 방향/방향 벡터가 주어지면 어떻게 할 수 있습니까? 상기 객체의 방향을 따라 시각적으로 움직이기 위해 마우스 포인터가 화면상에서 따라야하는 2 차원 기울기를 계산합니까?3D 공간 : 마우스 포인터를 사용하여 객체가 향하는 방향을 따라 이동

기본적으로 화살표를 클릭하여 앞뒤로 움직 이도록 할 수 있습니다. 그러나 마우스 포인터가 화살표의 길이를 따라 (즉, 화살표 방향으로) 드래그하는 경우에만 가능합니다. 그것은 가리키고 있습니다.

고맙습니다.

답변

1

나는 100 % 질문을 이해하고 있습니다. 다이어그램을 게시 하시겠습니까?

관심 분야를 찾을 수 있습니다. 나는 이전의 질문에 calculate a local X Y Z axis given a camera direction (보기)로 응답했으며, 또한 translate an object in a plane parallel to the camera에 대한 질문에 대답했다.

두 예제 모두 필요한 벡터를 계산하기 위해 Vector dot product, Vector cross product을 사용합니다. 귀하의 예에서 vector dot product은 두 벡터를 찾은 후에 두 벡터 사이의 각도를 출력하는 데에도 사용할 수 있습니다.

+1

여기 간단한 예입니다. 조금이라도 문제가 해결되기를 바랍니다. 1) http://screencast.com/t/Vl7R1hnhZTY 2) http://screencast.com/t/wq8x9fwnJ – user1070447

+0

기본적으로 내가 물어 보는 것 같아요 개체의 화면에서 2D 좌표를 얻을 수 있습니다. 3D 공간 – user1070447

+0

@ user1070447 기본적으로 3D로 물체의 테스트를 치십니까? 내가 링크 된 이전 질문을 확인하십시오. 거기에 도움이 될 수있는 몇 가지 답변이 있습니다 : http://stackoverflow.com/questions/8633034/basic-render-3d-perspective-projection-onto-2d-screen-with-camera-without-openg/8758027#8758027 –

0

3 차원 실제 좌표를 2 차원 화면 좌표로 변환하는 데 사용하는 변환 정도에 따라 다릅니다. 원근법, 등각 투영 등 ... 일반적으로 역방향 변환이 정보를 잃는 전진 (3d -> 2d) 및 후진 (2d -> 3d) 변형이 있습니다. (즉, 각 3D 점을 앞으로 이동하면 고유 한 2D 점으로 매핑되지만 점에서 되돌아 가면 동일한 3D 점을 얻을 수 없습니다). 누락 된 치수를 얻기 위해 객체 위에 마우스 포인트를 투영 할 수 있습니다.

마우스 끌기의 경우 일반적으로 사용자가 작업 (투영 평면에서의 이동, 확대 또는 축소 또는 고정 점에 대한 회전)을 지정해야합니다. 귀하의 입력은 드래그의 시작과 끝에서의 마우스 좌표로, 3d 좌표계로 변환하여 두 개의 3d 좌표를 얻습니다. 드래그/변환 등을 위해 dx, dy, dz를 지정합니다.

관련 문제