C언어

Ray casting

성-민 2025. 4. 25. 16:58

화면(또는 3D 공간)에서 광선을 쏘아 물체와의 충돌 여부나 위치를 계산하는 방식

 

주로 3D 렌더링(고전 게임), 충돌 감지, AI 시야 구현, 물리 엔진 등에 사용

 

 

1. 카메라나 특정 지점에서 시작점을 설정

2. 특정 방향(보통 단위 벡터)을 정함

3. 해당 방향으로 광선을 쏴서:

  • 어떤 물체와 충돌했는지,
  • 충돌 지점이 어디인지,
  • 충돌한 물체까지의 거리,
    등을 계산.

원리

광선이 처음으로 부딪히는 벽을 찾으려면, 광선을 플레이어의 위치에서부터 출발시켜 광선이 벽에 포함되는지 반복적으로 검사 해야한다.

  • 광선이 벽에 포함되는 것으로 확인되면, 벽에 포함되는지 확인하던 loop는 멈추게 되고, 거리를 측정해서 알맞은 높이로 벽을 표현한다.
  • 반대로 광선이 벽에 포함되지 않는 것으로 확인되면, 계속해서 추적한다. 광선 방향에 맞는 새로운 위치에서 벽에 포함되는지 다시 검사한다. 벽에 부딪힐 때까지 계속해서 반복한다.