ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 컴퓨터 그래픽스 정리 (1) 컴퓨터 그래픽스의 기본 요소와 래스터 그래픽스 시스템
    Computer Graphics 2021. 10. 2. 23:45
    728x90
    컴퓨터 그래픽스의 기본 요소와 래스터 그래픽스 시스템

     

     

     

    [목차]

     

    컴퓨터 그래픽스의 기본 요소

    - 기하 모델링

    - 애니메이션

    - 렌더링 

     래스터 그래픽스 시스템

     

     

     

    3차원 컴퓨터 그래픽스를 구성하는 세 가지의 기본 요소 

     

     

    컴퓨터 그래픽스란, 추상적인 표현을 시각화해 이미지를 만들어내는 것을 의미하는 것으로 크게 세가지로 분류!

     

     

    1) 기하 모델링 : 수학적(기하학적) 방식으로 물체를 정의하는 것. 실제 존재하는 것들을 3D 스캔하여 쓰거나, 기하학적 모델로 만들어 사용

    2) 애니메이션 : 물리적(광학적) 방식으로 물체를 시각화하는 것. 빛과 모델 속성, 사용자의 눈 위치 정보를 기반으로 모델의 음영, 색깔을 결정하는 과정

    3) 렌더링 : 물리적(역학적)으로 시간에 따라 물체를 움직이게 하는 것. 키프레이밍, 모션캡쳐, 시뮬레이션 방식이 있음

     

    -> 대부분의 그래픽스 작업은 직간접적으로, 위 세 가지의 작업을 거쳐 결과를 생성! 

     

     

     

     

    1) 기하 모델링 ( = geometric modeling)

     

     

    : 가상의 환경을 제작할 때, 장면에 존재하는 모든 대상을 컴퓨터가 처리하기 수월한 형태로 표현하고 저장하는 것을 효과적으로 할 수 있도록 하는 기술 , 즉 기하 물체를 표현하는 기술!

    :  가장 널리 사용되는 방법 - 점, 선분, 다각형 등으로 구성되는 다면체 모델( = polygonal model )을 사용하여 물체 표현 

    : 물체의 정적인 기하 정보를 산출하는 과정

     

     

     

    2) 애니메이션 ( = animation)

    : 기하 모델링을 통해 물체를 생성하고 나면, 동적인 데이터를 산출하는 과정

    : 동영상을 구성하는 각 이미지 프레임을 제작할 때, 연속된 프레임 안에서 물체의 위치와 모습을 변화시키는 기술

    : 즉, 각 프레임에 대한 물체의 움직임을 결정

     

     

     

    3) 렌더링 ( = 3차원 렌더링 / 3D Rendering )

     

    : 3D Scene을 2D 이미지로 변환하는 것

    : 3D Scene은 모델들로 구성되어 있고, 3D 공간에 존재. 그리고 이 모델들은 다시 Geometric primitives로 구성

     

    +) Geometric primitives

    Geometric primitives는 하드웨어나 소프트웨어에서 지원이 되는 경우와 그렇지 않은 경우가 있음
    전자는 기본적인 점, 선, 다각형으로 따로 로우레벨 프로세스가 필요없지만,
    후자는 polynomial curves, implicit surface, voxels 등, 렌더링을 위한 함수를 직접 프로그래밍 해야 함

     

     

    : 가상의 3차원 세상으로부터 마치 카메라로 사진을 찍는 것과 같은 과정을 통해 2차원 영상을 생성하는 작업

    : 1, 2번의 과정을 거쳐, 렌더링을 통해 이미지를 생성한다

    : 피사체를 배치하고 적절한 조명을 설치한 후, 카메라를 원하는 위치에 가져가 적절한 구도를 잡아 셔터를 눌러 사진을 촬영하는 과정을 컴퓨터 그래픽스 기법을 사용하여 수행하는 모든 과정 

    : 이를 위한 대표적인 라이브러리 = OpenGL 

     

     

     

     

    [Graphics Rendering Pipeline]

     

     

    모델을 시각화하기 위한 과정은 사진을 찍는 것과 비슷!

     

     

    (1) 모델을 만들고,
    (2) 모델을 3D 공간에 배치하고
    (3) 모델의 어느 부분을 찍을 지 결정해서 카메라를 설치한 후
    (4) 사진을 찍어 2D 이미지로 만든다

     

    => 이런 일련의 과정은 여러가지 좌표계와 그들 간의 좌표 변환의 연속

     

     

     

    (1) Model coordinate system (MCS)
    : 각자의 모델을 자기 자신의 기준점(원점)을 기반으로 한 좌표계를 통해 만들어지고

     

     

    (2) World Coordinate System
    : 어떤 3D 공간에 모델들을 배치하게 되면, 모델들이 다같이 공유할 수 있는 좌표계를 사용해 서로의 위치를 정의할 수 있습니다. 이때 모델 좌표계를 World 좌표계로 변환하는 과정(Modeling Trasformation)을 거치게 됨

     

     

    (3) Viewing Coordinate System
    : 다음에는 이 모델들을 어디에서 바라볼지 결정하고, 그 카메라를 원점으로 했을 때 모델들의 상대적인 좌표를 계산 (Viewing Transformation)

     

     

    (4) Normalized Device Coordinate System (NDCS)
    : 사진을 찍으면 이 모델들은 카메라 화면에 projection됨. 3D 좌표계가 2D 좌표계로 변환되는 것!

    이제 이 2D 좌표계에 표시된 모델들을 어떤 디스플레이에든 볼 수 있게 하기 위해서 normalize를 하면 가로세로 최대 값이 1인 2차원 좌표계로 변환할 수 있다.

     

     

    (5) Device Coordinate System / Screen Coordinate System
    : 마지막으로 원하는 디스플레이/스크린에 이 정규화된 좌표계의 모델들을 픽셀 하나하나의 색상값으로 변환하는 Rasterization을 통해 2D 이미지를 얻을 수 있게 됨

     

     

     

     

    즉 이 파이프라인을 정리하면... 

     

     

    MCS

    Modeling Transformation

    WCS

    Viewing Transformation

    VCS

    Projection

    NDCS

    Rasterization

    DCS

     

     

    그래픽스 파이프라인을 공부하고 싶다면, 각 좌표계 사이에서 일어나는 일들을 공부하면 된다

     

     

     

     

    래스터 그래픽스 시스템

     

     

     

    1. 래스터 이미지

     

    : 래스터 이미지를 표현하기 위해선 두 가지의 해상도를 고려해야 함

     

     

    1) 이미지를 구성하는 화소의 개수를 결정하는 해상도

     

    2) 각 화소에 대하여 얼마나 많은 수의 색깔을 선택할 수 있는지 결정하는 해상도 -> RGB 

     

     

     

    2. 래스터 그래픽스 시스템

     

    : 래스터 그래픽스 시스템에서는 한 순간에 화면에 도시되는 이미지에 대한 데이터가 항상 프레임 버퍼라고 하는 특수한 시스템 메모리에 저장되어야 한다!  

     

     

     

    3. 프레임 버퍼

     

     

    : 프레임버퍼 = 픽셀 값을 저장하는 2D 배열

    : 최종 2D 이미지는 프레임버퍼에 저장되고, 각각의 줄은 scan-line이라고 불림

    : 각각의 픽셀은 색상값을 가집니다. 24bit 컬러의 경우 RGB를 사용하고, 각각의 채널이 8bits를 차지

    : 즉, 각각의 채널은 0~255까지의 값으로 색상을 표현. 최근에는 32bit 컬러를 사용해 실수를 사용해서 훨씬 정교한 색상 표현 가능

     

     

    현대의 프레임 버퍼는 보통 최소 96 bits를 가짐

    • alpha channel 알파값: 투명도. 0~255
    • z-buffer (depth buffer): 거리값을 저장. 정렬을 통해서 가장 가까운 것을 렌더링할 때 사용
    • Double buffering: 두개의 프레임버퍼를 사용해 flickering를 없앨 수 있음. 모든것은 back buffer에 그려지고, front buffer와 swap.

     

     

     

    https://justdoitproject.tistory.com/37

     

    [CG] 컴퓨터그래픽스 01.기본개념

    2020/04/06 - [CSE] - [CG] 컴퓨터그래픽스 01.기본개념 2020/04/06 - [CSE] - [CG] 컴퓨터그래픽스 02. Rasterization 2020/04/07 - [CSE] - [CG]컴퓨터 그래픽스 03. 기하 변환 Geometric Transformation 1. 컴..

    justdoitproject.tistory.com

     

    728x90
Designed by Tistory.