본문 바로가기

기본 조명 설정과 환경 조정

주요 광원과 하늘·대기 환경 액터의 역할을 구분하고 모빌리티와 라이트 빌드를 고려해 기본 조명을 구성합니다.

지형을 만들었다면 이제 레벨의 인상을 정하는 조명으로 넘어갑니다. 조명은 화면을 밝게 하는 기능이 아니라, 공간의 깊이를 드러내고, 플레이어의 시선을 이끌고, 장면의 분위기를 정하는 요소입니다. 같은 에셋으로 만든 레벨이라도 조명에 따라 한낮의 들판이 되기도 하고 으스스한 해 질 녘이 되기도 합니다.

이 글에서는 언리얼 엔진의 조명을 이루는 요소를 먼저 나눠 보고, 디렉셔널 라이트와 스카이 라이트, 포인트 라이트, 스포트 라이트의 역할과 주요 설정을 살펴봅니다. 그다음 하늘과 후처리 볼륨 같은 환경 액터를 다루고, 마지막으로 조명의 이동성(Mobility)과 프로젝트의 조명 방식에 따라 라이트 빌드와 성능이 어떻게 달라지는지 정리합니다. 조명을 다룰 때는 광원을 더하는 것보다 장면의 시간대와 노출, 그림자 기준을 먼저 정하는 것이 중요합니다.


조명을 이루는 요소

언리얼 엔진의 조명은 여러 요소가 함께 만들어 냅니다. 빛을 직접 내는 광원(light source)이 있고, 광원이 만드는 그림자가 있습니다. 빛이 물체에 부딪혀 튕겨 나와 주변을 밝히는 간접광(indirect lighting)도 있습니다. 여기에 최종 화면에 블룸이나 색 보정, 노출 같은 효과를 더하는 후처리(post processing)와, 레벨의 배경 하늘과 대기 효과가 더해져 장면의 빛이 완성됩니다.

이 요소들은 서로 영향을 줍니다. 예를 들어 하늘의 색이 바뀌면 스카이 라이트가 비추는 주변광의 색도 바뀌고, 노출 설정이 바뀌면 같은 광원도 더 밝거나 어둡게 보입니다. 그래서 화면이 의도와 다를 때는 한 요소씩 나눠서 확인해야 합니다.


주요 광원과 설정

Basic 레벨 템플릿에는 이미 몇 가지 조명 액터가 들어 있습니다. 각각의 역할과 디테일 패널의 주요 설정을 살펴봅니다.

디렉셔널 라이트: 태양과 달

디렉셔널 라이트(Directional Light)는 태양이나 달처럼 아주 먼 곳에서 나란히 들어오는 빛을 비추는 광원입니다. 빛이 모두 같은 방향으로 들어오므로 그림자도 그 방향을 기준으로 생기며, 야외 환경에서 가장 중요한 주 광원입니다.

가장 중요한 속성은 Transform의 Rotation입니다. 빛이 아주 먼 곳에서 오므로 위치는 상관없고, 회전만 빛의 방향을 정합니다. Pitch를 바꾸면 해의 높이가, Yaw를 바꾸면 해가 떠 있는 방위가 바뀝니다. 반면 Roll은 빛이 들어오는 축을 중심으로 도는 회전이라, Roll만 바꿔서는 빛의 방향이 바뀌지 않습니다.

Light 항목의 Intensity는 빛의 밝기, Light Color는 빛의 색입니다. 해 질 녘에는 주황색, 달빛에는 푸른색처럼 색으로 시간대를 표현할 수 있습니다. Cast Shadows는 이 빛이 그림자를 만들지 정합니다. 마지막으로 Mobility는 실행 중에 무엇을 바꿀 수 있는지와 어떤 조명 경로를 쓰는지를 함께 정하는데, 아래의 이동성 비교에서 자세히 봅니다.

스카이 라이트: 하늘의 주변광

스카이 라이트(Sky Light)는 하늘 전체에서 들어오는 주변광(ambient light)을 흉내 내어 간접광을 표현합니다. 디렉셔널 라이트가 직접 비추지 않는 그림자 속이나 실내에 부드러운 빛을 더해, 그림자가 새까맣게 보이지 않고 사실적으로 보이게 합니다.

