제3장변 환 -...

22
1 제3장 변 고급 컴퓨터그래픽스 08. 4. 10 발표자 : 김경석 3.3 사원수 ~ 3.5 투영 2 3.3 사원수……………………………………………………………3 3.3.1 수학적 배경………………………………………………………5 3.3.2 사원수 변환……………………………………………………..10 3.4 정점 혼합……………………………………………………….24 3.5 투영……………………………………………………………..30 3.5.1 직교 투영………………………………………………………..31 3.5.2 원근 투영………………………………………………………..37

Upload: others

Post on 02-Mar-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 제3장변 환 - graphics.hallym.ac.krgraphics.hallym.ac.kr/teach/2008/acg/src/chap03-2.pdf(시각절두체는z=n에서시작, z=f에서끝난다고가정, 0>n>f) 40 3.5 투영(계속)

1

제3장 변 환

고급 컴퓨터그래픽스08. 4. 10발표자 : 김경석

3.3 사원수 ~ 3.5 투영

2

목 차

3.3 사원수……………………………………………………………3

3.3.1 수학적 배경………………………………………………………5

3.3.2 사원수 변환……………………………………………………..10

3.4 정점 혼합……………………………………………………….24

3.5 투영……………………………………………………………..30

3.5.1 직교 투영………………………………………………………..31

3.5.2 원근 투영………………………………………………………..37

Page 2: 제3장변 환 - graphics.hallym.ac.krgraphics.hallym.ac.kr/teach/2008/acg/src/chap03-2.pdf(시각절두체는z=n에서시작, z=f에서끝난다고가정, 0>n>f) 40 3.5 투영(계속)

3

3.3 사원수

사원수는 복소수를 확장한 것.

William Rowan Hamilton에 의해 고안.

변환을 구성하는 강력한 도구.

Euler각이나 행렬보다 탁월한 능력.

회전이나 방향 지정시에 뛰어난 성능을 발휘.

예) 사원수는 간결하게 표현되고 여러 개의 방향들

사이를 안정되게 보간.

4개의 성분을 가지므로 벡터처럼 표현.

벡터와 사원수의 구분 : q(위에다가 hat을 씌움).^

4

3.3 사원수(계속)

3.3.1 수학적 배경[정의] 하나의 사원수 는 다음과 같은 방법들로 정의.

이들은 모두 동치이다.

q

변수 qw 는 사원수 의 실수부

허수부는 qv이며, I, j, k는 허수 단위

허수부 에 대하여 더하기, 크기, 내적, 외적 등 모든 법선 벡터

연산을 수행할 수 있다.

q

Page 3: 제3장변 환 - graphics.hallym.ac.krgraphics.hallym.ac.kr/teach/2008/acg/src/chap03-2.pdf(시각절두체는z=n에서시작, z=f에서끝난다고가정, 0>n>f) 40 3.5 투영(계속)

5

3.3 사원수(계속)

두 사원수 와 의 곱셈 연산(허수 단위들간의 곱셈은 비가환적)q

두 사원수의 곱셈을 사용하기 위하여 내적과 외적을 모두 사용☞ 사원수 곱셈은 내적과 외적의 원조격이다.

r

<식3.29>

6

3.3 사원수(계속)

사원수의 덧셈, 공액(conjugate), 놈(nom), 항등사원수에 대한정의

놈(nom)을 계산하면 허수부는 소거되고 실수부만 남는다.

|| ||² = n( )q q

Page 4: 제3장변 환 - graphics.hallym.ac.krgraphics.hallym.ac.kr/teach/2008/acg/src/chap03-2.pdf(시각절두체는z=n에서시작, z=f에서끝난다고가정, 0>n>f) 40 3.5 투영(계속)

7

3.3 사원수(계속)

놈의 수식에서 곱셈역의 유도식

<식 3.29>의 곱셈으로부터 얻어진 연산(스칼라 곱셈 이용)

스칼라 곱셈은 가환적이다.

8

