유니티에서 Camera를 이용한 DepthMap을 얻기 위해 shader 작성 중UnityObjectToClipPos
해당 소스코드 1개 줄을 이해하기 위해 필요한 좌표계 관련 정보이다.
Vertex Transform
- Vertex 들은 GPU 메모리에 저장이 되어있고, Rendering 수행 시점에서 GPU는 메모리로부터 버텍스 정보들을 가져온다. 그리고 이를 적절히 그리기 위해 변환(transform)된다.
Local - World - View - View Frustum
Local
Vertex들은 위치없이 오직 Mesh형태만 가진 데이터.
1개의 mesh가 여러 위치에서 다중(multi object)으로 사용되기 때문이다.
3D 공간의 특정 위치가 반영되지 않은 원점 기준 mesh model에 대한 위치 데이터만 가지고 있는 데이터를 Local Space에 존재한다고 표현한다.World
3D 환경에서 우리는 Local의 Vertex데이터를 World 좌표계(3D 공간)에 표현하여야 한다. position, rotation 값을 이용하게 되며, 이 과정(Local2World)을 World Transform이라 한다.View
이 부분은 간단하다. World 좌표계에서 카메라 좌표계로 변환한다. Scene에 존재하는 카메라 좌표계 각각에 맞게 변환된다. 이 과정(World2View)을 View Transform이라 한다.View Frustum
object들은 3D 공간에 있지만 최종적으로 Rendering 되어 보여지는 공간은 2D 공간이다. 3D-2D 변환은 Projection을 이용하게 되며, 과정에서 원근법을 적용(perspective) or 무시(orthographic)가 가능하다.
원근법 적용 유무에 따라 시야의 영역이 피라미드꼴 혹은 직육면체꼴을 띠는데, 이러한 volume을 View Frustum이라 한다.
'Developer > Simul' 카테고리의 다른 글
Unity Animator 무료 (0) | 2021.11.02 |
---|---|
Unity Event 함수 Life Cycle (0) | 2021.02.03 |
Unity - ROS 통신 (0) | 2021.02.03 |
댓글