오구의코딩모험

[DirectX] Shadow Mapping, Tessellation, Terrain, Picking, Animation 본문

Game/DirectX

[DirectX] Shadow Mapping, Tessellation, Terrain, Picking, Animation

오구.cpp 2025. 1. 16. 03:06
반응형

 

 

게임 개발에서 배우는 그림자 처리와 애니메이션 기법

 

 

게임 개발에서 그림자 처리, 지형 렌더링, 픽킹(Picking), 애니메이션(Skinning)은 사실적인 그래픽 구현과 상호작용을 위해 중요한 역할을 합니다.

이번 글에서는 Shadow Mapping, Tessellation, Terrain, Picking, Animation(Skinning)과 관련된 개념과 원리를 정리해 보았습니다.  

 


 

 

 

1. Shadow Mapping

 

Shadow Mapping이란?
- Shadow Mapping은 빛의 기준으로 앞에 물체가 있을 경우 그림자를 표현하는 기술입니다.  
- 그림자는 빛의 방향과 물체 간의 관계를 계산하여 생성됩니다.  

그림자 품질 개선  
- 그림자가 깨지지 않으려면, 그림자를 그리는 화면 크기를 카메라 화면보다 더 크게 설정해야 합니다.  
- 쉐도우 맵(Shadow Map)을 먼저 생성한 후, 빛 계산 시 그림자가 생길 영역을 판별합니다.  

 

 

 


2. Tessellation

 

Tessellation의 정의
- Tessellation은 Hull Shader, Tessellator, Domain Shader의 3단계로 구성된 프로세스입니다.  
- 정점(Vertex) 데이터를 사용하여 동적으로 LOD(Level of Detail)을 생성하며, 카메라와의 거리에 따라 폴리곤의 개수를 조정합니다.  

주요 개념
- Control Point(제어점) : 정점이 제어점으로 작용하며, 하나의 Control Point 세트를 Patch라고 합니다.  
- Tessellation을 사용하면 가까운 객체는 디테일을 높이고, 먼 객체는 폴리곤 수를 줄여 성능을 최적화할 수 있습니다.  

 

 

 

 

3. Terrain

 

Terrain이란?
- Terrain은 게임 환경에서 지형을 표현하는 데 사용됩니다.  
- Tessellation을 사용하여 카메라와의 거리에 따라 폴리곤 밀도를 조정함으로써 효율적으로 지형을 렌더링할 수 있습니다.  

 

 

 

4. Picking

 

Picking이란?  
- Picking은 화면 클릭 시 클릭한 좌표를 기반으로 선택된 객체를 판별하는 기술입니다.  
- Ray Casting 기법을 사용하여, 클릭된 좌표에서 광선을 쏘아 물체와의 충돌을 계산합니다.  

계산 방식  
- 클릭 좌표는 Screen Space에서 시작하여 World Space로 역순 변환을 수행하여 계산됩니다.  
- 이를 통해 화면 상의 위치를 3D 공간으로 정확히 매핑할 수 있습니다.  

 

 

 


5. Animation (Skinning)

 

Animation의 개념
- Skinning은 정점 단위의 이동 대신 객체 내부에 뼈대(Skeleton)를 배치하여 관절 단위로 움직이는 방식을 사용합니다.  
- 각 관절의 움직임은 연관된 관절들에도 영향을 주며, 가중치(Weight)를 설정하여 영향을 조정합니다.  

Animation 처리 과정  
1. 바인드 포지션(Bind Position)
   - 애니메이션이 적용되지 않은 기본 상태의 모델입니다.  
2. 로컬 본(Local Bone) 포지션
   - 특정 관절 위치에서의 변환 정보입니다.  
3. 월드 포지션(World Position)
   - 전체 월드 좌표계에서의 변환 정보입니다.  

- 오프셋 변환(Offset Transform) : 바인드 포지션에서 로컬 본 포지션으로의 변환을 의미합니다.  

일반적인 구조
- 애니메이션의 루트 노드는 일반적으로 허리 또는 골반에 위치하며, 이를 기준으로 다른 관절들이 계층적으로 연결됩니다.  

 

 


 

 

정리



1. Shadow Mapping   
   - 그림자의 품질을 높이기 위해 쉐도우 맵 크기를 적절히 설정하세요.  
   - 빛의 방향에 따른 그림자 영역을 정확히 계산하는 것이 중요합니다.  

2. Tessellation   
   - LOD를 활용하여 카메라와 가까운 객체는 디테일을 높이고 먼 객체는 폴리곤 수를 줄이는 방식으로 최적화하세요.  

3. Terrain   
   - 지형 렌더링에 Tessellation을 적용하면 성능을 유지하면서도 자연스러운 디테일을 얻을 수 있습니다.  

4. Picking   
   - Ray Casting의 정확도를 높이기 위해 Screen Space와 World Space 간 변환을 확실히 이해해야 합니다.  

5. Animation (Skinning)   
   - Skeleton 구조와 관절의 가중치 설정을 통해 자연스러운 애니메이션을 구현하세요.  
   - 뼈대 구조를 설계할 때 계층적인 관계를 명확히 설정하는 것이 중요합니다.  

 

 


이번 글에서는 Shadow Mapping, Tessellation, Terrain, Picking, Animation(Skinning)과 같은 게임 그래픽의 중요한 개념을 다루었습니다.

이러한 기술은 복잡한 그래픽 환경에서 사실적인 효과와 효율적인 렌더링을 가능하게 합니다.

반응형
Comments