Part III 애니메이션 Chapter 9 곡선.

Slides:



Advertisements
Similar presentations
비즈쿨 - 정 성 욱 - - 금오공고 비즈쿨 - 정 성 욱 1. 나는 각 단원들의 활동들에 성실하게 참여 하겠습니다. 우리의 다짐 2. 나는 나와 전체의 발전을 위해 각 멘토들의 지도에 순종하겠습니다. 3. 나는 각 단원들을 숙지함으로써 비즈니스 마인드를 함양하고 자신의.
Advertisements

인 알고 보면 더 재미있는 권 여 행 국제앰네스티 인권교육 패키지. 어떻게 할까요? ① 4-6 명이 게임에 참여합니다. ② 액션키트에 있는 주사위와 자신의 말을 준비합니다. ③ 가위바위보로 게임 순서와 말을 정하세요. ④ 주사위를 굴려 나온 숫자만큼 자신의 말을 이용해.
 사회  4 학년 1 학기  1. 우리 시ㆍ도 모습 > (1) 지도에 나타난 우리 시. 도의 모습 (2/17) 지도를 알아보자 (1)
녹는점과 끓는점 화학과 이 언정 손 나영 《수업 계획서》
III. 민족 운동의 전개 1. 일제의 식민지 지배 정책 조선 총독부.
컴퓨터애니메이션 3장 이규민 김태일.
아동이 살기 좋은 횡성군 만들기 추진위원회 2차 모임
Surface [1] Surface Feature [2] Surface의 조작 [3] Datum Curve
1. 6·25전쟁 바로 알기 6·25전쟁이란 ? 광복 이후 38선을 경계로 남과 북에 서로 다른 정부 수립 이후
1. 던전 디자인 개요_1 1. ‘던전’ 룬스톤은 던전 한 층에도 여러 개가 존재하며, 각 룬스톤 마다 영향을 미치는 범위가 설정되어 있다. 룬스톤이 영향을 주는 범위에 일정시간 사용자가 위치해 있게 되면 사용자 캐릭터는 ‘유령화’ 되어 버리기 때문에, 사용자는.
1. 아동 권리 및 아동 학대의 이해.
대학2부 광고 시간입니다.
경안 초등학교 부설 영재학급 강지민,김민서,표지민,전혜정
1월 19일 주일오전예배 핸드폰 전원을 꺼주시기 바랍니다.
& 국민연금법 국민건강보험법 사회복지법제 행정학부 김인철 사회복지학과 김건우
시대의 향기를 담은 고수필 고전문학원전강독 신태웅 김수연 이진솔.
Implement of Input and Interaction
슬라이드 1~21까지는 각자 복습! 슬라이드 22부터는 수업시간에 복습
행복한 부자교실 16기 8조 성동구 성수동 답사 결과 12월 22일 발표.
OpenGL 실습 1주차.
OpenGL 시작하기.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
1 2 3.
5과 하나님의 말씀인 성경.
Lecture #7 제 4 장. 기하학적 객체와 변환 (2).
7장 디스플레이 리스트.
PART 01 총 론 제9장 한국 사회복지법제의 형성과 발전.
2017 은광교회 청년디모데 여름 수련회 ( ).
컴퓨터의 기초 제 4강 - 표준 입출력, 함수의 기초 2006년 4월 10일.
자료 구조: Chapter 3 (2)구조체, 포인터
Sang Il Park Sejong University
연산자 대입 연산자 산술 연산자 관계 연산자 논리 연산자 비트 연산자 콤마 연산자 축약 연산자 sizeof 연산자
10 Three-Dimensional Object Representations  고려대학교 컴퓨터학과 김 창 헌.
18장. 헤더 파일과 구현 파일 01_ 헤더 파일과 구현 파일의 사용.
아두이노 프로그래밍 2일차 – Part4 아날로그 키패드 활용하기 강사: 김영준 목원대학교 겸임교수.
7. 자극과 반응 7-2. 신경계 3. 여러 가지 반응.
4. OpenGL 상태들과 기본 도형들.
중화학 공업이 발달한 남동 임해 공업 지역 사회 1학년 1학기
OpenGL PROJECT 우광식 성기영 서창수 이인주.
5장. 상수와 기본 자료형. 5장. 상수와 기본 자료형 5-1 C 언어가 제공하는 기본 자료형 자료형(data type) 기본 자료형 사용자 정의 자료형 int val; "선언할 변수의 특징을 나타내기 위한 키워드" 기본 자료형 기본적으로 제공이 되는 자료형 사용자.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
Draw the basic Geometry Objects
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
칼빈의 생애와 개혁자로의 변모 사학과 김종식.
Chapter 4 컬러( COLOR ).
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 05. 상수와 기본 자료형.
4장 - PHP의 표현식과 흐름 제어-.
국제의료관광 관련 법, 제도.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
일어나 새벽을 깨우리라 지금 우리는 마음을 합하여 진정으로 찬양 할 때니 un.
C 코드최적화 세명대학교 AI연구실 양승조.
학습지도안 단원명 대단원 III유전과 진화 중단원:1.세포분열 소단원 (1)체세포분열 작성자 신동명.
재활용의 실태와 재활용품 만들기의 계획 실과 6학년 8 . 환경을 살리는 나의 생활> 2) 재활용품 만들기(5~6/8)
Surface—나름대로 요약(수업용) [1] Surface Feature [2] Surface의 조작
CHAPTER 9-1 한국의 사회복지정책 - 사회보험제도 -
곡선 처리.
아동안전관리 홍성훈 교수님 아동보육학과 박윤희
제 5장 문제 해결의 지도 5.(2)문제의 종류 김헌태.
일본의 실버산업 패션 비즈니스클럽.
직장생활 예절 ① - 인사 1.내가 먼저 [인사의 5point] 2.상대방의 눈을 보고 미소지으며 3.상대방에 맞춰서
Part 02. 파워포인트 실무와 활용.
제 10장 가족치료모델 발 표 : 여금란.
선의관악종합사회복지관 김정현.
Part 정비사업의 절차 1 ※ : 도시주거환경정비기본계획 도시·주거환경 정비계획(안) 작성 도시·주거환경정비 기본계획 수립
박성진 컴퓨터 프로그래밍 기초 [03] 변수와 자료형 박성진
배열, 포인터, 함수 Review & 과제 1, 2.
경찰학 세미나 제 5 강 경찰관직무집행법 2조 5호의 의미 신라대학교 법경찰학부 김순석.
남자의피부의 고민을 한번에 싹~ 해결해주는 옴므라인
팀명 : 팀 구성원 : 지도교수 : 호남대학교 공과대학 전기공학과
팀명 : 팀 구성원 : 지도교수 : 호남대학교 공과대학 전기공학과
Presentation transcript:

