[출처 :컴퓨터그래픽스 고려대학교 - 한정현]
[3D 컴퓨터 그래픽스]
3차원으로 표현된 물체를 입력으로 받아서 2차원 영상을 출력하는 것
[2차원 영상]
연속적으로 프레임을 보여주면 물체의 움직임을 보여줄 수 있다.
[실시간 그래픽스]
얼마나 빠른 frame per sconds 에 따라 구분됨
ex) 게임, 가상현실, 증강현실 : 30 fps 이상
[비실시간 그래픽스]
빠른 프레임보다는 실사와 구분되지 않게 사진현실적(photorealistic images) 만들어내는것이 목표
ex ) 영화
해당 수업에서는 OpenGL 을 이용해서 실시간 그래픽스를 공부할것
[그래픽스 생성 과정]
modeling > rigging > animation > rendering > post-processing
------------------------------------------
ㄴ offline (max,maya) ---------------------------------------------------
ㄴrun-time
[Modeling]
실제 물체를 컴퓨터에서 만들어냄
- 대부분 polygon meshes 를 사용 ( 다각형 메쉬 )
- Polygon meshs 에 입혀실 texture 를 만든다.
[Rigging]
움직임을 구현하기 위해서 Skeleton 을 만들고
그것을 polygon mesh 내부에 집어넣고
뼈과 polyon mesh 의 꼭지점들의 상관관계를 만들어준다면
뼈가 움직이면 polygon mesh 가 움직이게 된다.
[Animation]
skeleton motion 을 만든다.
[run-time]
런타임에 애니메이션화된 스켈레톤 모션들을 작동시킨다.
[Rendering]
- 재생을 할 뿐더러 , 삼차원 관계형으로부터 2차원 영상을 만드는 것인데,
이를 위해서는 texturing ligthing이 필요하다.
[Post-processing]
- 빠르게 움직이는 것은 흐리게 보여야한다. ( motion blur ) 빠르게 움직이는 방망이를 흐리게 해주는것
[게임이 작동하는 아키텍쳐 ]
APP | 게임 애플리케이션 |
GameEngine | 게임 엔진이라는 툴을 사용한다.( 유니티 , 언리얼엔진 ) 게임 엔진은 animation , rendering, post-processing 을 다 포함하고 있다. |
Graphics API | 게임엔진은 그래픽스 API 위에 만들어진다. OpenGL, OpenGLES의 API는 약 250여개 가량의 함수 호출을 이용하여단순한 기하도형에서부터 복잡한 삼차원 장면을 생성할 수 있다 |
GPU | 그래픽스 프로세싱 유닛이다. |
### 수학기초 ###
[Matrix]
[Vector]
2D row Vector (x,y)
2D column Vector( x
y ) OPENGL 은 column vector를 이용한다.
3D row Vector (x,y,z)
[Traspose행렬(전치행렬)]
A*B 의 전치 = B전치 * A전치 와 동일하다.
[Identity Vector]I
1 0
0 1 같은 대각선이 1인 행렬을 이야기 한다. 어떤 행렬을 곱하건 동일 행렬이 나온다.
[Inverse Matrix]
AB =I 일떄
A = B^-1 가 되고 이는 역행렬 관계라고 말할 수 있다.
(AB)^-1 = B^-1*A^-1 이 된다.
[normalization정규화]
v/||v|| 벡터를 자기 자신의 길이로 나눈것 ( 길이가 1이 되고 방향만 남는다. )
정규화가 된것을 UnitVector 단위벡터라고 한다.
[Coordinate System and Basis]
좌표계 = 원점(origin) + 기저 (Basis) = 공간이라고 부르기도 한다.
[Orthonormal]
orthonormal 한 벡터 2개로는 평면상의 모든 좌표를 만들어 낼 수 있다.
orthonormal standard : (1,0) (0,1) 90도를 이루는 정규화된 basis에 놓여잇는단위벡터 2개
orthonoraml non-standard : (1/root(2), 1/root(2)) (-1/root(2), -1/root(2)) 90도를 이루지만 basis는 아닌 것
[Dot Product]A·B
Inner Product 라고도 쓴다. ( 내적 )
A와 B를 n차원 벡터라고 생각했을 때
수학적으로는
A·B = A1B1 + A2B2 + .. + AnBn 이 된다.
기하학 적으로 보았을 때
A·B = |A||B|cosΘ 가 된다.
ex)두개가 수직을 이룰때 무조건 0 이 된다. ex) (0,1)·(1,0) = (0,0)
ex)두개가 예각을 이룰때 >0
ex)두개가 둔각을 이룰때 <0
단위벡터 자기자신을 내적하면 1 이 된다.
basis unit vector 2개 스스로내적:1 서로내적:0
orthonoraml vectors 2개 스스로내적: 1 서로내적:0
[Cross Product]AXB
3D에서만 정의가 된다.
방향 : 오른손의 손가락 이 a->b를 지나가게 하면 엄지의 방향이 crossproduct 방향이 된다.
길이 : |a||b|sinΘ ( 두벡터가 이루는 평행사변형의 면적과 같다. )
좌표 : A(Ax,Ay,Az) x B(Bx,By,Bz) => (AyBz-AzBy, AzBx-AxBz, AxBy-AyBx)
ex) 자기 스스로 CrossProduct 하면 크기(0,0,0) , 수직방향이 된다.
ex) AxB = -BxA
ex) 직각인 벡터끼리일때 : 길이 가장 길다 |A||B|
ex) 180도일때 , 0도 일때 : 길이 0
위키가면 영상 예시 볼 수 있음
[Line,Ray, Linear Interpolation]
p0, p1 두점이 주어졌을때 직선을 나타내는 수식
Vector (p0 p1 두점을 잇는 벡터) : p1-p0
p(t) = 시작점p0 +t(두점을 잇는 벡터p1-p0)
t는 매개변수라고 하고, 매개변수 방정식으로 말한다.
ex) t=0 : 시작점 p0 가 된다.
ex) t=1 : 도착점 p1 가 된다.
ex) t=0.5 : 시작점과 도착점 중간
ex) t의 범위에 따라서 해당 직선에 있는 모든 점을 나타 낼 수 있다.
ex) t가 양수(무한대)라면 시작점에서 뻗는 무한 직선이 된다.
ex) t가 (0~1) 이라면 line 선분이 만들어진다.
t : 1-t 비율 위치에 있는 점을 가리킴
ex) 양끝점을 끝으로 하는 선분에 위치한 점들은 t를 배정함으로써 정의할 수 있다. 이를 양 끝점을 선형 보간(Linear Interpolation)해서 얻을 수 있다고 한다.
[컬러보간]
RGB 값을 보간법을 이용해서 중간값을 뽑아온다.
t가 0.5일때 magenta색 ( 흐린마젠타색 )
빨<>파
노<>청록
검<>흰
'ComputerGraphics [고려대학교_한정현]' 카테고리의 다른 글
5강(1) - 랜더링 과정 중에서 View Transform ( World Space -> Camera Space 변환) (0) | 2023.03.26 |
---|---|
4강(4) 3차원에서 World Transform ( Object Space -> World Space 변환 ) (0) | 2023.03.26 |
4강(2) - Transform 3x3행렬의 L구간, T구간 (0) | 2023.03.25 |
4강(1)- 변환(transform) - scaling, rotation, translation (0) | 2023.03.25 |
3장 - 모델링 > Polygonmesh 의 Vertex Array 표현법 (0) | 2023.03.25 |