데브캣스튜디오, 프로젝트DH 팀
문석진(msg88@nexon.co.kr)
프로젝트DH의
절차적 애니메이션 시스템 Ⅱ
발표자 소개
□ 프로젝트 경험
■ 마비노기 듀얼
■ 프로젝트 DH
□ 관심분야
■ 컴퓨터 그래픽스, 물리기반 모델링 & 시뮬레이션
목차
□ 프로젝트 DH
□ 절차적 애니메이션
1. 절차적 애니메이션이란?
2. 실버바인(Silvervine) 모션 엔진
□ 새로운 기능들
1. 지면의 경사 적용
2. 물리적 반응 모션
3. 애니메이션 전환
□ Q&A
프로젝트 DH
1. 절차적 애니메이션이란?
2. 실버바인(Silvervine) 모션 엔진
절차적 애니메이션
일반적 의미
□ 논리적으로 실시간 생성되는 애니메이션
■ Ex) IK, Dynamics
■ 파티클, 의상, 헤어, 캐릭터 애니메이션 분야
개발 과정
□ 입력에 대한 결과를 정의
개발 과정
□ 입력에 대한 결과를 정의
■ 입력: 첫 번째 톱니의 회전각
■ 결과: n 번째 톱니의 회전각
개발 과정
□ 입력에 대한 결과를 정의
■ 입력: 첫 번째 톱니의 회전각
■ 결과: n 번째 톱니의 회전각
□ 규칙과 순서를 정의
개발 과정
□ 입력에 대한 결과를 정의
■ 입력: 첫 번째 톱니의 회전각
■ 결과: n 번째 톱니의 회전각
□ 규칙과 순서를 정의
■ k 번째 톱니의 회전각
▪ k-1 번째 톱니의 회전각, 반지름
■ 1부터 n번째 톱니까지 순차적 계산
개발 과정
□ 플래닝
□ 구현
□ 튜닝
개발 과정
플래닝 구현 튜닝
특징 및 장점
□ 입력에 따른 다양한 결과 생성
□ 모션의 추가/삭제, 수정 용이
□ 자연스럽고 다양한 상호 작용
□ 애니메이션 제작 비용 절약
■ 비슷한 종류의 애니메이션 최소화
▪ Ex) 구조가 서로 다른 n 개의 캐릭터 걷는 애니메이션: n x [전진, 후진, 회전, 게걸음] x [평지, 오르막, 내리막]
적용 사례
□ Spore
■ 유저가 정의하는 임의 형태의 캐릭터의 애니메이션 생성
적용 사례
□ Last Guardian
■ 원본 애니메이션을 상황에 맞게 수정하는 방법으로 자연스러운 애니메이션 연출
적용 사례
□ For Honor
■ 모션매칭: 방대한 모션 데이터베이스에서 상황에 적합한 애니메이션을 선택
1. 절차적 애니메이션이란?
2. 실버바인(Silvervine) 모션 엔진
절차적 애니메이션
실버바인 모션 엔진
□ 완전히 절차적인(fully-procedural) 애니메이션 시스템 개발 시도
■ 오로지 코드로만 애니메이션을 생성
■ 애니메이션 품질이 프로그래머 역량에 깊게 의존
■ 생성된 모션이 불안정함
실버바인 모션 엔진
□ 준 절차적(semi-procedural) 애니메이션 시스템
■ Automated Semi-Procedural Animation for Character Locomotion 논문 기반
■ 샘플 애니메이션 분석을 통한 로코모션의 실시간 생성
■ 게걸음, 후진, 회전, 속도 변화 …
작년 발표 리뷰
□ 로코모션을 중점적으로 개발 진행
■ 게이머가 실제로 가장 많이 보게 될 부분
■ 모션엔진의 필수 기능
■ 개발 난이도 ↑
작년 발표 리뷰
□ 모션 분석 데이터의 기본 요소
■ 본(뼈대)
작년 발표 리뷰
□ 모션 분석 데이터의 기본 요소
■ 본(뼈대)
■ 스파인(척추)
작년 발표 리뷰
□ 모션 분석 데이터의 기본 요소
■ 본(뼈대)
■ 스파인(척추)
■ 림(팔다리)
작년 발표 리뷰
□ NDC Replay
■ http://ndcreplay.nexon.com/NDC2017/sessions/NDC2017_0026.html
새로운 기능들
1. 지면의 경사 적용
2. 물리적 반응 모션
3. 애니메이션 전환
목적
□ 지면의 기울기에 맞는 애니메이션을 생성
■ 언덕
■ 바위, 자갈
■ 계단
필요성
□ 기존의 모션엔진은 경사가 없는 평지만을 가정
■ 경사를 고려한 절차적 처리 없음
■ 샘플 애니메이션은 모두 평지 전용
필요성
□ 기존의 모션엔진은 경사가 없는 평지만을 가정
■ 경사를 고려한 절차적 처리 없음
■ 샘플 애니메이션은 모두 평지 전용
□ 4족 이상의 캐릭터 등장
■ 인간과 같은 2족 구조에 비해 복잡함
■ 특별하고 일반화된 방법 필요
접근 방법
□ 4족 구조의 캐릭터
접근 방법
□ 4족 구조의 캐릭터
?
접근 방법
□ 척추를 다리 기준으로 병합
접근 방법
□ 척추를 다리 기준으로 병합
용어 정의
□ 척추를 다리 기준으로 병합
핀
세그먼트
용어 정의
□ 척추를 다리 기준으로 병합
루트 세그먼트
핀
세그먼트
접근 방법
□ 4족 구조의 캐릭터
?
접근 방법
□ 4족 구조의 캐릭터
접근 방법
□ 4족 구조의 캐릭터
접근 방법
□ 4족 구조의 캐릭터
접근 방법
□ 4족 구조의 캐릭터
접근 방법
□ 4족 구조의 캐릭터
접근 방법
□ 6족 이상의 캐릭터도?
접근 방법 정리
□ 척추를 세그먼트 단위로 병합
□ 루트 세그먼트에 경사 적용
□ 다음 세그먼트에 경사 적용
■ 양 끝에 핀이 존재하는 세그먼트만 해당
□ 마지막 세그먼트까지 반복
세그먼트 경사 적용 방법
□ 경사 측정
□ 세그먼트 회전
□ 기준 높이를 적용
■ Ex) 다리 길이
□ 반복
세그먼트 경사 적용 방법
□ 경사 측정
세그먼트 경사 적용 방법
□ 경사 측정
세그먼트 경사 적용 방법
□ 경사 측정
세그먼트 경사 적용 방법
□ 세그먼트 회전
세그먼트 경사 적용 방법
□ 세그먼트 회전
세그먼트 경사 적용 방법
□ 기준 높이 적용
세그먼트 경사 적용 방법
□ 기준 높이 적용
세그먼트 경사 적용 방법
□ 반복
■ 탈출조건: 경사각의 차이가 이하𝜀
세그먼트 경사 적용 방법
□ 세그먼트 수에 따른 척추의 모습
서스펜션
□ 완충장치
■ 요철이 심한 지형에서 급격한 포즈 변형을 완화
서스펜션
□ 완충장치
■ 요철이 심한 지형에서 급격한 포즈 변형을 완화
□ 선형, 각 스프링 설치
■ Hooke의 법칙: F= − 𝑘(X − X0) − 𝑐V
서스펜션
□ 완충장치
■ 요철이 심한 지형에서 급격한 포즈 변형을 완화
□ 선형, 각 스프링 설치
■ Hooke의 법칙:
■ 필요한 힘과 토크를 계산
F= − 𝑘(X − X0) − 𝑐V
서스펜션
□ 서스펜션의 중요성
서스펜션 적용 서스펜션 미적용
데모: 게임 내 적용 모습
다양한 애니메이션의 경사 적용
요약
□ 세그먼트 기반의 경사 적용 방법
■ 경사 측정
■ 세그먼트 회전
■ 기준높이 적용
□ 서스펜션
의의
□ 평지 전용 애니메이션 이용
□ 복잡한 지형에서의 애니메이션을 절차적으로 생성
□ 4족 이상의 캐릭터에 모두 사용가능
향후 계획
□ 경사 적용의 정확도 향상
□ 급격한 경사 변화에 대한 반응
■ 절벽 근방에서 어색한 포즈
■ 계단 형태의 지형에서의 진동
□ 수직 이상의 기울기 지형
■ 절벽의 벽면, 동굴 천장
새로운 기능들
1. 지면의 경사 적용
2. 물리적 반응 모션
3. 애니메이션 전환
목적
□ 물리 시뮬레이션을 통한 척추의 물리적 반응을 생성
■ 관성에 따른 척추의 움직임
■ 피격 반응
■ 단, 원본 애니메이션을 최대한 존중
필요성
□ 애니메이션이 자연스러워지길 기대함
필요성
□ 애니메이션이 자연스러워지길 기대함
□ 휴리스틱한 방법보다 간단하고 효과적
필요성
□ 애니메이션이 자연스러워지길 기대함
□ 휴리스틱한 방법보다 간단하고 효과적
□ 창발적인 애니메이션 생성 가능
접근 방법
□ 운동학 기반의 모션엔진
■ 매 프레임 애니메이션에 의해 포즈가 결정
접근 방법
□ 운동학 기반의 모션엔진
■ 매 프레임 애니메이션에 의해 포즈가 결정
□ 동역학 영역의 물리 시뮬레이션
■ 운동의 원인(힘)이 필연적
접근 방법
□ 운동학 기반의 모션엔진
■ 매 프레임 애니메이션에 의해 포즈가 결정
□ 동역학 영역의 물리 시뮬레이션
■ 운동의 원인(힘)이 필연적
□ 서로 상반된 성질
■ 애니메이션을 유지하면서 척추를 물리적으로 시뮬레이션
접근 방법
□ 운동학 기반의 모션엔진
■ 매 프레임 애니메이션에 의해 포즈가 결정
□ 동역학 영역의 물리 시뮬레이션
■ 운동의 원인(힘)이 필연적
□ 서로 상반된 성질
■ 애니메이션을 유지하면서 척추를 물리적으로 시뮬레이션
접근 방법
□ 동역학 기반의 모션엔진
■ 척추의 물리적 시뮬레이션
■ 애니메이션 포즈를 제약조건으로 사용
접근 방법
□ 동역학 기반의 모션엔진
■ 척추의 물리적 시뮬레이션
■ 애니메이션 포즈를 제약조건으로 사용
□ 문제점
■ 포즈가 의도한 대로 나오지 않을 가능성 존재
■ 리팩토링 비용 ↑
접근 방법
□ 독립적인 물리 시뮬레이션
■ 척추에 해당하는 구조(체인)를 물리적으로 시뮬레이션
■ 물리 시뮬레이션 결과를 척추에 적용
■ 애니메이션 포즈를 유지하기 위한 복원력
체인 물리 시뮬레이션
□ 체인의 구조
□ Sandbox 시뮬레이터
□ 안정성 향상
□ 월드 스페이스 시뮬레이션
체인의 구조
□ 강체가 선형 및 각 제약조건으로 연결된 구조
체인 물리 시뮬레이션
체인의 구조
□ 강체가 선형 및 각 제약조건으로 연결된 구조
□ 강체는 각각의 척추에 대응
체인 물리 시뮬레이션
체인의 구조
□ 강체가 선형 및 각 제약조건으로 연결된 구조
□ 강체는 각각의 척추에 대응
□ 척추와 동일한 계층 구조를 적용
체인 물리 시뮬레이션
체인의 구조
□ 강체가 선형 및 각 제약조건으로 연결된 구조
□ 강체는 각각의 척추에 대응
□ 척추와 동일한 계층 구조를 적용
□ 체인의 한쪽 끝은 척추의 회전 중심에 고정
체인 물리 시뮬레이션
체인의 구조
□ 에디터 설정 및 프리뷰 씬
체인 물리 시뮬레이션
Sandbox 시뮬레이터
□ AnimDynamics에 사용된 컴팩트 물리 시뮬레이터
체인 물리 시뮬레이션
Sandbox 시뮬레이터
□ AnimDynamics에 사용된 컴팩트 물리 시뮬레이터
□ 모션엔진에서 쉽게 쓸 수 있게 커스터마이징
체인 물리 시뮬레이션
Sandbox 시뮬레이터
□ AnimDynamics에 사용된 컴팩트 물리 시뮬레이터
□ 모션엔진에서 쉽게 쓸 수 있게 커스터마이징
□ 문제점
■ Constraint solver의 안정성이 다소 떨어짐
체인 물리 시뮬레이션
안정성 향상
□ Sub stepping
■ Delta time을 n sub step으로 분할
■ 성능과 안정성을 트레이드오프
■ 단순히 iteration수를 높이는 것 보다 효과적
체인 물리 시뮬레이션
월드 스페이스 시뮬레이션
□ 목적
■ 월드 좌표계에서 시뮬레이션 되는 것처럼 속임
■ 체인의 시뮬레이션 영역은 컴포넌트 좌표계
체인 물리 시뮬레이션
월드 스페이스 시뮬레이션
□ 체인을 고정하는 위치 제약조건에 델타 트랜스폼 적용
체인 물리 시뮬레이션
월드 스페이스 시뮬레이션
□ 체인을 고정하는 위치 제약조건에 델타 트랜스폼 적용
체인 물리 시뮬레이션
월드 스페이스 시뮬레이션
□ 체인을 고정하는 위치 제약조건에 델타 트랜스폼 적용
체인 물리 시뮬레이션
∆p
월드 스페이스 시뮬레이션
□ 체인을 고정하는 위치 제약조건에 델타 트랜스폼 적용
□ 물리 시뮬레이션
체인 물리 시뮬레이션
∆p
월드 스페이스 시뮬레이션
□ 체인을 고정하는 위치 제약조건에 델타 트랜스폼 적용
□ 물리 시뮬레이션
체인 물리 시뮬레이션
월드 스페이스 시뮬레이션
□ 체인을 고정하는 위치 제약조건에 델타 트랜스폼 적용
□ 물리 시뮬레이션
□ 체인 전체에 역 델타 트랜스폼 적용
체인 물리 시뮬레이션
월드 스페이스 시뮬레이션
□ 체인을 고정하는 위치 제약조건에 델타 트랜스폼 적용
□ 물리 시뮬레이션
□ 체인 전체에 역 델타 트랜스폼 적용
체인 물리 시뮬레이션
∆p−1
시뮬레이션 결과 적용방법
□ 강체의 로컬 트랜스폼 변화량을 척추에 적용
시뮬레이션 결과 적용방법
□ 강체의 로컬 트랜스폼 변화량을 척추에 적용
■ 로컬 트랜스폼은 회전 성분만 고려 (척추의 길이는 불변)
시뮬레이션 결과 적용방법
□ 강체의 로컬 트랜스폼 변화량을 척추에 적용
■ 로컬 트랜스폼은 회전 성분만 고려 (척추의 길이는 불변)
■ 초기 로컬 트랜스폼:
■ 변형 후 로컬 트랜스폼: R 𝑡 = C 𝑡P𝑡
−1
R0 = C0P0
−1
시뮬레이션 결과 적용방법
□ 강체의 로컬 트랜스폼 변화량을 척추에 적용
■ 로컬 트랜스폼은 회전 성분만 고려 (척추의 길이는 불변)
■ 초기 로컬 트랜스폼:
■ 변형 후 로컬 트랜스폼:
■ 로컬 트랜스폼 변화량: ∆R = R0
−1
R 𝑡
R 𝑡 = C 𝑡P𝑡
−1
R0 = C0P0
−1
∆R = P0C0
−1
C 𝑡P𝑡
−1
시뮬레이션 결과 적용방법
□ 강체의 로컬 트랜스폼 변화량을 척추에 적용
■ 로컬 트랜스폼은 회전 성분만 고려 (척추의 길이는 불변)
■ 초기 로컬 트랜스폼:
■ 변형 후 로컬 트랜스폼:
■ 로컬 트랜스폼 변화량: ∆R = R0
−1
R 𝑡
R 𝑡 = C 𝑡P𝑡
−1
R0 = C0P0
−1
복원력
□ 체인이 초기 상태로 복귀하려는 힘
복원력
□ 체인이 초기 상태로 복귀하려는 힘
■ 초기상태:
■ 원본 애니메이션 포즈로 복귀
∆R = R0
−1
R 𝑡 = I
복원력
□ 체인이 초기 상태로 복귀하려는 힘
■ 초기상태:
■ 원본 애니메이션 포즈로 복귀
□ 체인이 나열된 방향으로 외력을 적용
∆R = R0
−1
R 𝑡 = I
복원력
□ 체인이 초기 상태로 복귀하려는 힘
■ 초기상태:
■ 원본 애니메이션 포즈로 복귀
□ 체인이 나열된 방향으로 외력을 적용
■ 물리적으로 올바른 방법은 아님
■ 효과는 충분!
∆R = R0
−1
R 𝑡 = I
데모: 관성에 의한 척추 변형
□ 복원력 적용 유무 비교
데모: 피격 반응
요약
□ 체인 물리 시뮬레이션
□ 시뮬레이션 결과 적용 방법
□ 복원력
의의
□ 운동학 기반의 애니메이션에 물리 반응 적용
□ 간단하고 효과적인 방법
□ 원본 애니메이션은 최대한 유지
향후 계획
□ 물리 시뮬레이션 안정성 확보
■ PBD (Position Based Dynamics)
□ 물리적으로 올바른 복원력 적용
새로운 기능들
1. 지면의 경사 적용
2. 물리적 반응 모션
3. 애니메이션 전환
목적
□ 애니메이션 간의 자연스러운 트랜지션
필요성
□ 엔진에서 제공하는 기능은?
필요성
□ 엔진에서 제공하는 기능은?
필요성
□ 엔진에서 제공하는 기능은?
□ 발 미끄러짐 절대 금지
On our own
□ 자연스러운 애니메이션 전환
■ 포즈 블렌딩
■ 발 위치 제어
포즈 블렌딩
Source
포즈 블렌딩
□ 소스 포즈의 스냅샷
Source
𝑡
포즈 블렌딩
□ 소스 포즈의 스냅샷
□ 타겟 포즈는 시간에 따라 변화
Source
Target
𝑡
포즈 블렌딩
□ 소스 포즈의 스냅샷
□ 타겟 포즈는 시간에 따라 변화
□ 두 포즈의 로컬 트랜스폼을 선형 보간
𝑡 𝑡 + 𝑡 𝑏𝑙𝑒𝑛𝑑
Source
Target
포즈 블렌딩
□ 소스 포즈의 스냅샷
□ 타겟 포즈는 시간에 따라 변화
□ 두 포즈의 로컬 트랜스폼을 선형 보간
Source
Target
𝑡 𝑡 + 𝑡 𝑏𝑙𝑒𝑛𝑑
발 위치 제어의 편의성 증가!
퍼포먼스 이득!
발 위치 제어 방법
□ 스냅샷과 타겟 포즈의 발 위치에 따른 처리
발 위치 제어 방법
□ 스냅샷과 타겟 포즈의 발 위치에 따른 처리
■ 스냅샷 또는 타겟 포즈의 발이 공중에 있을 경우 위치 보간
■ 스냅샷과 타겟 포즈의 발이 모두 지면위에 있을 경우 스텝 추가
발 위치 제어 방법
□ 스냅샷과 타겟 포즈의 발 위치에 따른 처리
타겟 포즈 발 위치
지면 공중
스냅샷 포즈
발 위치
지면 스텝 추가 보간
공중 보간 보간
발 위치 제어 방법
□ 스냅샷과 타겟 포즈의 발 위치에 따른 처리
□ 스텝 추가
■ 보간 시 발 미끄러짐 발생
■ 시간에 따른 sin 값을 발 높이에 더함
타겟 포즈 발 위치
지면 공중
스냅샷 포즈
발 위치
지면 스텝 추가 보간
공중 보간 보간
발 위치 제어 순서
□ 공중에 떠있는 발 우선
■ 스텝 추가로 인해 공중 동시 체류를 최대한 방지
발 위치 제어 순서
□ 공중에 떠있는 발 우선
■ 스텝 추가로 인해 공중 동시 체류를 최대한 방지
□ 타겟 위치로부터 가장 멀리 떨어진 발
■ 무게중심에서 가장 벗어남을 의미
발 위치 제어 순서
□ 공중에 떠있는 발 우선
■ 스텝 추가로 인해 공중 동시 체류를 최대한 방지
□ 타겟 위치로부터 가장 멀리 떨어진 발
■ 무게중심에서 가장 벗어남을 의미
□ 랜덤
데모: 애니메이션 전환
요약
□ 자연스러운 모션 전환
■ 포즈 블렌딩
■ 발 위치 제어
향후 계획
□ 포즈 블렌딩 개선
■ Inertialization: High-Performance Animation Transitions in Gears of War, GDC
2018
▪ 스냅샷 포즈와 타겟 포즈를 블렌딩
▪ 스냅샷 포즈의 관성을 타겟 포즈에 적용
마치며...
□ 모션엔진의 새로운 기능들 소개
■ 지면의 경사 적용: 다양한 지형과 캐릭터에 적응적인 모션 생성
■ 물리적 반응 모션: 척추의 움직임에 자연스러움 추가
■ 애니메이션 전환: 포즈 블렌딩, 발 위치 제어를 통한 자연스러운 애니메이션 전환
마치며...
□ 모션엔진의 새로운 기능들 소개
■ 지면의 경사 적용: 다양한 지형과 캐릭터에 적응적인 모션 생성
■ 물리적 반응 모션: 척추의 움직임에 자연스러움 추가
■ 애니메이션 전환: 포즈 블렌딩, 발 위치 제어를 통한 자연스러운 애니메이션 전환
□ 발전 가능성과 개선의 여지가 많음
마치며...
□ 모션엔진의 새로운 기능들 소개
■ 지면의 경사 적용: 다양한 지형과 캐릭터에 적응적인 모션 생성
■ 물리적 반응 모션: 척추의 움직임에 자연스러움 추가
■ 애니메이션 전환: 포즈 블렌딩, 발 위치 제어를 통한 자연스러운 애니메이션 전환
□ 발전 가능성과 개선의 여지가 많음
□ 효율적이고 실용적인 절차적 애니메이션 시스템!
Q&A
감사합니다.

문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018