시작하면서
- 기말고사 시즌이 다가온다.. 12월 10일. 고급컴그 기말고사를 위해 미리 공부 시작
- 이번 파트는 애니메이션이다.
- 인턴생활을 하며 알게된 정보들이 많아, 이번 부분은 많이 어렵게 다가오지 않았다.
- 특히 리타게팅과 모션캡쳐는 반가운느낌까지 든다.
- 정리를 하며 다시 공부를 시작하겠다. 마지막 기말고사 잘 마무리하자
Computer Animation?
- Animation: 움직이지않는 물체를 움직이는 것 처럼 보이기
- Computer Animation: animation을 위해 컴퓨터를 사용
어떤 Animation을 할것인가?
- 캐릭터의 Animation(사람, 몬스터, 동물 ...)
- 그 외의 Animation(강체, 액체, 자연 ...)
Animation 하는 방법
- 물리기반 Animation
- 알고리즘에 의해 control
- 중력, 질량, 속도, 충격량 parameter에 기반하여 구현
장점: 아주 정확함, 현실적
단점: 매우 복잡하고 자주 계산해야하므로 computer성능문제 생길 수 있음
- Key-frame Animation
- 특정장면을 촘촘하게 그려서 사이를 보간하기
장점: 간단하게 구현할 수 있음
단점: 자연스러운 표현을 위해 애니메이터의 역량이 갈려야함
- Motion-capture Animation
- 키를 잡는것을 사람이 수작업으로 하는것이 아니라 마커위치를 통해 잡음
장점: 수작업 없이 자연스러운 키를 받을 수 있음
단점: 비용많이 듦
Interpolation
- 결국 Animation과정에서 중요한 것은 key-frame 사이를 자연스럽게 보간하는 과정.
목표: 주어진 경로에 맞춰 smooth 한 움직임 만들기
Constraint
각 부분에 대해 제약조건이 있을 수 있다.
1. 시간에서의 위치: 거리에 대해 interpolation 진행
2. 그 위치에서의 속도, 가속도: 시간에 대해 interpolation 진행
Interpolation에는 뭐다? Curve
B-Spline과 같은 Approximation보다는 Control point를 지나는 Interpolation을 사용한다.
Interpolation 방법
- Generation: 생성방법
- Linear Interpolation: 각진 animation 생성
- Quadratic Interpolation: 2차함수로 보간
- Cubic Interpoliation: 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: 지나는 점
정리하자면,
Interpoation 의 구현: 복잡도 vs 정확도
정확도를 높이려면? -> 차수가 높아져야함 -> 복잡해짐
복잡도를 줄이려면? -> 차수가 낮아져야함 -> 부정확..
결국. 둘 사이의 조화가 필요함.
또한, 손쉽게 수정할 수 있어야함(Controllability)
Motion Control
제어해야하는 것
Reparameterizing by Arc Length
- analytic
- 쉽지않음
- 위치의 변화량으로 나타냄
- 적분으로 구하기
- supersample
- u를 조금씩 증가시키며 점 구함.
- 직선거리의 합으로 표현
- Sampling시에, curve잘 표현하기 위해서?
- 2개점 해보고, 3개 해보고.. 이런식으로 하다 차이가 적어질 때 채택.
- 단 예외가 있을 수 있으므로, 여러개 더 해보고 채택할 수 있음
장: 충분한 답을 찾을 수 있음
단: 특수경우에 힘들 수 있음(3~4개 더 해보고 판단해야함
- 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)))
- 가속도 조건으로 속도, 거리 구함