[Computer Animation] Interpolation

huijae0817·2020년 11월 23일
0

시작하면서

  • 기말고사 시즌이 다가온다.. 12월 10일. 고급컴그 기말고사를 위해 미리 공부 시작
  • 이번 파트는 애니메이션이다.
  • 인턴생활을 하며 알게된 정보들이 많아, 이번 부분은 많이 어렵게 다가오지 않았다.
  • 특히 리타게팅과 모션캡쳐는 반가운느낌까지 든다.
  • 정리를 하며 다시 공부를 시작하겠다. 마지막 기말고사 잘 마무리하자

Computer Animation?

  • Animation: 움직이지않는 물체를 움직이는 것 처럼 보이기
  • Computer Animation: animation을 위해 컴퓨터를 사용

어떤 Animation을 할것인가?

  • 캐릭터의 Animation(사람, 몬스터, 동물 ...)
  • 그 외의 Animation(강체, 액체, 자연 ...)

Animation 하는 방법

  1. 물리기반 Animation
    • 알고리즘에 의해 control
    • 중력, 질량, 속도, 충격량 parameter에 기반하여 구현
      장점: 아주 정확함, 현실적
      단점: 매우 복잡하고 자주 계산해야하므로 computer성능문제 생길 수 있음
  2. Key-frame Animation
    • 특정장면을 촘촘하게 그려서 사이를 보간하기
      장점: 간단하게 구현할 수 있음
      단점: 자연스러운 표현을 위해 애니메이터의 역량이 갈려야함
  3. Motion-capture Animation
    • 키를 잡는것을 사람이 수작업으로 하는것이 아니라 마커위치를 통해 잡음
      장점: 수작업 없이 자연스러운 키를 받을 수 있음
      단점: 비용많이 듦

Interpolation

  • 결국 Animation과정에서 중요한 것은 key-frame 사이를 자연스럽게 보간하는 과정.

목표: 주어진 경로에 맞춰 smooth 한 움직임 만들기

Constraint

각 부분에 대해 제약조건이 있을 수 있다.

  1. 시간에서의 위치: 거리에 대해 interpolation 진행
  2. 그 위치에서의 속도, 가속도: 시간에 대해 interpolation 진행

Interpolation에는 뭐다? Curve

B-Spline과 같은 Approximation보다는 Control point를 지나는 Interpolation을 사용한다.

Interpolation 방법

  • Generation: 생성방법
    1. Linear Interpolation: 각진 animation 생성
    2. Quadratic Interpolation: 2차함수로 보간
    3. Cubic Interpoliation: 3차함수로 보간
    4. High-order Interpolation: Spline 방식
  • Continuity: 끊어짐이 없어야함. 부드럽게!
  • Control: 이동과 같은 조작이 가능해아함. 편집가능!

보간시, 뭘 줘야할까

  • Points(점?)
  • Tangents(속도?)
  • Continuity(연결?)
  • Convergence(수렴하게?)
  • Controls(제어 방법?)

구체적 방법

  1. Lagrange Polynomial
    • 모든 구간 차이에 대한 보간 진행 -> 부드럽게 연결
      장: 점이 많은 경우, 고차원 보간을 잘 해줌
      단: 내부점은 괜찮지만, 바깥쪽은 예상치 못한 큰 변화가 있을 수 있음
      => 차수가 낮을때는 괜찮은데, 15차 정도 되면, 갑자기 튀는 현상 발생
  2. Polynomial Curve
    • 일반적인 방식
    • n차의 u행렬에 특성 행렬과 control point행렬을 곱해 P(u)를 구한다.
    1. Hermite: 점과 기울기
    2. Cubic Bezier: 점과 속도
    3. Blended Parabolas: 지나는 점

정리하자면,

Interpoation 의 구현: 복잡도 vs 정확도
정확도를 높이려면? -> 차수가 높아져야함 -> 복잡해짐
복잡도를 줄이려면? -> 차수가 낮아져야함 -> 부정확..
결국. 둘 사이의 조화가 필요함.
또한, 손쉽게 수정할 수 있어야함(Controllability)

Motion Control

  • animation을 제어해보자

제어해야하는 것

  • Length: 위치
  • Speed: 속도

Reparameterizing by Arc Length

  1. analytic
    • 쉽지않음
    • 위치의 변화량으로 나타냄
    • 적분으로 구하기
  2. supersample
    • u를 조금씩 증가시키며 점 구함.
    • 직선거리의 합으로 표현
    • Sampling시에, curve잘 표현하기 위해서?
      • 2개점 해보고, 3개 해보고.. 이런식으로 하다 차이가 적어질 때 채택.
      • 단 예외가 있을 수 있으므로, 여러개 더 해보고 채택할 수 있음

장: 충분한 답을 찾을 수 있음
단: 특수경우에 힘들 수 있음(3~4개 더 해보고 판단해야함

  1. Time distance function
    • 시간에 따라 길이 변화
  2. 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)))
  • 가속도 조건으로 속도, 거리 구함

0개의 댓글