2009년 06월 27일
[3D][DirectX] Picking
과제로 작성한 피킹입니다. 상당히 예전에 작성한거죠..




LabProject.exe
클릭하면 카메라가 해당오브젝트의 뒤로 이동하게 되어, 제어할 수 있습니다.
피킹방법이야 여러 책에서 단골로 등장하니깐요.
간단히 요약해 놓자면
스크린좌표를 카메라좌표계로 변환하여 카메라에서 해당방향으로 뻗어나가는 Ray를
생성하고 이것을 필요에 따라 월드좌표계 -> 로컬좌표계로 변환시켜서 사용하게 됩니다.
DX샘플보면 오브젝트의 전체 폴리곤에 대해 피킹하는 예제를 볼 수 있습니다.
D3DX에서 제공하는 D3DXIntersectTri함수를 사용하면 쉽게 구현이 가능합니다.
아무래도 각각의 폴리곤에 대해서 검사하는건 비용문제가 클꺼라고 생각해서
오브젝트를 감싸는 바운드 박스를 계산하고 바운드박스로 피킹검사를 했습니다.




LabProject.exe
클릭하면 카메라가 해당오브젝트의 뒤로 이동하게 되어, 제어할 수 있습니다.
피킹방법이야 여러 책에서 단골로 등장하니깐요.
간단히 요약해 놓자면
스크린좌표를 카메라좌표계로 변환하여 카메라에서 해당방향으로 뻗어나가는 Ray를
생성하고 이것을 필요에 따라 월드좌표계 -> 로컬좌표계로 변환시켜서 사용하게 됩니다.
DX샘플보면 오브젝트의 전체 폴리곤에 대해 피킹하는 예제를 볼 수 있습니다.
D3DX에서 제공하는 D3DXIntersectTri함수를 사용하면 쉽게 구현이 가능합니다.
아무래도 각각의 폴리곤에 대해서 검사하는건 비용문제가 클꺼라고 생각해서
오브젝트를 감싸는 바운드 박스를 계산하고 바운드박스로 피킹검사를 했습니다.
# by | 2009/06/27 23:12 | 트랙백 | 덧글(0)
◀ 이전 페이지 다음 페이지 ▶


