현재 스크린 공간에서 터치를 변환하려고합니다. 현재 작업중인 2D 게임에서 worldspace에있는 위치로 변경합니다.iPhone OS - 스크린 공간에서 월드 공간으로 변환
기본적으로 누군가 x = 345, y = 500 픽셀을 화면에 대고 있으면 화면에서와 거의 동일한 좌표계가 적용됩니다. y는 화면에 표시되지만 화면에서 같을 것입니다. OpenGL은 좌상단 대신 왼쪽 위 구석을 0으로 사용하기 때문에 뒤쪽으로 있어야합니다.
"카메라"는 0,0,0이 음수 인 Z를 보았습니다. 아직 카메라를 코딩하지 않았기 때문에 "카메라"라고 말합니다. 지금은 모든 스프라이트 Z를 -100으로 변환하고 있습니다. ,
// scale the screen point into a value from 0 to 1
point = { screenPoint.x/screenWidth, screenPoint.y/screenHeight, -100, 1 }
// doing a full inverse here, not just swapping rows and cols
out = Inverse(viewProjection) * point
inverseW = 1/out.w
finalWorldCoord = out * inverseW
문제는이 그들이해야보다 방법 작은 나에게 값을주고 있다는 것입니다 -
내가 지금까지 시도 (그리고 티카 두 번 확인되었습니다) 의사 코드는 다음입니다 왜 그런지 모르겠습니다.
이것은 iPhone OS 3.2에서 OpenGL ES 2.0과 함께 사용됩니다.
누구나 올바른 방법을 알고 있습니까?
당신은 당신의 OpenGL을 초기화 코드를 게재 할 수 있습니까? –
z를 -100으로 설정하지 마십시오. 투영 행렬은 실제 Z 값을 0과 1 사이의 값으로 변환합니다. 0은 가까운 평면이고 1은 먼 평면입니다. 0으로 설정하려고하면 원하는 것을 얻을 수 있습니다. – Sekhat