현대 그래픽스 시스템과 실시간 렌더링, 그리고 컴퓨터 비전/게임 개발 등 다양한 분야에서 핵심적으로 사용되는 용어들
1. Graphics (그래픽스)
Graphics란 컴퓨터를 이용해 시각적 정보를 생성, 조작, 표현하는 모든 기술과 과정을 말한다.
• 컴퓨터 그래픽스는 2D 및 3D 이미지를 생성하는 데 사용되며, 게임, 영화, 디자인, CAD 등 다양한 분야에서 핵심 역할을 한다.
• 그래픽스에는 모델링, 텍스처링, 렌더링, 애니메이션 등 여러 단계가 포함된다.
2. Rendering 파이프라인 단계
Rendering 파이프라인은 3D 모델을 2D 이미지로 변환하는 일련의 과정을 말한다.
주요 단계 : 모델 변환, 뷰 변환, 투영, 클리핑, 뷰포트 변환, 래스터화, 쉐이딩, 텍스처링, 후처리
1. 모델 변환 (Model Transformation)
- 개별 3D 객체(모델)를 월드 좌표계로 변환한다.
- 객체의 위치, 회전, 크기를 조절한다.
2. 뷰 변환 (View Transformation)
- 월드 좌표계를 카메라(또는 뷰어) 좌표계로 변환한다.
- 카메라의 위치와 방향에 따라 장면을 재배치한다.
3. 투영 변환 (Projection Transformation)
- • 3D 장면을 2D 평면에 투영한다.
- • 원근 투영(Perspective Projection) 또는 평행 투영(Orthographic Projection)을 사용한다.
- • 이 단계에서 깊이 정보가 보존되어 나중에 Z-버퍼링(Z-buffering) 등으로 처리된다.
4. 클리핑 (Clipping)
- 카메라 시야(FOV) 밖에 있는 부분이나, 가까운/먼 거리의 객체를 잘라낸다.
- 이는 렌더링 성능을 최적화하는 동시에, 화면에 표시할 필요 없는 부분을 제거한다.
5. 뷰포트 변환 (Viewport Transformation)
- 투영된 2D 좌표를 실제 화면 좌표(픽셀 단위)로 변환한다.
6. 래스터화 (Rasterization)
- 변환된 2D 기하학적 데이터(점, 선, 삼각형 등)를 픽셀 단위의 이미지 데이터로 변환한다.
- 각 픽셀에 대해 해당하는 색상, 깊이, 텍스처 좌표 등을 계산한다.
7. 쉐이딩 (Shading) 및 텍스처링 (Texturing)
- 각 픽셀의 색상과 광원 효과를 계산한다.
- 텍스처 매핑을 통해 모델 표면에 디테일을 추가한다.
- 다양한 쉐이딩 기법(예: Flat, Gouraud, Phong 쉐이딩)을 적용한다.
8. 후처리 (Post-Processing)
- 렌더링된 이미지에 효과(안티앨리어싱, 블룸, 모션 블러 등)를 적용하여 최종 결과물을 생성한다.
3. Mesh (메쉬)
Mesh는 3D 모델을 구성하는 기본 요소로, 주로 정점(Vertex), 엣지(Edge), 면(Face)으로 이루어져 있다.
- Vertex : 3D 공간의 점.
- Edge: 두 정점을 잇는 선분.
- 면 Face : 보통 삼각형이나 사각형 형태의 다각형, 정점들과 엣지들로 둘러싸인 면.
- 메쉬는 3D 모델의 형태와 기하학적 구조를 정의하며, 애니메이션, 충돌 감지, 렌더링 등 여러 분야에서 사용된다.
4. Texture (텍스처)
Texture는 3D 모델의 표면에 디테일(색상, 패턴, 재질)을 입히기 위해 사용하는 2D 이미지이다.
- 메쉬의 정점vertex 이나 면에 UV 매핑을 통해 텍스처 좌표를 부여하여, 텍스처 이미지를 올바르게 매핑한다.
- 텍스처는 모델의 사실감을 높여주며, 표면의 거칠기, 반사, 불투명도 등 다양한 정보를 포함할 수 있다.
5. 3D 렌더링
3D 렌더링은 3D 모델(메쉬, 텍스처, 광원, 카메라 등)을 사용하여 2D 이미지 또는 애니메이션을 생성하는 과정이다.
- 위에서 설명한 렌더링 파이프라인 단계를 모두 포함하며, 주로 게임, 영화, VR, AR 등에서 활용된다.
- 3D 렌더링은 실시간 렌더링(게임 엔진)과 오프라인 렌더링(영화 제작)으로 구분된다.
6. Vector Graphics (벡터 그래픽스)
Vector Graphics는 수학적 벡터(선, 곡선, 도형)로 이미지를 표현하는 방식이다.
• 장점:
• 무한 확대/축소가 가능하다.
• 파일 크기가 작으며, 선명한 렌더링을 제공한다.
• 단점:
• 복잡한 사진 같은 이미지를 표현하기에는 부적합하다.
• 주로 로고, 아이콘, 일러스트 등에서 사용된다.
7. Raster Graphics (래스터 그래픽스)
Raster Graphics는 픽셀의 집합으로 이미지를 표현하는 방식이다.
• 장점:
• 복잡한 사진이나 디테일이 많은 이미지를 표현하는 데 적합하다.
• 단점:
• 확대 시 픽셀이 보이는 문제(픽셀화)가 발생한다.
• 일반적으로 사진, 디지털 이미지 등은 래스터 그래픽스로 저장된다.
8. Rasterization (래스터화)
Rasterization은 벡터 형태의 기하학적 데이터를 픽셀(래스터) 이미지로 변환하는 과정이다.
• 3D 렌더링 파이프라인의 핵심 단계 중 하나이다.
• 삼각형, 선분, 점 등 벡터 데이터를 화면의 픽셀 grid에 맞게 채워넣어, 각 픽셀에 대해 색상과 깊이 정보를 결정한다.
• 하드웨어 가속을 통해 빠르게 수행되며, GPU의 핵심 기능 중 하나이다.
9. OpenGL
OpenGL은 2D 및 3D 그래픽스를 렌더링하기 위한 표준 API이다.
• 크로스 플랫폼으로 동작하며, 게임, 시뮬레이션, CAD 등 다양한 분야에서 사용된다.
• OpenGL은 렌더링 파이프라인의 여러 단계를 직접 제어할 수 있는 함수들을 제공하며,
• 버텍스 셰이더, 프래그먼트 셰이더, 기하 셰이더 등을 통해 사용자가 커스터마이즈할 수 있다.
• OpenGL은 하드웨어 가속을 활용해 복잡한 3D 씬을 실시간으로 렌더링하는 데 최적화되어 있다.
응용에서의 차이점 및 활용
- Vector Graphics vs. Raster Graphics
- 벡터 그래픽스는 확대/축소 시 해상도 손실이 없으며, 주로 로고, 아이콘, 일러스트 등에 사용된다.
- 래스터 그래픽스는 사진 및 복잡한 이미지 표현에 유리하지만, 확대 시 픽셀화 현상이 발생한다.
- • Rasterization
- 3D 렌더링에서는 벡터(3D 모델)를 픽셀로 변환하는 과정이 필수적이다.
- 예를 들어, 게임 엔진에서는 실시간으로 삼각형을 픽셀로 변환하여 화면에 출력하는 과정이 rasterization이다.
- OpenGL
- OpenGL은 이러한 rasterization 과정을 효율적으로 처리하기 위한 API이다.
- 개발자는 OpenGL을 통해 3D 모델의 버텍스 데이터를 셰이더에 전달하고, 최종 이미지를 생성하는 렌더링 파이프라인을 직접 제어할 수 있다.
Temporal 3D Consistency
시간에 따라 변화하는 3D 장면(또는 물체)의 재구성·표현에서, 연속된 프레임(시점) 간에 공간적·기하학적 정보가 어긋나거나 깨지지 않도록 유지하는 것을 의미한다. 즉, 3D 객체의 형상(geometry), 위치, 표면 특성 등이 프레임마다 부드럽게 이어지고 일관되게 표현되는 상태를 말한다.
Temporal 3D Consistency는 시·공간적으로 변하는 장면에서 3D 표현이 매끄럽게 이어져 시각적 품질과 신뢰도를 높이는 핵심 개념
ex)
• 동영상 속 3D 재구성: 여러 프레임을 기반으로 3D 모델을 계속 업데이트할 때, 이전 프레임에서 얻은 모델과 다음 프레임에서 얻은 모델이 갑자기 크게 달라지지 않도록 일관성을 유지해야 한다.
• 실시간 AR/VR: 카메라가 움직이거나 객체가 이동해도, 3D 객체가 ‘튀거나 깨지지 않고’ 자연스럽게 이어지도록 하는 것.
Camera trajectory
카메라가 3D 공간에서 이동하면서 찍은 위치와 방향의 연속적인 경로를 의미한다.
• 즉, 카메라가 촬영하는 동안 어떤 경로를 따라 이동하는지를 나타내며, 시간에 따라 카메라의 위치와 시선(orientation)이 어떻게 변화하는지 기록한 궤적이다.
• 이 정보는 3D 재구성, SLAM, 영상 안정화, 영화 촬영 등 다양한 분야에서 중요하게 사용된다.
Path와 Trajectroy의 차이
- Path : 단순하게 A to B를 가는 경로, 속도나 시간은 고려되지 않음
- Trajectory : 생성된 Path를 특정 속도 혹은 특정 시간동안 이동하는 경로
- 특정 물체가 어떠한 경로를 따라가는 형태를 시간의 함수로 풀어 나타낸 것이다.
- 로봇으로 생각하면 로봇이 특정 경로를 따라가는걸 시간의 함수로 나타냈다고 보면 된다.
- 즉, Path는 단순히 경로, Trajectory는 이런 경로를 속도를 가진 상태에서 표현한 것이라고 볼 수 있다.
- Path를 구축하고 구축한 Path를 특정 속도, 시간에 맞춰 이동하는 것이 Trajectory이기 때문에
Path 와 Time Scaling 을 통하면 Trajectory를 만들 수 있게 된다.
reference
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=nswve&logNo=221573703005
https://asidefine.tistory.com/88
'AI > Computer Vision' 카테고리의 다른 글
[CV] Xvfb 설정 nvidia-smi랑 연결, error, OpenGL 사용법 /pyglet.canvas.xlib.NoSuchDisplayException: Cannot connect to "None" (0) | 2025.01.30 |
---|---|
[CV] NVS evaluation metrics (0) | 2025.01.24 |
[CV] DeepLabCut 설치 / 사용법 (2) | 2024.06.26 |
[CV] Few-shot learning 이란? (0) | 2024.06.18 |
[CV] 컴퓨터 화면 원점, 좌표 설정 (0) | 2024.06.07 |