3.3 사원수(계속)

단위 사원수 = (qv, qw)는 n( ) = 1

||uq||=1인 3차원 벡터 uq에 위의 식이 만족

q q

Page 5: 제3장변 환 - graphics.hallym.ac.krgraphics.hallym.ac.kr/teach/2008/acg/src/chap03-2.pdf(시각절두체는z=n에서시작, z=f에서끝난다고가정, 0>n>f) 40 3.5 투영(계속)

9

3.3 사원수(계속)

uq ㆍuq = 1 = ||uq||² 에 만족하는 경우

단위 사원수에 대한 로그와 멱함수(power function)

복소수에 대해서 2차원 단위 벡터는

사원수에서 이와 동등한 식은

10

3.3 사원수(계속)

3.3.2 사원수 변환

단위 사원수는 어떤 형태의 3차원 회전이든 자유롭게 표현할 수 있다.

표현법이 매우 간결하고 단순하다.

한점 또는 벡터 p=(px py pz pw)의 네 좌표를 사원수 의 성분들로집어넣고 = (sinøuq, cosø)인 단위 사원수가 있다고 가정

(점 p)를 uq축을 중심으로 2ø만큼 회전시키는 것이 된다.

는 단위 사원수이기 때문에 -1= *

pq

p

q q q

Page 6: 제3장변 환 - graphics.hallym.ac.krgraphics.hallym.ac.kr/teach/2008/acg/src/chap03-2.pdf(시각절두체는z=n에서시작, z=f에서끝난다고가정, 0>n>f) 40 3.5 투영(계속)

11

3.3 사원수(계속)

12

3.3 사원수(계속)

행렬 변환일부 시스템에서는 행렬 곱셈이 하드웨어로 구현

행렬을 곱하는 것이 <식 3.42>의 수식보다 더 효율적

하나의 사원수 는 <식 3.44>처럼 헹렬로 변환 될 수 있다.q

Page 7: 제3장변 환 - graphics.hallym.ac.krgraphics.hallym.ac.kr/teach/2008/acg/src/chap03-2.pdf(시각절두체는z=n에서시작, z=f에서끝난다고가정, 0>n>f) 40 3.5 투영(계속)

13

3.3 사원수(계속)

일단 사원수가 만들어지면 삼각 함수를 계산할 필요가 없으므로 변환 과정이 실제로는 매우 효율적.

14

3.3 사원수(계속)

이 결과는 단위 사원수에 대하여 다음과 같은 변환을 만든다.

Page 8: 제3장변 환 - graphics.hallym.ac.krgraphics.hallym.ac.kr/teach/2008/acg/src/chap03-2.pdf(시각절두체는z=n에서시작, z=f에서끝난다고가정, 0>n>f) 40 3.5 투영(계속)

15

3.3 사원수(계속)

이것은 m00, m11, m22 의 최대값과 u값에 의해 qx, qy, qz, qw 중에서 어느 것이 가장 큰지가 결정된다.

만약 qw가 최대값이라면 <식 3.48>을 사용하여 사원수를 만들 수 있다.

16

3.3 사원수(계속)

적절한 수식을 사용하여 최대값을 계산

<식 3.46>을 이용하여 의 나머지 성분을 계산

그렇지 않은 경우 다음 조건들이 만족해야 함.

q

Page 9: 제3장변 환 - graphics.hallym.ac.krgraphics.hallym.ac.kr/teach/2008/acg/src/chap03-2.pdf(시각절두체는z=n에서시작, z=f에서끝난다고가정, 0>n>f) 40 3.5 투영(계속)

17

3.3 사원수(계속)

구선형 보간(Spherical Linear Interpolation)두 개의 단위 사원수와 매개변수 t∈.[0,1]이 정해졌을 때 둘 사이에보간된 사원수를 계산하는 연산장점 : 물체의 애니메이션에 유용단점 : 카메라 방향을 보간하는 데는 안 좋음.

