Más contenido relacionado
Similar a 백승엽, M2프로젝트의 애니메이션 로딩 전략, NDC2011 (20)
Más de devCAT Studio, NEXON (20)
백승엽, M2프로젝트의 애니메이션 로딩 전략, NDC2011
- 10. 클립 리덕션
두 프레임을 잡아서 선형보간
-> 그 사이 프레임들의 실제값과 비교
-> 오차가 최대가 되는 프레임을 골라냄
-> 모든 오차가 기준치 이하가 될 때까지 반복
- 11. 0
1
2
3
4
5
6
7
8
9
10
1 2 3 4 5 6
클립 리덕션
0
1
2
3
4
5
6
7
8
9
10
1 2 3 4 5 6
0
1
2
3
4
5
6
7
8
9
10
1 2 3 4 5 6
0
1
2
3
4
5
6
7
8
9
10
1 2 3 4 5 6
0
1
2
3
4
5
6
7
8
9
10
1 2 3 4 5 6
- 19. 인터미디엇 폴더
인터미디엇 폴더
중간 단계의 리소스가 위치하는 곳
리테일에는 포함되지 않는다
클립을 로드하는 설정이 존재
클립 로드시 실시간으로 리덕션
애니메이터가 리덕션 설정치 조정 가능
- 20. 인터미디엇 폴더
클립과 바이너리 클립 어느 것을 로드?
무조건 클립 우선
어느 것을 로드할지 판정에 시간 소모
더 느려져 버린다
애니메이터 PC의 클립은 자신이 작업한 것
- 22. 클립 번들
초기 기동시에 로드
모든 클립을 포함
각 클립은 격하게 리덕션 되어 있다
애니메이션 품질의 저하를 감수
오동작으로 보이지는 않는 선
- 23. 클립 번들의 동작
처음으로 클립이 요청되면
번들에서 로드해 둔 클립을 재생하면서
백그라운드에서 클립을 로드한다
로드가 끝나면 그 때부터 로드한 클립을 재생
- 25. 클립 번들의 리덕션
처음 n 프레임은 리덕션하지 않는다
처음 n 프레임 동안은 고품질
이 구간을 재생하는 동안 로딩되면 참 좋겠네
기대만큼 잘 안되더라
- 26. 클립 번들의 성과
여전히 애니메이션 로드랙이 없다!
초기 기동시간(초)
초기 로드 양(MB)
번들 이전
번들 도입
- 28. 상식적인 접근
필요한 것만 로드한다
뭐가 필요한지 어떻게 알아낼 것인가
필요 없어진 것은 제거한다
뭐가 필요 없어졌는지 어떻게 알아낼까
- 29. 어떻게 할 것인가
이 부근에는 A몬스터가 나타난다
이 몬스터의 모션을 로드하자!
몬스터 등장 전에 로딩이 끝날 것인가?
이 정보는 어떻게 얻을 수 있을까?
사람의 개입 없이 자동이면 좋겠다
- 30. 여기서 아이디어
ex)몬스터 A가 맞은 다음에는
서 있는 자세로 돌아가거나
맞고 넘어지거나
맞고 날아갈 것이다
애니메이션 간의 순서 관계를 이용할 수 있다!
- 37. 클립 언로드
클립 단위 레퍼런스 카운트
로드그룹 단위 레퍼런스 카운트
같은 로드 그룹 내의 다른 클립이 사용 중
-> 이 클립도 다시 사용될 가능성 높다
- 38. 클립 언로드
모든 소속 클립의 레퍼런스 카운트가 0
로드그룹의 레퍼런스 카운트가 0
그룹이 언로드 가능한 상태
클립이 다른 그룹에도 속했을 수 있다
소속된 그룹 모두가 0이야 클립이 언로드 가능