언리얼 엔진 에는 레벨에 다양한 Precomputed Lighting Scenarios (사전 연산된 라이팅 시나리오)가 지원됩니다. 하나의 레벨에서 다수의 라이팅 셋업을 저장하고 표시하도록 하여, 다이내믹 라이팅의 유연함과 사전 연산된 라이팅의 고정비를 동시에 누릴 수 있습니다. 다양한 사전 연산된 라이팅 시나리오를 변경할 수 있는 기능은 가상 현실(VR) 또는 건축 시각화 프로젝트에 특히나 중요한데, 빠른 퍼포먼스 이점을 누리면서 높은 퀄리티의 렌더링이 필요하기 때문입니다. 이 레퍼런스를 통해 프로젝트의 사전 연산된 라이팅에 대해 배우실 수 있을 것입니다.


위 그림에서 디렉셔널 라이트, 스카이 라이트, 스카이박스가 Day Scenario 라는 라이팅 시나리오 레벨에 배치되었습니다. 가로수의 스포트라이트는 Night Scenario 라는 다른 라이팅 시나리오에 배치되었습니다.
기능적 한계
사전 연산된 라이팅 시나리오에는 장점이 많지만, 사용 시 주의해야 하는 단점과 한계점이 몇 가지 있습니다. 여기서는 그 한계점 몇 가지와 해결(또는 우회)법을 알아보겠습니다.
- 게임의 특정 시점에 하나의 라이팅 시나리오만 보여야 합니다.
- 라이팅 시나리오 레벨이 존재하면, 모든 서브레벨에서의 라이트맵이 그 안에 놓여 낮일 때는 Day Scenario 라이트맵만 사용됩니다. 그 결과 라이트맵을 더이상 서브레벨에서 스트리밍할 필요가 없는 것입니다.
-
서브레벨 라이트맵 데이터는 라이팅 시나리오 BuiltData 패키지에 저장됩니다. 다른 서브레벨의 리플렉션 캡처를 등록하면 활성 라이팅 시나리오의 BuiltData가 수정됩니다. 서브레벨을 두 번 로드하고 라이팅 시나리오의 빌트데이터를 한 번만 로드하면 다음과 같은 오류가 발생합니다:
Error: Reflection capture /Game/Environments/Levels/Your_Level_Name.level_name:PersistentLevel.SphereReflectionCapture_1.NewReflectionComponent uploaded twice without reloading its lighting scenario level.
라이팅 시나리오 레벨은 리플렉션 캡처를 업로드할 때마다 한 번씩 로드해야 합니다.
라이팅 시나리오 사용
언리얼 엔진 프로젝트에서 라이팅 시나리오를 사용하는 방법은 다음과 같습니다:
-
먼저 창 > 레벨 로 레벨 매니저 를 엽니다.
-
레벨 매니저 를 연 상태로 레벨 메뉴의 서브레벨에 우클릭, 라이팅 시나리오 로 가 라이팅 시나리오로 변경 옵션을 선택하여 레벨을 라이팅 시나리오 레벨로 만듭니다.
라이팅 시나리오 레벨이 보이면, 그 라이트맵이 월드에 적용됩니다.
-
레벨 스트리밍 메서드가 블루프린트로 설정되어 있는지 확인합니다. 서브레벨에 우클릭한 후, 스트리밍 메서드 변경 후 (이미 선택되어 있지 않다면) 블루프린트 를 선택하면 됩니다.
-
이제 프로젝트에 필요한 라이트나 스태틱 메시를 배치한 뒤 다른 레벨과 마찬가지로 각 레벨의 라이팅을 빌드합니다.
-
라이팅 빌드가 완료되었으면, 퍼시스턴트 레벨 의 블루프린트를 열어 Load Stream Level 노드를 추가하고 Event Begin Play 노드에 연결합니다.
-
Event Begin Play 노드를 Load Stream Level 노드에 연결한 뒤 로드하고자 하는 레벨 이름을 입력합니다. 또, Make Visible After Load 와 Should Block on Load 도 체크하여 새로 로드된 레벨이 보이도록 합니다.
-
플레이 버튼을 눌러 프로젝트를 실행시키고 첫 레벨이 로드되면, 이제 Day 레벨 라이팅을 사용할 것입니다. Night 레벨 라이팅을 사용하려면, 같은 구성을 사용하지만 레벨 이름을 밤 레벨 이름으로 바꿔줘야 할 것입니다.
눈에 띄는 한계가 몇 가지 있지만, Unreal Engine 에서 사전 연산된 라이팅 시나리오를 사용하면 프로젝트에 여러가지 장점이 생깁니다. (프로젝트의 요구에 따라) 구은 라이팅을 바꿀 수 있으면서 퍼포먼스도 향상되는 것입니다.