48
강강 강강 ( 강강 강강 ) • 강강 강강 강강 (10 강 29 강 ) 강강 강강 강강강 강강 강강 강강 강강 강강 강강 강강 강강강 강강강 강강강 강강 강강 강강강 강강 강강강 • 강강 : Reading Assignment 11 강 강강 강강 강강강 강강 강강강 12 강 강강강강강강강 강강 • 강강 8.10 강 강강 강

강의 내용 ( 일곱 번째 )

  • Upload
    rusk

  • View
    84

  • Download
    10

Embed Size (px)

DESCRIPTION

강의 내용 ( 일곱 번째 ). 오늘 강의 내용 (10 월 29 일 ) 트리 자료 구조의 사용 다른 트리 구조 언어 기반 모델 순환적 방법과 프랙탈 물리 기반 모형과 입자 시스템 예습 : Reading Assignment 11 장 물리 기반 모형과 입자 시스템 12 장 데이터로부터의 모델 숙제 8.10 절 읽을 것. 8.5 트리 자료 구조의 사용. 계층구조를 표현하고 모델에 독립적인 순회 알고리즘을 사용해서 렌더링한다 . Left-child-right sibling 을 이용하는 방법 - PowerPoint PPT Presentation

Citation preview

Page 1: 강의 내용 ( 일곱 번째 )

강의 내용 ( 일곱 번째 )

• 오늘 강의 내용 (10 월 29 일 )– 트리 자료 구조의 사용– 다른 트리 구조– 언어 기반 모델– 순환적 방법과 프랙탈– 물리 기반 모형과 입자 시스템

• 예습 : Reading Assignment – 11 장 물리 기반 모형과 입자 시스템– 12 장 데이터로부터의 모델

• 숙제– 8.10 절 읽을 것

Page 2: 강의 내용 ( 일곱 번째 )

8.5 트리 자료 구조의 사용• 계층구조를 표현하고 모델에 독립적인 순회

알고리즘을 사용해서 렌더링한다 . – Left-child-right sibling 을 이용하는 방법

• Figuretree.dsw 프로그램의 예• 각 노드의 구조

– 각 노드에 객체를 정의하는 함수– 그 객체를 부모에 상대적으로 위치시키는 좌표 행렬

• 모델 - 관측 행렬에 곱해진다 .

Page 3: 강의 내용 ( 일곱 번째 )

그림 8.15

Page 4: 강의 내용 ( 일곱 번째 )

typedef struct treenode{ GLfloat m [16]; void (*f)(); struct treenode *sibling; struct treenode *child;}treenode;

typedef treenode* t_ptr;

Page 5: 강의 내용 ( 일곱 번째 )

void traverse(treenode* root){ if(root==NULL) return; glPushM atrix(); glM ultM atrixf(root->m ); root->f(); if(root->child!=NULL) traverse(root->child); glPopM atrix(); if(root->sibling!=NULL) traverse(root->sibling);}

Preorder 순위 순회

형제들에게는지역행렬의 영향이

없어야 하므로

Page 6: 강의 내용 ( 일곱 번째 )

glLoadIdentity(); glTranslatef(-(TORSO_RADIUS+UPPER_ARM _RADIUS), 0.9*TORSO_HEIGHT, 0.0); glRotatef(theta[3], 1.0, 0.0, 0.0);

glGetFloatv(GL_M ODELVIEW _M ATRIX,lua_node.m );lua_node.f = left_upper_arm ;lua_node.sibling = &rua_node;lua_node.child = &lla_node;

glLoadIdentity(); glRotatef(theta[0], 0.0, 1.0, 0.0);

glGetFloatv(GL_M ODELVIEW _M ATRIX,torso_node.m );torso_node.f = torso;torso_node.sibling = NULL;torso_node.child = &head_node;

Y 축에 회전

Page 7: 강의 내용 ( 일곱 번째 )

노드의 동적인 접근 방식• 노드의 정의를 동적으로 하면 유연성이

생긴다 .• 대화식으로 구조를 변경하기를 원할 때

사용한다 .• P377 참조할 것

Page 8: 강의 내용 ( 일곱 번째 )

8.9 다른 트리 구조들• CSG 트리

