728x90
반응형
스켈레탈 메쉬 컴포넌트(USkeletalMeshComponent) 에는 애니메이션 틱을 최적화하기 위한 옵션인 Visibility Based Anim Tick Option가 있다.
이 설정은 스켈레탈 메쉬가 화면에 보이는지 여부에 따라 애니메이션 업데이트(Tick)를 조정하는 기능이다.
즉, 화면에 보이지 않는 메쉬는 애니메이션 업데이트를 중단하거나 줄여 성능을 절약할 수 있다.
설정 방법
enum class EVisibilityBasedAnimTickOption : uint8
{
AlwaysTickPoseAndRefreshBones, // 항상 애니메이션 틱 실행 (기본값)
AlwaysTickPose, // 항상 애니메이션 틱 실행, 그러나 본(뼈대) 업데이트는 안 함
OnlyTickMontagesWhenNotRendered, // 보이지 않을 때 몽타주(Montage)만 틱 실행
OnlyTickPoseWhenRendered, // 화면에 보일 때만 애니메이션 틱 실행
OnlyTickMontagesWhenRendered // 화면에 보일 때만 몽타주(Montage) 틱 실행
};
SkeletalMeshComponent->VisibilityBasedAnimTickOption = EVisibilityBasedAnimTickOption::AlwaysTickPose;
AlwaysTickPoseAndRefreshBones
- 항상 애니메이션을 틱(Tick)하고 본(Bone)도 업데이트한다.
- 캐릭터가 화면에 보이지 않아도 계속 애니메이션이 업데이트된다.
- 가장 정확한 애니메이션 표현을 보장하지만, CPU 부하가 크다.
SkeletalMeshComponent->VisibilityBasedAnimTickOption = EVisibilityBasedAnimTickOption::AlwaysTickPoseAndRefreshBones;
항상 정확한 본 업데이트가 필요한 경우 (ex: 네트워크 리플리케이션, 물리 기반 본 업데이트)
AlwaysTickPose
- 항상 애니메이션 틱을 실행하지만 본(Bone) 업데이트는 하지 않는다.
- 애니메이션의 포즈는 계속 업데이트되지만, 본이 움직이지 않기 때문에 캐릭터 움직임 반영이 안 될 수 있다.
- 물리 연산이나 본 위치 업데이트가 필요하지 않은 경우 유용하다.
SkeletalMeshComponent->VisibilityBasedAnimTickOption = EVisibilityBasedAnimTickOption::AlwaysTickPose;
본 업데이트 없이 애니메이션 포즈만 유지해도 되는 경우
OnlyTickMontagesWhenNotRendered
- 보이지 않을 때는 몽타주(Montage) 애니메이션만 업데이트
- 일반적인 애니메이션은 화면에 보일 때만 틱 실행
- 네트워크 리플리케이션에서 애니메이션 몽타주(공격, 특수 액션 등)만 유지하고 싶을 때 유용
SkeletalMeshComponent->VisibilityBasedAnimTickOption = EVisibilityBasedAnimTickOption::OnlyTickMontagesWhenNotRendered;
몽타주(공격, 스킬, 컷신 애니메이션 등)만 업데이트가 필요할 때
OnlyTickPoseWhenRendered
- 화면에 보일 때만 애니메이션 틱 실행 (보이지 않으면 틱을 중단)
- 성능 최적화에 가장 효과적이지만, 멀티플레이어나 물리 연산이 필요한 경우 문제 발생 가능
SkeletalMeshComponent->VisibilityBasedAnimTickOption = EVisibilityBasedAnimTickOption::OnlyTickPoseWhenRendered;
싱글플레이어 게임에서 많은 NPC가 있을 때 최적화용
OnlyTickMontagesWhenRendered
- 화면에 보일 때만 몽타주(Montage) 틱 실행 (일반 애니메이션 틱도 중단)
- 극단적인 최적화 방식으로, 기본 애니메이션이 없어도 되는 경우에 적합
SkeletalMeshComponent->VisibilityBasedAnimTickOption = EVisibilityBasedAnimTickOption::OnlyTickMontagesWhenRendered;
특정 이벤트에서만 애니메이션이 필요한 경우 (ex: 카메라에 잡힐 때만 액션 재생)
장점 및 주의할 점
장점
- 화면에 보이지 않는 캐릭터의 애니메이션 업데이트를 줄여 CPU 사용량 감소
- 많은 NPC가 등장하는 게임에서 프레임 속도 개선 가능
- 불필요한 본 연산을 줄여 애니메이션 관련 성능 최적화
주의할 점
- 네트워크 리플리케이션이 필요한 캐릭터는 AlwaysTickPoseAndRefreshBones을 유지해야 한다.
- 카메라에 따라 NPC가 보였다가 사라지는 경우, 애니메이션이 올바르게 재생되지 않을 수 있다.
- OnlyTickPoseWhenRendered을 사용할 경우, 보이지 않다가 다시 화면에 나타났을 때 애니메이션 싱크가 맞지 않을 수 있다.
728x90
반응형
'📘Unreal Engine > 📝Unreal Engine' 카테고리의 다른 글
| [Unreal Engine] 간단한 정찰 AI 만들기 (0) | 2025.09.10 |
|---|---|
| [Unreal Engine] 레벨 스트리밍, 여러 레벨 관리하기 (0) | 2025.09.04 |
| [Unreal Engine] 런타임 머티리얼 파라미터 값 변경하기 (0) | 2025.03.07 |
| [Unreal Engine] 바닥 재질별 다른 발소리 내기 (0) | 2025.02.05 |
| [Unreal Engine] C++ 블루프린트 함수 열거형 반환 핀 설정 (0) | 2025.02.01 |