Part III 애니메이션 Chapter 9 곡선

9.9 유리 곡선(Rational Curves)   9.1 소개 9.2 일반적인 정의 9.3 선형 보간 9.4 라그랑주 다항식 9.5 에르미트 곡선 9.6 Catmul-Rom 스플라인 9.7 베지어 곡선 9.8 B-스플라인 9.9 유리 곡선(Rational Curves) 9.10 곡선 렌더링하기 9.11 곡선을 따라서 속력 조절하기 9.12 카메라 조작

9.1 소개 애니메이션 리샘플링 기타 다른 용도로 유용하게 사용될 수 있음 두점 사이 보간 조정점(controls point,제어점)을 사용해서 근사 기타 다른 용도로 유용하게 사용될 수 있음

9.2 일반적인 정의 매개변수 곡선 실수 값들의 집합(매개변수u 로 표현되는)을 점들의 집합으로 사상하는 함수 삼차원공간에서 사상할 때 을 공간곡선이라고 한다

평균 속력r r=d/u 곡률

함수f가 다음과 같다면 x0값 에서 연속이라고 한다

함수f(x) 가 구간(a,b) 에서 모든x값 에 대해 연속이라면, 그 함수는 그 구간에서 위치적 또는 C0연속이라고 한다 함수f(x) 의 일계 도함수 f’(x)가 구간(a,b) 를 따라서 연속이라면 그 구간에서 접선적 또는 C1연속이라고 한다.