– Geometric modeling 은 표면을 기술하여 모델링을 하므로 입체에 관한 성질을 다룰 때 어려움을 야기한다 .

– 디스플레이 모호성을 야기 ( 그림 8.20)• BSP 트리• 4 진 트리 (Quadtree) 와 8 진 트리 (Octre

e)

Page 9: 강의 내용 ( 일곱 번째 )

CSG(Constructive Solid Geometry)

• Combination rules for solids• Each combines two solids

– Union(+), Difference(-), Intersection (&)• Results can be used as a new solid

– CSG Tree

Page 10: 강의 내용 ( 일곱 번째 )

그림 8.20

Page 11: 강의 내용 ( 일곱 번째 )

그림 8.22 CSG 객체

Page 12: 강의 내용 ( 일곱 번째 )

그림 8.23 CSG 트리

Postorder Tree Traversing

Page 13: 강의 내용 ( 일곱 번째 )

8.9.2 이진 공간 분할 (BSP) 트리

Page 14: 강의 내용 ( 일곱 번째 )

그림 8.25 다각형들의 평면도BSP Tree :

Backward in-order traversal

F – D- E-A-C-B

Page 15: 강의 내용 ( 일곱 번째 )

그림 8.27 관측자를 뒤로 이동

Page 16: 강의 내용 ( 일곱 번째 )

8.9.3 4 진 트리 (Quadtree) 와 8 진 트리 (Octree)

Page 17: 강의 내용 ( 일곱 번째 )

그림 8.30 4 진트리

Page 18: 강의 내용 ( 일곱 번째 )

그림 8.31 8 진 트리 (Octree)

Page 19: 강의 내용 ( 일곱 번째 )

Modeling Technique• Geometric Modeling

– Bezier, Spline, NURBS• Solid Modeling

– SOR, Sweeping, CSG• Advanced Modeling Technique

– Proceduralism• Grammar Based Modeling• Particle System• Fractal Modeling

Page 20: 강의 내용 ( 일곱 번째 )

Geometric Modeling• G.M. deals with the construction of

smooth curves and surfaces by using polygon mesh

Bezier Surface

Page 21: 강의 내용 ( 일곱 번째 )

Solid Modeling• Representation of Volumes completely

surrounded by surfaces.• Geometric Modeling : describe the boundary of

objects• Need to distinguish between inside or outside• Also, be able to compute properties of object

– ex) CAD, CAM application• Deals with the construction of volumetric

objects & its operations.• Techniques

– SOR, Sweeping, CSG

Page 22: 강의 내용 ( 일곱 번째 )

Sweeping• Closed polygons and curves generates

finite volume by sweeping transformation– Rotation, Sweeping

Page 23: 강의 내용 ( 일곱 번째 )

SOR(Surface Of Revolution)

• To generate a 3-D surface, revolve a two dimensional entity. e.g., a line or plane about the axis in space.called surfaces of revolution

Page 24: 강의 내용 ( 일곱 번째 )

11.6 언어 기반 모델 (Grammar Based Modeling)

• 식물이나 지형과 같은 실세계 객체 이미지 생성• 트리 문법 (Tree Grammar)

– 생성 규칙 (production rule)– 예 ) A → BC, B→ABA– 무한히 많은 문자열 생성– 하나 이상의 규칙 중에서 난수로서 적용할 규칙을

선택한다면 다양한 문자열을 생성 • 절차적 모델 (procedural model)

Page 25: 강의 내용 ( 일곱 번째 )

11.6 Grammar Based Modeling

– 자연물 모델링에 사용 • 식물학자 Lindenmayer 에 의해서 제안• Prusinkiewicz 에 의해 발전됨 (L-system)

– 식물의 생성정보를 문법에 의해 반복 치환함으로써 모델링

Page 26: 강의 내용 ( 일곱 번째 )

그림 11.12 Koch 곡선 규칙

터틀 그래픽스 (turtle graphics)• 1 단위 이동 (F), 왼쪽 (L), 오른쪽 (R) 방향 전환• 방향을 바꾸는 각은 고정됨• 삼각형

- 각이 120 도이고 , 문자열 FRFRFR

• Koch 곡선

- 60 도 , F → FLFRRFLF

Page 27: 강의 내용 ( 일곱 번째 )

(a) koch 곡선 (b) koch 눈송이