(“up”벡터가 기울어지는 교란 효과가 생길 수 있음)

이 연산의 산술적 형태는 합성 사원수 로 표현s

소프트웨어로 구현할 때는 아래 형식이 적합

Slerp는 구선형 보간을 의미

18

3.3 사원수(계속)

Ø를 계산하기 위해서 이용

회전 사원수는 고정된 축 주위를 일정한 속도로 회전, 즉 가속도가 없는 곡선( = 지오데식(geodesic) 곡선)

Page 10: 제3장변 환 - graphics.hallym.ac.krgraphics.hallym.ac.kr/teach/2008/acg/src/chap03-2.pdf(시각절두체는z=n에서시작, z=f에서끝난다고가정, 0>n>f) 40 3.5 투영(계속)

19

3.3 사원수(계속)

Slerp 함수는 두 방향 사이를 보간하는데 좋은 함수.

Euler 변환에서는 여러 개의 Euler각을 보간해야 하는 경우 짐볼락(gimbal lock)이 발생할 수 있기 때문에 간단하지 않음(3.2.1절 참조)

사원수 q0부터 qn-1까지 보간한다면 slerp 함수를 연달아 호출하면 된다

스플라인 보간법 : qi와 qi+1사이에 ai와 bi+1 사원수를 도입

^ ^

^ ^ ^ ^

3차 스플라인을 이용하여 사원수들을 구형으로 보간하는데사용

20

3.3 사원수(계속)

Squad 함수는 slerp 함수를 이용하여 반복적으로 구형 보간하는 함수

초기 방향 qi, i∈[0, ㆍ ㆍ ㆍ,n-1]들을 경유하지만 ai들은 경유 안함.

ai들은 초기 방향들에서 접선 방향을 표시하는데 사용

Page 11: 제3장변 환 - graphics.hallym.ac.krgraphics.hallym.ac.kr/teach/2008/acg/src/chap03-2.pdf(시각절두체는z=n에서시작, z=f에서끝난다고가정, 0>n>f) 40 3.5 투영(계속)

21

3.3 사원수(계속)

한 벡터에서 다른 벡터로의 회전사원수 수학을 이용한 과정

1. 방향 s와 t 를 정규화 한다.

2. u라고 불리는 단위 회전축을 계산한다.

3. u=(s x t)/|| s x t || 로부터 계산된다.

4. e = s ㆍ t = cos(2ø) 와 || s x t || = sin(2ø)을 계산한다.

5. 2ø는 s 와 t 사이의 각도이다.

6. s ⇒ t 회전을 나타내는 사원수는 q = (sin øu, cosø)이다.

7. 반각 관계와 삼각 항등성을 이용하여

을 단순화 시킨다.

^

22

3.3 사원수(계속)

s로부터 t로 회전하는 것을 표현할 때 <식 3.45>를 대수적, 삼각 함수적으로 간략화하고 나면 회전 행렬은 다음과 같이 된다.

위의 수식에서 아래와 같은 중간 계산식들이 사용된다.

모든 제곱근과 삼각 함수들은 사라지기 때문에 행렬을 생성하는 효율적인 방법이라 할 수 있다.

Page 12: 제3장변 환 - graphics.hallym.ac.krgraphics.hallym.ac.kr/teach/2008/acg/src/chap03-2.pdf(시각절두체는z=n에서시작, z=f에서끝난다고가정, 0>n>f) 40 3.5 투영(계속)

23

3.3 사원수(계속)

s와 t가 평행하거나 거의 평행할 때는 ||s x t ||≈ 0 이므로특별한 주의가 필요하다.

Ø = 0 이면 항등 행렬을 반환한다.

그러나 2ø ≈ ∏이면 임의의 축으로 ∏라디안만큼 회전시킨다.

이 축은 s축과 평행하지 않은 임의의 벡터와 s자신을 외적하여 구할 수 있다.

24

3.4 정점 혼합(Vertex Blending)

스키닝, 엔빌로핑, 골격-부분 공간 변형 등과 같은여러 이름을 가진다.

