치춘짱베리굿나이스

[Rank 4] Cub3D - Raycasting 구현 ④ 화면에 벽 그리기 본문

42/42s Cursus

[Rank 4] Cub3D - Raycasting 구현 ④ 화면에 벽 그리기

치춘 2022. 4. 1. 17:14

화면에 벽 그리기

이번 예제에서는 텍스쳐 대신 색상을 사용하여 벽을 그린다

벽의 높이 계산하기

  • 카메라 평면부터 벽까지의 거리를 구했으니 이제 벽의 높이를 계산하고, 실제로 화면에 벽을 그릴 단계에 왔다

  • 가중치 없는 기본값으론, 카메라 평면과 벽 사이 거리가 정확히 1일 때 벽의 높이가 height와 일치한다고 가정한다
  • 화면상 표시되는 벽의 높이는 카메라 평면과 벽 사이의 거리 (perpWallDist) 에 비례한다

  • 이때 취향에 따라 height를 보정하여 사용하여도 상관 없다

  • height의 가중치가 클 수록 벽의 높이가 높아진다

벽을 그리기 위한 벽의 시작점, 끝점 계산

startPoint = (height / 2) - (lineHeight / 2);
if (startPoint < 0)
    startPoint = 0;
endPoint = (height / 2) + (lineHeight / 2);

벽 한 줄 그리기

1. 바닥색과 천장색을 채운다 (ceil, floor)

2. while (x < width) 조건문을 통해 한 줄씩 계산하여 그리기

3. 벽 하나 완성

y면에 해당하는 벽에 다른 텍스쳐나 진한 색 벽을 적용하면 조금 더 그럴듯하게 보인다

Comments