More Related Content
Similar to 백승엽, M2프로젝트의 애니메이션 로딩 전략, NDC2011
Similar to 백승엽, M2프로젝트의 애니메이션 로딩 전략, NDC2011 (20)
More from devCAT Studio, NEXON
More from 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이야 클립이 언로드 가능