ICON08_게임 애니메이션 최적화 기법

29

Transcript of ICON08_게임 애니메이션 최적화 기법

Page 1: ICON08_게임 애니메이션 최적화 기법
Page 2: ICON08_게임 애니메이션 최적화 기법

Introduction

•애니메이션 키 프레임 최적화

•메모리 최적화 이슈

•키 프레임 압축

•신호압축

•GPU 이용 최적화

•듀얼 쿼터니언

Page 3: ICON08_게임 애니메이션 최적화 기법

게임 애니메이션

•애니메이션 다양화

•모션 캡쳐의 대중화

•시네마틱 매크로 씬

Page 4: ICON08_게임 애니메이션 최적화 기법

게임 애니메이션

•애니메이션 다양화

•모션 캡쳐의 대중화

•시네마틱 매크로씬

•애니메이션 데이터량 폭발적인 증가

Page 5: ICON08_게임 애니메이션 최적화 기법

게임 애니메이션

•애니메이션 다양화

•모션 캡쳐의 대중화

•시네마틱 매크로씬

•애니메이션 데이터량 폭발적인 증가

•게임 리소스에서 애니메이션 데이터가 차지하는 비율이 비약적 높아짐

•게임 중 메모리 사용량의 비율이 높아짐(플렛폼에 따라선 애니메이션 사용량 제한)

Page 6: ICON08_게임 애니메이션 최적화 기법

애니메이션 최적화

•메모리 최적화의 요구

•좀 더 많은 애니메이션을 사용하기 위함

•메모리 사용으로 인한 병목

Page 7: ICON08_게임 애니메이션 최적화 기법

애니메이션 최적화

•메모리 최적화의 요구

•좀 더 많은 애니메이션을 사용하기 위함

•메모리 사용으로 인한 병목

•키프레임 압축

•키프레임 데이터 압축

•키프레임 신호 압축

Page 8: ICON08_게임 애니메이션 최적화 기법

키프레임

•키프레임(keyframe)

•계층 애니메이션

•회전+이동

•순차적 데이터

•회전

•Matrix

•Quaternion

•Axis Angle

•이동

•Vector

Page 9: ICON08_게임 애니메이션 최적화 기법

키프레임

•매트릭스 vs 쿼터니언 + 벡터

•메모리 사용량 : float[4*4]

•보간(interpolation)

•회전 키 프레임 보간(interpolation)을 하려면 쿼터니언으로 변환해서 사용해야 함 (매

트릭스간 보간은 회전 사이 값이 나오지 않음)

Page 10: ICON08_게임 애니메이션 최적화 기법

키프레임

•매트릭스 vs 쿼터니언 + 벡터

•메모리 사용량 : float[4+4]

•메트릭스 방식에 비해 절반

•변환없이 회전 키프레임 보간 가능

•결과는 매트릭스로 변환

•대부분 쿼터니언 + 벡터를 사용

Page 11: ICON08_게임 애니메이션 최적화 기법

데이터압축

•키프레임 압축

•쿼터니언 압축

•벡터 압축

Page 12: ICON08_게임 애니메이션 최적화 기법

데이터압축

•키프레임 압축

•쿼터니언 압축

•벡터 압축

•데이터 압축의 의미

•메모리 병목

Page 13: ICON08_게임 애니메이션 최적화 기법

데이터압축

•쿼터니언 구성

•쿼터니언 특징

•x*x + y*y + z*z + w*w = 1

•q = -q

•수의 범위 한정 : -1 에서 1사이

Page 14: ICON08_게임 애니메이션 최적화 기법

데이터압축

•w 값 생략

•w 의 크기는 x, y, z 로 계산 가능

•q = -q 성질을 이용 w를 양수로

Page 15: ICON08_게임 애니메이션 최적화 기법

데이터압축

•데이터 압축 (float 4 바이트 => 2 바이트)

•값 손실이 시작적으로 거의 느껴지지 않음

•16비트 fixed point 사용

Page 16: ICON08_게임 애니메이션 최적화 기법

데이터압축

•데이터 압축 (float 4바이트 => 2 바이트)

•값 손실이 시작적으로 거의 느껴지지 않음