Light 항목의 Intensity Scale로 밝기를 조절하고, Source Type으로 빛의 출처를 고릅니다. SLS Captured Scene은 레벨에 있는 하늘과 환경을 캡처해 빛을 만들고, SLS Specified Cubemap은 지정한 HDRI 큐브맵 이미지로 빛을 만듭니다. 큐브맵 방식은 실제 하늘을 찍은 이미지로 사실적인 배경이나 특정 분위기를 만들 때 씁니다.

Real Time Capture를 켜면 디렉셔널 라이트가 회전하는 것처럼 하늘이 바뀔 때 스카이 라이트가 실시간으로 다시 캡처해 빛을 갱신합니다. 시간이 흐르는 하늘을 만들 때 쓰는 방법 가운데 하나이며, 지원하는 캡처 대상과 이동성 조건, 비용을 확인하고 씁니다.

포인트 라이트: 한 점에서 모든 방향으로

포인트 라이트(Point Light)는 전구처럼 한 점에서 모든 방향으로 빛을 내는 광원입니다. 촛불이나 램프, 폭발 효과처럼 장면 안의 작은 광원에 씁니다. Intensity와 Light Color로 밝기와 색을 정하고, Attenuation Radius로 빛이 영향을 주는 최대 반지름을 정합니다. 이 반지름 밖으로는 빛이 닿지 않으므로, 반지름을 필요한 만큼만 잡으면 그만큼 계산할 범위가 줄어듭니다.

포인트 라이트에도 디렉셔널 라이트와 같은 Static, Stationary, Movable 이동성이 있습니다. 어느 것을 고를지는 프로젝트가 미리 굽는 조명을 쓰는지, 루멘(Lumen) 같은 동적 조명을 쓰는지를 먼저 확인한 뒤 정합니다.

스포트 라이트: 원뿔 모양의 빛

스포트 라이트(Spot Light)는 손전등처럼 한 방향으로 원뿔 모양의 빛을 내는 광원으로, 자동차 전조등이나 감시 카메라의 조명에 씁니다. 포인트 라이트의 설정에 더해 Inner Cone Angle과 Outer Cone Angle이 있습니다. 안쪽 원뿔 각도 안에서는 빛이 최대 강도로 비추고, 그 바깥부터 바깥쪽 원뿔 각도까지는 빛이 부드럽게 약해집니다. 두 각도의 차이가 크면 빛의 가장자리가 부드럽게 퍼지고, 작으면 또렷하게 끊깁니다.


하늘과 후처리 조정하기

광원 말고도 레벨의 전체 분위기를 만드는 환경 액터가 있습니다. 광원은 물체에 닿는 빛을 정하지만, 빛이 닿지 않는 배경인 하늘의 색과 완성된 화면의 노출과 색감은 따로 정해야 하기 때문입니다. 아래에서는 하늘을 그리는 두 가지 방식과, 렌더링이 끝난 화면 전체를 다듬는 후처리 볼륨을 차례로 살펴봅니다.

하늘 표현

하늘을 표현하는 방식은 두 가지입니다. 스카이 어트모스피어(Sky Atmosphere)는 대기에서 빛이 흩어지는 현상을 계산해 하늘의 색을 만드는 지금의 방식입니다. 반면 예전 콘텐츠에서 볼 수 있는 BP_Sky_Sphere는 하늘 모양의 큰 메시를 블루프린트로 제어하는 방식이라, 두 방식을 구분해서 다룹니다.

BP_Sky_Sphere에는 참조할 디렉셔널 라이트를 지정하는 Directional Light Actor 항목과, 낮과 밤의 하늘색, 구름 색 같은 Colors 항목이 있습니다. 이 블루프린트는 디렉셔널 라이트를 회전한 뒤 Refresh Material을 누르거나 갱신 로직을 실행해야 하늘에 반영될 수 있습니다.