• 모든 F 에 대하여 똑같이 한 번 더 적용함 .

• (a) 를 삼각형에 적용함 .

그림 11.10 공간 충전 곡선 (Space filling Curve)

Turtle_koch

Page 28: 강의 내용 ( 일곱 번째 )

그림 11.14 규칙

FF[RF]F[LF]F

그림 11.15 그림 11.14 규칙의 두 번 반복

• stack 에 turtle 의 상태 ( 위치와 방향 ) 을 push/pop을 표시

특수 기호 ([, ]) 의 사용

Page 29: 강의 내용 ( 일곱 번째 )

그림 11.16 그림 11.14 에서 규칙을 임의로 적용한 결과

• turtle 의 전진 이동에 해당하는 길이를 조정함 .

• 보다 많은 생성 규칙과 규칙을 결정하는 확률함수를 추가하면 더욱 다양한 형태의 나무를 얻을 수 있다 .

다양한 트리 생성

Page 30: 강의 내용 ( 일곱 번째 )

• 직선 , 다각형 등을 이용하여 각 객체를 필요한 만큼 그리는 방법은 직접적인 방법이다 .

- 복잡한 장면의 경우 , 사용되는 기본 요소가 매우 많음

- 관측자로부터 멀리 떨어진 경우에는 아주 작은 크기로 렌더링되기 때문에 이미지로 나타나지 않는다 . 그럼에도 불구하고 기본 요소를 다 그려야 한다 .

• 절차적 방법

-간단한 알고리즘으로 복잡한 객체를 묘사

- 필요로 하는 상세 정도와 필요로 하는 객체만을 기하학적 객체로 생성할 수 있다 .

직접적인 접근법과 절차적 방법의 비교

Page 31: 강의 내용 ( 일곱 번째 )

그림 11.17 Sierpinski 가스켓을 위한 세 개의 규칙들

형상 문법 (shape grammar)

Page 32: 강의 내용 ( 일곱 번째 )

11.7 순환적 방법과 프랙탈

• 프랙탈 기하학 (fractal geometry) 에 기초한 모델링 방법으로 또 다른 절차적 방법

• 프랙탈 기하학– Mandelbrot 에 의해 개발– 자기 유사성 (Self-similarity) 을 사용함 .– 다른 방법으로는 쉽게 모델링 할 수 없는 많은

실세계의 실체를 모델링– Graftal : 프랙탈에 의해서 생성된 객체

Page 33: 강의 내용 ( 일곱 번째 )

Fractal Modeling– B. Mandelbrot 에 의해 기본 개념 완성 .– Self-similarity 성질과 브라운 운동의

randomness 를 결합하여 모델링

Fractal Mountain

Page 34: 강의 내용 ( 일곱 번째 )

11.7.1 자와 길이• 해상도의 제한 혹은 측정의 최소 단위의 선택의 필요성

-지도상의 해안선의 길이를 측정하여 보자 . 해안선의 굴곡의 이미지 위에 실을 놓고 그 실의 길이를 측정할 수 있다 .

-그러나 , 좀 더 자세한 지도가 주어진다면 ? 더욱 긴 길이를 얻을 수 있다 .

- 더욱 자세한 지도가 주어진다면 ? 이러한 작업은 분자 단계까지 계속할 수 있다 .

Page 35: 강의 내용 ( 일곱 번째 )

그림 11.18 Koch 곡선의 신장

• Koch 의 곡선에서 길이가 1 인 직선은 길이가 1/3 인 4 개의 선분으로 교체된다 .

-선분을 교체할 때마다 , 전체 선분의 길이는 4/3 으로 늘어 난다 . 무한히 반복할 수 있다 .

- 1 차원 ? 혹은 2 차원 ?

-곡선은 극한에서 무한대의 길이를 갖고 일차 미분은 어디서나 불연속이므로 통상적인 1 차원은 아님 . 그러나 , 곡선은 2 차원 평면을 채울 수 없음 따라서 2 차원이 아님 .

차원 (Dimension) 의 문제

Page 36: 강의 내용 ( 일곱 번째 )

그림 11.19 선분 (1 차원 ), 정사각형 (2 차원 ), 정육면체 (3차원 )

11.7.2 프랙탈 차원할