•16비트 fixed point 사용

•16비트 float point 사용 (비표준)

•exponent의 범위를 4-bit로

•bias 값은 15로 (지수 -15에서 0)

•fraction의 범위를 11-bit로

Page 17: ICON08_게임 애니메이션 최적화 기법

데이터압축

•위치 벡터 특성

•계층적 애니메이션

•로컬 좌표계 사용

•값의 크기가 크지 않음

Page 18: ICON08_게임 애니메이션 최적화 기법

데이터압축

•위치 벡터 특성

•계층적 애니메이션

•로컬 좌표계 사용

•값의 크기가 크지 않음

•값의 변화량이 크지 않음 (엔트로피↓)

Page 19: ICON08_게임 애니메이션 최적화 기법

데이터압축

•위치 벡터 특성

•계층적 애니메이션

•로컬 좌표계 사용

•값의 크기가 크지 않음

•값의 변화량이 크지 않음 (엔트로피↓)

•벡터 압축

•값의 범위에 따라 fp16 사용

Page 20: ICON08_게임 애니메이션 최적화 기법

신호압축

•키프레임 샘플링

•신호압축

•데이터를 절반으로 줄이는 방법

•샘플링 주기를 더 크게 함

Page 21: ICON08_게임 애니메이션 최적화 기법

신호압축

•키프레임 샘플링

•신호압축

•데이터를 절반으로 줄이는 방법

•샘플링 주기를 더 크게 함

•오차가 작은 데이터를 제거한다

Page 22: ICON08_게임 애니메이션 최적화 기법

신호압축

•오차 분석

•양쪽 키 프레임에 의해예측된 값과 실제 값의차이

•크기가 가장 작은키프레임부터 제거

•원하는 만큼 압축

Page 23: ICON08_게임 애니메이션 최적화 기법

신호압축

•만약, 데이터가 massive 하게 크다면

•모션 데이터만 몇 백 메가바이트

•불가능해 보이지만, 본 40개, 60프레임 20분의 모션 캡쳐데이터라면 키프레임(36byte) 용량만 약 100메가 이상

•DCT를 이용한 주파수 도메인 압축이 필요할 지도 (JPEG 압축)

Page 24: ICON08_게임 애니메이션 최적화 기법

최적화된 키프레임 구성

•키프레임 셋

•캐시 메모리 최적화된 데이터 구성

VS

Page 25: ICON08_게임 애니메이션 최적화 기법

GPU를 이용한 최적화

•GPU를 이용한 최적화

•렌더링 배칭 이슈

•셰이더에 전달 가능한 변수의 제약

•스키닝시 전달 가능한 매트릭스 수 제약

Page 26: ICON08_게임 애니메이션 최적화 기법

GPU를 이용한 최적화

•GPU를 이용한 최적화

•렌더링 배칭 이슈

•셰이더에 전달 가능한 변수의 제약

•스키닝시 전달 가능한 매트릭스 수 제약

•매트릭스 => 쿼터니언+벡터로 전달

•두 배의 트랜스 폼 정보 전달가능

•셰이더 내부에서 쿼터니언 사용

•쿼터니언=>매트릭스 연산 부하가 큼

Page 27: ICON08_게임 애니메이션 최적화 기법

GPU를 이용한 최적화

•GPU를 이용한 최적화

•렌더링 배칭 이슈

•셰이더에 전달 가능한 변수의 제약

•스키닝시 전달 가능한 매트릭스 수 제약

•매트릭스 => 듀얼 쿼터니언 사용

•두 배의 트랜스폼 정보 전달가능

•셰이더 내부에서 듀얼 쿼터니언 사용

Page 28: ICON08_게임 애니메이션 최적화 기법

듀얼 쿼터니언

•듀얼쿼터니언

•스키닝 이점

•전통적인 방식에 쉽게적용 가능

•GPU friendly

•전통적인 매트릭스방식보다는 연산이 많음

•http://isg.cs.tcd.ie/projects/DualQuaternions

Page 29: ICON08_게임 애니메이션 최적화 기법

질문/답

•감사합니다.

•내용 질문 [email protected]