22
WELCOME TO THE HELL!!! 3D 프로그래밍의 이해 2011.4.23. 민성기

3D 프로그래밍의 이해. 2011.4.23

Embed Size (px)

Citation preview

WELCOME TO THE HELL!!!

3D 프로그래밍의 이해

2011.4.23. 민성기

진행 순서

3D란 무엇일까

정점변환의 마술 행렬. 그리고 벡터.

OpenGL 초기화

첫 삼각형과 만남

원근투영과 이동행렬 맛보기

회전행렬 맛보기

행렬 스텍 다루기

z버퍼

빛이 있으라!!

텍스처 바르기

3D란 무엇일까

3D란 무엇일까

나는야 화면버퍼라네~~ 픽셀의 집합이지~~

짜잔~~!

픽셀

셰이더버텍스

셰이더

3D란 무엇일까

모델뷰 변환

프로젝션

뷰볼륨

-1 ~ 1

화면버퍼에

래스터라이징

가장 빨리 삼각형을 그리는 방법은???

정점변환의 마술. 행렬.

정점을 뷰볼륨에 정규화하기 위한 쉬운 길

수학자들이 오랜 세월 고민해 만들어준 물건

우리는 쓰기만 하면 됨.

행렬

정점

P

정점

P’

생각하기 편하게 2차원에서

살펴보자.

정점변환의 마술. 행렬.

2차원 크기변환 행렬

정점변환의 마술. 행렬.

2차원 회전행렬

정점변환의 마술. 행렬.

이동행렬의 문제

크기 동차행렬 회전 동차행렬

정점변환의 마술. 행렬.

좌표변환에 굳이 복잡한 행렬을 쓰는 이유는??

있어 보여서. 남들 다 쓰니까. 가학성향 변태라서.

행렬의 결합법칙 덕 좀 보려고

종이의 도형을 컴퓨터 화면으로.

P1

P2 P3

P1’

P2’ P3’

(0, 0)

(0, 0)(Px, Py)

(Sx, Sy)

(PCx, PCy) (SCx, SCy)

그렇다면 3D에서는??

2차원은 2*2 동차행렬. 3차원은 4*4 동차행렬.

OpenGL 행렬상태

모델뷰, 프로젝션, 텍스쳐, 카메라(D3D)

각 행렬 상태마다 스텍이 있음 (D3D는 9이후)

OpenGL의 API가 제공하는 행렬함수는 열기준!

벡터

힘과 방향을 나타내는 약속

힘은 길이. 방향은 노멀.

더하고 빼고 곱할 수 있다.

곱하기가 무려 두가지. 내적과 외적

OpenGL의 초기화

랜더링 컨텍스트

랜더링이 일어나는 장소. DC처럼 추상화된 개념.

더블버퍼링

깜박임 방지를 위한 기법.

백버퍼에서 조립 -> 전면버퍼로 전송

데모

첫 삼각형과 만남

데모

원근투영과 이동행렬 맛보기

데모

회전행렬 맛보기

데모

행렬스텍 다루기

데모

Z버퍼 (깊이 버퍼)

데모

z버퍼는 화면 버퍼의 한 종류

정규화된 각 정점의 z값을 저장한다.

설정에 따라 다음 도형의 픽셀을 찍을지 결정.

빛이 있으라!!

데모

스팟, 점광원, 직선광원

이 세미나에서는 직선광원만 사용함.

엠비언트, 디퓨즈, 스파큘러

텍스쳐 바르기

데모

결국… 도배질이 목적. 텍셀질이라고 함.

OpenGL에서 텍스처는 상수로 표현되는 객체.

이미지는 2의 승수일 것.

텍스쳐 행렬도 설정할 수 있다.

질문/토론