여태는 애니메이팅 데모나 리소스 제약이 덜한 환경에서 빌드할 목적으로만 써왔었습니다. 이제 모바일 프로젝트에 도입해보고 싶은데, AnyPortrait을 사용한 다른 프로젝트 쇼케이스나, 비슷한 다른 솔루션(Live2D나 Spine 등)과 비교해서 확인 가능한 성능 지표등이 있으면 도움이 될 것 같습니다!
참고로, 최근에 저희가 Snapdragon 835급 기기에서 성능이 떨어졌다는 제보를 받아서 확인 중에 있습니다. 그 이후의 기기에서는 대체로 정상적인 프레임을 보여주지만, 최근의 업데이트에서 예상치 못한 병목이 발생한 것은 아닌지 확인하는 중입니다.
따라서 실기 테스트를 먼저 해보시고, 문제가 발생하면 저희에게 알려주세요!
감사합니다.
Eng summary.
[ Performance on mobile ]
The following test results were obtained when the scene was run on Nexus 5, a model released in 2013, after copying and placing 9 characters of the 4th "Sword Girl" among the tutorial scenes of AnyPortrait.
- 30 meshes per character, 1060 vertices (about 10,000 vertices in the scene)
- Vertex morphing, rigging, physics material, clipping mesh all applied
- Record about 20 FPS (It is confirmed that the current generation devices generally operate at 60 FPS.)
Depending on the working method of users, the number of meshes, vertices, and bones used varies greatly, and the functions used, the number of animation clips, execution method, scene style, execution environment, it is difficult to simplify the performance result.
Therefore, the guide for optimization is introduced as follows.
- In the case of rigging and morphing, performance decreases depending on the number of vertices.
- Since the clipping mesh uses render textures, draw calls increase, and depending on the GPU, the performance drop may be large.
- Morph and Physic modifiers are relatively heavy.
- As the number of meshes increases, the draw call may increase significantly, so be careful to check the texture or material so that the draw call can be merged.
- If there are many animations or repeated keyframes, it affects the execution speed and memory. If possible, it is better to change it to be controlled by a control parameter.
- By using Optimized Bake, you can save memory during execution.
- It's also a good idea to turn off the Important option unless it's an important character.
In addition, we have recently received reports of poor performance on Snapdragon 835-class devices and are being confirmed.
So try the test first, and let us know if you run into any problems!
안녕하세요, Vincent 님!
안타깝게도 다양한 모바일 기기에서 테스트를 진행하지 못하여, 모바일 성능에 관한 실기 테스트 지표를 정리하지는 못했습니다.
다만, 저희의 개발 과정에서 성능 테스트를 했던 결과를 알려드리는 것이 조금이나마 도움이 될 것 같습니다.
AnyPortrait의 튜토리얼 씬 중 4번째 "Sword Girl"의 캐릭터를 9개로 복사하여 배치한 후 구동한 씬을 2013년 출시 기종인 Nexus 5에서 실행했을때 다음과 같은 테스트 결과를 얻었으며, 해당 성능을 최소 기준으로 잡고 있습니다.
- 캐릭터당 30개의 메시, 1060개의 버텍스 (씬에는 약 1만개의 버텍스)
- 버텍스 모핑, 리깅, 물리 재질, 클리핑 메시 모두 적용
- 약 20 FPS 기록
위 기록은 AnyPortrait 초기 버전에서의 결과이며, 이후 드로우콜 최적화나 스크립트 실행 빈도 분산 기능 등이 적용되어 조금 더 향상되었을 것으로 보입니다.
현재는 Nexus 5로 테스트를 진행하고 있지는 않으며, 현세대 기기에서 데모씬 정도라면 큰 무리없이 60 FPS으로 동작하는 것으로 확인하고 있습니다.
또한, 작업 방식에 따라 사용되는 메시, 버텍스, 본의 개수에 차이가 크고, 사용되는 기능, 애니메이션 클립의 개수나 실행 방식, 씬의 스타일, 실행 환경 등이 다르기 때문에 성능을 간단히 정리하기가 어렵습니다.
이러한 이유로, 현재는 사용자께서 문의를 주시면 프로젝트에 맞게 최적화 가이드를 제공하고 있습니다.
AnyPortrait의 내부는 3D와 유사하기 때문에, 3D 게임과 비슷한 방식으로 제작 및 씬 구성을 하셔야 합니다.
최적화를 위한 가이드를 아래와 같이 소개하니 참고해주시면 좋겠습니다.
- 리깅 및 모핑을 하는 경우 버텍스 개수에 따라서 성능이 떨어집니다.
- 클리핑 메시는 렌더 텍스쳐를 사용하므로 드로우콜이 증가하고 GPU에 따라서는 성능 하락폭이 클 수 있습니다.
- Morph, Physic 모디파이어는 비교적 무겁습니다.
- 메시의 개수가 늘어나면 드로우콜이 크게 증가될 수 있으니, 텍스쳐나 재질등을 확인하여 드로우콜이 병합될 수 있게 주의해야합니다.
- 애니메이션 개수나 반복되는 키프레임이 많다면 실행 속도와 메모리에 영향을 줍니다. 가능하다면 컨트롤 파라미터로 제어하도록 바꾸는 것이 더 좋습니다.
- Optimized Bake를 이용하면 실행시 메모리를 아낄 수 있습니다.
- 플레이어와 같이 중요한 캐릭터가 아니라면 Important 옵션을 끄는 것도 좋습니다.
위 내용과 관련된 몇가지 최적화 메뉴얼을 아래의 링크들을 확인해주세요!
https://rainyrizzle.github.io/kr/AdvancedManual/AD_ImportantOption.html
https://rainyrizzle.github.io/kr/AdvancedManual/AD_ReduceDrawCalls.html
https://rainyrizzle.github.io/kr/AdvancedManual/AD_OptimizedBake.html
참고로, 최근에 저희가 Snapdragon 835급 기기에서 성능이 떨어졌다는 제보를 받아서 확인 중에 있습니다. 그 이후의 기기에서는 대체로 정상적인 프레임을 보여주지만, 최근의 업데이트에서 예상치 못한 병목이 발생한 것은 아닌지 확인하는 중입니다.
따라서 실기 테스트를 먼저 해보시고, 문제가 발생하면 저희에게 알려주세요!
감사합니다.
Eng summary.
[ Performance on mobile ]
The following test results were obtained when the scene was run on Nexus 5, a model released in 2013, after copying and placing 9 characters of the 4th "Sword Girl" among the tutorial scenes of AnyPortrait.
- 30 meshes per character, 1060 vertices (about 10,000 vertices in the scene)
- Vertex morphing, rigging, physics material, clipping mesh all applied
- Record about 20 FPS (It is confirmed that the current generation devices generally operate at 60 FPS.)
Depending on the working method of users, the number of meshes, vertices, and bones used varies greatly, and the functions used, the number of animation clips, execution method, scene style, execution environment, it is difficult to simplify the performance result.
Therefore, the guide for optimization is introduced as follows.
- In the case of rigging and morphing, performance decreases depending on the number of vertices.
- Since the clipping mesh uses render textures, draw calls increase, and depending on the GPU, the performance drop may be large.
- Morph and Physic modifiers are relatively heavy.
- As the number of meshes increases, the draw call may increase significantly, so be careful to check the texture or material so that the draw call can be merged.
- If there are many animations or repeated keyframes, it affects the execution speed and memory. If possible, it is better to change it to be controlled by a control parameter.
- By using Optimized Bake, you can save memory during execution.
- It's also a good idea to turn off the Important option unless it's an important character.
In addition, we have recently received reports of poor performance on Snapdragon 835-class devices and are being confirmed.
So try the test first, and let us know if you run into any problems!