1 minute read

자세한 애니메이션 아키텍처 설명, 명확한 용어 사용이 인상적이다.

previous architecture

nil

  • behavior에 따라 애니메이션 구성한다. Move, Act와 같은 high level 애니메이션과 전역 애니메이션 상태(aim 타깃, look-at constraint, ..)도 포함.
  • 그 후 애니메이션 프로그램을 만들고 실행. animgraph wrapper로 생각할 수 있는 NPC network controller를 통해 애니메이션 그래프를 만든다.

문제점

  • 모든 프로그램은 full-body 포즈에만 적용 가능
  • NPC controller는 전체 animgraph에 매핑.
    • 사소한 변경도 NPC 애니메이션 시스템 전체에 영향을 준다.
  • NO data-driven
    • blend, transition weight 값을 전역 상수로 사용
  • 책임(responsibilities)이 명확하지 않다.
    • 애니메이션 프로그램 사이에 겹치는 부분이 많음. (moving, aiming, stand)
  • 애니메이션 실행이 조용히 실패하는 구조
    • 중복된 유효성 검사 코드 양산

new architecture

nil

animation graph controllers

animgraph 아주 작은 부분에만 매핑.

animation programs

  • 컨트롤러 존재만 안다. pathfinding과 같이 애니메이션에 필요한 작업 수행을 책임진다.
    • 애니메이션 프로그램과 컨트롤러는 1:1 매핑
  • 타입을 나눔
    • base program : full-body. 프로그램 하나만 실행
    • post-processing program : 여러 프로그램이 동시에 실행 가능
  • Start, Execute, Terminate 간단한 스테이트 머신으로 구현
  • decision system에서 사용할 수 있는 order status handle 구현
    • 성공했는지, 실패했는지, 왜 실패했는지, 이동 목표 위치까지 얼마나 남았는지 …

actuator

애니메이션 프로그램 scheduler, manager

the decision system

high level 동작을 명령하기보단 요청. 성공, 실패를 기다린다. order status handle을 사용.

LOD (Level of Detail)

nil

컨트롤러를 동적으로 바꾼다.

발표