PART 2 · 강의 3/3

카메라 셰이크와 애님

UCameraShakeBase 시스템과 Perlin Noise 기반 핸드헬드 효과를 마스터합니다

01

Camera Shake 시스템

UE5 카메라 셰이크 아키텍처

UE5에서 카메라 셰이크는 UCameraShakeBase를 상속하는 시스템으로, UE4의 UMatineeCameraShake(구 UCameraShake)를 대체합니다.

셰이크 클래스 계층

C++ - 셰이크 클래스 구조
UCameraShakeBase // 추상 베이스 UPerlinNoiseCameraShakePattern // Perlin Noise 기반 (UE5 권장) UWaveOscillatorCameraShakePattern // 사인파 기반 USequenceCameraShake // 시퀀서 에셋 기반 UCompositeCameraShakePattern // 여러 패턴 조합
패턴특징용도
Perlin Noise 유기적이고 자연스러운 움직임 핸드헬드, 호흡, 바람 흔들림
Wave Oscillator 규칙적인 사인파 진동 폭발 충격, 지진, 기계 진동
Sequence 시퀀서 에셋으로 정밀 제어 키프레임 기반 복잡한 셰이크
Composite 여러 패턴을 레이어링 복합적인 셰이크 효과
02

Perlin Noise 셰이크

핸드헬드 카메라 효과 구현

주요 파라미터

파라미터설명권장 범위
LocationAmplitudeMultiplier 위치 진폭 배율 0.5 ~ 5.0
LocationFrequencyMultiplier 위치 주파수 배율 0.5 ~ 3.0
RotationAmplitudeMultiplier 회전 진폭 배율 0.3 ~ 2.0
RotationFrequencyMultiplier 회전 주파수 배율 0.5 ~ 2.0
X/Y/Z Amplitude 각 축별 진폭 축에 따라 다름
X/Y/Z Frequency 각 축별 주파수 (Hz) 0.1 ~ 5.0
C++ - Perlin Noise 셰이크 생성
// 핸드헬드 카메라 셰이크 Blueprint/C++ UCLASS() class UHandheldCameraShake : public UCameraShakeBase { GENERATED_BODY() public: UHandheldCameraShake() { // 루트 패턴을 Perlin Noise로 설정 auto* Perlin = CreateDefaultSubobject<UPerlinNoiseCameraShakePattern>( "PerlinPattern"); // 위치 셰이크 (미세한 흔들림) Perlin->LocationAmplitudeMultiplier = 1.0f; Perlin->LocationFrequencyMultiplier = 1.0f; Perlin->X.Amplitude = 0.5f; // 좌우 Perlin->Y.Amplitude = 0.3f; // 전후 Perlin->Z.Amplitude = 0.8f; // 상하 (호흡) // 회전 셰이크 (미세한 틸팅) Perlin->RotationAmplitudeMultiplier = 0.5f; Perlin->Pitch.Amplitude = 0.3f; // 고개 끄덕임 Perlin->Yaw.Amplitude = 0.2f; // 좌우 회전 Perlin->Roll.Amplitude = 0.15f; // 기울기 RootShakePattern = Perlin; } };
핸드헬드 효과 팁

자연스러운 핸드헬드 느낌을 위해 Z축(상하) 진폭을 가장 크게 설정합니다 (호흡 시뮬레이션). 주파수는 0.5~1.5Hz가 사람의 자연스러운 흔들림에 가깝습니다. Roll(기울기)은 극소량만 추가하면 효과적입니다.

03

시퀀서에서 셰이크 적용

Camera Shake 트랙 활용법

시퀀서에서 카메라 셰이크를 적용하는 방법은 두 가지입니다: Camera Shake 섹션으로 직접 추가하거나, Event 트랙에서 코드로 트리거하는 방식입니다.

방법 1: Camera Shake Source Actor

  1. 레벨에 Camera Shake Source Actor 배치
  2. 셰이크 소스의 CameraShake 프로퍼티에 셰이크 클래스 할당
  3. InnerAttenuationRadius, OuterAttenuationRadius로 감쇠 범위 설정
  4. 시퀀서에서 셰이크 소스 액터를 트랙으로 추가하여 시간 제어

