XBOX360이나 PS3 등 성능과 표현력이 높은, 이른바 넥스트젠 (차세대) 콘솔에서 액션 장르의 게임이 차지하는 비중과 중요성은 날이 갈 수록 높아지고 있다. 이런 추세에 힘입어 넥스트젠 게임에 등장하는 애니메이션은 그 볼륨이 늘어나는 것은 물론 점차 복잡한 제어를 요구하고 있다. 특히 적은 볼륨을 통해서 다채로운 애니메이션을 만들어내기 위한 절차적 애니메이션 기법이나 게임 내의 복잡한 환경에 적절하게 반응하도록 만드는 상태 제어 기법 등은 첨단 렌더링 기법에 비견할 수 있을 정도로 넥스트젠 게임에서 가장 중요한 기술 중 하나로 자리잡고 있다.
이 강의에서는 이러한 넥스트젠 애니메이션 기술 트렌드와 온라인 게임에 기존 솔루션을 바로 통합하기 어려운 이유에 대해서 살펴보고, 실제로 온라인에서 동작할 수 있는 아키텍처에 대해서 마비노기 2의 개발 사례를 통해 살펴보도록 한다.
1. HCI2010 | 김주복
온 라 인 게 임 과
차세대 애니메이션
Ⓒ 2008-2010 NEXON Corporation & devCAT Studio. All Rights Reserved
M2 team, Game Development Team for Mabinogi in devCAT (The 3rd Development Division in NEXON Corp.). M2 team Director is Kim, Dong-Gun | Project W is produced by Kim, Dong-Gun
devCAT Engine team, Engine Development Team for Project W and more. Engine Team Technical Director is Jeon, Hyeong-Kyu
25. Total
Wait & Idles Transitions Movement Cycle Other animations
breakers
10 108 14 12 24 168
Banking L&R
Walk Slow
Idles Walk Normal
Wait High L Start Turn Side Walk L&R
Wait High R Start straight Stealth
Wait Low L Stop Jog &Run Walk stop Turn on spot
Wait Low R Run turns Sprint Walk breaker Oriented move
자연스러운 평상 동작
Assassin’s Creed
54. 레이어 0 레이어 1 레이어 2 레이어 3
기본 본 구조 손 디포머블 본 장비품 슬롯
커스터마이즈 가능한 높은 품질의 애니메이션을 지원한다
레이어드 프레임워크
55. 페이셜 모션
지글본
IK
애니메이터 손을 덜 쓰고 모션에 풍부함을 제공한다
절차적 기법 적용
56. 리타게팅 미들웨어와의 궁합
프레임워크의 잦은 변경
데드 레커닝과의 조합
액션 주도권 문제
도입의 즉시 동기화 기능 필요
엔진 리소스와 호환성
걸림돌?
스크립트로 루아를 강제함
독특한 라이센싱 모델
그래프 에디팅 노하우 필요
성능 문제에 대한 신뢰도
게임의 핵심적 부분
여타 기능과 조합 가능성
57. 발은 맞아야 하지만 애니메이션이 캐릭터 위치를 결정해서는 안 된다
애니메이션 vs 로직
64. 애니메이터 애니메이션 Information
Track
애니메이션
오리진
캐릭터 로코모션
카메라 로코모션
로직 애니메이션
어드밴스
프로세서
스탠스
프로세서 트랜스폼 블렌더
포지션 블렌더
디렉션 블렌더
애드온 무브
프로세서
구조 쳐다보기
블렌더
65. 애니메이터 애니메이션 Information
Track
애니메이션
오리진
캐릭터 로코모션
카메라 타겟의 위치, 블렌딩할 캐릭터의 위치
카메라 로코모션
애니메이션 어드밴스
플레이어 프로세서
로직 애니메이션
스탠스
프로세서 트랜스폼 블렌더
포지션 블렌더
디렉션 블렌더
애니메이션 애드온 무브
프로세서
메타 정보 쳐다보기
블렌더
66. 애니메이터 애니메이션 Information
Track
애니메이션
오리진
캐릭터 로코모션
발맞춤 처리 등의 노하우를 애니메이션과 분리 카메라 로코모션
애니메이션 어드밴스
플레이어 프로세서
로직 애니메이션
스탠스
프로세서 트랜스폼 블렌더
포지션 블렌더
디렉션 블렌더
외부 솔루션 애드온 무브
프로세서
통합 쳐다보기
블렌더
67. 애니메이터 애니메이션 Information
Track
애니메이션
오리진
캐릭터 로코모션
애니메이션 전이시의 블렌딩을 처리
카메라 로코모션
애니메이션 어드밴스
플레이어 프로세서
로직 애니메이션
스탠스
프로세서 트랜스폼 블렌더
포지션 블렌더
디렉션 블렌더
애드온 무브
프로세서
트랜지션 처리 쳐다보기
블렌더
68. 애니메이
터 애니메이션 Information
Track
애니메이션
루프 끝이나 정지 시 오리진
애니메이션 피봇과 캐릭터 위치 캐릭터 로코모션
불일치 문제
카메라 로코모션
애니메이션 어드밴스
플레이어 프로세서
다른 로직 애니메이션
모션으로
애니메이션 교체
피봇
스탠스
프로세서 트랜스폼 블렌더
그 사이의 이동치를
실제로 적용
포지션 블렌더
새 애니메이션 디렉션 블렌더
피봇
애드온 무브
프로세서
발맞춤 처리 쳐다보기
블렌더
69. 애니메이터 애니메이션 Information
Track
애니메이션
오리진
회전 시 캐릭터 위치와 캐릭터 로코모션
애니메이션 피봇의 불일치 문제
카메라 로코모션
애니메이션 어드밴스
플레이어 프로세서
애니메이션
피봇 로직 애니메이션
스탠스
프로세서 트랜스폼 블렌더
포지션 블렌더
애니메이션
피봇 디렉션 블렌더
애드온 무브
프로세서
발맞춤 처리 쳐다보기
블렌더
70. 애니메이터 애니메이션 Information
Track
애니메이션
오리진
캐릭터 로코모션
맞아서 날아가는 처리, 쳐다보기 등
카메라 로코모션
애니메이션 어드밴스
플레이어 프로세서
로직 애니메이션
스탠스
프로세서 트랜스폼 블렌더
포지션 블렌더
디렉션 블렌더
절차적 애드온 무브
프로세서
모션 처리 쳐다보기
블렌더
73. 애니메이터 애니메이션 Information
Track
애니메이션
오리진
캐릭터 로코모션
카메라 로코모션
리타게터
로직 애니메이션
지글본
프로세서 어드밴스
프로세서
디포머블
프로세서
스탠스
믹서 프로세서 트랜스폼 블렌더
포지션 블렌더
…
디렉션 블렌더
애드온 무브
프로세서
어디에? 쳐다보기
블렌더
77. 애니메이터
애니메이션
레이어 스택
애니메이션 레이어
베이스 애니메이션
애니메이션 소스 – 트랙 플레이어
어드밴스 프로세서 기본 트랜스폼 블렌더
블렌드 오퍼레이션
애니메이션 레이어
쳐다보기 (몸)
애니메이션 소스 – 1 프레임 포즈 플레이어
어드밴스 프로세서 더하기 트랜스폼 블렌더
블렌드 오퍼레이션
애니메이션 레이어
몸 좌우로 기울이기
애니메이션 소스 – 1 프레임 포즈 플레이어
어드밴스 프로세서 더하기 트랜스폼 블렌더
블렌드 오퍼레이션
애니메이션 레이어
숨쉬기
애니메이션 소스 – 트랙 플레이어
어드밴스 프로세서 더하기 트랜스폼 블렌더
블렌드 오퍼레이션
단순한
구조
스탠스 프로세서
포지션 블렌더 디렉션 블렌더
78. 애니메이터
애니메이션
레이어 스택
애니메이션 레이어
베이스 애니메이션
애니메이션 소스 – 트랙 플레이어
어드밴스 프로세서 기본 트랜스폼 블렌더
블렌드 오퍼레이션
애니메이션 레이어
쳐다보기 (몸)
애니메이션 소스 – 1 프레임 포즈 플레이어
어드밴스 프로세서 더하기 트랜스폼 블렌더
블렌드 오퍼레이션
애니메이션 레이어
몸 좌우로 기울이기
애니메이션 소스 – 1 프레임 포즈 플레이어
어드밴스 프로세서 더하기 트랜스폼 블렌더
블렌드 오퍼레이션
애니메이션 레이어
숨쉬기
애니메이션 소스 – 트랙 플레이어
어드밴스 프로세서 더하기 트랜스폼 블렌더
블렌드 오퍼레이션
기존과
동일한 부분
스탠스 프로세서
포지션 블렌더 디렉션 블렌더
79. 애니메이터
애니메이션
레이어 스택
애니메이션 레이어
베이스 애니메이션
애니메이션 소스 – 트랙 플레이어
어드밴스 프로세서 기본 트랜스폼 블렌더
블렌드 오퍼레이션
애니메이션 레이어
쳐다보기 (몸)
애니메이션 소스 – 1 프레임 포즈 플레이어
어드밴스 프로세서 더하기 트랜스폼 블렌더
블렌드 오퍼레이션
애니메이션 레이어
몸 좌우로 기울이기
애니메이션 소스 – 1 프레임 포즈 플레이어
어드밴스 프로세서 더하기 트랜스폼 블렌더
블렌드 오퍼레이션
애니메이션 레이어
숨쉬기
애니메이션 소스 – 트랙 플레이어
어드밴스 프로세서 더하기 트랜스폼 블렌더
블렌드 오퍼레이션
단순함+
확장성
스탠스 프로세서
포지션 블렌더 디렉션 블렌더
85. 논 블렌딩 트랜지션
액션
블렌딩 트랜지션
애니메이션이 끝나면
액션 액션 모션 스테이트
애니메이션
명시적 전이
애니메이션이 끝나면
장비변경
장비변경
모션 전이 조건 판단
if 이동속도 == 걷기
달리기
if 이동속도 == 달리기 if 이동속도 == 전력질주
아이들 모션
if 이동속도 == 전력질주 if 이동속도 == 0
애니메이션이 끝나면
전력질주-
달리기 전이
애니메이션이 끝나면 if 이동속도 == 달리기
전력질주
전력질주
도입부 if 이동속도 == 0
if 이동방향 많이 바뀜 애니메이션이 끝나면
전력질주
종료부
상태구분 스프린트
턴백
애니메이션이 끝나면
초안 (일부)
86. 아이들 if 이동속도 == 달리기
if 이동속도 == 전력질주
AnimationPlayer
아이들 포즈
AnimationMixer Retargeter LookAt
AnimationPlayer
숨쉬기 애디티브
출력
달리기 if 이동속도 == 걷기
AnimationPlayer
좌측 틸팅 애디티브 if 이동속도 == 전력질주
AnimationPlayer 틸팅 팩터
달리기 애니메이션 if 이동속도 == 0
AnimationMixer AnimationMixer
AnimationPlayer
숨쉬기 애디티브
AnimationPlayer
우측 틸팅 애디티브
Retargeter LookAt
출력
개별 상태
회로 구성 초안 (일부)
101. AnimStateMachine
Animation AnimState
HumanIdle Idle
Run
Sprint
Attack
피봇 이동발생
Animation 피봇 이동을 리타게팅
HumanRun 믹싱 비율만큼 조정 비율대로 조정
Animator
Animation BankingMixer AnimState Retargeter
HumanBankLeft Running StanceProcessor
RunOut
Animation
HumanBankRight 전체 캐릭터의
Sprint 피봇을 이동
Animation AnimState 그대로 통과
HumanIdle RunOut
ReturnToIdle
Run
Sprint
피봇 이동 처리 경로
102. JiggleProcessor
Output Pin
Input Pin
주어진 포즈 중 일부를 지글본으로 처리하는 디바이스
114. HumanRun
Animation
HumanRun
Animation BankingMixer AnimState
HumanBankLeft Running
RunOut
Animation
HumanBankRight
Sprint
로직 제어 편의성과 모션 유연성의 절충안
유연한 단일 모션 모델
115. HumanRun
Animation
HumanRun
Animation BankingMixer AnimState
HumanBankLeft Running
RunOut
Animation
HumanBankRight
Sprint
모든 스테이트 전이가 아니라 특정 모션에 진입/진출할 때로 한정
트랜지션 속성 단순화
116. IParameterPool
방향 전환 크기 패드 입력 방향 마우스 클릭
현재 방향 캐릭터 상태 쳐다보기 타겟
방향 전환 크기
HumanRun
Animation
HumanRun
블렌드 팩터
Animation BankingMixer AnimState
HumanBankLeft Running
RunOut
Animation
HumanBankRight
Sprint
그래프 컨트롤 제어 구조를 일반화
파라메터 와이어링
121. 레퍼런스
$ j i g g l e b o n e , T h e Va l v e D e v e l o p e r C o m m u n i t y
Character Pipeline Advances for Next-Gen Games, Christopher Evans, Hanno Hagedorn
[ G D C 2 0 0 7 ]
Concepts in Animating Sam Fisher & friends, Eric Bibeau, Gilles Monteil [GDC2005]
Creating a Character in Uncharted:Drake’s Fortune, Christian Gyrling [GDC2008]
E u p h o r i a , N a t u r a l M o t i o n , h t t p : / / w w w. n a t u r a l m o t i o n . c o m / e u p h o r i a . h t m
Helper Joints:Advanced Deformations on RunTime Characters, Jason Parks [GDC2005]
HumanIK, Autodesk, http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=9491249
Taming the Mob : Creating Believable Crowds, Sylvain Bernard, James Therien [GDC2008]
Uncharted Animation:An In-depth Look at the Character Animation Workflow and Pipeline,
J e r e m y L a i - Ya t e s , J u d d S i m a n t o v [ G D C 2 0 0 8 ]
게으른 아티스트의 캐릭터 파이프라인 개발 경험담, 김충효 [NDC2008]
차세대 게임 개발을 위한 실시간 비주얼 그래프 편집, 김성익 [NDC2008]