스티칭(stitching) 기법골격을 정의하고 외부 변화에 반응하는 피부를 그 위에 입히는 것

Page 13: 제3장변 환 - graphics.hallym.ac.krgraphics.hallym.ac.kr/teach/2008/acg/src/chap03-2.pdf(시각절두체는z=n에서시작, z=f에서끝난다고가정, 0>n>f) 40 3.5 투영(계속)

25

3.4 정점 혼합(계속)

26

3.4 정점 혼합(계속)

그림 3.11의 수학적 표현

p : 원래 정점

u(t) : 그 위치기 시간 t에 따라 정해지는 변환된 정점

p의 위치에 영향을 주는 뼈가 n개 있으며, 월드 좌표계상에 표시

행렬 Mi : 원래 뼈의 좌표계로부터 월드 좌표계로 변환

Bi(t) : 시간이 지남에 따라 애니메이션이 되는 i번째 뼈의 월드 공간변환

wi : 정점 p에 대한 i번째 뼈의 가중치

Page 14: 제3장변 환 - graphics.hallym.ac.krgraphics.hallym.ac.kr/teach/2008/acg/src/chap03-2.pdf(시각절두체는z=n에서시작, z=f에서끝난다고가정, 0>n>f) 40 3.5 투영(계속)

27

3.4 정점 혼합(계속)

행렬 Mi는 스키닝에 대해 설명할 때 단독으로 나오지 않고 Bi(t)의 일부로 간주된다.

행렬 Bi(t)와 Mi-1은 하나로 결합되고 그 행렬들을 적용하여 변환

wi 라는 가중치를 곱한 후 합산(가중치는 양수이고, 모두 합하면 1)

점 u는 Bi(t)와 Mi-1p(i=0,…….,n-1)로 이루어진 convex hull 내에 위치

정점 혼합은 CPU상에서 실행되지만 응용단계가 병목인 경우 가능하면그래픽스 하드웨어상에서 수행되는 것이 좋다.

DirectX 8은 두 개의 파이프라인 중에 하나를 선택하여 스키닝을 하도록 도와준다.(고정 파이프라인 사용, 정점 셰이더 사용)

각 정점들은 최대 4개의 행렬(뼈)을 사용할 수 있는데 이러한 시스템을“인덱스된 정점 혼합”이라 부른다.

그러나 정점 셰이더와 함께 사용할 수는 없음(서로 다른 파이프라인)

28

3.4 정점 혼합(계속)

스키닝에 정점 셰이더 사용하기

장점

정점 셰이딩 효과 가능

하드웨어에 의해 가속화

고정 기능 시스템에서 행렬의 최소 개수가 정해지지 않음

단점

하나의 시스템에 정점 셰이더 하드웨어가 있는 경우 팔레트에서 사용 가능한행렬의 최소개수가 정해짐

이 숫자는 하드웨어가 복잡해질수록 점점 늘어남

행렬 팔레트 시스템을 사용하는 것과 비교하여 정점 셰이더를 사용할경우에 범프 매핑(bump mapping)과 같은 픽셀별 조명 효과 등과 쉽게결합

Page 15: 제3장변 환 - graphics.hallym.ac.krgraphics.hallym.ac.kr/teach/2008/acg/src/chap03-2.pdf(시각절두체는z=n에서시작, z=f에서끝난다고가정, 0>n>f) 40 3.5 투영(계속)

29

3.4 정점 혼합(계속)

정점 혼합 모델의 문제점

원하지 않는 접힘 현상(folding), 비틀림, 자기교차(self-intersection)

이런 문제를 수정하려면 계산 비용이 너무 많이 듬

30

3.5 투영(Projection)

투영한 장면을 렌더링하기 전에, 그 장면에 있는 모든 물체들은 평면이나단순한 볼륨상에 투영되어야 한다.

점이나 벡터들은 변환을 한 후에도 점과 벡터가 된다.

