11 곡선과 곡면 - sangjiit.sangji.ac.kr/~3d/ppt/cg/11.pdf · 2017-05-16 · 01 2. hermite...
TRANSCRIPT
곡선과 곡면
01 Spline 곡선
02 Spline 곡면
03 Subdivision 곡면
11
2
𝐶0 연속성
𝐶1 연속성
𝐶2 연속성
𝐶𝑛 연속성
1. Cardinal Spline Curve
2. Hermite Spline Curve
3. Bezier Spline Curve
4. Catmull-Rom Spline Curve
5. B-Spline Curve
6. Clamped B-Spline Curve
7. NURBS(Non-Uniform Rational B-Spline) Curve
Spline 곡선 01
3
1. Cardinal Spline Curve 01
Cardinal Spline Curve 𝐶(𝑡)
4
1. Cardinal Spline Curve 01
Cardinal Spline Curve의 구현 결과
5 (A) Tension = 0.5 (B) Tension = 1.5
코드 11-1
2. Hermite Spline Curve 01
Cubic Hermite Spline Curve H(𝑡)
6
2. Hermite Spline Curve 01
Cubic Hermite Curve를 위한 기본적인 형태 및 Blending Functions / Basis Functions
7
(A) 2개의 제어점(P1, P2) 및 각 제어점에 대한 장력(T1, T2)에 의해 생성된 Cubic
Hermite Curve의 기본적인 형태
(B) Cubic Hermite Curve를 위한 Blending Functions / Basis
Functions
2. Hermite Spline Curve 01
끝점(Endpoint) 𝑃2을 공유하는 두 개의 Hermite Spline Curves
8
2. Hermite Spline Curve 01
Hermite Spline Curve의 구현 결과
9
코드 11-2
3. Bezier Spline Curve 01
Bezier Spline Curve의 생성 과정
10
(A-①) 초기 (A-②) 중기 (A-③) 말기
(A) 2차 Bezier Spline Curve
3. Bezier Spline Curve 01
Bezier Spline Curve의 생성 과정
11
(B-①) 초기 (B-②) 중기 (B-③) 말기
(B) 3차 Bezier Spline Curve
3. Bezier Spline Curve 01
Bezier Spline Curve의 생성 과정
12
(C-①) 초기 (C-②) 중기 (C-③) 말기
(C) 4차 Bezier Spline Curve
3. Bezier Spline Curve 01
Bezier Spline Curve B(𝑡)
13
3. Bezier Spline Curve 01
(수식 11-21)에 주어진 순환 관계에 의해 생성된 Bernstein Polynomials
14
3. Bezier Spline Curve 01
Cubic Bezier Curve의 기본적인 형태 및 Blending Functions / Basis Functions
15
(A) 4 개 의 제 어 점 에 의 해 생성된 Cubic Bezier Curve의 기본적인 형태
(B) 차수가 3인 Cubic Bezier Curve를 위한 Blending Functions / Basis
Functions
3. Bezier Spline Curve 01
제어점들 𝑃0, 𝑃1, 𝑃2 및 𝑃3을 가지는 Bezier Curve의 다양성
16
3. Bezier Spline Curve 01
Bezier Spline Curve의 구현 결과
17
코드 11-3
4. Catmull-Rom Spline Curve 01
Catmull-Rom Spline Curve 𝐶𝑖(𝑡)
18
4. Catmull-Rom Spline Curve 01
Catmull-Rom Spline Curve의 기본적인 형태 및 Blending Functions / Basis Functions
19
(A) 4개의 제어점에 의해 생성된 Catmull- Rom Spline Curve의 기본적인 형태
(B) 7개의 제어점에 의해 생성된 Catmull- Rom Spline Curve 및 접선들
(C) Catmull-Rom Spline Curve를 위한 Blending Functions / Basis Functions
4. Catmull-Rom Spline Curve 01
Catmull-Rom Spline Curve의 구현 결과
20
코드 11-4
5. B-Spline Curve 01
8개의 제어점 𝑃𝑖을 사용하여 구성된 B-Spline Curve
21
5. B-Spline Curve 01
Uniform Cubic B-Spline Curve의 기본적인 형태 및 Blending Functions / Basis Functions
22
(A) 4 개 제 어 점 에 의 해 생 성 된 Uniform Cubic B-Spline Curve의
기본적인 형태
(B) Uniform Cubic B-Spline Curve를 위한 Blending Functions / Basis Functions
5. B-Spline Curve 01
Uniform Cubic B-Spline Curve 𝑄𝑖(𝑡)
23
5. B-Spline Curve 01
[그림 11-13]에 처음과 마지막 제어점들 모두에 3번 중복한 B-Spline Curve의 결과
24
5. B-Spline Curve 01
[그림 11-13]에서 내부 제어점들 중 하나를 3번 중복한 B-Spline Curve의 결과
25
5. B-Spline Curve 01
B-Spline Curve의 3가지 유형
26
(A) Open B-Spline Curve (B) Clamped B-Spline Curve (C) Closed B-Spline Curve
5. B-Spline Curve 01
B-Spline Curve의 구현 결과
27
코드 11-5
6. Clamped B-Spline Curve 01
Clamped B-Spline Curve의 구현 결과
28
코드 11-6
7. NURBS Curve 01
제어점들과 Knot의 관계
29
7. NURBS Curve 01
NURBS : 제어점 𝑃3에 대응하는 가중치 𝑤3의 변경에 따른 결과
30
7. NURBS Curve 01
NURBS Curve의 구현 결과
31
코드 11-7
1. Hermite Spline Surface
2. Bezier Spline Surface
3. B-Spline Surface
4. NURBS(Non-Uniform Rational B-Spline) Surface
Spline 곡면 02
32
1. Hermite Spline Surface 02
Hermite Spline Curve 𝐻𝑥(𝑠, 𝑡)
33
1. Hermite Spline Surface 02
[𝑔𝑖𝑗]의 x 성분 분포도
34
1. Hermite Spline Surface 02
Hermite Spline Surface 𝐻𝑥(𝑠, 𝑡)의 구성도
35
A) 4개의 제어점에 의해 생성된 Hermite Splinez
Surface이 기본적인 형태
B) 각 제어점에 생성된 접선 Vector 및 2차 미분계수 Vector
1. Hermite Spline Surface 02
Hermite Spline Surface의 구현 결과
36
(A) Wire-frame Hermite Spline Surface: Tension 0.50
B) Wire-frame Hermite Spline Surface: Tension 1.50
(C) Wire-frame Hermite Spline Surface: Tension 3.50
(D) Mesh를 채우고 조명을 적용한 Hermite Spline Surface : Tension 0.50
코드 11-8
1. Hermite Spline Surface 02
glLoadMatrixf 함수의 Prototype
37
glMultiMatrixf 함수의 Prototype
1. Hermite Spline Surface 02
glGetFloatv 함수의 Prototype
38
1. Hermite Spline Surface 02
glMap2f 함수의 Prototype
39
1. Hermite Spline Surface 02
glMapGrid2f 함수의 Prototype
40
1. Hermite Spline Surface 02
glEvalMesh2 함수의 Prototype
41
glEvalCoord2f 함수의 Prototype
2. Bezier Spline Surface 02
Bezier Spline Surface C(u, v)
42
2. Bezier Spline Surface 02
Bezier Spline Surface을 위한 매개변수 방향(u, v) 및 차수(n, m)
43
Bezier Spline Surface C(u, v)
2. Bezier Spline Surface 02
2D Evaluators를 사용한 Wire-frame Bezier Spline Surface의 구현 결과
44
코드 11-9
2. Bezier Spline Surface 02
2D Evaluators를 사용하여 생성한 Bezier Spline Curve에 Mesh를 채우고 조명을 추가한 Bezier Spline Surface의 구현 결과
45
코드 11-10
3. B-Spline Surface 02
차수의 변화에 따른 B-Spline Surface의 변화
46
(A) (Periodic, Periodic) (B) (Non-Periodic, Non-Periodic) (C) (Periodic, Non-Periodic) (p, q)=(3, 3) (p, q)=(3, 3) (p, q)=(5, 2)
3. B-Spline Surface 02
B-Spline Surface의 3가지 유형
47
(A) Clamped (B) Closed (C) Open
3. B-Spline Surface 02
Parametric Curve의 Tension Product
48
3. B-Spline Surface 02
B-Spline Surface Q(u, v)
49
3. B-Spline Surface 02
Bicubic B-Spline Surface의 구현 결과
50
코드 11-11
4. NURBS Surface 02
NURBS Surface S(u, v)
51
4. NURBS Surface 02
NURBS Surface의 구현 결과
52
코드 11-12
4. NURBS Surface 02
gluNewNurbsRenderer 함수의 Prototype
53
4. NURBS Surface 02
gluNurbsProperty 함수의 Prototype
54
4. NURBS Surface 02
gluNurbsProperty 함수의 Prototype
55
4. NURBS Surface 02
gluNurbsProperty 함수의 Prototype
56
4. NURBS Surface 02
gluNurbsProperty 함수의 Prototype
57
4. NURBS Surface 02
gluNurbsProperty 함수의 Prototype
58
4. NURBS Surface 02
gluBeginSurface 함수의 Prototype
59
4. NURBS Surface 02
gluNurbsSurface 함수의 Prototype
60
4. NURBS Surface 02
gluEndSurface 함수의 Prototype
61
1. Catmull-Clark Subdivision Surface
2. Doo-Sabin Subdivision Surface
3. Loop Subdivision Surface
Subdivision 곡면 03
62
Subdivision 곡면 03
63
Subdivision Scheme의 분류
Subdivision 곡면 03
64
육면체(Cube)에 여러 가지 종류의 Subdivision 규칙을 적용한 결과
(A) Original Cube (B) Midpoint Subdivision (C) Catmull-Clark Subdivision
(D) Doo-Sabin Subdivision (E) Loop Subdivision (F) 3 Subdivision
1. Catmull-Clark Subdivision Surface 03
Catmull-Clark Subdivision의 구현 결과 예시
65
1. Catmull-Clark Subdivision Surface 03
Catmull-Clark Subdivision의 규칙
66
1. Catmull-Clark Subdivision Surface 03
Catmull-Clark Subdivision Surface를 위한 새로운 Vertex 생성 및 가중치
67
1. Catmull-Clark Subdivision Surface 03
Catmull-Clark Subdivision Surface의 구현 결과
68 (A) Level 0 (B) Level 1 (C) Level 3
코드 11-13
2. Doo-Sabin Subdivision Surface 03
Doo-Sabin Subdivision Surface의 예시
69
(A) T 모양의 사변형 Mesh에 2번의 세부적인 반복 효과 적용
(B) Limit Surface
(C) Doo-Sabin Subdivision을 육면체(Cube)에 적용한 결과
2. Doo-Sabin Subdivision Surface 03
Doo-Sabin Subdivision Matrix 𝑆𝑘𝐷𝑆
70
2. Doo-Sabin Subdivision Surface 03
Doo-Sabin Subdivision Surface Scheme
71
(A) 기존의 점(Point) 및 라인(Line)들 사이에 세부적인 Vertex들 생성
(B) 기존의 점(Point)들에 대한 가중 치(Weight)를 기준으로 세부적인
Vertex들 중 하나를 생성
2. Doo-Sabin Subdivision Surface 03
Doo-Sabin Subdivision Surface의 구현 결과
72
(A) Level 0 (B) Level 1 (C) Level 2 (D) Level 3
코드 11-14
3. Loop Subdivision Surface 03
Loop Subdivision Surface 규칙
73 (A) 홀수 Vertex들을 위한 Masks (B) 짝수 Vertex들을 위한 Masks
3. Loop Subdivision Surface 03
기존 Vertex들에 대한 위치의 선형 조합으로 새로운 위치 계산
74
3. Loop Subdivision Surface 03
Loop Subdivision Surface의 구현 결과
75 (A) Level 0 (B) Level 1 (C) Level 2
코드 11-15
3. Loop Subdivision Surface 03
Loop Subdivision Surface의 구현 결과
76 (A) Level 3 (B) Level 4 (C) Level 5