컴퓨터 그래픽스에 대해..
- 2D 그래픽도 3차원 그래픽의 한 종류이다.(3D를 2D로 바꾸는 것)
- 프레임이 온라인으로 제작되면, 그것을 실시간 그래픽스라고 부른다. ex) 게임
- 반대는 비실시간 그래픽스이다. ex) 영화, 애니메이션
- 1초에 30번 이상의 영상을 만들어내면 실시간 그래픽스고, 그렇지 않으면 비실시간 컴퓨터 그래픽스이다.
- 비실시간 컴퓨터 그래픽스는 하나의 그럴듯한 이미지를 만들기 위해 많은 계산을 하여 오랜 시간이 걸린다. 하지만 실시간 컴퓨터 그래픽스는 1초에 30번 이상의 이미지를 그려야하기때문에 간략화된 계산을 하고 GPU가 병렬처리를 한다.
- 이 과목에서는 실시간 그래픽스를 다룬다.
컴퓨터 그래픽스의 과정 (실시간, 비실시간 모두 해당)
modeling->rigging->animation->rendering->post-processing
파란색: 화면에 장면을 그리기 위한 자원 / 미리 작업해두는 것 / 배포하기 전 / off-line task /아티스트가 작업
빨간색: 사용자에게 전달하기 위한 부분 / run time에 진행하는 동작 / ex) 게임 도중에 / on-line task
Modeling: 모델을 만들어내는 과정
모델이란?
- 컴퓨터가 물체를 표현한 것. '물체가 어떤 형상이냐'
- 기본적으로 geometry(+α 데이터) 정보만 있다.
- 모델을 표현하기 위해 polygon meshes(다각형)를 사용한다. 폴리건 중에서도 주로 삼각형(triangle meshes)를 사용한다.
- texture은 대표적인 모델 관련 데이터이다. 지오메트리에 텍스쳐(이미지로 계산된 색상)을 합치는 것을 렌더링이라고 한다.
Rigging: 스켈레톤이라고 부르기도 함. 뼈를 심는 과정
뼈를 왜 심느냐? 모델이 다른 자세를 취할때, 다른 자세인 모델을 하나하나 만들지 않는다. 뼈를 심어서 모델 자체가 움직이게 만든다.
Animation: 버튼을 누르면 재생
동작을 미리 저장해둔다. 보통 keyframe animation을 사용함.(Quaternion 배울때 자세히 알려줌)
아티스트가 3ds Max, Maya, Blender 등의 툴을 이용하여 만들어둔다.
Rendering: 3D 데이터를 이용하여 그럴싸한 2D 이미지를 만드는 과정
lighting, texturing, geometry 등의 정보가 필요하다. 이런 이미지를 1초에 몇십개씩 만들고 사용자의 입력에 따라 빠르게 제공하면 사용자는 객체가 움직인다고 생각함. (사람의 뇌가 인터폴레이션)
Post-processing: 후처리
한 프레임의 렌더링만으로 처리할 수 없는 효과를 처리함. ex) 모션블러 (사진을 찍을때 물체가 너무 빠르게 움직이면 흐릿하게 보이는 현상)
이런 현상이 있어야 더 리얼하다고 느낌
Graphics API: 명령어를 호출함. GPU가 렌더링을 수행하려면 우리가 그래픽스 API를 호출해줘야함.
- rendering, post-processing을 할땐 보통 Direct 3D나 open GL을 직접 사용하지않고 유니티 같은 게임엔진을 사용한다.
- 게임엔진을 사용하면 아티스트의 자원을 쉽게 통합 가능하며 쉽게 렌더링이 가능하다.
- 게임 엔진에서도 결과적으로 사용자에게 전달하는건 3D 데이터를 가지고 만들어진 2D. 이 과정이 렌더링이고 렌더링은 GPU를 사용해서 그래픽스 랜더링 파이프라인을 통해 만들어지는 것이다. GPU 안에서도 어떠한 instruction이 수행되고 있다는 얘기다. 이 명령어를 호출하는게 graphics API이다.
- API를 호출하려고 만들어진게 Direct 3D랑 open GL이다.
- Direct 3D는 윈도우즈 API, open GL은 platform-independent이다. Open GL은 교육용으로 많이 쓰인다.
- 정리하자면, 최하단에서 그래픽카드에 명령어를 실행하라고 전달해주는 통로가 graphics API이고, 그 중 하나가 open GL인 것이다.
'나도 공부한다 > 컴퓨터 그래픽스' 카테고리의 다른 글
Modeling(모델링) (0) | 2021.10.17 |
---|