4 x 4행렬에서 마지막 행은 항상 (0 0 0 1)의 값을 가진다.

원근 투영 행렬은 이러한 두 가지 성질을 가지지 않는다.

행렬의 마지막 행은 특정 수치를 가지는 벡터나 점을 포함

동차화 과정 필요W가 1이 아닐 수도 있으므로 동차화되지 않은 점들을 얻기 위해 값들을 w로 나눠줌

Page 16: 제3장변 환 - graphics.hallym.ac.krgraphics.hallym.ac.kr/teach/2008/acg/src/chap03-2.pdf(시각절두체는z=n에서시작, z=f에서끝난다고가정, 0>n>f) 40 3.5 투영(계속)

31

3.5 투영(계속)

3.5.1 직교투영이 투영은 w 성분에 영향을 주지 않는다.

투영을 한 후에도 평행성을 유지

32

3.5 투영(계속)

판별자 |Po|=0이기 때문에 비가역적이다.

3차원을 2차원으로 축소(다시 복원 불가능)

문제점은 양의 z값을 가지는 점과 음의 z값을 가지는 점들이 모두 하나의 투영면으로 투영된다는 것

z, x, y값을 n(근평면)부터 f(원평면)까지 특정 구간으로 제한하는 방법이 유용

일반적인 행렬은 여섯 개의 요소로 표현

l = 왼쪽, r = 오른쪽, b = 아래, t = 위, n = 근평면, f = 원평면

6개의 평면에 의해 형성된 AABB(축에 정렬된 경계 상자)를 크기 조정 변환하고 평행 이동하여 중심이 원점에 있는 축과 정렬된 정육면체로 생성

AABB의 최소값 모서리(l, b, n) 최대값 모서리(r, t, f)

관측자는 음의 z방향으로 봄(n > f)

Page 17: 제3장변 환 - graphics.hallym.ac.krgraphics.hallym.ac.kr/teach/2008/acg/src/chap03-2.pdf(시각절두체는z=n에서시작, z=f에서끝난다고가정, 0>n>f) 40 3.5 투영(계속)

33

3.5 투영(계속)

축에 정렬된 정육면체는 최소 모서리(-1, -1, -1)와 최대 모서리(1, 1, 1)을 가진다.

정육면체를 정규 시야 영역이라 부르고, 좌표값을 정규화된 장치 좌표라 부른다.

정규 시야 영역으로 변환하는 이유는 하드웨어로 구현할 때 거기서클리핑을 하는 것이 훨신 효율적이기 때문이다.

34

3.5 투영(계속)

Po는 평행 이동 T(t)에 크기 행렬 S(s)를 결합한 것

s = (2/(r-l), 2/(t-b), 2/(f-n))

t = (-(r+1)/2, -(t+b)/2, -(f+n)/2)

이 행렬은 가역적이므로 Po¯¹ = T(-t)S((r-l)/2, (t-b)/2, (f-n)/2)

Page 18: 제3장변 환 - graphics.hallym.ac.krgraphics.hallym.ac.kr/teach/2008/acg/src/chap03-2.pdf(시각절두체는z=n에서시작, z=f에서끝난다고가정, 0>n>f) 40 3.5 투영(계속)

35

3.5 투영(계속)

직교 투영 변환은 항상 거울 변환을 포함

AABB가 목표로 하는 정규 시야 영역과 동일한 크기라면 AABB의 좌표는 (l, b, n)이 (-1, -1, 1)이고 (r, t, f)가 (1, 1, -1)이 된다.

거울 변환은 오른손 시야 좌표계(음의 z축 방향으로 내려다보는)를왼손 정규 장치 좌표계로 변환하는 것

36

3.5 투영(계속)

DirectX와 같은 몇몇 시스템에서는 z 깊이값을 [-1, 1]구간이 아니라 [0, 1] 구간으로 매핑

