2012-10-23 4 views
0

Collada 객체를 사용하여 간단한 데모로 기본 마우스 통합을 시도하고 있습니다. 올바른 마우스 x와 y를 얻을 수는 있지만 개체로 사용할 좌표로 변환하는 방법을 모르겠습니다.마우스 위치를 객체 좌표로 변환

GLGE 함수 duck.setLoc(mousepos.x, mousepos.y)이 픽셀에서 변환되기를 기대했지만 그럴 수 없습니다.

2D 마우스 포인트 픽셀을 3D 포인트로 변환하려면 어떻게해야합니까?

답변

0

화면 좌표 (x0, y0)를 가리키는 점이 있다면 해당 좌표를 투영하지 않고 3d로 좌표를 계산할 수 있습니다 (예 : z- 좌표를 클리핑 창 근처로 설정). (x, y, near-z)가 사영 매트릭스로 화면 좌표를 얻으려는 것처럼 이제 역 프로세스를 수행합니다.

그러나 교차점의 좌표를 3 차원으로 얻으려면 위에서 언급 한이 샘플 점과 카메라의 원점을 사용하여 장면에 광선을 투영하고 교차점을 계산할 수 있습니다.

의사 코드 :

ray.origin = camera.position; // vec3 
ray.direction = samplePoint.position - camera.position; //vec3 

check_intersections_with_triangles_in_scene(scene, ray); // retrieve 3d coord of intersection 

당신은 예를 들어,이 모든 기능이 이미 내장되어, Three.js를를 사용하고, 그래서 할 수있는 케이크 한 조각의 경우. 이 데모를 확인하십시오 : http://threejs.org/examples/webgl_interactive_draggablecubes.html.

관련 문제