렌더링 및 애니메이션 속도를 최적화하는 캐릭터 모델을 디자인하려면 다음을 수행하십시오.
- 하나의 스킨드 메시 렌더러 사용
- 최소한의 머티리얼 사용
- 최소한의 뼈대 사용
- 폴리곤 수 최소화
- 순운동학과 역운동학 분리
이러한 기술을 사용하면 캐릭터의 애니메이션 및 렌더링 속도를 높이는 데 도움이 되지만, 달성하려는 시각적 정확도와 사실적인 효과를 저하할 수도 있습니다.
성능 향상과 실제 같은 시각 효과 사이에 완벽한 균형을 이룰 수 있는 절대적인 해결책은 없습니다.
캐릭터와 씬의 복잡성, 필요한 전반적인 형상과 사실감을 고려하여 완벽한 균형을 찾으시기 바랍니다.
1. 하나의 스킨드 메시 렌더러 사용
각 캐릭터에 하나의 스킨드 메시 렌더러를 사용하십시오.
Unity는 가시성 컬링과 바운딩 볼륨 업데이트로 애니메이션을 최적화합니다.
이런 최적화는 한 개의 Animation 컴포넌트와 한 개의 스킨드 메시 렌더러를 사용할 때만 활성화됩니다.
하나의 메시 대신 두 개의 스킨드 메시를 사용하면 모델의 렌더링 시간이 두 배로 걸리므로, 메시를 여러 개 사용할 경우에는 실질적 이점이 거의 없습니다.
2. 최소한의 머티리얼 사용
각 메시의 머티리얼 수를 최대한 적게 유지해야 합니다.
파트마다 서로 다른 셰이더를 사용(예: 캐릭터의 눈에는 특수 셰이더 사용)해야 할 경우에만 캐릭터에 여러 개의 머티리얼을 사용하십시오.
하지만 대부분의 경우 캐릭터마다 2개나 3개의 머티리얼이면 충분합니다.
3. 최소한의 뼈대 사용
일반적으로 뼈대를 적게 사용할수록 성능이 향상됩니다.
하지만 뼈대가 매우 많은 캐릭터를 생성해야 할 때도 있습니다(예: 커스터마이즈 가능한 부착물이 매우 많은 경우).
뼈대 수가 늘어나면 빌드 크기가 커지므로 뼈대가 추가될 때마다 상대적인 프로세싱 부하가 증가합니다.
예를 들어 이미 30개의 뼈대가 있는 릭에 15개의 뼈대를 추가하면 Unity가 Generic 모드에서 해결하는 데 필요한 연산이 50% 이상 늘어나므로 해결 시간이 길어질 수 있습니다.
일반 및 휴머노이드 타입의 경우에만 뼈대를 추가할 수 있습니다.
추가 뼈대를 사용하여 플레이되는 애니메이션이 없으면 프로세싱 부하는 무시할 만한 수준입니다.
부착물이 존재하지 않거나 숨겨져 있다면 부하가 훨씬 더 줄어듭니다.
성능상의 이유로 버텍스당 최대 네 개의 인플루언스를 사용하는 리니어 블렌드 스키닝을 사용하십시오.
하지만 일부 3D 모델링 애플리케이션의 경우 버텍스당 네 개가 넘는 뼈대의 인플루언스를 허용하므로, 성능 부하 대비 제어 기능 향상을 잘 비교해야 합니다.
자세한 내용은 스킨드 메시 임포트를 참조하십시오.
4. 폴리곤 수 최소화
사용해야 할 폴리곤 수는 필요한 화질과 타게팅하는 플랫폼에 따라 다릅니다.
다음의 두 가지 대비되는 사실은 모두 참입니다.
메시에 사용하는 폴리곤 수가 줄어들수록 애플리케이션의 실행 속도는 빨라집니다.
이는 모든 버텍스, 모서리 또는 얼굴에 컴퓨팅 리소스가 필요하기 때문입니다.
메시에 사용하는 폴리곤 수가 늘어날수록 게임 오브젝트의 세밀도와 자연스러움이 향상됩니다.
이는 폴리곤 수가 작으면 모양을 더욱 세밀하게 제어할 수 있기 때문입니다.
또한 렌더링 리소스를 요구하는 다른 요소들도 고려해야 합니다.
화면에 동시에 많은 게임 오브젝트 또는 터레인 오브젝트가 있는 경우 메시당 폴리곤 수를 줄이는 것이 좋습니다.
데스크톱 플랫폼은 일반적으로 모바일 플랫폼보다 더욱 복잡한 요소를 처리할 수 있지만, 모바일 플랫폼의 성능은 기기 자체의 품질과 성능에 매우 크게 좌우됩니다.
5. 순운동학과 역운동학 분리
Unity는 애니메이션을 임포트할 때 모델의 역운동학(IK) 노드를 순운동학(FK)에 베이크하며, 이에 따라 Unity는 IK 노드를 전혀 필요로 하지 않습니다.
그러나 모델에 남아있게 되면 애니메이션에는 영향을 미치지 않더라도 Unity는 계속해서 계산을 수행합니다.
Unity 또는 3D 모델링 애플리케이션에서 중복되는 IK 노드를 삭제할 수 있습니다.
IK 노드를 더욱 쉽게 제거하려면 모델링을 수행하는 동안 IK와 FK 계층 구조를 분리하십시오.
'유니티 > 최적화' 카테고리의 다른 글
[유니티 최적화] 스프라이트 아틀라스 사용 및 크기를 최적화하여 성능을 개선하는 방법 (0) | 2021.02.05 |
---|---|
[유니티 최적화] 셰이더 작성 시 성능 팁 (0) | 2021.02.05 |
[유니티 최적화] 반사 프로브 성능 및 최적화 (0) | 2021.02.05 |
[유니티 최적화] 그래픽스 퍼포먼스 최적화 (2) | 2021.02.02 |
[유니티 최적화] 유니티 최적화에 대한 이해 (0) | 2021.02.02 |