Page 37: 강의 내용 ( 일곱 번째 )

그림 11.20 객체들의 분할 h=1/3 ( n=3)

h=1/n 이라고 하자

선분의 경우 : K (=n) 개의 동일한 선분으로

사각형의 경우 : K (= ) 개의 작은 사각형으로

정육면체의 경우 : K (= ) 개의 작은 정육면체로 분할

2n3n

객체들의 h 계수에 의한 크기 변환

Page 38: 강의 내용 ( 일곱 번째 )

분할에서 변하지 않는 것은 전체가 부분의 합이므로

어떤 객체에 대해서도 다음의 등식이 만족한다 .

이므로 이다 .1dn

K

n

Kd

ln

ln

차원의 계산

프랙탈 차원

Page 39: 강의 내용 ( 일곱 번째 )

그림 11.21 Sierpinski 가스켓의 분할

26186.13ln

4lndKoch 곡선의 경우 :

58496.12ln

3lnd

차원의 계산

Page 40: 강의 내용 ( 일곱 번째 )

22ln

4lnd

• 각 면을 분할하는 3 차원 공간의 입체 가스켓

• 가운데 영역은 버림 . 4 개의 사면체를 유지함 .

그림 11.22 입체 가스켓

Page 41: 강의 내용 ( 일곱 번째 )

72683.23ln

20lnd

• 각 면의 중심과 정육면체 중심에 있는 조각을 제거하면 총 27 개의 조각 중에서 20 개만 남음 .

그림 11.23 입방체의 분할

Page 42: 강의 내용 ( 일곱 번째 )

11.7.3 종점 분할과 브라운 운동

• 프랙탈 곡선은 1≤d≤2 :

- 낮은 차원의 곡선이 높은 차원의 곡선보다 부드러움 .

• 프랙탈 곡면은 2≤d≤3 :

-낮은 차원의 곡면이 높은 차원의 곡면보다 부드러움 .

• 거친 정도를 제어함 .

Page 43: 강의 내용 ( 일곱 번째 )

11.7.3 종점 분할과 브라운 운동

프랙탈 차원 정도 예

낮음 부드러움사막의 지평선

농지의 표면

높음 거칠음산맥의 윤곽선

비행기 시뮬레이션에서 항공기 근처에서 높은 해상도

Page 44: 강의 내용 ( 일곱 번째 )

(a) 원래의 선분 (b) 분할 후의 선분

• 브라운 운동 : 유체 입자의 무작위적 움직임 . 순환적인 방법

- 선분의 중점을 찾고 , 중점을 법선 방향으로 임의의 거리 만큼 이동

그림 11.24 중점 이동

Page 45: 강의 내용 ( 일곱 번째 )

• 앞의 중점 이동 과정을 임의의 횟수만큼 반복함

• 난수 발생기의 분산 및 평균 변위는 보통 ½로 줄여야 함 .

• 법선 방향만이 아닌 임의의 방향으로 중점을 이동시킬 수 있다 .

• 이 분할될 선분의 길이 , 에 비례하는 분산을 갖는 평균이 0 인

Gaussian 난수 발생기를 사용하면 d 는 생성된 곡선의 프랙탈 차원이며 , d=1.5인 값은 실제 브라운 운동에 대응됨 .

l )2(2 dl

그림 11.25 1,2,4,8,16 단편으로 된 프랙탈 곡선들

Page 46: 강의 내용 ( 일곱 번째 )

11.7.4 프랙탈 산

그림 11.26 4 면체 면의 중점 분할

• 산악과 지형의 생성

• 변의 중점을 찾은 다음 , 각 중점을 이동함 .

• 난수 발생기의 분산을 제어함으로써 생성되는 객체의 거친 정도를 제어

Page 47: 강의 내용 ( 일곱 번째 )

(a) 메쉬 (b) 이동된 정점에 의한 분할된 메쉬

• 임의의 mesh 에도 적용• x-z 평면에서 사각형 mesh 에서 시작하고 좀 더 작은 4개의 사각형으로 분할하여 모든 정점을 y 방향으로 이동 시킴 → 색 그림판 7

그림 11.27 프랙탈 산

Page 48: 강의 내용 ( 일곱 번째 )

11.8 Mandelbrot 집합