Game Engineering 7

LeemHyungJun·2023년 5월 11일
0

Game Engineering

목록 보기
5/8

Motion Capture and Character Animation

1. Introduction

  • Motion Capture(MoCap)
    • actor의 움직임을 찍은 후 digital data로 변환한 것
    • 사실적이고 자연스러운 애니메이션을 생성 가능하다.
    • performance capture
      • 얼굴이나 손가락 등의 캡쳐가 까다로운 부분을 캡쳐하는 기술
  • Character animation을 만드는 여러가지 방식
    • Key frame animation
      • key frame마다 특정 포즈를 만들고 key frame 사이는 linear interpolation으로 만드는 기술
      • 애니메이터가 많은 시간을 사용하여 캐릭터 모델의 조인트 값 등을 조절하여 만들어야 한다.
      • 사람 형태가 아닌 모델에 있어서도 사람 형태와 유사하게 구현할 수 있어 제한이 없다.
    • Procedural animation
      • 수학적 계산과 알고리즘을 통해 애니메이션을 생성하는 기술
      • 물리기반 애니메이션이나 IK 등을 포함한다.
      • 애니메이터가 직접 만들기에 너무 복잡한 모션을 만들때 사용하여 시간 절약을 할 수 있지만, 원하는 모션이 나오기 까지 추가적인 처리가 필요하다.
    • Mocap
      • 장점
        • Realism
        • Efficiency
          • 애니메이터가 필요없고, 시간이 절약된다.
        • Consistency
          • 액터의 연기에 따라 캐릭터의 스타일을 유지할 수 있다.
        • Performance-driven
          • 바로 적용이 가능하다.
      • 단점
        • Cost
          • Mocap 기술의 가장 큰 문제점
          • 카메라, 수트, software 등 다양한 장비들이 필수적이다.
        • Limited flexibility
          • 사람 형태의 애니메이션이 아닌 다리가 많거나 판타지 세계에 나오는 생물들은 액터가 연기하기에 적합하지 않다.
        • Cleanup and refinement
          • 찍은 데이터를 가공하여 애니메이션으로 만들기 위해서 여러 후처리가 필요하다.
        • Dependence on performer
          • 연기자의 실력에 따라 다른 결과물이 나오게 된다.

2. Mocap Method

1. Optical Motion Capture (OMC)

  • Intro
    • capture 공간에 있는 여러대의 카메라를 통해 marker의 움직임을 tracking 하는 기술
    • triangulate 방식을 통해 marker의 position을 측정한다.
      • 카메라로 marker의 위치를 찍으면 2D 형태로 나오게 된다.
      • 이때 여러대의 카메라를 이용해서 찍은 후 카메라로부터 물체까지의 거리를 분석하여 3D 상의 위치를 알아내는 방식을 사용한다.
      • 카메라가 많아질 수록 특정 방향에서 가려진 부분을 찍을 수 있어서 정확하게 측정할 수 있다.
  • 종류
    • Passive optical motion capture
      • marker가 스스로 무언가 하지 않는 방식
        -> 스스로 빛을 내지 않고, 별다른 power가 필요하지 않음
      • 외부에서 쏘는 빛을 marker가 반사하여 marker의 위치를 측정하게 된다.
      • marker가 빛을 받아서 반사한 빛이 카메라로 들어가게 되어 marker를 detect 하고 track 할 수 있다.
        • detect : 주어진 frame 에서의 위치
        • track : 연속된 frame 동안의 위치
      • 이 방식의 가장 큰 문제점은 각각의 marker의 위치는 알 수 있지만, 특정 marker가 실제 사람의 몸의 어느 부분에 해당하는 것인지 알 수 없어서 추가적으로 분석이 필요하다. (unique ID가 없다)
    • Active optical motion capture
      • marker가 스스로 빛을 내는 방식
        -> 각각의 marker들은 power가 필요하고, 전자 회로를 가지고 있어 빛을 낸다.
      • marker들이 unique ID를 가지고 있어서 각각이 몸에 어떤 부위에 해당하는 것인지 알아보기 쉽다.
    • Passive VS. Active
      • Cost
        • Passive 방식이 더 저렴하다.
        • marker에 추가적인 기능이 없기 때문에
      • Marker complexity
        • Passive가 더 간단하다.
        • Active는 unique ID가 있기 때문에 해당하는 부위에 정확하게 붙여야 한다.
      • Lighting dependency
        • Passive의 경우 반사시키기 위한 빛을 쏴야하기 때문에 캡쳐하는 공간이 어두워야 한다.
        • 다른 빛이 들어오는 것을 막아야 하기 때문에..
      • Marker occlusion
        • Active 방식이 더 좋다
        • Active 방식은 unique ID가 있기 때문에 몇몇 카메라에서 가려져서 찍히지 않더라도 Passive 방식보다 처리가 쉽다.

2. Interial motion capture (IMC)

  • 웨어러블 센서를 부착하고 모션 캡쳐를 하는 방식
  • 해당 센서는 가속력, 각속도, 자기장 방향 등을 측정하여 액터의 위치와 기준을 측정한다.
  • 장점
    • Portability and flexibility
      • OMC 방식과 다르게 캡쳐공간이나 카메라가 필요 없다
    • No Occulsion issues
    • Faster setup
    • Real-time feedback
  • 단점
    • Positional accuracy
      • 가장 큰 문제점
      • 정확도가 떨어진다.
    • Magnetic interference
      • 자기장 방향을 측정할 때 사용하기 때문에 주위의 자기장의 영향을 받을 수 있다.
    • Battery life