Page 19: 제3장변 환 - graphics.hallym.ac.krgraphics.hallym.ac.kr/teach/2008/acg/src/chap03-2.pdf(시각절두체는z=n에서시작, z=f에서끝난다고가정, 0>n>f) 40 3.5 투영(계속)

37

3.5 투영(계속)

3.5.2 원근 투영평행선이 변환된 후에 평행하지 않게 되고 계속 진행하면 한 점에서수렴

사람이 사물을 보고 이해하는 방식(멀리있는 물체가 작게 보임)

z-=-d, d>0인 평면에 투영하는 원근 투영 행렬

38

3.5 투영(계속)

Page 20: 제3장변 환 - graphics.hallym.ac.krgraphics.hallym.ac.kr/teach/2008/acg/src/chap03-2.pdf(시각절두체는z=n에서시작, z=f에서끝난다고가정, 0>n>f) 40 3.5 투영(계속)

39

3.5 투영(계속)

동차와 과정을 기하학적으로 설명하는 것 중에 한 가지가 점 (px, py, pz)를 w=1인 평면에 투영한다고 보는 것이다.

직교 투영 변환과 같이 원근 투영 변환도 실제 평면상에 투영하는 것이 아니라(비가역적이므로 한 번 투영하면 되돌릴 수 없음) 시각 절두체를 정규 시야 영역으로 변환

(시각 절두체는 z=n에서 시작, z=f에서 끝난다고 가정, 0>n>f)

40

3.5 투영(계속)

시야는 장면의 현실감을 느낄 수 있도록 하는 중요한 요소

인간의 눈은 컴퓨터 화면과 비교할 때 더 복잡한 시야를 가진다.

36mm(광폭 프레임을 가지는) 카메라에 표준 50mm렌즈는ø=2arctan(36/(2*50)) = 39.6도의 시야각을 가진다.

물리적 설정에 비해 좁은 시야각을 사용하면 원근 투영 효과가 적어진다. 이유는 관측자가 화면쪽으로 너무 가까워지기 때문

시야각을 넓게 하면 물체가 왜곡되어 보이지만 관측자에게 물체가더 커보이고 인상적인 느낌을 주어 주변 상황에 대한 더 많은 정보를제공한다.

Page 21: 제3장변 환 - graphics.hallym.ac.krgraphics.hallym.ac.kr/teach/2008/acg/src/chap03-2.pdf(시각절두체는z=n에서시작, z=f에서끝난다고가정, 0>n>f) 40 3.5 투영(계속)

41

3.5 투영(계속)

시각 절두체를 단위 정육면체로 변환하는 원근 투영 변환 행렬

이 변환을 한 점에 적용하면 q = (qx,qy,qz,qw) 를 얻을 수 있다.

qw는 0도 아니고 1도 아닌 값을 가지게 된다.

투영된 점 p를 얻기 위해서는 모든 성분들을 qw로 나눠주어야 한다.

q = (qx/qw,qy/qw,qz/qw,1) 이 된다

행렬 Pp는 항상 z=f를 +1로 매핑 z=n을 -1로 매핑

원근 투영 변환이 일어난 후 정규화된 장치 좌표를 얻기 위해 클리핑과 동차화 과정이 수행

T

T

42

3.5 투영(계속)

OpenGL용 식

DirectX용 식

Page 22: 제3장변 환 - graphics.hallym.ac.krgraphics.hallym.ac.kr/teach/2008/acg/src/chap03-2.pdf(시각절두체는z=n에서시작, z=f에서끝난다고가정, 0>n>f) 40 3.5 투영(계속)

43

3.5 투영(계속)

원근 투영 변환 효과 중 하나는 계산된 깊이값이 입력된 pz값에 따라 선형적으로 변하지 않는다는 것

(OpenGL사용시) n`=10, f`=110이면 pz가 z축 음의 방향으로 60단위만큼 떨어져 있을 때 정규화된 장치 좌표값은 0이 아니라 0.885이다.

원점으로부터 근평면까지의 거리가 변할 때 나타나는 효과(그림 3.17)