방법 2: C++ / Blueprint에서 직접 호출

C++ - 시퀀서 이벤트에서 셰이크 트리거
// PlayerController를 통한 셰이크 재생 APlayerController* PC = GetWorld()->GetFirstPlayerController(); if (PC && PC->PlayerCameraManager) { PC->PlayerCameraManager->StartCameraShake( UHandheldCameraShake::StaticClass(), 1.0f, // Scale (강도 배율) ECameraShakePlaySpace::CameraLocal, // 카메라 로컬 공간 FRotator::ZeroRotator // 사용자 정의 재생 공간 ); } // 셰이크 정지 PC->PlayerCameraManager->StopAllCameraShakes(true); // bImmediate
PlaySpace 옵션

CameraLocal은 카메라 기준 상대 좌표로 셰이크합니다 (가장 일반적). World는 월드 좌표 기준, UserDefined는 사용자 지정 회전 기준입니다. 시네마틱에서는 보통 CameraLocal을 사용합니다.

04

카메라 애니메이션 기법

Post Process와 결합한 시각 효과

Post Process 볼륨 애니메이션

시퀀서에서 Post Process 관련 프로퍼티를 키프레임하여 시각적 연출을 강화할 수 있습니다. 카메라의 Post Process Settings 또는 레벨의 Post Process Volume을 활용합니다.

프로퍼티효과활용 예시
Bloom Intensity 밝은 영역 확산 꿈 시퀀스, 플래시백
Vignette Intensity 가장자리 어둡게 긴장감, 집중 유도
Color Grading (LUT) 전체 색감 변환 회상 장면, 분위기 전환
Motion Blur Amount 동작 흐림 고속 이동, 액션 씬
Chromatic Aberration 색수차 타격감, 데미지 피드백
Scene Color Tint 전체 색조 시간대 변환, 감정 표현

Camera Animation Sequence

USequenceCameraShake를 사용하면 별도의 Level Sequence를 카메라 셰이크 소스로 활용할 수 있습니다. 이 방식은 Perlin Noise보다 정밀한 키프레임 제어가 가능하며, 특정 타이밍에 맞춘 복잡한 카메라 흔들림을 구현할 때 유용합니다.

프로덕션 팁: 셰이크 레이어링

UCompositeCameraShakePattern으로 여러 셰이크를 레이어링하세요. 예: 기본 핸드헬드(Perlin, 저주파) + 폭발 충격(Wave, 고주파, 감쇠). 각 레이어의 강도를 시퀀서에서 독립적으로 제어할 수 있습니다.

SUMMARY

핵심 요약

  • UE5의 카메라 셰이크는 UCameraShakeBase 기반이며, Perlin Noise / Wave Oscillator / Sequence / Composite 패턴을 지원한다
  • Perlin Noise는 유기적 움직임에 적합하며, 핸드헬드 효과에 가장 많이 사용된다
  • 핸드헬드 효과는 Z축 진폭을 가장 크게(호흡), 주파수 0.5~1.5Hz로 설정한다
  • 시퀀서에서 셰이크를 적용하려면 Camera Shake Source Actor 또는 Event 트랙을 사용한다
  • Post Process 프로퍼티를 키프레임하여 Bloom, Vignette, Color Grading 등 시각 효과를 연출한다
  • CompositeCameraShakePattern으로 여러 셰이크 패턴을 레이어링하여 복합 효과를 만든다
PRACTICE

도전 과제

배운 내용을 직접 실습해보세요

실습 1: Camera Shake 적용

Camera Shake 클래스를 생성하고 Duration, Amplitude, Frequency를 설정하세요. 시퀀서에서 폭발 시점에 Camera Shake를 트리거하는 Event Track을 추가하세요.

실습 2: 카메라 애니메이션 블렌딩

수동 키프레임 애니메이션과 셰이크를 블렌딩하여 현장감 있는 핸드헬드 느낌의 카메라 워크를 만드세요.

심화 과제: 프로시저럴 카메라 시스템

C++에서 캐릭터 이동 속도, 폭발 거리, 지형 충격에 따라 자동으로 셰이크 강도가 조절되는 프로시저럴 카메라 셰이크 시스템을 구현하세요.