스카이 어트모스피어는 디렉셔널 라이트의 Atmosphere Sun Light 설정을 켜면 그 빛의 방향에 맞춰 하늘색이 바뀝니다. 다만 하늘색이 바뀐 것이 주변광에도 반영되는지는 스카이 라이트의 캡처와 갱신 설정에 달려 있으므로, 그것까지 함께 확인합니다.

후처리 볼륨

후처리 볼륨(Post Process Volume)은 렌더링의 마지막 단계에서 화면 전체에 적용되는 시각 효과를 정합니다. 사진 편집 앱의 필터처럼 레벨의 색감, 노출, 블룸 같은 효과를 세밀하게 조정할 수 있습니다. 툴바의 추가(Add) 메뉴에서 Volumes의 Post Process Volume을 골라 레벨에 놓습니다.

디테일 패널에는 많은 설정이 있지만, 처음 알아 둘 항목은 다음과 같습니다.

설정하는 일
Exposure카메라의 밝기를 조절해 레벨이 너무 밝거나 어둡지 않게 합니다. 설정에 따라 Min EV100과 Max EV100, 또는 Min Brightness와 Max Brightness로 자동 노출이 움직일 범위를 정합니다.
Bloom밝은 부분의 빛이 주변으로 번지는 효과를 만듭니다. 벽 틈으로 빛이 새는 조명 오류와는 다른 후처리 효과입니다.
Vignette화면 가장자리를 어둡게 해 시선을 가운데로 모읍니다.
Chromatic Aberration렌즈의 왜곡을 흉내 내어 화면 가장자리에서 색이 갈라지게 합니다.
Color Grading레벨 전체의 색감과 채도, 대비를 조절해 특정한 분위기를 만듭니다.
Ambient Occlusion물체끼리 가려지는 틈에 부드러운 그림자를 더해 깊이감을 줍니다.
Lens Flares밝은 광원이 카메라 렌즈에 반사되어 생기는 빛무리를 표현합니다.

Infinite Extent (Unbound)를 켜면 볼륨의 크기와 상관없이, 카메라가 볼륨 밖에 있어도 효과가 적용됩니다. 레벨 전체에 같은 후처리를 줄 때 씁니다. 다만 여러 볼륨이 겹치거나 카메라에도 후처리 설정이 있다면, 실제 값은 각 볼륨의 우선순위(Priority)와 섞는 비율(Blend Weight) 설정에 따라 정해집니다.


이동성과 라이트 빌드

프로젝트의 조명 방식부터 확인하기

조명의 성능을 생각하기 전에 먼저 프로젝트가 간접광과 반사를 어떤 방식으로 계산하는지 확인합니다. 루멘 글로벌 일루미네이션(Lumen Global Illumination)을 쓰는 프로젝트에서는 미리 계산해 둔 정적 조명과 라이트맵이 화면에 쓰이지 않습니다. 그래서 루멘 프로젝트에서 성능을 위해 모든 조명을 Static으로 바꾸는 방법은 맞지 않습니다. 루멘의 설정은 글로벌 일루미네이션과 반사 설정에서 자세히 다룹니다.

LIGHT MOBILITY · RENDERING PATH

변경할 속성과 조명 경로를 함께 고릅니다

모빌리티는 런타임 변경 범위를 정합니다. 베이크 조명과 Lumen 같은 동적 조명에서 각 설정의 역할·비용을 따로 확인합니다.

설정과 적용 조건
모빌리티런타임 변경 범위확인할 조건
Static위치·색·강도를 런타임에 바꾸지 않음베이크 조명 경로에서 라이트맵 생성·메모리 비용을 확인합니다.
Stationary위치 고정 · 색과 강도 변경 가능베이크 경로에서는 정적 간접광과 동적 요소를 조합합니다. 중첩과 그림자 제약을 확인합니다.
Movable위치·색·강도 변경 가능실시간 조명에 사용합니다. 그림자 방식·범위·장면에 따라 비용이 달라집니다.
Static

위치·색·강도를 런타임에 바꾸지 않음

베이크 조명 경로에서 라이트맵 생성·메모리 비용을 확인합니다.

Stationary

위치 고정 · 색과 강도 변경 가능

베이크 경로에서는 정적 간접광과 동적 요소를 조합합니다. 중첩과 그림자 제약을 확인합니다.

