Animation
Animation : 움직이지 않는 물체를 움직이는 것 처럼 보이기
Computer Animation : Animation을 위해 컴퓨터를 사용함
그렇다면 우리는 컴퓨터로 어떤 애니메이션을 할 것인가?
1. 캐릭터 Animation (사람, 몬스터, 동물, 등등)
2. 그 밖의 Animation (강체, 변체, 자연, 등등)
Animation Technique
- 물리기반 Animation
- 알고리즘에 의해 control
- 중력, 질량, 속도, 충격량 parameter에 기반하여 구현
- 장점: 아주 정확함, 현실적
- 단점: 매우 복잡하고 자주 계산해야하므로 computer성능문제 생길 수 있음
- KeyFrame Animation
- 특정장면을 촘촘하게 그려서 사이를 보간하기
- 장점: 간단하게 구현할 수 있음
- 단점: 자연스러운 표현을 위해 애니메이터의 역량이 갈려야함
- Motion-capture Animation
- 키를 잡는것을 사람이 수작업으로 하는것이 아니라 마커위치를 통해 잡음
- 장점: 수작업 없이 자연스러운 키를 받을 수 있음
- 단점: 비용많이 듦
보간(Interpolation)
Animation 과정에서 중요한 것은 KeyFrame들의 사이를 자연스럽게 보간하는 것
목표 : 주어진 경로에 맞춰 부드러운 움직임을 만들자
방법
- Generation: 생성방법
- Linear Interpolation: 각진 animation 생성
- Quadratic Interpolation: 2차함수로 보간
- Cubic Interpolation: 3차함수로 보간
- High-order Interpolation: Spline 방식
- Continuity: 끊어짐이 없어야함. 부드럽게!
- Control: 이동과 같은 조작이 가능해아함. 편집가능!
매개변수
- Points(점)
- Tangents(속도)
- Continuity(연결)
- Convergence(수렴여부)
- Controls(제어 방법)
구체적으로
- Lagrange Polynomial
- 모든 구간 차이에 대한 보간 진행 -> 부드럽게 연결
- 장점: 점이 많은 경우, 고차원 보간을 잘 해줌
- 단점: 내부점은 괜찮지만, 바깥쪽은 예상치 못한 큰 변화가 있을 수 있음
→ 차수가 낮을때는 괜찮은데, 15차 정도 되면, 갑자기 튀는 현상 발생
- Polynomial Curve
- 일반적인 방식
- n차의 u행렬에 특성 행렬과 control point행렬을 곱해 P(u)를 구한다.
- Hermite: 점과 기울기
- Cubic Bezier: 점과 속도
- Blended Parabolas: 지나는 점
정리
Interpolation 의 구현: 복잡도 vs 정확도
정확도를 높이려면? -> 차수가 높아져야함 -> 복잡해짐
복잡도를 줄이려면? -> 차수가 낮아져야함 -> 부정확..
결국. 둘 사이의 조화가 필요함. 또한, 손쉽게 수정할 수 있어야함(Controllability)
제약조건(Constraint)
1.시간에서의 위치 제약 : 거리에 대해 보간 진행
2.그 위치에서의 속도와 가속도 : 시간에 대해 보간 진행
애니메이션 제어
Motion Control
-
제어해야하는 것
-
재매개변수화(Reparameterization) by Arc Length
분석적(analytic)
- 쉽지않음
- 위치의 변화량으로 나타냄
- 적분으로 구하기
supersampleu를 조금씩 증가시키며 점 구함.
- 장점: 충분한 답을 찾을 수 있음
- 단점: 특수경우에 힘들 수 있음(3~4개 더 해보고 판단해야함)
- 직선거리의 합으로 표현
- Sampling시에, curve잘 표현하기 위해서?
- 2개점 해보고, 3개 해보고.. 이런식으로 하다 차이가 적어질 때 채택.
- 단 예외가 있을 수 있으므로, 여러개 더 해보고 채택할 수 있음
Time distance function
Ease-in Ease-out function
- 시작과 끝의 기울기를 0으로
- Ease-in: sine함수. single cubic(3차함수). constant acceleration(상수로 가속 제어)
정리하자면
공간에 대한 보간 u = U(s)
시간에 대한 보간 s = S(t)
P = P(U(S(t)))
가속도 조건으로 속도, 거리 구하기