각 세그먼트에서 접선들이 동일한 방향을 가리키면 G1연속이라고 한다 함수 f(x)의 이계 도함수 f’’(x) 가 구간(a,b) 를 따라서 연속이라면 그 구간에서 C2연속이라고 한다. (곡률 연속)

9.3 선형 보간 두 점을 통과하는 매개변수 곡선을 사용해서 그 선 위의 점을 생성하는 것을 선형 보간이라고 한다

두점 P0,P1을 통과하는 선의 공식 (u의 범위는[0,1])

행렬공식으로 표현 U=(1,u,u2,u3,…) M은 매개변수 곡선에 필요한 인자 G는 곡선의 좌표를 포함하는 행렬

선형보간의 행렬 표현

선형보간의 행렬 표현

매개변수 구간 변환 매개변수 t 구간[t0,t1] -> 매개변수 u구간[0,1]

조각적 선형 보간

(C0연속이다)

9.4 라그랑주 다항식 점들 P0,P1,…,Pn-1,Pn 을 통과하는 곡선의 방정식

9.5 에르미트(Hermit) 곡선

P398, P598 참고

점P1에서 C1연속인 경우 접선의 기울기가 같다

접선의 길이가 다른 경우 곡률이 다르다

점P1에서 G1연속인 경우 접선이 일치하지는 않지만 방향은 같다

P1에서 접선들이 다른 방향을 가지는 경우

입반사 접선 벡터들을 보여주는 에르미트 곡선에 대한 가능한 인터페이스

에르미트 곡선의 자동 생성 C2연속을 유지하는 접선 생성, P403참고

경계조건으로 P’0, P’n을 설정하는 경우

자연스러운 단부 조건 이계도함수가 두 끝점에서 0라고 가정하는 경우

순환 단부 조건 일계,이계도함수가 두 끝점에서 같다고 가정

비순환 단부 조건 일계,이계도함수가 두 끝점에서 부정이라고 가정

9.6 Catmul-Rom 스플라인 에르미트 곡선에 다음 경계조건을 사용한다

Pi와Pi+1사이의 에르미트 곡선의 행렬에 대입 P’0와P’n는 아직 모름

방법1)P1과P2에 근거한 P0에서의 접선 벡터의 자동 생성

방법2)두점과 하나의 접선으로 2차식으로 세그먼트 생성 Q0의 경우

9.7 베지어 곡선

Pi는 집합의 조정점, 가중치 처럼 사용됨. 번스타인 다항식

( n=2일때, 점2개 ) 2차원 베지어 곡선 ( n=3일때, 점3개 )

3차원 베지어 곡선 (n=4일때, 점4개 )

조각별 베지어 곡선

베지어 곡선의 조정점 자동 생성

9.8 B-스플라인 보간하는 방법과 근사하는 방법의 일반화다. 유용하지만 복잡하다. 게임에서는 일반적으로 이용되지 않는다.

균등 3차 B-스플라인의 예

9.9 유리 곡선(Rational Curves) w(u) 함수 추가해서 동차 곡선으로 만들었다 Non-uniform rational B-spline (NURBS) 가 CAD 시스템에서 유용하다.

9.10 곡선 렌더링하기 3차 곡선을 사용한다면 다음 식으로 n개의 라인 세그먼트를 생성하여 그린다.

전진차분 u를 균등 간격h로 샘플링한다고 가정한다 매개변수가 u일때 x값은 xi 매개변수가 u+h일때 x값은 xi+1 y, z 는 x와 유사하게 계산한다

중간분할 곡선Q(u)를 중간인 Q(1/2) 에서 새로운 곡선 L(s)와 R(t)로 나눈다 void RenderCurve( Q ) { if( Straight( Q ) ) DrawLine( Q(0), Q(1) ); else MidointSubdivide( Q, &L, &R ); RenderCurve( L ); RenderCurve( R ); }

