기본 조명 설정
방향·점·스폿 광원을 배치하고 색상·강도·노출·모빌리티를 조정해 장면의 밝기와 시선 흐름을 설계합니다.
4장에서 레벨의 구조와 환경을 만들었다면, 이제 조명을 더 깊이 다룰 차례입니다. 조명은 분위기를 만들고, 형태를 드러내고, 시선을 이끌고, 플레이에 필요한 정보를 전달하는 일을 함께 합니다. 같은 지형과 오브젝트라도 조명을 어떻게 설계하느냐에 따라 완성도가 완전히 달라집니다.
이 글에서는 조명이 장면에서 하는 일을 정리한 뒤, 디렉셔널 라이트, 포인트 라이트, 스포트 라이트, 렉트 라이트의 차이를 그림과 함께 살펴봅니다. 그다음 빈 레벨에 광원을 직접 놓고 값을 바꿔 보고, 마지막으로 이동성(Mobility)을 프로젝트의 조명 방식과 함께 고르는 기준을 정리합니다. 이때 노출을 고정해 두고 비교해야, 장면의 밝기 기준이 흔들리지 않습니다.
조명이 장면에서 하는 일
언리얼 엔진의 렌더링에서 조명은 최종 이미지를 만드는 중심 요소이며, 빛을 밝히는 것 말고도 여러 일을 합니다. 먼저 오브젝트를 분명히 보이게 해 공간을 알아보게 돕습니다. 또 밝고 활기찬 분위기나 어둡고 긴장된 분위기처럼 레벨 전체의 감정을 정합니다.
조명은 시선과 플레이에도 영향을 줍니다. 밝거나 눈에 띄는 색의 빛으로 플레이어의 시선을 중요한 오브젝트나 길로 이끌 수 있고, 어두운 곳에 숨는 잠입 플레이나 빛을 이용한 퍼즐처럼 게임 플레이 자체에 쓰이기도 합니다. 마지막으로 빛과 그림자의 대비가 3D 공간의 깊이감을 만듭니다.
광원의 종류
광원 액터는 툴바 추가(Add) 메뉴의 Lights에서 찾을 수 있습니다. 여기서 먼저 구분할 것이 두 가지입니다. 광원의 종류는 빛이 어떤 모양으로 퍼지는지를 정하고, 이동성은 실행 중에 무엇을 바꿀 수 있는지를 정합니다. 그리고 이 둘과 별개로, 프로젝트가 미리 굽는 조명을 쓸지 루멘(Lumen) 글로벌 일루미네이션을 쓸지도 따로 정해야 합니다.
디렉셔널 라이트
디렉셔널 라이트(Directional Light)는 태양이나 달처럼 아주 먼 곳에서 나란히 들어오는 빛을 비추는 광원입니다. 모든 오브젝트에 같은 방향으로 그림자를 드리우며, 야외 환경의 주 광원입니다. 빛의 방향은 회전(Rotation)만으로 정해지므로, 액터의 위치를 아무리 옮겨도 빛의 방향은 바뀌지 않습니다. 대부분의 야외 레벨에서는 하나만 씁니다.
디테일 패널에서는 Intensity로 밝기를 정하는데, 태양이라면 높은 값을, 달이라면 낮은 값을 씁니다. Light Color로는 푸른 달빛이나 노란 아침 햇살 같은 색을 정하고, Cast Shadows로 그림자를 만들지 정하며 보통은 켜 둡니다.
포인트 라이트
포인트 라이트(Point Light)는 전구처럼 한 점에서 모든 방향으로 빛을 내는 광원으로, 촛불이나 램프, 폭발 효과에 씁니다. 빛이 나오는 지점은 위치(Location)로 정해지고, 구 모양으로 퍼지므로 실내의 특정 영역을 밝히기에 좋습니다.
디테일 패널에서는 Intensity와 Light Color로 밝기와 색을, Attenuation Radius로 빛이 영향을 주는 최대 반지름을 정합니다. 이 반지름 밖으로는 빛이 닿지 않으므로, 이 값을 줄이면 빛의 영향 범위를 제한할 수 있고 계산할 범위도 줄어 성능에도 도움이 됩니다.
스포트 라이트
스포트 라이트(Spot Light)는 손전등이나 극장의 무대 조명처럼 한 방향으로 원뿔 모양의 빛을 내는 광원입니다. 자동차 전조등이나 감시 카메라 조명, 눈길을 끄는 강조 조명에 씁니다. 빛이 나오는 지점은 위치로, 비추는 방향은 회전으로 정해지므로 둘 다 중요합니다.
포인트 라이트의 설정에 더해 각도 설정이 두 가지 있습니다. Inner Cone Angle 안에서는 빛이 최대 강도로 비추고, Outer Cone Angle 밖으로는 빛이 닿지 않습니다. 두 각도 사이에서는 빛이 부드럽게 약해지므로, 두 값으로 빛이 퍼지는 범위와 가장자리의 부드러움을 함께 조절합니다.
렉트 라이트
렉트 라이트(Rect Light)는 사각형 면에서 빛을 내는 광원입니다. TV 화면이나 창문으로 들어오는 빛, 광고판 조명처럼 넓은 면에서 나오는 빛을 표현할 때 쓰며, 주로 실내에서 씁니다. Intensity와 Light Color 외에 Source Width와 Source Height로 빛을 내는 사각형의 가로와 세로 크기를 정합니다. 사각형 광원은 넓은 반사 하이라이트를 만드는데, 광원의 크기가 그림자의 부드러움에 어떻게 반영되는지는 이동성과 그림자 렌더링 방식에 따라 다릅니다.
세 광원의 방향과 범위 비교
DIRECTIONAL · POINT · SPOT
광원 타입은 빛의 방향과 범위 모양을 정합니다
회전은 평행광의 방향을, 위치는 점·스폿 광원의 시작점을 결정합니다. 아래는 3D 빛의 범위를 단면으로 단순화한 개념도입니다.
Directional Light
회전으로 빛의 방향을 바꿉니다.
태양·달처럼 매우 먼 광원의 평행광을 표현합니다.
Point Light
위치로 빛의 근원지를 바꿉니다.
점선 원: 감쇠 반경의 단면. 거리에 따른 밝기 감쇠도 적용됩니다.
Spot Light
위치와 회전으로 근원지와 조준 방향을 바꿉니다.
점선: Inner Cone · 실선: Outer Cone. 두 각도 사이에서 부드럽게 감쇠합니다.
Rect Light와 모빌리티는 별도 확인
Rect Light는 Source Width·Height로 사각형 광원 크기를 정합니다. 소스 크기와 그림자의 관계는 모빌리티·그림자 렌더링 경로에 따라 확인합니다.
타입 선택 뒤, 필요한 런타임 변화와 GI 경로에 맞춰 Static·Stationary·Movable을 따로 정합니다.
위 그림은 세 광원이 빛을 보내는 방향과 범위를 단면으로 단순하게 나타낸 개념도입니다. 왼쪽의 디렉셔널 라이트는 서로 떨어진 세 화살표가 모두 같은 방향으로 나아가는 평행광이며, 광원의 회전이 이 방향을 정합니다. 가운데의 포인트 라이트는 한 점에서 여덟 방향으로 화살표가 뻗어 나가고, 점선 원이 Attenuation Radius의 범위를 나타냅니다. 위치로 빛이 나오는 지점을 옮기며, 반지름 안에서도 거리에 따라 밝기가 약해집니다.
오른쪽의 스포트 라이트는 광원에서 넓어지는 실선이 바깥쪽 원뿔(Outer Cone)이고, 그 안의 더 좁은 점선이 안쪽 원뿔(Inner Cone)이며, 가운데 화살표가 조준 방향입니다. 위치와 회전으로 빛이 나오는 지점과 조준 방향을 함께 정합니다. 그림 아래의 카드는 렉트 라이트와 이동성은 따로 확인하라고 짚습니다. 렉트 라이트의 크기는 Source Width와 Height로 정하고, 광원의 종류를 고른 다음에는 필요한 실행 중 변화와 글로벌 일루미네이션 방식에 맞춰 이동성을 따로 정합니다.
빈 레벨에 광원 놓아 보기
이제 레벨에 광원을 직접 놓고 설정을 바꿔 봅니다. 먼저 File 메뉴의 New Level에서 Empty Level을 골라 완전히 빈 레벨을 만들고, 툴바의 추가(Add) 메뉴에서 Shapes의 Plane을 골라 바닥을 놓습니다. 바닥이 너무 작다면 크기 조절(R) 도구로 키웁니다.
포인트 라이트
추가(Add) 메뉴의 Lights에서 Point Light를 골라 레벨 가운데에 놓으면 뷰포트가 밝아집니다. 포인트 라이트를 선택한 채 이동(W) 기즈모로 위로 올려 보고 옆으로 옮겨 보면서, 빛이 바닥에 어떻게 닿는지 살펴봅니다.
그다음 디테일 패널에서 값을 바꿉니다. 비교를 시작하기 전에 Use Inverse Squared Falloff가 켜져 있는지 확인하고, 이번 비교에서는 Intensity Units를 Lumens로 정해 기록합니다. 밝기의 숫자는 단위가 정해져야 의미가 있기 때문입니다. 단위를 바꾸기 전의 값도 적어 두고, 이미 있는 다른 조명에 무조건 같은 숫자를 덮어쓰지 않습니다.
이제 Intensity를 바꿔 밝기가 어떻게 변하는지 비교합니다. 예를 들어 5000은 단위를 정한 뒤에 쓰는 예시 값이며, Intensity Units나 노출이 다르면 같은 숫자라도 화면의 밝기가 같지 않습니다. Light Color를 눌러 주황색이나 파란색 같은 색으로 바꿔 보고, Attenuation Radius를 500 정도로 줄여 빛이 닿는 범위가 좁아지는 것을 확인합니다.
스포트 라이트
포인트 라이트를 Delete 키로 지우거나 그대로 둔 채, 이번에는 스포트 라이트를 추가합니다. 스포트 라이트를 선택하고 회전(E) 기즈모로 바닥을 비추도록 각도를 맞춘 뒤, 디테일 패널에서 Inner Cone Angle과 Outer Cone Angle을 바꿔 빛이 퍼지는 범위를 바꿔 봅니다. Intensity와 Light Color도 바꿔 봅니다.
디렉셔널 라이트
넓은 야외 레벨을 시험한다면 디렉셔널 라이트도 추가합니다. 디렉셔널 라이트를 선택하고 회전(E) 기즈모로 Pitch와 Yaw를 바꾸며 그림자 방향이 어떻게 바뀌는지 비교합니다. 이때 특정 회전값이 저절로 아침이나 정오, 일몰을 뜻하지는 않습니다. 시간대는 월드의 방위와 태양이 움직이는 규칙을 함께 정해야 정해지며, 이 내용은 시간 시스템과 주기 조정에서 다룹니다. 보통은 디렉셔널 라이트와 함께 스카이 라이트와 스카이 어트모스피어를 추가하면 더 사실적인 야외 조명이 되며, 이 조합은 기본 조명 설정과 환경 조정에서 살펴봤습니다.
이동성을 조명 방식과 함께 고르기
이동성은 4장에서도 다뤘지만, 성능과 렌더링 방식에 직접 영향을 주므로 여기서 다시 정리합니다. 각 광원의 디테일 패널 위쪽에 있습니다.
Static은 위치와 회전, 색, 강도를 실행 중에 바꾸지 않는 광원입니다. 미리 굽는 경로에서 빌드한 조명과 그림자를 쓰므로, 실행 중의 조명 비용은 없지만 빌드 시간과 라이트맵 메모리가 필요합니다.
Stationary는 위치와 회전은 고정하고, 색과 강도는 실행 중에 바꿀 수 있는 광원입니다. 미리 구운 간접광과 실시간으로 계산하는 직접광을 섞어 씁니다. 기존 섀도 맵(Shadow Maps) 방식에서는 정적 그림자를 저장하는 채널 수 때문에, 한 지오메트리에 겹쳐 영향을 주는 Stationary 광원이 최대 4개로 제한될 수 있습니다. 이 제한은 레벨 전체의 광원 수가 아니라, 한 곳에 겹치는 광원의 수에 대한 것입니다.
Movable은 위치와 회전, 색, 강도를 모두 실행 중에 바꿀 수 있는 광원입니다. 실시간 그림자의 비용은 빛의 영향 범위와 빛을 받는 지오메트리의 양, 쓰는 그림자 방식에 따라 달라집니다.
루멘 글로벌 일루미네이션을 켜면 미리 계산한 정적 조명은 쓰이지 않습니다. 그래서 모든 프로젝트에서 Static을 먼저 쓰라는 규칙은 맞지 않습니다. 먼저 프로젝트가 고른 글로벌 일루미네이션 방식과 실행 중에 필요한 변화의 범위를 확인한 뒤 이동성을 고릅니다.
광원을 추가한 뒤에는 세 가지를 확인합니다. 필요한 범위만 비추는지, 그림자가 플레이에 필요한 정보를 전달하는지, 고정한 노출에서 의도한 밝기가 나오는지입니다.
정리
- 조명은 시각적 명확성, 분위기, 시선 유도, 게임 플레이, 공간감을 함께 만듭니다.
- 광원의 종류는 빛이 퍼지는 모양을, 이동성은 실행 중에 바꿀 수 있는 속성을 정하며, 미리 굽는 조명인지 루멘인지는 따로 정합니다.
- 디렉셔널 라이트는 회전이, 포인트 라이트는 위치가, 스포트 라이트는 위치와 회전이 빛을 정하고, 렉트 라이트는 Source Width와 Height로 면의 크기를 정합니다.
- 포인트 라이트의 Attenuation Radius 밖으로는 그 광원의 직접광이 닿지 않으며, 스포트 라이트는 안쪽과 바깥쪽 원뿔 각도 사이에서 부드럽게 약해집니다.
- 밝기를 비교할 때는 Intensity Units와 노출을 먼저 고정하며, 같은 숫자라도 단위와 노출이 다르면 같은 밝기가 아닙니다.
- Stationary는 기존 섀도 맵 방식에서 한 지오메트리에 겹치는 수가 4개로 제한될 수 있고, 루멘을 켜면 미리 계산한 정적 조명은 쓰이지 않습니다.
연습 문제
1. 감쇠 반경 밖의 표면
Attenuation Radius가 500인 포인트 라이트가 있습니다. 기본 길이 단위에서 이 반지름은 몇 m일까요? 광원에서 6 m 떨어진 표면에 이 광원의 직접광이 닿을까요? 그 표면은 완전히 검게 보일까요?
해설 보기
기본 길이 단위는 cm이므로 500 cm, 즉 5 m입니다. 6 m 떨어진 표면은 반지름 밖에 있으므로 이 광원의 직접광은 닿지 않습니다.
하지만 그 표면이 반드시 완전히 검게 보이는 것은 아닙니다. 다른 광원이나 스카이 라이트, 간접광이 그 표면을 비출 수 있기 때문입니다. 이 반지름이 제한하는 것은 이 광원 하나의 직접광입니다.
2. 같은 숫자인데 밝기가 다르다
두 레벨에 Intensity가 5000인 포인트 라이트를 하나씩 놓았는데, 한쪽이 훨씬 밝게 보입니다. 무엇을 먼저 확인해야 할까요?
해설 보기
먼저 두 광원의 Intensity Units가 같은지 확인합니다. 한쪽은 Lumens, 다른 쪽은 Candelas처럼 단위가 다르면 같은 숫자도 다른 밝기를 뜻합니다. Use Inverse Squared Falloff 설정이 같은지도 봅니다.
단위가 같다면 노출을 확인합니다. 자동 노출이 켜져 있으면 장면 전체의 밝기에 따라 카메라가 노출을 바꾸므로, 같은 광원도 다르게 보일 수 있습니다. 비교할 때는 노출을 고정하고, 광원의 거리와 Attenuation Radius, 주변의 다른 광원도 같은지 확인합니다.
3. 한 벽에 겹친 다섯 개의 조명
미리 굽는 조명과 기존 섀도 맵 방식을 쓰는 프로젝트에서, 복도의 한 벽에 Stationary 포인트 라이트 다섯 개가 겹쳐 비추도록 배치했습니다. 빌드한 뒤 하나의 그림자가 이상하게 보인다면, 무엇을 의심할 수 있을까요?
해설 보기
기존 섀도 맵 방식에서는 정적 그림자를 저장하는 채널 수 때문에 한 지오메트리에 겹쳐 영향을 주는 Stationary 광원이 최대 4개로 제한될 수 있습니다. 다섯 번째 광원은 이 제한을 넘으므로 그림자를 제대로 저장하지 못할 수 있습니다.
겹치는 광원의 수를 4개 이하로 줄이거나, 영향 범위를 줄여 겹치지 않게 하거나, 일부를 다른 이동성으로 바꾸는 방법을 검토합니다. 이 제한은 레벨 전체가 아니라 한 곳에 겹치는 광원의 수에 대한 것입니다.
광원의 종류와 설정은 Epic의 광원 종류와 이동성 안내에서 확인할 수 있습니다.
다음 글 그림자 옵션과 성능 최적화에서는 장면의 사실감과 형태를 드러내는 그림자의 방식과 설정을 살펴보고, 그 비용을 줄이는 방법을 다룹니다.