개요
아이돌 라이브 공연 시스템은 단순히 음악을 재생하는 기능이 아니라 여러 연출 요소를 하나의 시간축에 맞춰 동기화하는 시스템이다.
공연 중에는 다음 요소들이 동시에 동작한다.
- 음악 재생
- 캐릭터 안무
- 포메이션 이동
- 카메라 연출
- 조명 변화
- 무대 이펙트
- 관객 반응
따라서 공연 시스템의 핵심은 동기화(Synchronization) 이다.
전체 시스템 구조
[공연 시작]
↓
[공연 데이터 로드]
↓
[캐릭터 배치]
↓
[음악 재생]
↓
[박자 계산]
↓
┌─────────────┬─────────────┬─────────────┐
↓ ↓ ↓
안무 카메라 조명/이펙트
└─────────────┴─────────────┴─────────────┘
↓
[관객 반응]
↓
[공연 종료]
핵심 시스템
1. 공연 데이터 관리 (DataAsset)
목적
곡마다 다른 공연 정보를 관리하기 위한 시스템
관리 데이터
SongTitle
SongAudio
BPM
SongDuration
Performers
DanceMontages
CameraSequence
LightingCues
사용 이유
곡이 늘어날수록 하드코딩 방식은 유지보수가 어려워진다.
if(SongID == 1)
{
}
else if(SongID == 2)
{
}
대신
ULivePerformanceData
하나로 공연 정보를 관리한다.
장점
- 디자이너 작업 가능
- 공연 추가 용이
- 데이터 기반 설계 가능
- 유지보수 편리
2. 음악 싱크 시스템
역할
모든 공연 시스템의 기준 시간 제공
핵심 계산
BeatInterval = 60.f / BPM;
예시
BPM = 120
60 / 120 = 0.5초
0.5초마다 박자 발생
동작 흐름
음악 재생
↓
현재 시간 계산
↓
박자 이벤트 발생
↓
안무
카메라
조명
이펙트
이벤트 방식
OnBeatEvent.Broadcast(BeatCount);
각 시스템은 박자 이벤트만 구독
Music Sync
↓
Beat Event
┌────┼────┐
↓ ↓ ↓
안무 조명 카메라
주의사항
Timer 기반만 사용하면 장시간 공연에서 오차 발생
실제 구현 시
AudioComponent->GetPlayPosition()
을 기준으로 보정 필요
3. 안무 시스템
역할
캐릭터 애니메이션 제어
사용 기술
AnimMontage
안무 구조 예시
Intro
↓
Verse
↓
Chorus
↓
Bridge
↓
Ending
섹션 전환
if(BeatCount % 8 == 0)
{
PlayNextDanceSection();
}
포메이션 시스템
초기
A
B C
D
변경 후
A B
C
D E
이동 방식
MoveComponentTo()
또는
Timeline
사용
구현 시 고려사항
- 캐릭터 충돌
- 이동 경로 겹침
- 동시 이동
- 회전 방향
4. 카메라 연출 시스템
역할
공연의 몰입감 제공
사용 기술
Level Sequence
SetViewTargetWithBlend()
연출 예시
공연 시작
전체 무대 샷
후렴구
센터 멤버 클로즈업
하이라이트
회전 카메라
엔딩
무대 전체 줌아웃
구현 방식
사전 제작 방식
Level Sequence
장점
- 높은 퀄리티
- 연출 제어 쉬움
단점
- 수정 비용 높음
실시간 방식
SetViewTargetWithBlend()
장점
- 동적 제어 가능
단점
- 구현 난이도 증가
5. 조명 & 이펙트 시스템
역할
공연 분위기 연출
Lighting Cue
struct FLightingCue
{
TriggerTime
LightColor
Intensity
StageEffect
}
예시
시간이벤트
| 10초 | 파란 조명 |
| 20초 | 붉은 조명 |
| 30초 | 폭죽 |
| 45초 | 레이저 |
실행 흐름
현재 곡 시간
↓
큐 검색
↓
조명 변경
↓
이펙트 생성
사용 기술
USpotLightComponent
SpawnEmitterAtLocation
또는
Niagara
6. 공연 매니저
역할
전체 공연 제어
공연 시작
공연 데이터 로드
↓
캐릭터 배치
↓
음악 시작
↓
카메라 실행
↓
조명 실행
공연 종료
음악 종료
↓
캐릭터 상태 복구
↓
카메라 원복
↓
결과 화면
관리 대상
MusicSync
Director
LightingDirector
Performers
CurrentPerformance
구현 우선순위
1단계 (필수)
공연 뼈대 구축
- DataAsset
- Music Sync
- AnimMontage
2단계 (기본 연출)
공연 완성
- Camera Sequence
- Camera Blend
- Lighting Cue
3단계 (고급 연출)
퀄리티 향상
- 립싱크
- 관객 시스템
- 응원봉 시스템
- 포스트 프로세싱
- 실시간 카메라 AI
추후 확장 아이디어
립싱크
음성 → 입 모양 변환
방법
- Audio2Face
- Metahuman Animator
- 커스텀 Curve
관객 시스템
응원
점프
환호
응원봉
최적화
Instanced Static Mesh
사용
응원봉 시스템
후렴구 → 파란색
하이라이트 → 분홍색
엔딩 → 흰색
점수 기반 반응
Perfect 많음
↓
환호 증가
Miss 많음
↓
반응 감소
공부해야 할 언리얼 기능
Animation
- AnimMontage
- Animation Blueprint
- Motion Matching
Audio
- Audio Component
- Quartz
- MetaSound
Cinematic
- Sequencer
- Camera Rig
- Cine Camera
Effect
- Niagara
- Material Parameter Collection
Character
- Character Movement
- Root Motion
Optimization
- Instanced Mesh
- Object Pooling
- LOD
- Tick 최적화