반응형
문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018
문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018
1. 데브캣스튜디오, 프로젝트DH 팀 문석진(msg88@nexon.co.kr) 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ
2. 발표자 소개 □ 프로젝트 경험 ■ 마비노기 듀얼 ■ 프로젝트 DH □ 관심분야 ■ 컴퓨터 그래픽스, 물리기반 모델링 & 시뮬레이션
3. 목차 □ 프로젝트 DH □ 절차적 애니메이션 1. 절차적 애니메이션이란? 2. 실버바인(Silvervine) 모션 엔진 □ 새로운 기능들 1. 지면의 경사 적용 2. 물리적 반응 모션 3. 애니메이션 전환 □ Q&A
4. 프로젝트 DH
5. 1. 절차적 애니메이션이란? 2. 실버바인(Silvervine) 모션 엔진 절차적 애니메이션
6. 일반적 의미 □ 논리적으로 실시간 생성되는 애니메이션 ■ Ex) IK, Dynamics ■ 파티클, 의상, 헤어, 캐릭터 애니메이션 분야
7. 개발 과정 □ 입력에 대한 결과를 정의
8. 개발 과정 □ 입력에 대한 결과를 정의 ■ 입력: 첫 번째 톱니의 회전각 ■ 결과: n 번째 톱니의 회전각
9. 개발 과정 □ 입력에 대한 결과를 정의 ■ 입력: 첫 번째 톱니의 회전각 ■ 결과: n 번째 톱니의 회전각 □ 규칙과 순서를 정의
10. 개발 과정 □ 입력에 대한 결과를 정의 ■ 입력: 첫 번째 톱니의 회전각 ■ 결과: n 번째 톱니의 회전각 □ 규칙과 순서를 정의 ■ k 번째 톱니의 회전각 ▪ k-1 번째 톱니의 회전각, 반지름 ■ 1부터 n번째 톱니까지 순차적 계산
11. 개발 과정 □ 플래닝 □ 구현 □ 튜닝
12. 개발 과정 플래닝 구현 튜닝
13. 특징 및 장점 □ 입력에 따른 다양한 결과 생성 □ 모션의 추가/삭제, 수정 용이 □ 자연스럽고 다양한 상호 작용 □ 애니메이션 제작 비용 절약 ■ 비슷한 종류의 애니메이션 최소화 ▪ Ex) 구조가 서로 다른 n 개의 캐릭터 걷는 애니메이션: n x [전진, 후진, 회전, 게걸음] x [평지, 오르막, 내리막]
14. 적용 사례 □ Spore ■ 유저가 정의하는 임의 형태의 캐릭터의 애니메이션 생성
15. 적용 사례 □ Last Guardian ■ 원본 애니메이션을 상황에 맞게 수정하는 방법으로 자연스러운 애니메이션 연출
16. 적용 사례 □ For Honor ■ 모션매칭: 방대한 모션 데이터베이스에서 상황에 적합한 애니메이션을 선택
17. 1. 절차적 애니메이션이란? 2. 실버바인(Silvervine) 모션 엔진 절차적 애니메이션
18. 실버바인 모션 엔진 □ 완전히 절차적인(fully-procedural) 애니메이션 시스템 개발 시도 ■ 오로지 코드로만 애니메이션을 생성 ■ 애니메이션 품질이 프로그래머 역량에 깊게 의존 ■ 생성된 모션이 불안정함
19. 실버바인 모션 엔진 □ 준 절차적(semi-procedural) 애니메이션 시스템 ■ Automated Semi-Procedural Animation for Character Locomotion 논문 기반 ■ 샘플 애니메이션 분석을 통한 로코모션의 실시간 생성 ■ 게걸음, 후진, 회전, 속도 변화 …
20. 작년 발표 리뷰 □ 로코모션을 중점적으로 개발 진행 ■ 게이머가 실제로 가장 많이 보게 될 부분 ■ 모션엔진의 필수 기능 ■ 개발 난이도 ↑
21. 작년 발표 리뷰 □ 모션 분석 데이터의 기본 요소 ■ 본(뼈대)
22. 작년 발표 리뷰 □ 모션 분석 데이터의 기본 요소 ■ 본(뼈대) ■ 스파인(척추)
23. 작년 발표 리뷰 □ 모션 분석 데이터의 기본 요소 ■ 본(뼈대) ■ 스파인(척추) ■ 림(팔다리)
24. 작년 발표 리뷰 □ NDC Replay ■ http://ndcreplay.nexon.com/NDC2017/sessions/NDC2017_0026.html
25. 새로운 기능들 1. 지면의 경사 적용 2. 물리적 반응 모션 3. 애니메이션 전환
26. 목적 □ 지면의 기울기에 맞는 애니메이션을 생성 ■ 언덕 ■ 바위, 자갈 ■ 계단
27. 필요성 □ 기존의 모션엔진은 경사가 없는 평지만을 가정 ■ 경사를 고려한 절차적 처리 없음 ■ 샘플 애니메이션은 모두 평지 전용
28. 필요성 □ 기존의 모션엔진은 경사가 없는 평지만을 가정 ■ 경사를 고려한 절차적 처리 없음 ■ 샘플 애니메이션은 모두 평지 전용 □ 4족 이상의 캐릭터 등장 ■ 인간과 같은 2족 구조에 비해 복잡함 ■ 특별하고 일반화된 방법 필요
29. 접근 방법 □ 4족 구조의 캐릭터
30. 접근 방법 □ 4족 구조의 캐릭터 ?
31. 접근 방법 □ 척추를 다리 기준으로 병합
32. 접근 방법 □ 척추를 다리 기준으로 병합
33. 용어 정의 □ 척추를 다리 기준으로 병합 핀 세그먼트
34. 용어 정의 □ 척추를 다리 기준으로 병합 루트 세그먼트 핀 세그먼트
35. 접근 방법 □ 4족 구조의 캐릭터 ?
36. 접근 방법 □ 4족 구조의 캐릭터
37. 접근 방법 □ 4족 구조의 캐릭터
38. 접근 방법 □ 4족 구조의 캐릭터
39. 접근 방법 □ 4족 구조의 캐릭터
40. 접근 방법 □ 4족 구조의 캐릭터
41. 접근 방법 □ 6족 이상의 캐릭터도?
42. 접근 방법 정리 □ 척추를 세그먼트 단위로 병합 □ 루트 세그먼트에 경사 적용 □ 다음 세그먼트에 경사 적용 ■ 양 끝에 핀이 존재하는 세그먼트만 해당 □ 마지막 세그먼트까지 반복
43. 세그먼트 경사 적용 방법 □ 경사 측정 □ 세그먼트 회전 □ 기준 높이를 적용 ■ Ex) 다리 길이 □ 반복
44. 세그먼트 경사 적용 방법 □ 경사 측정
45. 세그먼트 경사 적용 방법 □ 경사 측정
46. 세그먼트 경사 적용 방법 □ 경사 측정
47. 세그먼트 경사 적용 방법 □ 세그먼트 회전
48. 세그먼트 경사 적용 방법 □ 세그먼트 회전
49. 세그먼트 경사 적용 방법 □ 기준 높이 적용
50. 세그먼트 경사 적용 방법 □ 기준 높이 적용
51. 세그먼트 경사 적용 방법 □ 반복 ■ 탈출조건: 경사각의 차이가 이하𝜀
52. 세그먼트 경사 적용 방법 □ 세그먼트 수에 따른 척추의 모습
53. 서스펜션 □ 완충장치 ■ 요철이 심한 지형에서 급격한 포즈 변형을 완화
54. 서스펜션 □ 완충장치 ■ 요철이 심한 지형에서 급격한 포즈 변형을 완화 □ 선형, 각 스프링 설치 ■ Hooke의 법칙: F= − 𝑘(X − X0) − 𝑐V
55. 서스펜션 □ 완충장치 ■ 요철이 심한 지형에서 급격한 포즈 변형을 완화 □ 선형, 각 스프링 설치 ■ Hooke의 법칙: ■ 필요한 힘과 토크를 계산 F= − 𝑘(X − X0) − 𝑐V
56. 서스펜션 □ 서스펜션의 중요성 서스펜션 적용 서스펜션 미적용
57. 데모: 게임 내 적용 모습
58. 다양한 애니메이션의 경사 적용
59. 요약 □ 세그먼트 기반의 경사 적용 방법 ■ 경사 측정 ■ 세그먼트 회전 ■ 기준높이 적용 □ 서스펜션
60. 의의 □ 평지 전용 애니메이션 이용 □ 복잡한 지형에서의 애니메이션을 절차적으로 생성 □ 4족 이상의 캐릭터에 모두 사용가능
61. 향후 계획 □ 경사 적용의 정확도 향상 □ 급격한 경사 변화에 대한 반응 ■ 절벽 근방에서 어색한 포즈 ■ 계단 형태의 지형에서의 진동 □ 수직 이상의 기울기 지형 ■ 절벽의 벽면, 동굴 천장
62. 새로운 기능들 1. 지면의 경사 적용 2. 물리적 반응 모션 3. 애니메이션 전환
63. 목적 □ 물리 시뮬레이션을 통한 척추의 물리적 반응을 생성 ■ 관성에 따른 척추의 움직임 ■ 피격 반응 ■ 단, 원본 애니메이션을 최대한 존중
64. 필요성 □ 애니메이션이 자연스러워지길 기대함
65. 필요성 □ 애니메이션이 자연스러워지길 기대함 □ 휴리스틱한 방법보다 간단하고 효과적
66. 필요성 □ 애니메이션이 자연스러워지길 기대함 □ 휴리스틱한 방법보다 간단하고 효과적 □ 창발적인 애니메이션 생성 가능
67. 접근 방법 □ 운동학 기반의 모션엔진 ■ 매 프레임 애니메이션에 의해 포즈가 결정
68. 접근 방법 □ 운동학 기반의 모션엔진 ■ 매 프레임 애니메이션에 의해 포즈가 결정 □ 동역학 영역의 물리 시뮬레이션 ■ 운동의 원인(힘)이 필연적
69. 접근 방법 □ 운동학 기반의 모션엔진 ■ 매 프레임 애니메이션에 의해 포즈가 결정 □ 동역학 영역의 물리 시뮬레이션 ■ 운동의 원인(힘)이 필연적 □ 서로 상반된 성질 ■ 애니메이션을 유지하면서 척추를 물리적으로 시뮬레이션
70. 접근 방법 □ 운동학 기반의 모션엔진 ■ 매 프레임 애니메이션에 의해 포즈가 결정 □ 동역학 영역의 물리 시뮬레이션 ■ 운동의 원인(힘)이 필연적 □ 서로 상반된 성질 ■ 애니메이션을 유지하면서 척추를 물리적으로 시뮬레이션
71. 접근 방법 □ 동역학 기반의 모션엔진 ■ 척추의 물리적 시뮬레이션 ■ 애니메이션 포즈를 제약조건으로 사용
72. 접근 방법 □ 동역학 기반의 모션엔진 ■ 척추의 물리적 시뮬레이션 ■ 애니메이션 포즈를 제약조건으로 사용 □ 문제점 ■ 포즈가 의도한 대로 나오지 않을 가능성 존재 ■ 리팩토링 비용 ↑
73. 접근 방법 □ 독립적인 물리 시뮬레이션 ■ 척추에 해당하는 구조(체인)를 물리적으로 시뮬레이션 ■ 물리 시뮬레이션 결과를 척추에 적용 ■ 애니메이션 포즈를 유지하기 위한 복원력
74. 체인 물리 시뮬레이션 □ 체인의 구조 □ Sandbox 시뮬레이터 □ 안정성 향상 □ 월드 스페이스 시뮬레이션
75. 체인의 구조 □ 강체가 선형 및 각 제약조건으로 연결된 구조 체인 물리 시뮬레이션
76. 체인의 구조 □ 강체가 선형 및 각 제약조건으로 연결된 구조 □ 강체는 각각의 척추에 대응 체인 물리 시뮬레이션
77. 체인의 구조 □ 강체가 선형 및 각 제약조건으로 연결된 구조 □ 강체는 각각의 척추에 대응 □ 척추와 동일한 계층 구조를 적용 체인 물리 시뮬레이션
78. 체인의 구조 □ 강체가 선형 및 각 제약조건으로 연결된 구조 □ 강체는 각각의 척추에 대응 □ 척추와 동일한 계층 구조를 적용 □ 체인의 한쪽 끝은 척추의 회전 중심에 고정 체인 물리 시뮬레이션
79. 체인의 구조 □ 에디터 설정 및 프리뷰 씬 체인 물리 시뮬레이션
80. Sandbox 시뮬레이터 □ AnimDynamics에 사용된 컴팩트 물리 시뮬레이터 체인 물리 시뮬레이션
81. Sandbox 시뮬레이터 □ AnimDynamics에 사용된 컴팩트 물리 시뮬레이터 □ 모션엔진에서 쉽게 쓸 수 있게 커스터마이징 체인 물리 시뮬레이션
82. Sandbox 시뮬레이터 □ AnimDynamics에 사용된 컴팩트 물리 시뮬레이터 □ 모션엔진에서 쉽게 쓸 수 있게 커스터마이징 □ 문제점 ■ Constraint solver의 안정성이 다소 떨어짐 체인 물리 시뮬레이션
83. 안정성 향상 □ Sub stepping ■ Delta time을 n sub step으로 분할 ■ 성능과 안정성을 트레이드오프 ■ 단순히 iteration수를 높이는 것 보다 효과적 체인 물리 시뮬레이션
84. 월드 스페이스 시뮬레이션 □ 목적 ■ 월드 좌표계에서 시뮬레이션 되는 것처럼 속임 ■ 체인의 시뮬레이션 영역은 컴포넌트 좌표계 체인 물리 시뮬레이션
85. 월드 스페이스 시뮬레이션 □ 체인을 고정하는 위치 제약조건에 델타 트랜스폼 적용 체인 물리 시뮬레이션
86. 월드 스페이스 시뮬레이션 □ 체인을 고정하는 위치 제약조건에 델타 트랜스폼 적용 체인 물리 시뮬레이션
87. 월드 스페이스 시뮬레이션 □ 체인을 고정하는 위치 제약조건에 델타 트랜스폼 적용 체인 물리 시뮬레이션 ∆p
88. 월드 스페이스 시뮬레이션 □ 체인을 고정하는 위치 제약조건에 델타 트랜스폼 적용 □ 물리 시뮬레이션 체인 물리 시뮬레이션 ∆p
89. 월드 스페이스 시뮬레이션 □ 체인을 고정하는 위치 제약조건에 델타 트랜스폼 적용 □ 물리 시뮬레이션 체인 물리 시뮬레이션
90. 월드 스페이스 시뮬레이션 □ 체인을 고정하는 위치 제약조건에 델타 트랜스폼 적용 □ 물리 시뮬레이션 □ 체인 전체에 역 델타 트랜스폼 적용 체인 물리 시뮬레이션
91. 월드 스페이스 시뮬레이션 □ 체인을 고정하는 위치 제약조건에 델타 트랜스폼 적용 □ 물리 시뮬레이션 □ 체인 전체에 역 델타 트랜스폼 적용 체인 물리 시뮬레이션 ∆p−1
92. 시뮬레이션 결과 적용방법 □ 강체의 로컬 트랜스폼 변화량을 척추에 적용
93. 시뮬레이션 결과 적용방법 □ 강체의 로컬 트랜스폼 변화량을 척추에 적용 ■ 로컬 트랜스폼은 회전 성분만 고려 (척추의 길이는 불변)
94. 시뮬레이션 결과 적용방법 □ 강체의 로컬 트랜스폼 변화량을 척추에 적용 ■ 로컬 트랜스폼은 회전 성분만 고려 (척추의 길이는 불변) ■ 초기 로컬 트랜스폼: ■ 변형 후 로컬 트랜스폼: R 𝑡 = C 𝑡P𝑡 −1 R0 = C0P0 −1
95. 시뮬레이션 결과 적용방법 □ 강체의 로컬 트랜스폼 변화량을 척추에 적용 ■ 로컬 트랜스폼은 회전 성분만 고려 (척추의 길이는 불변) ■ 초기 로컬 트랜스폼: ■ 변형 후 로컬 트랜스폼: ■ 로컬 트랜스폼 변화량: ∆R = R0 −1 R 𝑡 R 𝑡 = C 𝑡P𝑡 −1 R0 = C0P0 −1
96. ∆R = P0C0 −1 C 𝑡P𝑡 −1 시뮬레이션 결과 적용방법 □ 강체의 로컬 트랜스폼 변화량을 척추에 적용 ■ 로컬 트랜스폼은 회전 성분만 고려 (척추의 길이는 불변) ■ 초기 로컬 트랜스폼: ■ 변형 후 로컬 트랜스폼: ■ 로컬 트랜스폼 변화량: ∆R = R0 −1 R 𝑡 R 𝑡 = C 𝑡P𝑡 −1 R0 = C0P0 −1
97. 복원력 □ 체인이 초기 상태로 복귀하려는 힘
98. 복원력 □ 체인이 초기 상태로 복귀하려는 힘 ■ 초기상태: ■ 원본 애니메이션 포즈로 복귀 ∆R = R0 −1 R 𝑡 = I
99. 복원력 □ 체인이 초기 상태로 복귀하려는 힘 ■ 초기상태: ■ 원본 애니메이션 포즈로 복귀 □ 체인이 나열된 방향으로 외력을 적용 ∆R = R0 −1 R 𝑡 = I
100. 복원력 □ 체인이 초기 상태로 복귀하려는 힘 ■ 초기상태: ■ 원본 애니메이션 포즈로 복귀 □ 체인이 나열된 방향으로 외력을 적용 ■ 물리적으로 올바른 방법은 아님 ■ 효과는 충분! ∆R = R0 −1 R 𝑡 = I
101. 데모: 관성에 의한 척추 변형 □ 복원력 적용 유무 비교
102. 데모: 피격 반응
103. 요약 □ 체인 물리 시뮬레이션 □ 시뮬레이션 결과 적용 방법 □ 복원력
104. 의의 □ 운동학 기반의 애니메이션에 물리 반응 적용 □ 간단하고 효과적인 방법 □ 원본 애니메이션은 최대한 유지
105. 향후 계획 □ 물리 시뮬레이션 안정성 확보 ■ PBD (Position Based Dynamics) □ 물리적으로 올바른 복원력 적용
106. 새로운 기능들 1. 지면의 경사 적용 2. 물리적 반응 모션 3. 애니메이션 전환
107. 목적 □ 애니메이션 간의 자연스러운 트랜지션
108. 필요성 □ 엔진에서 제공하는 기능은?
109. 필요성 □ 엔진에서 제공하는 기능은?
110. 필요성 □ 엔진에서 제공하는 기능은? □ 발 미끄러짐 절대 금지
111. On our own □ 자연스러운 애니메이션 전환 ■ 포즈 블렌딩 ■ 발 위치 제어
112. 포즈 블렌딩 Source
113. 포즈 블렌딩 □ 소스 포즈의 스냅샷 Source 𝑡
114. 포즈 블렌딩 □ 소스 포즈의 스냅샷 □ 타겟 포즈는 시간에 따라 변화 Source Target 𝑡
115. 포즈 블렌딩 □ 소스 포즈의 스냅샷 □ 타겟 포즈는 시간에 따라 변화 □ 두 포즈의 로컬 트랜스폼을 선형 보간 𝑡 𝑡 + 𝑡 𝑏𝑙𝑒𝑛𝑑 Source Target
116. 포즈 블렌딩 □ 소스 포즈의 스냅샷 □ 타겟 포즈는 시간에 따라 변화 □ 두 포즈의 로컬 트랜스폼을 선형 보간 Source Target 𝑡 𝑡 + 𝑡 𝑏𝑙𝑒𝑛𝑑 발 위치 제어의 편의성 증가! 퍼포먼스 이득!
117. 발 위치 제어 방법 □ 스냅샷과 타겟 포즈의 발 위치에 따른 처리
118. 발 위치 제어 방법 □ 스냅샷과 타겟 포즈의 발 위치에 따른 처리 ■ 스냅샷 또는 타겟 포즈의 발이 공중에 있을 경우 위치 보간 ■ 스냅샷과 타겟 포즈의 발이 모두 지면위에 있을 경우 스텝 추가
119. 발 위치 제어 방법 □ 스냅샷과 타겟 포즈의 발 위치에 따른 처리 타겟 포즈 발 위치 지면 공중 스냅샷 포즈 발 위치 지면 스텝 추가 보간 공중 보간 보간
120. 발 위치 제어 방법 □ 스냅샷과 타겟 포즈의 발 위치에 따른 처리 □ 스텝 추가 ■ 보간 시 발 미끄러짐 발생 ■ 시간에 따른 sin 값을 발 높이에 더함 타겟 포즈 발 위치 지면 공중 스냅샷 포즈 발 위치 지면 스텝 추가 보간 공중 보간 보간
121. 발 위치 제어 순서 □ 공중에 떠있는 발 우선 ■ 스텝 추가로 인해 공중 동시 체류를 최대한 방지
122. 발 위치 제어 순서 □ 공중에 떠있는 발 우선 ■ 스텝 추가로 인해 공중 동시 체류를 최대한 방지 □ 타겟 위치로부터 가장 멀리 떨어진 발 ■ 무게중심에서 가장 벗어남을 의미
123. 발 위치 제어 순서 □ 공중에 떠있는 발 우선 ■ 스텝 추가로 인해 공중 동시 체류를 최대한 방지 □ 타겟 위치로부터 가장 멀리 떨어진 발 ■ 무게중심에서 가장 벗어남을 의미 □ 랜덤
124. 데모: 애니메이션 전환
125. 요약 □ 자연스러운 모션 전환 ■ 포즈 블렌딩 ■ 발 위치 제어
126. 향후 계획 □ 포즈 블렌딩 개선 ■ Inertialization: High-Performance Animation Transitions in Gears of War, GDC 2018 ▪ 스냅샷 포즈와 타겟 포즈를 블렌딩 ▪ 스냅샷 포즈의 관성을 타겟 포즈에 적용
127. 마치며... □ 모션엔진의 새로운 기능들 소개 ■ 지면의 경사 적용: 다양한 지형과 캐릭터에 적응적인 모션 생성 ■ 물리적 반응 모션: 척추의 움직임에 자연스러움 추가 ■ 애니메이션 전환: 포즈 블렌딩, 발 위치 제어를 통한 자연스러운 애니메이션 전환
128. 마치며... □ 모션엔진의 새로운 기능들 소개 ■ 지면의 경사 적용: 다양한 지형과 캐릭터에 적응적인 모션 생성 ■ 물리적 반응 모션: 척추의 움직임에 자연스러움 추가 ■ 애니메이션 전환: 포즈 블렌딩, 발 위치 제어를 통한 자연스러운 애니메이션 전환 □ 발전 가능성과 개선의 여지가 많음
129. 마치며... □ 모션엔진의 새로운 기능들 소개 ■ 지면의 경사 적용: 다양한 지형과 캐릭터에 적응적인 모션 생성 ■ 물리적 반응 모션: 척추의 움직임에 자연스러움 추가 ■ 애니메이션 전환: 포즈 블렌딩, 발 위치 제어를 통한 자연스러운 애니메이션 전환 □ 발전 가능성과 개선의 여지가 많음 □ 효율적이고 실용적인 절차적 애니메이션 시스템!
130. Q&A
131. 감사합니다.
반응형
'정보공유' 카테고리의 다른 글
점진적인 레거시 웹 애플리케이션 개선 과정 (0) | 2018.11.19 |
---|---|
이벤트 기반 분산 시스템을 향한 여정 (0) | 2018.11.19 |
Developing SEO audits that maximize growth #dmssconference (0) | 2018.11.19 |
SEO Project Management for Successful Processes #TheInbounder (0) | 2018.11.16 |
심예람, <프로젝트DH> AI 내비게이션 시스템, NDC2018 (0) | 2018.11.16 |
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018 (0) | 2018.11.14 |
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018 (0) | 2018.11.14 |
게임을 위한 아마존웹서비스(AWS) (김일호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018 (0) | 2018.11.14 |