프로그래밍/UnrealEngine4

Animation Budgets in unreal engine

ZenoAhn 2024. 6. 24. 00:38

애니메이션 업데이트 틱 최적화 (URO)

URO는 애니메이션의 틱 속도를 조정하여 CPU 사용량을 크게 줄입니다. 예를 들어, 애니메이션은 매 프레임마다, 4 프레임마다, 또는 심지어 10 프레임마다 틱할 수 있습니다. 틱된 프레임 간의 보간을 비활성화하면 GameThread 비용을 더욱 줄일 수 있습니다.

그러나 플레이어 근처에 많은 캐릭터가 있는 대규모 이벤트나 게임 모드를 처리할 때는 URO의 효과가 감소합니다. 추가되는 각 캐릭터는 제거할 수 없는 비용을 초래하기 때문입니다.

에픽은 이를 해결하기 위해 렌더링을 위한 동적 해상도(Dynamic Resolution) 와 유사한 시스템이 추가했습니다.

동적 애니메이션 예산

고정된 예산(Budget) 내에서 작동하며, 시간보다는 애니메이션의 품질과 양을 조정합니다. 이를 통해 성능과 애니메이션 품질 사이의 균형을 유지할 수 있습니다.

애니메이션 시간 추정

예산을 관리하기 위해 특정 프레임의 총 애니메이션 시간을 애니메이션 메쉬의 총 수로 나누고, 몇 프레임에 걸쳐 이를 평활화하여 Skeletal Mesh 하나를 애니메이션하는 데 걸리는 시간을 이동 평균(rolling average)으로 계산합니다.

품질 조정 메커니즘

CPU 시간이 가로 축에, 틱 속도가 세로 축에 있는 그래프에서 애니메이션 구성 요소의 틱 속도를 조정하여 예산 내에 맞춥니다. 추가 구성 요소가 예산을 초과하면 틱 속도를 줄여 비용을 절반으로 줄입니다.

고정 및 동적 구성 요소

캐릭터 자체나 근처의 스쿼드 동료와 같은 특정 구성 요소는 항상 틱하도록 설정할 수 있습니다. 나머지는 중요도에 따라 정렬되고 틱 속도가 조정되어 예산 내에 맞춰집니다. 이는 화면에 갑자기 캐릭터 수가 증가하는 상황에서 프레임 속도를 유지하면서 예산 초과 없이 애니메이션 품질을 조정할 수 있게 합니다.

최소 품질 기준

렌더링의 동적 해상도와 마찬가지로, 품질의 최소 기준을 설정 할 수 있습니다. 4 프레임마다 틱하는 것(25%)은 합리적이지만, 10 프레임마다 틱하면 품질이 지나치게 떨어집니다. 따라서 틱 속도에 대한 하한을 설정하여 품질 손실을 방지합니다.

고급 최적화

추가 최적화에는 다음이 포함됩니다:

일부 구성 요소에 대한 보간을 비활성화하여 비용을 절감합니다.

MasterPose만 사용

이는 기본 스켈레톤에서만 애니메이션을 실행하며 절차적 애니메이션이나 캐릭터 부품의 애니메이션 리프 조인트를 생략합니다. 이는 품질 저하가 크기 때문에 최후의 수단으로만 사용합니다.

화면 밖 구성 요소 관리

이전에는 특정 영역 내의 화면 밖 구성 요소도 틱했는데, 이는 특히 대규모 멀티플레이어 게임에서 비효율적이었습니다. 이제는 화면 밖 구성 요소의 고정된 수만 틱을 돌립니다.

 

 

https://www.youtube.com/watch?v=Zwc9uuOYfFg&t=2297s

 

'프로그래밍 > UnrealEngine4' 카테고리의 다른 글

네트워크 동기화 기본 프로세스  (0) 2023.12.09
Unreal Engine 4 Network Features  (0) 2018.06.02
UE 4.19 Contributors  (0) 2018.06.02
TPointerIsConvertableFromTo  (0) 2017.03.21
HTC Vive VR Preview 화면  (0) 2017.02.07