언리얼 엔진의 라이팅 시스템은 씬에서 라이트가 오브젝트와 인터랙션하는 방식을 시뮬레이션합니다. 여기에는 표면에 적용된 머티리얼, 지오메트리의 섀도잉, 리플렉션, 애트머스피어 및 클라우드, 포그 등 다양한 엘리먼트가 포함됩니다. 이러한 엘리먼트는 서로 결합되어 게임의 분위기, 가독성, 비주얼 퀄리티를 정의하는 사실적이면서도 스타일라이즈된 비주얼을 만들어냅니다.
이 가이드에서는 다음과 같은 내용을 먼저 살펴봅니다.
선택할 수 있는 라이트 액터의 타입
씬에서 라이트 액터를 배치하고 사용하는 방법
라이트의 공통 프로퍼티
시작하기 전에
다음과 같은 주제는 신규 사용자를 위한 언리얼 엔진 문서에서 다루는 내용이므로 반드시 이해하고 넘어가야 합니다.
액터 변환과 뷰포트 사용을 포함한 언리얼 에디터 기초
블루프린트 컴포넌트 추가 및 편집
샘플 프로젝트 파일에서는 다음과 같은 에셋을 사용합니다.
BP_TrapSpikes블루프린트
라이트 타입과 비헤이비어
언리얼 엔진에는 씬에 라이트와 섀도를 적용할 수 있는 다섯 가지 라이트 타입이 포함되어 있습니다. 크기와 범위가 다양한 라이트 소스를 활용하여 현실 세계의 라이팅을 리플리케이트하는 다양한 룩을 제작할 수 있습니다.
씬에 배치하여 사용할 수 있는 라이트 액터는 두 가지 카테고리로 나눌 수 있습니다.
인바이런먼트 라이팅은 씬 전체에 영향을 미치는 자연광 라이트로, 레벨의 전체 분위기와 시간대, 그리고 조도를 결정합니다.
디렉셔널 라이트는 주로 야외 환경에서 사용되는 라이트로, 거의 무한에 가까운 매우 먼 거리에서 라이트가 비추는 것처럼 동작합니다. 이 라이트는 주로 태양이나 달을 표현하는 데 사용됩니다.
스카이 라이트는 씬의 앰비언트 라이팅을 캡처하여 적용함으로써 어두운 공간을 보다 자연스럽고 효과적으로 밝히는 데 도움을 줍니다. 이 라이트는 환경 배경을 캡처하여 레벨 지오메트리에 적용합니다.
로컬라이즈드 라이팅에는 월드 내 실제 오브젝트를 표현하는 타기팅된 라이트 소스가 포함되며, 플레이어의 시선을 끌거나 사실성을 높이기 위해 배치되는 경우가 많습니다.
포인트 라이트는 전구처럼 하나의 지점에서 모든 방향으로 라이트를 발산하는 전방향 라이트입니다.
스포트 라이트는 라이트 소스 주변에서 원뿔 형태의 제한된 방향으로 단일 포인트에서 라이트를 발산하는 라이트입니다. 이러한 라이트는 손전등과 유사한 방식으로 작동합니다.
에어리어 라이트라고도 부르는 렉트 라이트는 직사각형 표면에서 한 방향으로 라이트를 발산합니다. 또한 라이트의 각 면에 가상의 셔터를 조정할 수 있는 프로퍼티를 제공함으로써 표면에 투영되는 라이트의 셰이프를 부드럽게 하거나 선명하게 조정할 수 있습니다. 이러한 라이트는 일반적으로 직사각형 창문이나 천장 조명에 사용되며, 넓은 영역에 부드러운 바운스 라이트를 제공하는 데에도 활용할 수 있습니다.
일반적인 라이트 액터 조정 항목에는 강도, 컬러, 라이트 소스 크기, 온도(따뜻한 라이트 또는 차가운 라이트)가 포함됩니다. 또한 각 라이트 타입에는 해당 기능만의 고유 프로퍼티가 있습니다. 예를 들어 스포트 라이트의 원뿔 각도나 렉트 라이트의 크기 및 각도를 조절할 수 있습니다.
루멘 글로벌 일루미네이션을 사용하면 지원되는 경우 이미시브 머티리얼을 또 다른 타입의 라이트 소스로 활용할 수 있습니다.
게임플레이를 위한 라이팅
씬 라이팅은 단순히 플레이어가 보게 하는 것을 넘어, 라이트를 통해 플레이어와 소통하는 수단이 될 수 있습니다. 관심 영역이나 경로에 라이트를 추가하면 대비와 비저빌리티를 만들어내 플레이어를 해당 방향으로 유도할 수 있습니다. 주워서 수집할 수 있는 아이템에 빛나는 이펙트를 적용하면 해당 오브젝트가 중요하므로 확인할 필요가 있다는 점을 플레이어에게 알릴 수 있습니다. 라이팅을 사용하면 게임에 시각적인 언어를 부여할 수도 있습니다. 예를 들어 초록색 라이트가 적용된 오브젝트는 항상 체력 회복 아이템을 의미하고, 주황색 라이트가 적용된 문은 출구를 나타내도록 설정할 수 있습니다.
라이트는 분위기와 스토리텔링 요소도 플레이어에게 전달해 줍니다. 라이트의 강도, 컬러, 포그에 대한 영향, 볼류메트릭 섀도잉(라이트 빔)을 조정하면 씬 지오메트리를 변경하지 않고도 공간에서 느껴지는 분위기를 차분하거나 영감이 넘치는 느낌 또는 공포 분위기로도 바꿀 수 있습니다.
월드 라이팅 구성
먼저 레벨의 인바이런먼트 라이팅을 조정하여 이후 추가할 로컬라이즈드 라이팅이 잘 보이게 합니다.
작업하는 동안 레벨 에디터에서 블로킹 볼륨을 숨기려면 뷰포트 툴바의 눈 모양 버튼(표시 플래그)을 클릭하고 볼륨(Volumes)으로 이동하여 블로킹(Blocking)을 비활성화합니다.
로컬라이즈드 라이팅을 적용하기 전에 레벨을 어둡게 설정하려면 다음 단계를 따릅니다.
포스트 프로세스 볼륨을 추가합니다.
생성(Create) 드롭다운 메뉴를 사용하여 씬에 포스트 프로세스 볼륨(Post Process Volume)을 추가합니다.
디테일 패널의 포스트 프로세스 볼륨 세팅(Post Process Volume Settings) 카테고리에서 무한 규모(언바운드)(Infinite Extent (Unbound))를 활성화합니다.
렌즈(Lens) > 노출(Exposure) 카테고리에서 최소 EV100(Min EV100)과 최대 EV100(Max EV100)을
1.0으로 설정합니다.선택 사항: 다른 레벨 오브젝트로 작업할 때 실수로 선택하지 않도록 볼륨을 밖으로 이동합니다. 이 볼륨은 레벨 전체에 적용되므로 배치 위치는 중요하지 않습니다.
디렉셔널 라이트를 조정합니다.
아웃라이너에서 DirectionalLight를 검색하여 선택합니다.
이 액터를 찾으려면 아웃라이너 검색창을 사용합니다. 또는 레벨의 모든 인바이런먼트 라이팅 액터를 보려면 아웃라이너 오른쪽 상단의 세팅(톱니바퀴 아이콘)을 클릭하고 모두 접기(Collapse All)를 선택한 다음 'Level' 폴더를 펼칩니다.
씬에서 다른 라이팅 이펙트를 작업하기 쉽도록 강도(Intensity)를
0.75로 낮춥니다. 강도는 라이트가 발산되는 양을 설정합니다.
볼류메트릭 포그를 활성화합니다.
아웃라이너에서 ExponentialHeightFog를 검색하여 선택합니다.
디테일(Details) 패널의 볼류메트릭 포그(Volumetric Fog) 카테고리에서 볼류메트릭 포그를 활성화합니다. 이 세팅은 씬의 외형을 즉시 바꾸지는 않지만, 공기 중에 라이트를 스캐터링하여 라이트 빔이나 부드러운 대기 발광 이펙트를 표현할 수 있도록 환경을 구성합니다.
포스트 프로세스 볼륨은 모든 라이팅과 머티리얼이 그려진 다음에 카메라에 최종적으로 표시되는 씬이 렌더링되는 방식을 조정합니다. 최소 및 최대 노출 한계치를 동일한 값으로 설정하면 라이팅이 안정화되며, 해당 범위 내에서 엔진의 자동 노출 조정으로 인해 씬이 밝아지거나 어두워지는 현상을 방지할 수 있습니다.
이 튜토리얼 시리즈의 이후 파트에서 볼류메트릭 포그, 환경 라이팅, 포스트 프로세싱 이펙트에 대해 더 자세히 배우게 됩니다.
다음으로 Start Room에서 세 가지 타입의 라이트를 추가하여 서로 다른 결과를 연출하는 방법을 살펴봅니다. 이 세 가지 라이트와 비헤이비어는 참고용일 뿐이며, 이 씬에서 반드시 이 세 가지 라이트만 사용해야 하는 것은 아닙니다. 이 방이나 다른 공간에 필요에 따라 여러 개의 라이트를 배치할 수 있습니다.
이 튜토리얼을 따라 진행하거나 각 라이트의 세팅을 조정하여 프로젝트에 원하는 룩을 구현할 수 있습니다.
열쇠 위에 스포트 라이트 추가
스포트 라이트는 단일 포인트에서 라이트를 발산하며 원뿔 셰이프의 디렉셔널 라이트를 비춥니다. 다음은 스포트 라이트의 프로퍼티를 변경하는 데모입니다.
플레이어의 시선을 열쇠로 유도하고 그 중요성을 강조하기 위해 Start Room의 열쇠 위에서 아래로 라이트를 비추는 스포트 라이트를 추가합니다.
라이트 프로퍼티에 대해 자세히 알아보려면 디테일 패널에서 프로퍼티 이름 위에 커서를 올리면 됩니다. 이렇게 하면 해당 프로퍼티에 대한 정보가 툴팁으로 표시됩니다.
레벨에 스포트 라이트를 추가하려면 다음 단계를 따릅니다.
레벨 에디터 툴바에서 생성 > 라이트(Lights) 메뉴를 사용하여 씬에 스포트 라이트를 추가합니다.
첫 번째 열쇠가 위치한 기둥 위에 배치합니다. 기둥 중앙 위에 위치하도록 정렬하고, 바로 위쪽으로 높이를 올립니다.
오브젝트 위치를 조정할 때 직교 상단 뷰를 사용할 수 있습니다. 또는 BP_Key 블루프린트를 선택하고 해당 위치(Location) 값을 복사하여 디테일 패널의 라이트 위치(Light’s Location)에 붙여 넣을 수도 있습니다.
라이트 세팅을 환경설정하려면 다음 단계를 따릅니다.
스포트 라이트를 선택한 상태에서 디테일 패널에서 다음 세팅을 변경합니다.
강도: 100
어테뉴에이션 반경(Attenuation Radius): 500
이 세팅은 라이트가 도달하는 범위를 제어합니다. 기둥 상단이나 열쇠가 놓인 위치를 약간 넘을 정도까지 도달하지만, 기둥 아래 바닥까지는 닿지 않도록 값을 조정합니다. 라이트의 높이를 조절하여 라이트가 열쇠에 닿는 정도를 조정합니다.
외부 원뿔(Outer Cone): 20
소스 반경(Source Radius): 50
이 세팅은 라이트 소스 자체의 크기를 설정합니다. 이에 따라 라이트와 섀도의 부드러움 또는 선명도가 달라집니다. 라이트 소스의 크기를 키우면 열쇠 주변의 라이트 스캐터링이 증가하여 열쇠의 섀도가 더욱 부드러워집니다. 표면 위의 오브젝트와 섀도가 형성되는 지점 사이의 거리 또한 섀도가 얼마나 부드럽게 보일지에 영향을 미칩니다.
볼류메트릭 스캐터링 강도(Volumetric Scattering Intensity): 15~50
원하는 결과가 나올 때까지 이 값을 조정합니다.
가시 함정 블루프린트에 포인트 라이트 추가
포인트 라이트는 모든 방향으로 라이트를 발산합니다. 다음은 포인트 라이트의 프로퍼티를 변경하는 데모입니다.
포인트 라이트를 사용하여 가시 함정에 불타는 듯한 발광 이펙트를 추가합니다. 블루프린트에 추가하면 레벨에 배치된 모든 가시 함정 액터에 해당 라이트가 자동으로 적용됩니다.
가시 함정 블루프린트에 포인트 라이트를 추가하려면 다음 단계를 따릅니다.
Start Room에서 함정 구역에 있는 BP_TrapSpikes 인스턴스 중 하나를 선택합니다. 아웃라이너에서 BP_TrapSpikes 편집(Edit BP_TrapSpikes)을 선택하여 블루프린트 에디터에서
BP_TrapSpikes블루프린트를 엽니다.블루프린트의 컴포넌트를 확인하려면 뷰포트 탭을 선택합니다.
컴포넌트(Components) 패널에서 추가(Add)를 클릭하고 목록에서 포인트 라이트(Point Light)를 선택합니다. 이렇게 하면 뷰포트의 중앙 지점(월드 0 위치)에 포인트 라이트가 추가됩니다.
포인트 라이트를 선택한 상태에서 Z축 방향으로 30유닛 위로 이동하여 뷰포트에서 가시 메시 상단 근처에 위치하게 만듭니다.
씬에서 이펙트를 확인하기 위해 레벨 에디터로 돌아갑니다.
이제 라이트의 프로퍼티를 수정하여 분위기를 변경하고 개성 있는 연출을 만듭니다.
가시 함정의 발광 이펙트를 조정하려면 다음 단계를 따릅니다.
BP_SpikeTrap에서 PointLight 컴포넌트를 선택한 상태로 디테일 패널에서 다음 프로퍼티를 변경합니다.강도: 40
어테뉴에이션 반경: 300
소스 반경: 5
온도 사용(Use Temperature): 활성화
온도(Temperature): 1700
이 세팅은 켈빈 색온도 스케일을 기반으로 라이트 컬러를 따뜻한 톤이나 차가운 톤으로 변경합니다.
볼류메트릭 스캐터링 강도: 40
이 프로퍼티는 앞에서 활성화한 볼류메트릭 포그와 인터랙션합니다.
강도 유닛(Intensity Units): 루멘 - 광선속, 정규화됨(Lumens - Luminous Flux, Normalized)
가시 함정을 더욱 위협적으로 보이게 하려면 모든 원뿔 메시 컴포넌트를 선택하고 스케일 기즈모를 사용하여 Z축(파란색) 방향으로 가시를 확대합니다. 가시가 날카로울수록 섀도가 더 뚜렷하게 표시되어 이 구역이 위험하다는 것을 시각적으로 전달할 수 있습니다.
InvisFloor 메시 컴포넌트를 선택하고 스파이크 높이에 맞춰 위로 이동합니다. 이 보이지 않는 플랫폼은 플레이어 메시가 가시 사이에 끼는 것을 방지합니다.
뷰포트에서 바닥을 보이게 하려면 디테일 패널의 렌더링(Rendering) 섹션에서 표시(Visible)를 활성화합니다. 블루프린트 편집이 끝나면 이 세팅을 다시 비활성화하는 것을 잊지 마세요.
TrapTrigger 컴포넌트를 선택하고 가시 상단을 넘도록 크기와 위치를 조정합니다. 이렇게 하면 플레이어가 함정 위에 착지했을 때 가시의 대미지 이펙트가 트리거됩니다.
블루프린트를 컴파일(Compile)하고 저장(Save)합니다.
게임을 실행하여 새 가시를 테스트합니다. 다음 항목이 올바르게 완료되었는지 확인합니다.
플레이어가 가시 사이에 끼지 않도록 보이지 않는 바닥을 적절히 배치했는지 확인합니다.
플레이어가 함정 위에 서 있어도 대미지를 받도록 'TrapTrigger' 콜리전 박스 크기를 적절히 설정했는지 확인합니다.
출입구 위에 스포트 라이트 추가
다음으로는 컬러가 설정된 문에 라이트를 비춥니다. 이미 스포트 라이트와 포인트 라이트에서 사용한 프로퍼티에 볼류메트릭 포그를 결합하여 문에 흥미로운 라이팅 이펙트를 생성합니다.
문에 라이트를 비추려면 다음 단계를 따릅니다.
노란색 문에는 스포트 라이트를 추가하고, 문틀에 달아 놓은 스포트 라이트처럼 보이도록 문 위나 처마 바로 아래에 배치합니다. 문에서 몇 미터 떨어진 방향을 향하도록 회전시킵니다.
스포트 라이트를 선택한 상태에서 Alt 키를 누른 채 X축과 Y축(빨간색 및 초록색 핸들)을 드래그하여 복제합니다. 복사본을 파란색 문 앞으로 이동하고 다시 복제하여 빨간 문 앞에도 배치합니다.
디테일 패널에서 라이트에 다음 프로퍼티를 설정합니다.
소스 반경: 5
볼류메트릭 스캐터링 강도: 50
이 프로퍼티는 앞에서 활성화한 볼류메트릭 포그와 인터랙션합니다.
라이트가 다음과 같이 보입니다.
강도: 100
노란색 문 앞에 있는 라이트를 선택합니다. 디테일 패널에서 라이트 컬러(Light Color) 컬러 피커를 클릭합니다. 컬러 피커(Color Picker) 창에서 컬러를 노란색으로 변경합니다. 샘플 레벨과 동일한 컬러를 사용하려면 16진수 sRGB(Hex sRGB) 프로퍼티에
FFFF89FF를 입력합니다. 컬러 변경사항을 적용하려면 확인(OK)을 클릭합니다.다른 두 스포트 라이트의 라이트 컬러 프로퍼티도 각 문 컬러에 맞게 변경합니다. 샘플 레벨과 일치시키려면 다음과 같은 16진수 sRGB 값을 사용할 수 있습니다.
빨간색 문 라이트: FF8989FF
파란색 문 라이트: 8989FFFF
이제 각 문 위에 컬러가 적용된 라이트가 배치되었으므로 어떤 열쇠로 해당 문을 열 수 있는지 시각적으로 표시됩니다.
창문에 렉트 라이트 추가
렉트 라이트는 직사각형 표면에서 한 방향으로 라이트를 발산합니다. 다음은 렉트 라이트의 프로퍼티를 변경하는 데모입니다.
시각적으로 뛰어난 이펙트를 연출하고, 플레이어가 첫 번째 열쇠에 도달하기 위해 점프할 수 있는 발판으로 시선을 유도하기 위해 근처 창문에 렉트 라이트를 추가합니다.
창문을 통해 라이트가 비춰지도록 설정하려면 다음 단계를 따릅니다.
레벨 에디터 툴바에서 생성 > 라이트 메뉴를 사용하여 씬에 렉트 라이트를 추가합니다.
라이트의 노란색 직사각형 와이어프레임은 라이트의 크기와 반 도어 각도 및 반 도어 길이를 나타내며, 이는 렉트 라이트의 빔 셰이프와 투영 방식을 제어합니다.
렉트 라이트를 창문 바깥쪽에 배치합니다. 회전시켜 벽의 개구부를 통해 라이트가 비춰지도록 배치하여 방 안에 라이트와 섀도를 형성합니다.
디테일 패널에서 강도를
200으로 변경합니다.소스 너비(Source Width)와 소스 높이(Source Height)를 창문 크기와 대략 일치하도록 조정합니다. 샘플 레벨에서는 Start Room의 렉트 라이트 너비가
400, 높이가200으로 설정되어 있습니다.방 안에서 생성되는 라이트와 섀도의 각도 및 강도가 원하는 결과가 나올 때까지 라이트 위치를 조정합니다.
이제 다음과 유사한 결과가 표시됩니다.
렉트 라이트에서는 소스 텍스처를 할당하여 라이트에 컬러를 입히고 씬에 개성 있는 연출을 추가할 수 있습니다. 라이트가 표면에 가까울수록 할당된 소스 텍스처의 디퓨즈 이펙트가 줄어듭니다.
렉트 라이트에 소스 텍스처를 추가하려면 다음 단계를 따릅니다.
렉트 라이트를 선택합니다. 디테일 패널의 라이트(Light) 카테고리에서 소스 텍스처(Source Texture) 에셋 할당 슬롯으로 이동합니다.
드롭다운 메뉴를 클릭하고 ColorGradingWheelGradient 텍스처를 검색하여 선택합니다.
이 텍스처는 엔진 콘텐츠에 포함되어 있으며, 드롭다운 목록에 자동으로 표시됩니다.
이제 다양한 컬러의 라이트가 방 안으로 투영됩니다.
라이트 소스로 이미시브 머티리얼 사용
마지막으로 루멘 글로벌 일루미네이션 시스템을 사용하여 라이트를 발산하는 머티리얼을 생성합니다. 이 머티리얼에는 원하는 컬러를 사용할 수 있습니다.
이미시브 머티리얼을 생성하려면 다음 단계를 따릅니다.
콘텐츠 브라우저에서 'Content > AdventureGame > Artist' 폴더로 이동합니다.
'Artist' 폴더에
Materials라는 새 폴더를 생성합니다.콘텐츠 브라우저의 AdventureGame > Artist > Materials 폴더에서 빈 영역을 우클릭하거나 추가 버튼을 클릭하여 머티리얼(Material)을 선택합니다.
이 튜토리얼은 튜토리얼 샘플 레벨과 퍼즐 어드벤처 디자인하기에서 사용하는 에셋 디렉터리 구조를 사용한다고 가정합니다.
머티리얼 에셋의 이름을
M_Emissive로 짓고 더블클릭하여 엽니다.에셋을 한눈에 식별할 수 있도록 접두사를 사용하는 에셋 명명 규칙을 권장합니다. 예를 들어 튜토리얼 샘플 프로젝트에서는 머티리얼 이름에
M_을 사용하는 명명 규칙을 따릅니다.머티리얼 그래프(Material Graph)에서 M_Emissive 머티리얼 노드의 이미시브 컬러(Emissive Color) 입력 옆에 있는 컬러 피커를 클릭하여 컬러를 설정합니다. 샘플 레벨과 동일하게 설정하려면 다음 값을 변경합니다. 16진수 sRGB 값을
00FF0000으로 설정합니다.새 컬러를 적용하려면 확인을 클릭하고 컬러 피커 창을 닫습니다.
머티리얼에서 적용(Apply)을 클릭하고 저장합니다.
다음으로는 씬에 지오메트리를 추가하고 해당 지오메트리에 머티리얼을 적용합니다.
레벨에서 이미시브 머티리얼을 사용하려면 다음 단계를 따릅니다.
콘텐츠 브라우저에서 Content > LevelPrototyping > Meshes로 이동하여
SM_Cylinder메시 두 개를 현재 작업 중인 방에 추가합니다. 방의 어두운 구석에 얇은 기둥 형태가 되도록 크기를 조정하고 배치합니다. 샘플 레벨을 사용하는 경우에는 노란색 문과 파란색 문 옆의 기둥 두 개를 복제하여 방 앞쪽 모서리로 이동합니다.콘텐츠 브라우저를 열고
M_Emissive를 두 기둥에 드래그하여 해당 메시 셰이프에 머티리얼을 적용합니다. 변경사항이 적용되기까지 몇 초 정도 걸릴 수 있습니다.
머티리얼을 라이트 소스로 사용하려면 프로젝트에서 루멘이 활성화되어 있어야 합니다. 라이트 소스로 사용하는 이미시브 머티리얼은 고스팅 이펙트가 더 많이 발생할 수 있으며, 작고 밝은 라이트 소스에는 적합하지 않습니다. 이러한 제한 사항을 고려하여 이미시브 머티리얼은 과도하지 않게 사용하는 것이 좋습니다.
이제 방은 다음과 같은 모습이 됩니다.
다음 순서
다음 섹션에서는 머티리얼을 더욱 자세히 다루며, 런타임에서 컬러와 밝기를 동적으로 변경할 수 있는 유연한 머티리얼을 만들기 위해 인스턴싱을 사용하는 방법을 배우게 됩니다. 이를 통해 씬을 더욱 자유롭게 수정할 수 있습니다.