3. Magnetic motion capture

  • magnetic field 를 이용해서 tracking 하는 방식
  • 아직 실험적인 방식

4. Mechanical motion capture

  • 강화 외골격을 입고 찍는 방식
  • 아직 실험적인 방식

5. Markerless motion capture

  • 컴퓨터 비전 알고리즘을 이용하여 marker나 다른 기기들 없이 분석하는 방식
  • 아직 실험적인 방식

3. Post-Processing of POMC

  • Passive Optical Motion Capture 방식을 사용하는 이유
    • less expensive
    • simpler to use
    • familar to end user
  • post processing of POMC
    • 결과물의 정확성과 퀄리티를 위해 post-processing이 필수적이다.
    • Resolving marker ambiguity (marker labeling)
      • POMC의 가장 큰 문제점이 point cloud가 추출된 후 정확한 위치 파악이 어렵다는 점이다.
      • 추출한 점들을 캐릭터에 위치에 맞게 labeling 하는 작업이 필수적이다.
    • Reducing noise
      • noise 제거
    • Gap filling
      • 원래 예상한 결과값의 갯수보다 적어진 점들을 만들어야 한다.
      • 카메라에 가려진 marker 때문에 예상한 결과보다 적은 값이 나올 수 있다.
      • 해결책
        • interpolation
        • adjusting the marker positions
    • Rigging and retargeting
      • motion capture 데이터를 애니메이션으로 만들기 위해서 skeleton 으로 mapped 하는 작업이 필요하다.
    • Constraint enforcement
      • 실제 사람과 유사하게 동작하게 만들기 위해서 constraints를 적용해야 하는 경우도 존재한다.
      • physical limitations를 따르게 만들기 (range of joint..)
    • Cleanup and optimization
      • 예상보다 더 많은 데이터값이 나온 경우 없애는 작업이 필요하다.
      • 너무 빠른 움직임을 가져가는 등의 경우에 더 많은 marker 들의 좌표가 측정될 수 있다.

4. Mocap Labeling Problem

  • 위에서 언급한 가장 큰 문제점을 해결하기 위한 방식인 marker labeling에 대한 내용
  • POMC에는 unique ID가 없기 때문에 발생하는 문제점
  • 최근에 사용하는 방식으로 SOMA : Solving Optical Marker-Based MoCap Automatically 이 있다.
  • Notation
    • Mocap Point Cloud (측정한 결과로 나온 점들)
      • {P1,...PT}\left\{P_1,...P_T\right\}
      • Pt={Pt,1,...,Pt,nt}P_t = \left\{P_{t,1},...,P_{t,n_t}\right\}
        • 첫번째 첨자는 frame 두번째 첨자는 갯수에 대한 index
        • ex) 3 frame 에서 7번째 marker : P3,7P_{3,7}

5. SOMA

1. Notation

  • marker label
    • L={l1,...lM,null}L = \left\{l_1,...l_M,null\right\}
    • null은 ghost marker를 위해 존재 (예상보다 더 많은 값 나왔을 때 처리)
  • three constraints
    • C1C_1 : 각 point Pt,iP_{t,i}는 최대 하나의 label에 할당된다.
    • C2C_2 : 각 point Pt,iP_{t,i}는 최대 하나의 tracklet에 할당된다.
      • tracklet : 여러 프레임에 걸쳐 진행하는 과정을 하나의 track으로 저장하는 것
    • C3C_3 : null label은 예외적으로 하나 이상의 point를 가질 수 있고, 여러개의 tracklet에 포함될 수 있다.

2. Self-Attention on MPC

  • pipeline of SOMA
    • input data : single frame of sparse point
    • output data : ID를 부여한 point들
  • multiple layer of self-attention를 이용해서 data processing을 진행한다.

3. Attention

  • 사람이 생각함에 있어서 이해할 때 하는 집중을 모방한 방식이다.
  • word embedding (예시)
    • 연관성이 높은 것을 찾는 과정! (value vector viv_i 찾기)
    • 각 토큰들이 있을 때 word embedding을 통해 각 token과 연관성이 있는 축에 가중치를 준다
    • 이후 축이 7개라면 7d -> 2d 공간으로 바꿔주면 특정 token끼리의 연관성을 구할 수 있다.
  • Compute Weights
    • attention의 output은 weight average
      • iwivi\sum_iw_iv_i
    • weight를 구하기 위해서..(query-key mechanism 사용)
      • Q : Query
      • K : Key
      • V : Value
      • dkd_k : embedded vector dimension
      • Query's Attention(Q,K,V) = softmax(QKTdk)V(\frac{QK^T}{\sqrt{d_k}})V

4. example

  • word embedding을 통해 아래처럼 구성한다. (dk=3)d_k=3)
  • QKTQK^T를 계산하여 attention score를 얻는다. (Query's attention의 분자를 구하는 것)
  • 이후 attention score에 softmax를 취하고 Value를 곱하면 Query's Attention을 구할 수 있다.
  • 위와 같이 Q,K,V가 모두 같은 data에서 온 값들이라면 위의 방식을 통해 얻은 결과를 Self-Attention 이라고 한다.
    -> 나하고 얼마나 가까운 값들인지..
    -> 예시에서는 "it" 과 전체 문장에 대하여 얼마나 가까운지에 대한 값

5. multilayered multi-head self-attention

  • 나하고 관련도가 있는 것과 관련된 것에 대한 것을 분석할 수 있으므로 기본적인 self-attention 보다 더 정확한 값을 구할 수 있다.

0개의 댓글