본문 바로가기
Thinking/Graphics

공간 변환(Transformation)이란? 쉽게 이해하기!

by Dev_카페인 2025. 2. 16.
반응형

공간 변환(Transformation)이란? 쉽게 이해하기!

게임에서 3D 모델을 만들고 화면에 출력하려면, 3D 공간에서의 좌표를 변환하는 과정이 필요합니다.
이 과정을 공간 변환(Transformation)이라고 합니다.

공간 변환을 이해하면,
캐릭터를 원하는 위치로 이동하거나
카메라를 조정하여 원하는 장면을 연출하고
3D 모델을 화면에 올바르게 표시할 수 있습니다.

오늘은 공간 변환이 무엇인지, 왜 필요한지, 그리고 어떤 과정으로 이루어지는지 쉽게 설명하겠습니다! 🚀

 

🖌 1. 공간 변환이란?

공간 변환(Transformation)은 3D 좌표를 다른 공간에서의 좌표로 변환하는 과정입니다.
게임에서 캐릭터나 오브젝트의 위치를 변경할 때, 카메라가 움직일 때, 화면에 그리기 위해 계산할 때 필수적인 과정이죠!

📌 공간 변환을 수행하는 이유:
✔ 게임 속 모든 3D 모델은 기본적으로 3D 좌표 데이터를 가집니다.
✔ 하지만, 컴퓨터는 3D 데이터를 바로 화면에 출력할 수 없습니다.
✔ 따라서 3D 좌표 → 2D 화면 좌표로 변환해야 합니다.

이를 위해 총 4단계의 공간 변환 과정이 필요합니다.

 

🌟 2. 공간 변환의 4단계

1️⃣ 오브젝트 공간 (Object Space)
2️⃣ 월드 공간 (World Space)
3️⃣ 카메라 공간 (View Space)
4️⃣ 스크린 공간 (Screen Space)

이제 하나씩 쉽게 살펴보겠습니다!

 

🎭 1️⃣ 오브젝트 공간 (Object Space)

📌 모델의 원래 좌표 (로컬 좌표)

  • 모델(캐릭터, 건물 등)은 각각 자신만의 좌표계를 가집니다.
  • 예를 들어, 캐릭터의 손은 캐릭터를 기준으로 한 위치를 가지고 있습니다.
  • 이 좌표는 월드 좌표와는 별개이며, 모델의 중심을 기준으로 한 상대적인 좌표입니다.

✔ 쉽게 말해:
👉 "오브젝트 자체가 가지고 있는 좌표"입니다.

🌍 2️⃣ 월드 공간 (World Space)

📌 모든 오브젝트가 배치되는 전체 공간

  • 모든 모델은 게임의 하나의 큰 월드(세계) 안에 배치됩니다.
  • 각각의 모델(캐릭터, 건물 등)은 월드 좌표계를 기준으로 이동, 회전, 크기 조정됩니다.
  • 오브젝트 공간에서 월드 공간으로 변환할 때 모델 변환 행렬(Model Matrix)을 사용합니다.

✔ 쉽게 말해:
👉 "게임 속 세계에 배치된 모델의 위치"입니다.
👉 캐릭터가 움직이면 월드 좌표가 변경됩니다.

🎥 3️⃣ 카메라 공간 (View Space)

📌 카메라의 시점에서 보는 공간

  • 게임에서는 카메라가 이동하며 장면을 보여줍니다.
  • 월드 공간에서 카메라를 기준으로 모든 오브젝트의 좌표를 변환해야 합니다.
  • 이 과정에서 뷰 변환(View Matrix)이 사용됩니다.

✔ 쉽게 말해:
👉 "카메라를 중심으로 본 좌표"입니다.
👉 카메라가 움직이면 모든 오브젝트의 위치가 카메라 기준으로 바뀝니다.

🖥 4️⃣ 스크린 공간 (Screen Space)

📌 2D 화면에 그려지는 최종 좌표

  • 게임 화면은 2D 픽셀 좌표로 구성됩니다.
  • 카메라 공간에서 투영 변환(Projection Matrix)을 적용하여 3D 좌표를 2D 좌표로 변환합니다.
  • 이 과정을 거쳐야 화면에 올바르게 출력됩니다.

✔ 쉽게 말해:
👉 "최종적으로 화면에 그려지는 좌표"입니다.
👉 화면 해상도(1920x1080 등)에 맞게 좌표가 변환됩니다.

🚀 3. 공간 변환을 위한 변환 행렬(Matrix)

위의 변환 과정에서 중요한 역할을 하는 것이 변환 행렬(Matrix)입니다.
공간 변환은 행렬 연산을 통해 좌표를 변환하는 방식으로 이루어집니다.

🔹 (1) 모델 변환 행렬 (Model Matrix)

✅ 오브젝트 공간 → 월드 공간 변환
✅ 이동(Translation), 회전(Rotation), 크기 조절(Scale) 적용

🔹 (2) 뷰 변환 행렬 (View Matrix)

✅ 월드 공간 → 카메라 공간 변환
✅ 카메라의 위치와 방향을 기준으로 변환

🔹 (3) 투영 변환 행렬 (Projection Matrix)

✅ 카메라 공간 → 스크린 공간 변환
✅ 원근감 적용 (Perspective Projection)

 

🎮 4. 공간 변환이 실제 게임에서 어떻게 쓰일까?

 

캐릭터 이동

  • 모델 변환 행렬을 이용해 캐릭터를 원하는 위치로 이동할 수 있습니다.

카메라 움직임

  • 뷰 변환 행렬을 사용하여 1인칭/3인칭 카메라를 구현할 수 있습니다.

3D 모델을 2D 화면에 출력

  • 투영 변환 행렬을 사용하여 3D 게임을 우리가 보는 2D 화면에 올바르게 표시할 수 있습니다.

 

🏆 5. 결론

공간 변환은 3D 좌표를 2D 화면에 출력하는 필수 과정이다!
오브젝트 공간 → 월드 공간 → 카메라 공간 → 스크린 공간 순으로 변환된다!
행렬 연산을 사용하여 위치, 회전, 크기 등을 조절할 수 있다!

게임 개발을 하면서 모델을 이동하거나, 카메라를 조작하거나, 화면에 출력하는 과정을 이해하려면 공간 변환 개념이 필수적입니다.

공간 변환을 이해하고 활용하면 더 자유롭게 3D 그래픽을 조작할 수 있습니다! 🎮✨

 

🎯 더 공부해볼 만한 주제!

🔹 유니티에서 공간 변환 적용해보기 (Transform, Camera)
🔹 OpenGL / DirectX의 공간 변환 과정 이해하기
🔹 정점 쉐이더(Vertex Shader)에서 공간 변환 처리하는 방법

 

 

💡 공간 변환에 대해 더 궁금한 점이 있나요?
어떤 부분이 어려웠거나, 추가로 알고 싶은 내용이 있다면 댓글로 남겨주세요! 😊🚀

반응형