raycasting2 [DirectX11] Ray와 물체의 충돌 판정 (Intersection) Ray와 물체의 Intersection Ray- Mesh ray를 이용해서 picking을 하기 위해서는 일단 ray가 mesh를 지나는지를 알아야 할 것이다. mesh를 이루는 각 삼각형들에 대해서 충돌 판정을 하고, 삼각형과 충돌이 확인되면 그 삼각형이 속한 mesh가 선택될 수 있다. 그러나 매 프레임마다 mesh를 이루는 수많은 삼각형에 대해서 충돌 체크를 한다면 부담이 될 것이다. 연산량을 줄이기 위해 bounding box와 같은 단순한 collider와 먼저 충돌 체크를 하고, 충돌했을 때 삼각형들을 체크한다. bounding box와 충돌하지 않았으면 삼각형과도 충돌하지 않은 것이므로 연산을 할 필요가 없다. picking, 충돌 감지 목적의 단순한 mesh가 따로 저장되어있는 경우도 있다.. 그래픽스(DirectX) 2023. 5. 1. [DirectX11] 2D화면 클릭해서 3D물체 선택하기(picking ray) picking ray 마우스로 화면을 클릭하여 3D 물체를 선택하게 하려면 어떻게 해야 할까? 2D의 스크린 좌표에 그 지점을 투영한 3D 좌표를 구해야 한다. view space는 3D 공간이지만, 2D 좌표로부터 3D로 변환하기 때문에 하나의 좌표값으로 대응되지 않는다. 따라서 눈, 즉 의 원점에서 클릭한 점을 지나는 방향 벡터로 광선(ray)을 쏜다. 그리고 광선이 여러 물체를 지날 수 있지만, 카메라에 가장 가까운 것을 선택하도록 한다. screen space에서 클릭한 점을 가지고 view space에서 picking ray를 구현해야 하므로 좌표 변환이 필요하다. 화면을 그리기 위한 좌표 변환에서 반대로 진행하면 된다. Screen spcae → View space screen space에서 .. 그래픽스(DirectX) 2023. 4. 29. 이전 1 다음