Movable

위치·색·강도 변경 가능

실시간 조명에 사용합니다. 그림자 방식·범위·장면에 따라 비용이 달라집니다.

Lumen GI를 사용하는 프로젝트

미리 계산한 정적 조명·라이트맵의 기여를 사용하지 않습니다. 광원 수·그림자·범위를 측정하고 모빌리티 이름만으로 성능 순위를 정하지 않습니다.

위 그림은 광원의 세 가지 이동성(그림과 Epic 한국어 문서에서는 모빌리티)이 실행 중에 무엇을 바꿀 수 있게 하는지, 그리고 그때 확인할 조건을 표로 보여 줍니다. Static은 위치와 색, 강도를 실행 중에 바꾸지 않는 광원입니다. 미리 굽는 조명 경로에서 쓰며, 라이트맵을 만드는 시간과 메모리 비용을 확인합니다. Stationary는 위치는 고정이지만 색과 강도는 실행 중에 바꿀 수 있는 광원입니다. 굽는 경로에서는 미리 계산한 간접광과 실시간으로 계산하는 요소를 섞어 쓰며, 여러 Stationary 광원이 겹치는 경우와 그림자의 제약을 확인해야 합니다. Movable은 위치와 색, 강도를 모두 바꿀 수 있는 실시간 광원으로, 그림자 방식과 영향 범위, 장면에 따라 비용이 달라집니다.

그림 아래쪽은 루멘을 쓰는 프로젝트를 따로 짚습니다. 루멘에서는 미리 계산한 정적 조명과 라이트맵이 쓰이지 않으므로, 광원의 수와 그림자, 영향 범위를 직접 측정해야 합니다. 그림의 설명처럼 이동성의 이름만 보고 어느 쪽이 빠르다고 순위를 정하지 않는 것이 중요합니다.

미리 굽는 조명을 쓴다면

미리 굽는 조명을 쓰는 프로젝트라면 위쪽 메뉴의 Build에서 Build Lighting Only를 눌러 정적 조명 데이터를 만듭니다. 이때 메시의 라이트맵 UV와 라이트맵 해상도, 저장 상태, 빌드 중에 나온 경고를 함께 확인합니다. 라이트맵 UV가 겹쳐 있으면 얼룩이 생기고, 해상도가 낮으면 그림자가 흐릿하게 뭉개지기 때문입니다.

동적 조명을 쓰는 프로젝트에서는 빌드를 마쳤는지보다, 실제 대상 플랫폼에서 그림자와 글로벌 일루미네이션의 비용이 얼마인지를 확인합니다. 미리 굽는 조명과 실시간 조명의 차이는 실시간 조명 및 사전 계산 조명에서 다시 다룹니다.

화면이 이상할 때 한 항목씩 비교하기

화면이 너무 어둡거나 밝기가 흔들린다면, 같은 카메라 위치에서 한 항목씩 바꿔 비교합니다. 순서는 주 광원의 방향, 스카이 라이트의 갱신, 노출, 그림자입니다. 비용도 광원의 개수와 영향 범위, 그림자 방식에 따라 달라지므로, 이동성의 이름만으로 성능 순위를 고정하지 않습니다.

이 비교 방법은 작은 시험 맵에서 연습할 수 있습니다. 바닥과 큐브 하나만 있는 레벨에서 카메라와 노출을 고정하고, 디렉셔널 라이트의 회전만 바꿔 봅니다. 그림자가 향하는 방향과 길이가 어떻게 달라지는지 기록한 뒤 원래 회전으로 되돌리고, 이번에는 회전은 그대로 둔 채 강도만 바꿔 밝기를 비교합니다. 방향과 밝기를 한꺼번에 바꾸면 어느 설정이 결과를 만들었는지 구별하기 어렵기 때문입니다.


