[Gpg2권 박민근] 2.5 평행 수송 프레임
-
Upload
mingeun-park -
Category
Documents
-
view
625 -
download
0
Transcript of [Gpg2권 박민근] 2.5 평행 수송 프레임
평행 수송 프레임(Parallel Transport Frame)
GPG 2. Section 2. Mathmatics 2.5
DevRookie Study, 2011. 10.22 박민근 ( 알콜코더 )
개요
• 위치가 이동할 때 , 방향도 자연스럽게 변경 되어야 한다 .
• 패스 카메라에서 카메라의 경로의 변화에 잘 들어 맞게 ,
카메라의 방향이 바뀌어야 한다 .
• 이러한 안정적인 방향 전환에 도움이 될 수 있는것이 바로
평행 수송 프레임 방법
주석
• 위치 정보 만을 가지고 , 부드러운 방향 전환을 만들어 낼 때
사용
• 스플라인은 위치의 부드러운 보간 , 이것은 방향의 부드러운
보간
• 패스 카메라 , 궤적 이펙트 , 미사일 방향등에서 자주
사용한다
• 미사일은 이동 위치만 있을 뿐 , 방향이 없다
• 방향이 갑자기 급변하게 되면 , 이상하게 보인다
Parallel Transport on a Torus - Houdini and Python
http://vimeo.com/11706639
About this video:"A vector is parallel transported on a torus manifold. The little line vectors on each point represent the frame field. Not quite sure this is right because info on this is a little hard to find, but I think it is cor-rect unless a mistake has found its way in."
You can watch it here:http://vimeo.com/11706639
원본 위치 <http://vimeo.com/11706639>
활용
• 지오메트리의 생성에도 사용할 수 있다
• 로프팅 (lofting) : 2D 도형을 기반으로 3D
지오메트리를 생성한다
• 2D 도형의 방향들이 곡선 경로를 제대로 따라가야 ,
매끄러운 3D 모델이 나온다
특징
• 매끄러운 결과를 얻을 수 있는 이유
• 기존 프레임에 기반하여 , 조금씩만 회전 시키기 때문
• 대신 임의의 한 프레임을 계산하기 위해서는 앞에서부터
순차적으로 전부 계산해 와야 한다 .
• ( 이에 비해 뒤의 다른 두방법은 특정 위치의 프레임을
바로 계산할 수 있다 )
기법
• 초기 프레임을 정하고 , 곡선에 따라 옮기되 , 각 단계마다
프레임을 곡선과 최대한 평행이 되도록 회전 시킨다
곡선 Ct-1 에서의 기존 프레임 F1t-1 에서의 접선 T1 (t-1 에서의 1 차 도함수 , 즉 C 의 속도 )T 에서의 접선 T2
다음 프레임 F2 의 위치는 t 에서의 C 값F2 의 방향은 F1 을 축 A 에 대해서 각도 a 만큼 회전시키면 얻을 수 있다
A = T1 X T2a = ArcCos((T1 내적 T2)/(|T1||T2|))접선들이 평행하다면 회전은 생략할 수 있다 (T1 X T2 가 0 이면 )
주의 사항
• 움직이는 객체의 방향에 적용할 때
• 방향 전환이 너무 안정적일 수도 있다
• 비행기의 경우 동체를 전혀 기울이지 않고 , 방향 전환이
되면 이상하게 보인다 .
[ 비교 ] 프래넷 프레임
• 다음과 같은 세 개의 직교 축으로 만들어
진다• 곡선의 접선
• 접선과 2 차 도함수의 내적
• 이상의 두벡터들의 외적 벡터
[ 비교 ] 프래넷 프레임
2 차 도함수의 변화에 의해서 ,
방향이 뒤집어 지는 경우가
생긴다 .
[ 비교 ] 픽스드 - 업 방법 • 접선 T 와 임의의 벡터 V( 픽스드 - 업 벡터 ) 를 통해서
프레임을 생성한다 .
• 방향 벡터 D = T / |T|
• 우향 벡터 R = D X V / | D X V |
• 상향 벡터 U = R X D
• [* 주 ] 게임에서 특정 위치에서 방향 좌표계를 구할 때 가장 자주 쓰는
방식 – 간단하다
• 궤적 이펙트 , 미사일 방향등…
[ 비교 ] 픽스드 - 업 방법
급격한 방향 변환이
있는 경우 끊어진다