곡선이 직선에 가까운지 평가 곡선의 길이와 끝점을 연결한 선분 길이 비교 곡선의 중간점과 끝점을 연결한 선분과의 거리 비교

베지어 곡선은 다음 처럼 평가할 수 있다 선분P0P3에 대해서 P1과 P2의 거리를 측정

베지어 곡선 분할하는 방법 de Cateljau(드 카스텔죠)의 방법

OpenGL 사용하기 OpenGL 로 베지어 곡선 그릴 수 있다 http://www.opengl.org/sdk/docs/man/xhtml/glMap1.xml void glMap1f( GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat * points); void glMap1d( GLenum target, GLdouble u1, GLdouble u2, const GLdouble * points);

http://www. opengl. org/sdk/docs/man/xhtml/glEvalCoord http://www.opengl.org/sdk/docs/man/xhtml/glEvalCoord.xml void glEvalCoord1f( GLfloat u); void glEvalCoord1d( GLdouble u); void glEvalCoord2f( GLfloat u, GLfloat v); void glEvalCoord2d( GLdouble u, GLdouble v); http://www.opengl.org/sdk/docs/man/xhtml/glEvalMesh.xml void glEvalMesh1( GLenum mode, GLint i1, GLint i2);

http://www. opengl. org/sdk/docs/man/xhtml/glMapGrid http://www.opengl.org/sdk/docs/man/xhtml/glMapGrid.xml void glMapGrid1d( GLint un, GLdouble u1, GLdouble u2); void glMapGrid1f( GLint un, GLfloat u1, GLfloat u2); void glMapGrid2d( GLint un, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); void glMapGrid2f( GLint un, GLfloat u2, GLfloat v1, GLfloat v2);

IvVector3 controlPoints[] = { IvVector3(0. 0f, 0. 0f, 0 IvVector3 controlPoints[] = { IvVector3(0.0f, 0.0f, 0.0f), IvVector3(1.0f, 1.0f, 0.0f), IvVector3(2.0f, -1.0f, 0.0f), IvVector3(4.0f, 0.0f, 0.0f), }; glMap1f( GL_MAP1_VERTEX_3, 0.0f, 1.0f, 3, 4, (float*)&controlPoints[0].x ); glEnable( GL_MAP1_VERTEX_3 ); glBegin( GL_LINE_STRIP ); For( unsigned int i = 0; i < 32; ++i ) glEvalCoord1f( (float)i/32.0f ); } glEnd();

9.11 곡선을 따라서 속력 조절하기 상수 속력으로 이동

고정이동비율 r 이동시간 t 거리 s s = rt 인 거리를 다루기 원한다 u1이 주어지면 Q(u1)과 Q(u2) 사이의 호길이가 s 가 되는 u2 를 찾아야한다 다음 식의 해 u 를 찾는다 (length() 는 호 길이 함수)

뉴튼-랩슨 근 찾기

float FindParamaterByDistance( float u1, float s ) { if( s > ArcLength( u1, 1.0f ) ) return 1.0f; float len = ArcLength( 0.0f, 1.0f ); float p = u1 + s / len; for( int i = 0; i < MAX_ITER; ++i ) float func = ArcLength( u1, p ) – s; if( fabsf( func ) < EPSILON ) return p; } p -= func/Length( Derivative(p)); } }

호 길이 계산하기 가우스 구적법 Appendix B 참고 곡선을 분할해서 분할점을 잇는 선분 길이 총합 사용

3차 베지어 곡선은 de Cateljau의 방법으로 분할할 수 있다

가속과 감속

9.12 카메라 조작 카메라의 움직임을 곡선의 경로로 조절 프로그래밍적으로 수행할 수 도 있지만 아티스트가 경로를 설정하는게 좋다 카메라의 위치는 Q(t) 로 계산 카메라 방향 설정은 여러가지 방법이 있음

카메라 방향 설정 방향 고정 위치와 함께 방향 정보도 시간 별로 저장 프레넷 프레임(Frenet frame) (u 시선벡터, v 사이드벡터,w 업벡터)