정리

  • 조명은 광원, 그림자, 간접광, 후처리, 하늘과 대기가 함께 만들며, 화면이 이상하면 한 요소씩 나눠 확인합니다.
  • 디렉셔널 라이트는 회전의 Pitch와 Yaw가 방향을 정하고 Roll과 위치는 방향을 바꾸지 않으며, 스카이 라이트는 하늘의 주변광을 캡처하거나 큐브맵으로 표현합니다.
  • 포인트 라이트는 Attenuation Radius로 영향 범위를, 스포트 라이트는 안쪽과 바깥쪽 원뿔 각도로 빛의 모양을 정합니다.
  • 스카이 어트모스피어는 디렉셔널 라이트의 Atmosphere Sun Light로 하늘색이 바뀌고, 주변광 반영은 스카이 라이트의 갱신 설정에 달려 있습니다.
  • 후처리 볼륨은 노출, 블룸, 색 보정 같은 화면 효과를 정하며, Infinite Extent (Unbound)를 켜면 레벨 전체에 적용됩니다.
  • Static, Stationary, Movable은 실행 중에 바꿀 수 있는 범위를 정하고, 루멘 프로젝트에서는 미리 계산한 조명과 라이트맵이 쓰이지 않습니다.
  • 미리 굽는 조명은 Build Lighting Only로 만들고, 비용은 이동성 이름이 아니라 광원 수와 범위, 그림자 방식으로 측정합니다.

연습 문제

1. 복도를 걷는 손전등

플레이어가 들고 복도를 이동하는 손전등과, 벽에 고정되어 있지만 실행 중에 깜빡이며 밝기만 바뀌는 비상등이 있습니다. 미리 굽는 조명을 쓰는 프로젝트라면 각각 어떤 이동성을 검토할까요?

해설 보기

손전등은 실행 중에 위치가 바뀌므로 위치를 고정하는 Static이나 Stationary로는 표현할 수 없고, Movable을 검토합니다.

비상등은 위치는 고정이고 밝기만 바뀌므로, 위치를 고정한 채 색과 강도를 바꿀 수 있는 Stationary를 검토할 수 있습니다. 다만 실제 선택은 그 프로젝트가 미리 굽는 경로인지 루멘 경로인지, 겹치는 Stationary 광원의 수와 그림자 비용까지 확인한 뒤에 정합니다.

2. 루멘 프로젝트에서 Static으로 바꾸기

루멘 글로벌 일루미네이션을 쓰는 프로젝트에서 프레임이 떨어지자, 팀원이 모든 광원을 Static으로 바꾸고 Build Lighting Only를 실행하자고 제안합니다. 이 방법이 맞을까요?

해설 보기

맞지 않습니다. 루멘 글로벌 일루미네이션을 쓰는 프로젝트에서는 미리 계산한 정적 조명과 라이트맵이 화면에 쓰이지 않으므로, 광원을 Static으로 바꿔 빌드해도 의도한 효과를 얻을 수 없습니다.

대신 같은 카메라 위치에서 광원의 수와 영향 범위, 그림자 방식을 하나씩 바꿔 가며 비용을 측정하고, 어느 요소가 프레임을 떨어뜨리는지 찾아야 합니다.

3. 회전과 강도를 한꺼번에 바꿨더니

해 질 녘 분위기를 만들려고 디렉셔널 라이트의 회전과 강도, 색을 한꺼번에 바꿨더니 그림자가 지나치게 길고 화면이 너무 어두워졌습니다. 어떤 순서로 원인을 찾아야 할까요?

해설 보기

세 값을 한꺼번에 바꿨기 때문에 어느 값이 결과를 만들었는지 알 수 없습니다. 먼저 원래 값으로 되돌리고, 카메라와 노출을 고정한 뒤 회전만 바꿔 그림자의 방향과 길이를 확인합니다.

그다음 회전을 그대로 둔 채 강도를 바꿔 밝기를 보고, 마지막으로 색을 바꿉니다. 화면이 어두운 원인이 강도인지, 노출의 자동 조절인지, 스카이 라이트의 갱신인지도 같은 방식으로 하나씩 나눠 확인합니다.

광원의 종류와 이동성은 Epic의 광원 종류와 이동성 안내에서 확인할 수 있습니다.

다음 글 환경 효과 (안개, 조명) 추가에서는 높이 안개와 볼류메트릭 효과, 구름 같은 대기 효과를 더해 장면의 깊이와 분위기를 만드는 방법을 다룹니다.