지난 포스트에서는 언리얼 엔진의 라이팅을 구성하는 요소들을 살펴봤다.
이번에는 실제 에셋 레벨의 조명을 직접 바꾸면서, 같은 공간이 빛과 하늘 설정에 따라 어떻게 달라지는지 확인했다.
먼저 기존 낮·밤 라이팅을 정리하고 기본 조명을 새로 배치했다.
이후 Directional Light와 Sky Light로 명암을 잡고, 하늘과 구름, 안개, Post Process Volume을 조절했다.
유리와 불 파티클을 통해 렌더링 방식의 차이도 비교했다.
후반부에는 HDRI Backdrop을 이용해 하늘과 환경광을 구성하고, 같은 레벨을 복사해 구름 낀 날과 야경을 만들었다.
이번 작업의 수치는 실습의 출발점으로 사용한 값이다.
다른 씬에서도 같은 값이 정답이 되는 것은 아니다.
기존 레벨의 낮·밤 라이팅 분리 확인하기
사용한 에셋은 건물과 거리가 들어 있는 기본 레벨에 낮과 밤의 라이팅 레벨을 연결한 구조였다.
따라서 화면에 보이는 조명을 수정하려면 먼저 해당 조명이 어느 레벨에 들어 있는지 확인해야 한다.
Levels 창을 열면 Persistent Level 아래에 Daytime_Lighting과 Nightime_Lighting이 보인다.
낮과 밤의 조명 구성이 분리돼 있어 필요한 환경을 표시하거나 숨길 수 있다.


위 이미지에서는 Daytime_Lighting이 표시되고 Nightime_Lighting은 숨겨진 상태로 보인다.
확인할 부분은 Persistent Level 아래에 낮과 밤의 라이팅이 별도 항목으로 존재한다는 점이다.
단순히 Outliner의 폴더 두 개로 분류한 것과는 다르다.


이번에는 원래 조명을 그대로 수정하기보다 새로 구성하기 위해 에셋 레벨을 복사했다.
복사한 작업 레벨에서 낮·밤 라이팅 Sub Level을 제거하면, 그 안에 있던 조명과 환경 액터도 더 이상 씬에 표시되지 않아 레벨이 어두워진다.


여기서 제거하는 것은 현재 작업 레벨에 연결된 Sub Level이다.
Content Browser의 원본 레벨 에셋을 삭제할 필요는 없다.
원본은 이후 가로등 등의 오브젝트를 가져오는 데에도 사용한다.

위 이미지의 Sub-Levels 폴더에는 낮·밤 레벨과 BuiltData가 함께 들어 있다.
산 모양 아이콘의 Level 에셋과 그 옆의 BuiltData는 같은 항목이 아니다.
나중에 레벨을 가져올 때도 실제 Level 에셋을 선택해야 한다.
기존 조명이 남아 있는 상태에서 새 라이트를 추가하면 어떤 빛이 결과를 만들었는지 구분하기 어려워진다.
시작 단계에서 소속을 정리해 두면 이후 밝기 조절이 훨씬 명확해진다.
기본 환경 액터 & 노출 설정하기
라이팅에 필요한 액터 배치
기존 라이팅을 정리한 레벨에 다음 액터를 추가했다.
| Actor | 이번 씬에서 맡는 역할 |
| Directional Light | 태양 방향의 직접광과 그림자 |
| Sky Light | 하늘과 주변 환경에 따른 조명 |
| Sky Atmosphere | 대기 산란에 따른 하늘 표현 |
| Volumetric Cloud | 입체적인 구름 표현 |
| Exponential Height Fog | 높이와 거리에 따른 안개 표현 |
| Post Process Volume | 노출, 색감, 렌즈 효과와 렌더링 설정 |
새 액터 정리: Make Current Folder
Outliner에서 라이팅용 폴더를 만든 다음, 폴더를 우클릭하고 Make Current Folder를 선택한다.
이후 뷰포트에 새로 배치하는 Actor는 해당 폴더에 들어간다.

다만 이미 배치한 Actor가 자동으로 옮겨지는 것은 아니며, 현재 폴더를 지정했다고 Actor의 저장 레벨까지 바뀌는 것도 아니다.
Directional Light & Sky Light Movable로 설정
두 라이트의 Details에서 Mobility를 Movable로 바꿨다.
이번처럼 조명의 방향과 밝기를 바꾸며 결과를 바로 확인하는 작업을 위한 설정이다.

수정 후에는 태양 각도를 바꾸었을 때 그림자가 따라 움직이는지 확인한다.
PPV의 적용 범위 & 노출 고정
Post Process Volume은 이하 PPV로 줄여 부른다.
PPV를 선택하고 Infinite Extent (Unbound)를 활성화하면 볼륨 경계 밖에서도 설정을 적용할 수 있다.
이번처럼 레벨 전체의 화면을 조절할 때 먼저 확인할 항목이다.

Exposure 항목에서는 Min EV100과 Max EV100의 체크박스를 켜고 값을 각각 1, 1로 맞췄다.
두 값을 같게 설정하면 자동 노출 적응이 중지되어, 밝은 곳과 어두운 곳을 바라볼 때 화면이 자동으로 달라지는 영향을 줄일 수 있다.

1이라는 값 자체가 낮 환경의 표준 노출이라는 뜻은 아니다.
이번 실습에서는 이 값을 기준으로 라이팅을 조절했다.
밝기 비교 중에는 카메라 위치와 노출을 유지하고, 조명 값을 바꾸었을 때 무엇이 달라졌는지 확인한다.
태양·하늘·안개 연결 확인
Directional Light에서는 Atmosphere Sun Light가 활성화돼 있는지 확인했다.
Sky Atmosphere에서 태양으로 사용할 라이트를 지정하는 설정이므로, 조명의 방향과 하늘의 태양 표현을 연결할 때 필요하다.

Sky Light에서는 Real Time Capture를 활성화했다.
하늘과 구름을 수정하는 과정에서 환경광도 변경된 하늘을 반영하도록 하기 위한 설정이다.
모든 씬 오브젝트를 매 프레임 그대로 복사한다는 의미는 아니다.

Exponential Height Fog에서는 Volumetric Fog를 켰다.
이후 안개 속에 빛이 퍼지는 정도와 공간의 깊이감을 함께 확인한다.
활성화만으로 원하는 광선이 반드시 나타나는 것은 아니므로, 안개 밀도와 조명 방향도 함께 봐야 한다.

Directional Light로 낮 씬의 명암 잡기
Directional Light를 회전시켜 건물에 빛이 들어오는 방향부터 조절했다.
정면에서 고르게 비추는 각도만 찾기보다, 밝은 면과 그늘진 면이 나뉘면서 건물의 입체감이 드러나는 각도를 찾는다.
조명을 움직일 때는 건물 벽만 보지 않고 바닥에 떨어지는 그림자의 길이와 방향도 함께 확인한다.
벽은 보기 좋더라도 그림자가 화면의 중요한 부분을 지나치게 가리면 카메라 구도에서는 답답하게 느껴질 수 있다.

위 이미지에서는 왼쪽 건물의 벽이 밝게 드러나고, 오른쪽 건물 아래와 도로에는 큰 그림자가 생겼다.
도로의 햇빛 구간과 그늘 구간이 나뉘어 태양 방향을 읽을 수 있다.
여기서 확인할 것은 특정 회전값보다 밝은 면·그늘진 면·바닥 그림자가 함께 만들어 내는 구조다.
이번 작업에서는 햇빛이 닿는 곳, 그늘진 벽, 그늘진 바닥의 밝기 차이를 기준으로 명암을 살펴봤다.
이 씬에서 직접광을 받는 면을 가장 밝게 두고 그늘 안에서도 차이를 만들려는 판단 기준으로 이해하면 된다.
Indirect Lighting Intensity 조절
Directional Light의 Indirect Lighting Intensity는 해당 라이트의 간접광 기여도를 조절하는 항목이다.
값을 바꾸면서 직접 햇빛이 닿지 않는 곳의 밝기와 주변에서 돌아오는 빛의 느낌을 확인했다.
조절할 때는 그늘을 무조건 밝게 만드는 것보다, 벽면의 형태가 읽히면서도 직접광을 받는 구간과 차이가 유지되는지 본다.
변화가 즉시 뚜렷하지 않으면 잠시 기다린 뒤 같은 화면에서 비교한다.
전체 노출까지 동시에 바꾸면 간접광 조절의 영향을 구분하기 어렵다.

Source Angle로 그림자 경계 조절
Source Angle은 광원의 각크기를 정하는 값이다.
지원되는 소프트 섀도 경로에서 값을 키우면 그림자 경계가 부드러워지고, 줄이면 더 선명한 인상으로 바뀐다.
태양의 방향을 바꾸는 회전값과는 다른 설정이다.
이번에는 그림자 모양이 읽히는 선명도를 유지하면서 경계가 너무 딱딱하지 않도록 조절했다.
부드러운 그림자를 과하게 만들면 사용하는 그림자 방식과 샘플 품질에 따라 노이즈가 드러날 수 있으므로, 가까운 경계와 멀리 퍼지는 부분을 함께 확인한다.
Source Angle 자체가 노이즈 제거 옵션은 아니다.

위 이미지에서는 원통형 게시대와 지지 구조의 형태가 바닥 그림자에 드러난다.
Source Angle을 조절할 때는 이런 세부 형태가 유지되는지, 그림자 가장자리가 지나치게 흐려지거나 거칠어지지 않는지 함께 확인한다.
그림자를 부드럽게 만드는 것과 형태를 잘 읽히게 만드는 것은 항상 같은 방향이 아니다.
구도가 잡힌 상태에서 경계를 조금씩 바꾸는 편이 결과를 판단하기 쉽다.
Sky Light로 그늘의 밝기 맞추기
Sky Light에서도 Indirect Lighting Intensity를 조절해 봤지만, 이번 씬에서는 변화가 뚜렷하게 보이지 않아 따로 수정하지 않았다.
이는 해당 옵션이 모든 프로젝트에서 무효라는 뜻은 아니다.
적용 중인 라이팅 방식과 화면에서 보고 있는 요소에 따라 체감 차이가 작을 수 있다.
이번 작업에서는 변화가 분명하게 드러나는 항목을 중심으로 조절했다.
Intensity Scale로 환경광 조절
Sky Light의 Intensity Scale을 바꾸며 그늘의 밝기와 씬 전체의 분위기를 맞췄다.
값을 높여 어두운 면의 디테일이 보이도록 하되, 낮추었을 때 밝은 면과 그늘의 대비가 어떻게 달라지는지도 비교한다.
이때 태양빛 자체가 부족한지, 환경광이 부족한지를 구분해야 한다.
건물의 햇빛 받는 면은 충분히 밝은데 그늘만 너무 검다면 Sky Light 쪽을 먼저 살펴볼 수 있다.
반대로 환경광을 과하게 올려 모든 면이 비슷하게 밝아지면 건물의 입체감이 약해질 수 있다.

Sky Atmosphere로 하늘색 조절하기
Sky Atmosphere의 Rayleigh Scattering Scale을 조절하며 대기 산란에 따른 하늘 변화를 확인했다.
이번 씬에서는 Rayleigh Scattering Scale을 높였을 때 노란 기운이 강해지고, 낮췄을 때 파란 기운이 두드러지는 변화를 확인했다.
다만 색 변화는 태양의 고도와 다른 대기 설정에 따라 달라지므로, 수치와 색상을 고정된 관계로 이해하면 안 된다.
Rayleigh 산란은 하늘의 푸른빛과 태양 고도에 따른 색 변화에 관여하며, 결과는 현재 태양 방향과 다른 대기 설정에 따라 달라지고, 조절 전후에는 태양 주변뿐 아니라 하늘 위쪽과 지평선도 함께 보는 것이 좋다.
Mie Scattering Scale은 공기 중 입자에 의한 산란의 정도를 조절한다.
값을 높이면 대기가 뿌옇고 탁한 느낌이 강해지고, 낮추면 상대적으로 맑게 보인다.
여기서 흐려진다는 것은 주로 대기의 탁도와 빛의 퍼짐에 관한 설명이다.
이 값만 높인다고 구름이 생성되는 것은 아니다.
구름의 양과 형태는 다음 Volumetric Cloud에서 별도로 조절했다.
Absorption Scale은 대기 흡수의 강도를 조절한다.
녹색과 보라색 기운의 변화를 확인했지만, 이는 현재 흡수색과 산란 설정이 조합된 결과다.
값을 높이면 지정된 파장 성분이 더 많이 흡수되므로, 단순히 특정 색을 더하는 것과는 다르다.
원하는 하늘색을 찾을 때는 한 항목씩 조절하고, 하늘색이 달라진 뒤 건물의 그늘색도 어색해지지 않았는지 확인해야 한다.
Volumetric Cloud 재질 수정하기
Volumetric Cloud에 적용된 재질을 확인한 뒤, 원본을 프로젝트 폴더에 복사해 이번 레벨에 적용했다.
구름을 수정할 때 원본 재질을 바로 바꾸면 같은 재질을 참조하는 다른 곳에도 영향을 줄 수 있기 때문이다.
복사 후에는 Volumetric Cloud의 Material 항목이 새 복사본을 가리키는지 확인한다.
복사만 하고 적용하지 않으면 수치를 바꿔도 씬의 구름은 달라지지 않는다.
사용 중인 에셋이 Material Instance라면 노출된 파라미터를 해당 인스턴스에서 조절한다.
복사한 Cloud Material의 파라미터를 바꾸며 구름이 씬에 어울리도록 수정했다.
먼저 화면에서 구름이 차지하는 큰 덩어리와 빈 하늘의 비율을 보고, 이후 가장자리와 내부 명암을 확인한다.
같은 구름이라도 카메라가 바라보는 방향에 따라 건물과 겹치는 형태가 달라진다.
재질 미리보기보다 실제 레벨의 구도에서 결과를 확인하는 것이 중요하다.
Exponential Height Fog 조절하기
Fog Density로 전체적인 안개 밀도를 조절했다.
값을 높이며 먼 건물과 나무의 대비가 얼마나 약해지는지 확인한다.
너무 강하면 씬 전체가 뿌옇게 가려지므로, 거리감을 만들려던 목적에 맞는지 다시 본다.
Fog Height Falloff는 높이에 따른 밀도 변화의 정도를 조절한다.
작은 값에서는 높이에 따른 변화가 더 완만하고, 큰 값에서는 낮은 곳과 높은 곳의 밀도 차이가 더 빠르게 나타난다.
값을 바꾼 뒤 바닥 부근만 탁해지는지, 건물 위쪽까지 안개가 퍼지는지 확인한다.
Fog Density와 역할이 다르므로 한 번에 같이 바꾸기보다 각각의 영향을 먼저 보는 것이 좋다.
Volumetric Fog의 Extinction Scale은 안개가 빛을 얼마나 약화시키는지 조절한다.
값을 높이면 더 짙게 빛을 가로막는 느낌이 나타날 수 있다.
Fog Density를 정한 뒤 이 값을 바꾸며 안개 속의 밝은 부분과 어두운 부분을 비교한다.
화면을 밝게 만드는 설정으로 이해하기보다, 빛의 투과와 가시거리에 영향을 주는 값으로 보는 것이 맞다.
Start Distance는 카메라에서 어느 정도 떨어진 지점부터 안개가 시작되는지 정한다.
가까운 오브젝트가 너무 뿌옇게 보이면 값을 조절해 전경은 선명하게 두고 먼 곳에서 안개를 읽히게 할 수 있다.
Exponential Height Fog와 Volumetric Fog에는 각각 관련 설정이 있으므로, 어느 분류의 Start Distance를 수정하는지 확인한다.
같은 이름이라고 해서 두 안개 표현이 모두 똑같이 변한다고 생각하면 안 된다.
End Distance는 카메라를 기준으로 수평 XY 방향의 일정 거리까지 안개의 라이팅과 투과율을 누적 계산하도록 제한하며, 0이면 이 제한을 사용하지 않는다.
값을 바꿨을 때 원경에 안개가 계속 누적되는 정도가 어떻게 달라지는지 확인한다.
일정 거리 밖 오브젝트에서 안개를 제외하는 Fog Cutoff Distance나, Volumetric Fog의 계산 범위인 View Distance와는 구분해야 한다.
PPV로 화면의 인상 조절하기
기본 명암과 하늘을 잡은 뒤 PPV에서 화면의 인상을 다듬었다.
각 값을 수정할 때는 왼쪽의 Override 체크박스도 확인한다.
체크하지 않은 값은 해당 볼륨에서 덮어쓰지 않기 때문에, 수치를 입력해도 의도한 설정이 적용되지 않을 수 있다.
Bloom
Bloom은 강한 하이라이트 주변으로 빛이 번져 보이는 효과다.
PPV의 Bloom에서 Method를 Convolution으로 바꾸고, 밝은 하늘이나 반짝이는 표면을 보면서 결과를 비교했다.

Convolution은 커널 이미지를 이용해 번짐 형태를 만든다.
따라서 단순히 ‘더 밝아지는 고급 옵션’으로 보기보다, 이번 장면에 어울리는 번짐의 모양을 선택하는 과정으로 이해하면 된다.
Intensity는 Bloom의 강도를 조절한다.
값을 올리면 밝은 부분의 번짐이 두드러지므로, 건물 디테일이나 가로등의 모양이 흰 덩어리로 뭉개지지 않는지 확인한다.
Convolution Scatter Dispersion은 커널의 산란 에너지에 적용하는 배율이다.
단순히 번짐 반경만 조절하는 값으로 설명하는 것은 정확하지 않다.
Intensity를 정한 뒤 이 항목을 바꿔 밝은 부분 주변에 퍼지는 빛의 인상을 조절한다.
Chromatic Aberration
Chromatic Aberration Intensity를 조금 추가했다.
색수차는 대비가 강한 경계, 특히 화면 주변에서 색이 미세하게 분리되는 렌즈 특성을 표현한다.
값을 올린 뒤 건물 외곽이나 나뭇가지처럼 하늘과 맞닿는 부분을 확인한다.
효과가 먼저 눈에 들어올 정도로 강하면 선명도가 떨어진 인상을 줄 수 있어, 이번에는 약하게 사용하는 방향으로 조절했다.
Lens Flare
Lens Flare는 밝은 광원이 렌즈 안에서 반사된 듯한 흔적을 더한다.
모든 장면에 켜기보다, 태양이나 가로등을 바라보는 구도에서 필요한지 확인한 뒤 사용한다.
적용 후에는 플레어가 시선을 유도하는지, 중요한 오브젝트를 가리는지 비교한다.
낮 씬에서 어울렸던 강도가 야경의 여러 가로등에서는 과할 수 있으므로 환경을 바꾼 뒤 다시 확인한다.
Vignette Intensity
Vignette Intensity를 조금 높여 화면 가장자리를 어둡게 했다.
중심부로 시선을 모으는 데 활용할 수 있지만, 실제 라이팅과 겹치면 구석이 과하게 검어질 수 있다.
조절할 때는 화면 중앙만 보지 않고 양옆 건물과 하단 도로의 정보가 얼마나 남는지도 확인한다.
원래 그늘이 깊은 야경에서는 더 작은 변화로도 효과가 강하게 느껴질 수 있다.
Color Grading
Color Grading에서 씬의 색감과 대비를 다듬었다.
빛의 방향을 정하는 단계가 아니라, 이미 만들어진 화면을 원하는 분위기로 정리하는 단계다.
하늘만 보기 좋게 만드는 것보다 건물 벽, 도로, 나뭇잎이 함께 자연스럽게 보이는지 확인한다.
밝은 부분이 날아가거나 그늘의 재질이 구분되지 않으면 색보정 강도를 되돌려 비교한다.
후처리를 여러 개 조금씩 더하면 전체 효과는 생각보다 강해질 수 있다.
중간에 효과를 끈 화면과 비교하면 어디까지가 라이팅이고 어디부터가 후처리인지 구분하기 쉽다.
Lumen GI 품질 & 갱신 속도 확인하기
Lumen Scene Lighting Quality
PPV에서 Lumen Scene Lighting Quality를 조절했다.
Lumen Scene의 라이팅 계산 충실도를 높이는 항목으로, 특히 반사 안의 조명 상태에서 차이를 확인할 수 있다.
값을 올린 뒤 반사면이나 그늘을 같은 위치에서 비교한다.
태양빛을 받는 넓은 벽만 보면 차이가 작을 수 있다.
변화가 보이지 않는다고 무조건 더 올리기보다, 개선하려던 부분을 먼저 정해 두는 편이 좋다.
Lumen Scene Detail
Lumen Scene Detail은 Lumen Scene에 표현되는 오브젝트 크기 기준에 관여한다.
높이면 더 작은 오브젝트도 포함될 수 있지만 비용이 증가한다.
가로등 주변의 작은 구조물이나 반사 속 소품이 제대로 보이는지 확인한다.
메시 자체의 폴리곤을 늘리거나 모든 텍스처를 선명하게 만드는 설정은 아니다.
Final Gather Quality
Final Gather Quality는 Lumen 간접광의 최종 수집 품질을 조절한다.
값을 높여 간접광의 노이즈가 줄어드는지 비교한다.
확인할 곳은 그늘진 벽면과 밝기가 고르게 보여야 하는 면이다.
전체 화면을 더 밝게 만들기 위한 값이 아니며, 이미 충분히 안정적인 장면에서는 차이가 작을 수 있다.
Lumen Scene Lighting Update Speed
Lumen Scene Lighting Update Speed는 바뀐 라이팅이 반영되는 속도에 관여한다.
낮으면 기존 결과를 더 활용하기 때문에 태양이나 환경광을 바꾼 뒤 조명이 늦게 따라오는 것처럼 보일 수 있다.
실습에서는 조명을 변경한 직후와 잠시 기다린 화면을 비교하면 이 차이를 이해하기 쉽다.
값을 높이면 더 빨리 반영되지만, 고정된 장면의 품질을 높이는 설정과는 목적이 다르다.
반사 방식 & 반사 품질 조절하기
Reflection Method의 Lumen과 Screen Space
PPV의 Reflections에서 Method를 선택할 수 있다.
이번에는 Lumen과 Screen Space의 차이를 간단히 확인했다.

Screen Space Reflections는 현재 화면의 정보를 활용하는 방식이다.
상대적으로 가볍지만 화면 밖이나 다른 물체에 가려진 정보를 활용하는 데 한계가 있다.
카메라를 움직일 때 반사가 끊기거나 사라지는 구간이 있는지 보면 차이를 이해하기 쉽다.
Lumen은 화면 추적과 추가적인 씬 추적을 조합해 반사를 처리한다.
화면 정보만으로 해결하기 어려운 반사도 보완할 수 있지만 비용과 지원 조건을 함께 고려해야 한다.
High Quality Translucency Reflections
High Quality Translucency Reflections를 활성화하면 가장 앞쪽 반투명 표면의 Lumen 반사를 개선할 수 있다.
유리창 표면에 비치는 환경을 비교하기 좋은 설정이다.
프로젝트 쪽의 해당 지원 설정도 확인하고, PPV에서 Override를 켠 뒤 결과를 비교한다.
이 옵션이 모든 유리 층과 내부 굴절을 한 번에 고품질로 바꾸는 것은 아니다.
Max Reflection Bounces
Max Reflection Bounces는 Lumen 반사 광선의 반복 반사 횟수를 제한한다.
반사 속에 다른 반사면이 있을 때 결과가 어떻게 바뀌는지 확인한다.
여러 번의 반사는 Hardware Ray Tracing과 Hit Lighting 조건이 필요하다.
숫자만 높이는 것보다 해당 조건이 갖춰져 있는지 먼저 확인하고, 중첩 반사에서 차이가 생기는지 본다.
Max Refraction Bounces
Lumen의 Max Refraction Bounces는 반사 추적 과정에서 허용하는 굴절 이벤트 수에 관여한다.
Hit Lighting을 사용할 때 반사 광선이 반투명 메시를 만나는 경우와 관련된다.
따라서 카메라로 직접 보는 유리의 Ray Traced Translucency 설정과 같은 것으로 묶으면 안 된다.
유리 자체가 어둡거나 불투명하게 보이는 문제와, 반사 속 유리가 빠지는 문제를 구분해서 조절한다.
Sky Light의 Cubemap Resolution
Sky Light의 Cubemap Resolution은 환경 큐브맵 한 면의 해상도를 정한다.
128, 256, 512처럼 2의 거듭제곱 값을 사용한다.
값을 높이면 큐브맵에 담는 환경의 세부 표현을 개선할 수 있지만 메모리와 처리 비용도 증가한다.

유리나 반사면에서 하늘과 환경의 세부가 달라지는지 확인한다.
다만 가까운 오브젝트의 반사가 깨지는 문제를 이 설정만으로 모두 해결할 수는 없다.
이것은 Sky Light 환경 정보의 해상도이며, PPV의 Lumen 반사 품질이나 반사 바운스를 대신하는 값이 아니다.

다수 조명 처리하기: MegaLights
MegaLights는 여러 동적 조명의 직접광을 효율적으로 처리하는 방식이다.
‘수천 개를 하나처럼 계산한다’는 설명은 효과를 이해하기 위한 비유로 볼 수 있지만, 실제로 라이트를 하나의 광원으로 합치는 것은 아니다.
각 픽셀에 중요한 조명을 중심으로 제한된 표본을 추적한다.
같은 픽셀에 영향을 주는 조명이 지나치게 복잡하면 노이즈나 잔상 등 품질 문제가 생길 수 있으므로, 조명 개수와 배치에 아무 제한이 없어지는 기술로 이해하면 안 된다.
프로젝트의 MegaLights와 하드웨어 지원 조건을 확인하고, PPV에서 MegaLights를 활성화해 비교했다.
UE 5.6에서 Directional Light는 MegaLights의 처리 대상이 아니고, Point·Spot·Rect 같은 로컬 라이트가 많은 환경에서 의미가 크다.

따라서 태양광 중심인 이번 낮 씬에서는 효과를 체감하기 어려울 수 있다.
그렇다고 낮에는 사용할 수 없다는 뜻은 아니다.
낮 환경이라도 실내나 그늘에 로컬 라이트가 많이 있으면 적용을 검토할 수 있다.
개별 라이트 제어: Allow MegaLights
라이트의 Allow MegaLights로 해당 라이트에 적용할지 선택할 수 있다.
특정 조명 주변에서 노이즈나 잔상이 두드러지면 그 라이트를 제외해 비교한다.

다만 다른 처리 방식으로 돌아간 비용도 생길 수 있다.
해제 후 모양만 좋아졌는지 보는 것에서 끝내지 말고 FPS도 함께 확인해야 한다.
Motion Blur & Film Grain
Motion Blur
PPV의 Motion Blur Amount로 움직임에 따른 흐림을 조절한다.
정지 화면에서 값을 비교하기보다 카메라를 움직여 건물 모서리와 나무가 얼마나 번지는지 확인한다.
이번 작업에서는 기본 강도가 다소 강하게 느껴질 수 있어 조절하는 방향으로 다뤘다.
이는 장면과 움직임에 따른 판단이다.
영상의 움직임을 부드럽게 표현하고 싶을 때 사용할 수 있지만, 항상 활성화해야 하는 필수 옵션은 아니다.
렌더링한 영상에 After Effects의 효과나 별도 플러그인을 이용해 Motion Blur를 추가하는 방법도 있다.
예를 들어 After Effects에는 영상의 움직임을 분석하는 Pixel Motion Blur가 있다.
후반 작업에서 조절하면 컷에 따라 강도를 바꾸기 편하지만, 겹치는 오브젝트나 빠른 움직임에서는 추정 오류가 보일 수 있다.
언리얼에서 이미 강하게 적용한 Blur를 다시 더하면 과해질 수 있으므로, 실제 재생 화면을 보면서 판단한다.
Film Grain
Film Grain Intensity를 조절하면 화면에 필름 입자 같은 질감을 더할 수 있다.
값을 올린 뒤 하늘이나 벽처럼 넓고 고른 영역에서 입자가 얼마나 보이는지 확인한다.

Film Grain은 After Effects에서 추가하고 컷마다 강도를 맞출 수도 있지만, 반드시 후반 편집에서 처리해야 하는 것은 아니다.
렌더링 노이즈와 의도적으로 더한 Film Grain은 서로 다른 요소이므로 구분해서 보는 것이 좋다.
Raster 유리 & Ray Traced 유리 비교
Translucency Method 확인
PPV의 Translucency Method는 반투명 표현을 처리하는 방식을 선택하는 항목이다.

Reflection Method는 표면에 비친 장면의 반사 방식, Translucency Method는 반투명 물체의 처리 방식이다.
이름이 비슷한 품질 옵션들이 있어도 어느 기능을 바꾸고 있는지 먼저 구분해야 한다.
비교용 Raster 유리 Material 만들기
새 Material을 만들고 구체에 적용했다.
먼저 Raster 상태에서 다음과 같이 설정했다.
| 항목 | 이번 작업 설정 | 확인할 역할 |
| Blend Mode | Translucent | 반투명 표현 사용 |
| Lighting Mode | Surface Translucency Volume | 표면용 반투명 라이팅 방식 |
| Refraction Method | Index of Refraction | 굴절률 기준의 굴절 표현 |
| Base Color | 우선 기본값 유지 | 이후 반사색과 함께 조절 |
| Metallic | 1 | 이번 비교용 재질의 반사색 제어 구성 |
| Specular | 0.5 | 이번 비교에서 사용한 실습값 |
| Roughness | 0 | 매끄러운 표면 |
| Opacity | 0.5 | 실습에서 사용한 반투명 정도 |
이 표는 일반 유리의 물리적 표준값이 아니라 이번 비교 작업에서 사용한 설정이다.
특히 Metallic 1이라고 해서 실제 유리가 금속이라는 뜻은 아니다.
또한 IOR 방식을 선택하는 것과 굴절률 값을 지정하는 것은 별개다.

Two Sided & Surface Forward Shading
다음으로 Two Sided를 활성화하고 Lighting Mode를 Surface Forward Shading으로 변경했다.
양면 처리와 표면 라이팅 방식을 조절하며 Ray Traced Translucency 비교에 사용할 재질을 준비하는 과정이다.


Two Sided를 켠다고 모델에 실제 두께가 생기는 것은 아니다.
구체처럼 표면을 통과하는 경로를 비교할 때는 재질 설정뿐 아니라 메시 형태도 결과에 영향을 준다.
이번 재질은 Metallic을 1로 설정했기 때문에 Base Color가 반사색에 직접 관여한다.
이 상태에서 밝은 무채색의 Value를 낮추면 반사색의 에너지도 낮아져 강한 반사를 줄이는 방향으로 조절할 수 있다.


Ray Traced Translucency & 굴절 활성화
PPV에서 Translucency Method를 Ray Traced로 바꾸고, Use Ray Traced Refraction을 활성화해 굴절을 활성화했다.

프로젝트에는 Hardware Ray Tracing을 사용할 수 있는 설정과 GPU·RHI 조건이 갖춰져 있어야 한다.
Windows 환경에서는 Project Settings에서 Default RHI의 DirectX 12 사용 여부와 Rendering의 Support Hardware Ray Tracing을 확인한다.
Compute Skin Cache 활성화 안내가 나타나면 관련 설정도 함께 적용한다.

적용 후에는 구체를 통과해 보이는 물체의 왜곡과 가장자리 반사를 비교했다.

위 이미지에서는 구체 안쪽의 나무가 휘어 보이고, 주변 건물과 바닥의 상이 가장자리를 따라 복잡하게 나타난다.
단순 투명도보다 뒤쪽 장면의 형태가 어떻게 달라졌는지에 주목하면 된다.
유리 비교는 ‘더 반짝이는 쪽이 좋다’로 판단하기 쉽다.
실제로는 뒤쪽 물체가 얼마나 자연스럽게 보이는지, 가장자리와 정면이 어떻게 다른지를 함께 보는 편이 도움이 된다.
Hit Lighting for Reflections & FPS 확인
PPV에서 Ray Lighting Mode를 검색하고 Override를 활성화한 뒤 Hit Lighting for Reflections를 선택했다.


이 모드는 Hardware Ray Tracing을 사용하는 Lumen 반사에서, 광선이 닿은 위치의 라이팅을 평가한다.
Surface Cache를 재사용하는 방식보다 반사 속 조명 표현을 개선할 수 있지만 비용이 높아질 수 있다.
Lumen 반사용 설정이지, GI와 모든 반사를 동시에 켜는 공통 스위치는 아니다.
Lumen에서 이 방식을 사용하려면 프로젝트의 Use Hardware Ray Tracing when available 설정도 확인한다.
Ray Tracing을 사용할 수 있다고 해서 반드시 Hit Lighting을 써야 하는 것은 아니다.
이번에는 반사 품질 차이를 보기 위해 선택하고, 구체 주변의 표현과 성능을 함께 확인했다.
Viewport Stats에서 FPS 표시
뷰포트의 눈 모양 메뉴에서 Viewport Stats - FPS를 활성화했다.
메뉴 배치가 다르면 뷰포트의 FPS 표시 항목을 찾아 켜면 된다.


위 이미지 오른쪽 위에는 36.49 FPS, 27.40 ms가 표시돼 있다.
당시 화면의 프레임 성능을 보여주는 값이다.
Viewport Scalability 낮추기
뷰포트가 무거우면 Viewport Scalability를 낮춰 작업 중 부담을 줄일 수 있다.
조절 후 카메라 이동이 부드러워지는지 확인한다.


다만 품질을 낮추면 조명과 그림자, 반사 등의 모습도 달라질 수 있다.
낮은 품질에서 배치를 정리한 뒤에는 최종 확인에 사용할 품질로 되돌려 라이팅을 다시 점검한다.
성능 병목에 따라 FPS가 크게 오르지 않을 수도 있다.
불 파티클이 보이지 않을 때 렌더링 방식 비교
레벨에 기본 불 Particle을 배치했지만, 당시 Ray Traced Translucency 상태에서는 불이 보이지 않았다.
위치를 잘못 배치한 것인지, 반투명 처리 방식 때문인지 구분하기 위해 PPV 설정을 바꿔 비교했다.


배치 위치의 기즈모가 있지만 불꽃은 나타나지 않는다.
Translucency Method를 Raster로 바꾸자 불이 정상적으로 보였다.
같은 이펙트를 둔 채 처리 방식을 바꾸어 표시 차이를 확인한 것이다.


앞선 화면과 비교하면 배치 위치에 이펙트가 나타났다는 점을 확인할 수 있다.
이번 씬에서는 불 표현을 확인할 때 Raster가 필요한 선택이었다.
그러나 이를 ‘Ray Traced에서는 모든 파티클이 안 보인다’는 규칙으로 일반화하면 안 된다.
실제 결과는 파티클의 렌더러와 재질, 사용한 기능에 따라 달라진다.
유리와 파티클이 함께 있는 최종 씬에서는 두 요소를 동시에 확인한다.
특정 유리만 보기 좋게 설정하고 이펙트가 사라지는 문제를 놓치지 않는 것이 중요하다.
Path Tracing으로 씬 비교하기
뷰포트의 View Mode에서 Path Tracing을 선택해 실시간 화면과 비교했다.
이 모드는 샘플을 누적해 결과를 정리하므로 전환 직후나 카메라 이동 직후에는 노이즈가 많이 보일 수 있다.

위 이미지를 보면 Path Tracing이 선택돼 있고, 도로와 하늘에 입자 형태의 노이즈가 남아 있다.
구체의 반사와 주변 명암도 앞선 화면과 다르게 보인다.
PPV의 Path Tracing에서 Samples Per Pixel을 줄이면 목표 샘플 수에 더 빨리 도달하지만, 노이즈가 더 남거나 디노이즈 후 디테일이 뭉개질 수 있다.


수치를 바꾸고 같은 화면을 비교할 때는 ‘분위기를 바꾸는 옵션’으로 보기보다 결과가 충분히 안정됐는지를 본다.
낮은 샘플 때문에 밝기나 질감이 불안정해 보일 수 있어, 그 상태를 기준으로 라이팅을 다시 바꾸지 않도록 한다.
뷰포트에서는 목표 샘플에 도달한 뒤 Denoiser가 활성화돼 있으면 남은 노이즈를 줄이는 처리가 이뤄진다.
잠시 후 화면이 갑자기 정돈되는 듯 보이는 이유다.
자동으로 동작하는 조건은 디노이저가 활성화돼 있는 상태다.
샘플이 지나치게 부족하면 작은 디테일까지 부드럽게 지워질 수 있으므로, 디노이즈를 샘플 부족을 완전히 대신하는 기능으로 보지는 않는다.
라이팅 레벨에서 필요한 오브젝트 가져오기
기존 Sub Level에 들어 있던 오브젝트가 필요하면 Content Browser의 해당 Level 에셋을 씬으로 드래그해 가져온다.
이때 Outliner에서 Level Instance로 배치된 상태인지 확인한다.



처음 Levels 창에서 연결을 제거한 Sub Level과, 지금 씬에 배치한 Level Instance는 같은 레벨 에셋을 활용하더라도 편집 방식이 다르다.
뒤의 Break 작업은 Level Instance를 풀어내는 과정이다.
레벨 에셋을 가져오면 가로등 같은 모델뿐 아니라 Directional Light, Sky Light, Fog, PPV 등 기존 환경 구성도 함께 들어올 수 있다.
이미 만든 라이팅과 겹치면 화면이 달라지거나 경고가 나타날 수 있다.

Directional Light가 두 개라는 이유만으로 언제나 오류가 발생하는 것은 아니다.
반투명 등에 사용할 Directional Light의 Forward Shading Priority가 같거나 Sky Light가 중복된 경우처럼 구체적인 조건이 중요하다.
Outliner에서 가져온 Level Instance를 우클릭하고 Level - Break 메뉴를 연다.
Keep Folders를 체크한 뒤 Break Level Instances를 실행하면 폴더 구성을 유지한 채 내부 액터를 현재 레벨에서 다룰 수 있다.


Break는 단순히 편집 잠금을 잠깐 해제하는 것이 아니라 인스턴스를 개별 액터로 풀어내는 작업이다.
원본 레벨 에셋을 삭제하는 것은 아니지만, 이 동작을 되돌릴 수 없으므로 실행 전 복사본을 저장해 두는 편이 좋다.
풀어낸 액터 중 기존 라이팅을 만드는 조명과 환경 액터를 제거하고, 이번 씬에 필요한 가로등 등의 모델을 남긴다.
가로등 메시와 실제 Light 컴포넌트는 구분해서 확인한다.
이후 새로 만든 환경 조명만 작동하는지 확인한다.
이 과정을 마쳐야 기존 밤 라이팅을 통째로 섞는 대신, 필요한 오브젝트에 직접 조명을 배치할 수 있다.

HDRI Backdrop으로 낮 환경 만들기
앞에서는 Sky Atmosphere와 Volumetric Cloud를 직접 조절했다.
이번에는 촬영된 HDRI 이미지를 배경과 환경광에 활용하는 방식으로 같은 공간을 구성했다.
에셋 레벨을 다시 복사하고, 앞과 같이 낮·밤 라이팅 Sub Level을 작업 레벨에서 제거했다.
기존 조명이 없는 상태에서 시작해야 HDRI가 화면에 어떤 영향을 주는지 확인하기 쉽다.
HDRI Backdrop 플러그인 활성화
Plugins에서 HDRI Backdrop을 검색해 활성화하고 에디터를 재시작한다.
재시작 후 HDRI Backdrop 액터를 배치할 수 있는지 확인한다.


플러그인을 활성화하는 것만으로 기존 하늘이 자동으로 교체되지는 않는다.
액터를 배치하고 사용할 이미지를 지정하는 과정까지 진행해야 한다.
HDRI 이미지 선택 & Import
이번 거리 씬에서는 지평선 주변에 가까운 나무나 건물이 적은 HDRI를 골랐다.
기존 3D 건물과 겹치거나, 가까운 물체가 배경 돔에 크게 늘어져 보이는 문제를 줄이기 위한 선택이다.
선택한 HDRI를 Content Browser로 Import한 뒤 큐브맵으로 사용할 수 있는 에셋인지 확인한다.
HDRI는 하늘 모양뿐 아니라 밝기 분포도 중요하다.
맑은 하늘 이미지라도 태양이 있는 방향과 밝은 영역이 다르면 씬에 주는 인상도 달라진다.

HDRI Backdrop을 레벨에 배치하면 기본으로 지정된 이미지가 배경에 나타난다.
이번 실습에서는 돔 형태의 배경이었으며, Size를 키워 작업할 공간을 충분히 감싸도록 했다.


Size를 바꾼 뒤 카메라 위치에서 배경과 지평선이 자연스럽게 이어지는지 확인한다.
단순히 오브젝트를 덮었다는 이유만으로 이미지의 원근까지 정확해지는 것은 아니다.
HDRI는 촬영된 환경을 투영하는 방식이므로, 씬의 3D 지형과 실제로 동일한 공간은 아니다.

바닥으로 늘어지는 HDRI 수정
HDRI 안의 나무나 건물, 지평선 부근의 이미지가 배경 메시의 바닥 부분에 투영되면 길게 늘어져 보일 수 있다.
이번 씬에서도 거리 주변으로 이미지가 늘어져 나타나, 기존 지형과 배경이 자연스럽게 이어지지 않았다.

이를 줄이기 위해 HDRI Backdrop의 Z 위치를 낮춰 배경 메시의 바닥 부분이 기존 지형 아래에 놓이도록 조절했다.
조절 후에는 카메라 위치에서 늘어진 이미지가 더 이상 드러나지 않는지 확인했다.

이때 HDRI Backdrop 액터의 위치와 Projection Center는 구분해야 한다.
액터의 위치는 배경 메시 전체를 이동시키고, Projection Center는 HDRI 이미지가 투영되는 기준점을 바꾼다.
높이를 조절한 뒤에는 바닥과 배경이 자연스럽게 이어지는지, 씬의 밝기에 이상이 생기지 않았는지도 함께 확인한다.
배경의 크기만 계속 키우기보다, 무엇이 늘어지는지와 어떤 기즈모를 움직이는지 확인하면 불필요한 시행착오를 줄일 수 있다.
Cubemap 교체 & Z축 회전
HDRI Backdrop의 Cubemap에 Import한 HDRI를 넣는다.
적용 후 기본 배경이 선택한 하늘 이미지로 바뀌는지 확인한다.


이후 HDRI Backdrop의 Z축 Rotation을 조절해 하늘을 돌렸다.
원하는 구름이 건물 사이에 보이는 방향, 태양이 장면과 어울리는 방향을 찾는다.
여기서 회전하는 것은 촬영된 이미지의 방향이며, 이미지 안 구름을 새로 생성하거나 이동시키는 시뮬레이션은 아니다.


내장 Sky Light & 추가 액터
HDRI Backdrop에는 Sky Light 컴포넌트가 포함돼 있다.
그래서 별도의 Sky Light를 다시 배치하지 않고, Directional Light, Exponential Height Fog, PPV를 추가했다.

앞에서 사용한 Sky Atmosphere와 Volumetric Cloud를 추가하지 않은 것은 HDRI 이미지가 하늘과 구름의 배경 역할을 하기 때문이다.
HDRI 씬의 PPV 설정
새 PPV에서도 Infinite Extent (Unbound)를 활성화하고, Min EV100과 Max EV100을 1, 1로 맞췄다.
앞선 실습과 같이 자동 노출 변화의 영향을 줄인 상태에서 밝기를 조절하기 위한 출발점이다.
HDRI를 바꾸면 같은 노출과 Intensity에서도 밝기가 달라질 수 있다.
이미지의 밝기 정보가 서로 같지 않기 때문이다.
먼저 노출을 고정한 뒤 HDRI와 조명의 강도를 맞추는 순서를 유지했다.
HDRI 태양 & Directional Light 방향 맞추기
HDRI에 태양이 보이거나 한쪽이 강하게 밝다면, 그 방향에 맞춰 Directional Light를 회전한다.
하늘의 밝은 쪽과 건물에 빛이 닿는 쪽이 서로 어울리는지 확인한다.

방향을 맞춘 뒤에는 바닥 그림자를 본다.
HDRI의 태양이 화면 왼쪽에 있는데 그림자가 그 광원과 맞지 않는 방향으로 드리워지면, 각각의 요소가 보기 좋아도 장면 전체는 어색해질 수 있다.
각도를 맞춘 Directional Light를 Outliner에서 HDRI Backdrop의 자식으로 연결했다.
이후 HDRI Backdrop의 Z축을 회전하면 라이트도 함께 돌아가도록 하기 위한 구성이다.

Attach 후에는 라이트의 방향이 연결 전과 같게 유지됐는지 확인하고, 부모를 조금 회전해 하늘과 그림자가 함께 움직이는지 시험한다.
HDRI Backdrop의 Intensity
HDRI Backdrop의 Intensity는 배경 이미지의 발광 밝기와 내장 Sky Light의 강도에 관여한다.
값을 올리면 하늘과 환경광이 함께 밝아지는 방향으로 바뀐다.

조절 후에는 하늘만 보지 않고 그늘진 벽과 도로를 같이 확인한다.
배경은 적당한데 씬이 너무 밝거나 어두우면 내장 Sky Light 쪽을 별도로 확인했다.
내장 Sky Light의 Cubemap & Intensity
HDRI Backdrop의 Sky Light 컴포넌트를 선택해 Source Type을 SLS Specified Cubemap으로 설정하고, Cubemap에 배경과 같은 HDRI를 지정했다.
Real Time Capture가 켜져 있다면 이번처럼 지정한 큐브맵을 사용하는 작업에서는 꺼져 있는지도 확인한다.

그다음 Sky Light의 Intensity를 조절해 물체가 받는 환경광의 강도를 맞춘다.
기본 HDRI Backdrop은 상위 설정이 내장 컴포넌트와 연결돼 있다.
HDRI Backdrop의 Intensity나 Cubemap을 다시 바꾼 뒤에도 컴포넌트 값을 완전히 독립된 값으로 가정하지 말고, 최종 상태를 다시 확인하는 게 좋다.
이번 작업에서는 배경을 먼저 정하고 환경광을 조절한 뒤, 배경과 물체의 밝기를 함께 비교하는 순서로 마무리했다.

이 화면에서는 파란 하늘과 흰 구름이 배경에 보이고, 왼쪽 건물과 나무는 밝게 드러나는 반면 오른쪽 건물 아래에는 그늘이 남아 있다.
HDRI 교체 결과를 볼 때는 하늘이 바뀌었다는 사실뿐 아니라, 건물과 나뭇잎의 빛 방향이 배경과 자연스럽게 연결되는지 확인한다.

같은 레벨로 구름 낀 날씨 만들기
완성한 HDRI 낮 레벨을 복사해 흐린 날 작업용 레벨을 만들었다.
같은 건물과 카메라 구도를 유지하면 날씨 변화의 영향을 비교하기 쉽다.
HDRI Backdrop의 Cubemap을 구름이 많이 낀 HDRI로 교체하고, 내장 Sky Light의 Cubemap도 같은 이미지인지 확인했다.
배경은 흐린데 환경광은 맑은 낮 이미지를 사용하는 상태가 되지 않도록 하기 위한 과정이다.


Directional Light 제거
이번에는 짙은 구름 아래에서 태양의 뚜렷한 직접광이 드러나지 않는 장면을 만들기 위해 Directional Light를 삭제했다.
이후 바닥의 선명한 태양 그림자가 사라지는지 확인한다.
이는 모든 흐린 날 씬에서 반드시 라이트를 삭제해야 한다는 뜻은 아니다.
이번 작업에서는 HDRI의 환경광을 중심으로 표현하는 방향을 선택했다.
배경과 환경광을 어둡게 조절
HDRI Backdrop의 Intensity와 Sky Light의 Intensity를 조절해 분위기를 어둡게 만들었다.
하늘의 먹구름 느낌은 유지하면서 건물의 형태가 읽힐 만큼 밝기를 남기는 것이 목표다.


흐린 날이라고 해서 현실에서도 언제나 어두운 것은 아니다.
이번 씬은 구름이 짙게 낀 무거운 분위기를 표현하기 위해 어둡게 설정했다.
따라서 노출을 무조건 낮추기보다 배경과 환경광의 관계를 함께 본다.

앞선 맑은 낮 이미지와 비교하면 하늘이 회색 구름으로 바뀌고, 건물과 나무에 생기던 강한 밝기 차이가 줄어들었다.
도로와 보행로도 전체적으로 어두워졌다.
그림자가 완전히 없는 장면이라기보다, 뚜렷한 태양 직접광 중심의 명암이 약해진 결과로 보는 것이 맞다.
이번에는 흐린 하늘의 색과 밝기 분포를 빠르게 가져오기 위해 HDRI를 사용했다.
배경 이미지 자체에 구름 형태가 들어 있어 분위기를 잡기 편하다.
맑은 낮에서 만든 강한 대비를 그대로 유지하지 않고, 흐린 환경에 맞게 다시 조절하는 과정이 중요했다.
하늘 이미지만 바꿨을 때보다 직접광과 환경광까지 함께 맞췄을 때 날씨의 차이가 더 자연스럽게 읽힌다.

밤하늘 HDRI로 야경 만들기
흐린 날 레벨을 다시 복사해 야경 작업용 레벨을 만들었다.
HDRI Backdrop의 Cubemap을 밤하늘 이미지로 교체하고, 내장 Sky Light에도 같은 HDRI가 연결됐는지 확인했다.


적용 직후에는 장면이 지나치게 어두워 형태를 파악하기 어려웠다.
낮이나 흐린 날에 맞춘 값을 그대로 사용했기 때문에, 밤 HDRI에 맞는 밝기 조절이 다시 필요했다.
PPV의 Exposure Compensation을 약 3으로 조절해 어두운 화면의 정보를 확인한 뒤, HDRI Backdrop과 Sky Light의 Intensity를 다시 맞췄다.



Exposure Compensation을 높이는 것은 실제 가로등을 추가하는 것과 다르다.
화면의 노출을 보정하는 과정이므로, 이후 밝은 조명을 넣으면 발광 부분이 지나치게 밝아질 수 있다.
3은 이번 실습에서 사용한 값이며 밤 씬의 표준값은 아니다.

이번 작업에서는 밤하늘보다 바닥이나 외벽이 과하게 밝아지지 않도록 주의했다.
이를 조명 없는 넓은 면이 이유 없이 환하지 않도록 한다는 기준으로 적용했다.
실제 조명이 비추는 벽과 바닥은 밤하늘보다 밝을 수 있다.
가로등 주변까지 하늘보다 어둡게 만들어야 하는 것은 아니다.
어디서 빛이 들어오는지 설명되는 밝기 차이를 만드는 것이 중요하다.
가로등 오브젝트 & Point Light 배치
에셋의 밤 라이팅 Level을 씬으로 가져오고, 필요하면 앞에서 진행한 것처럼 Level Instance를 풀었다.
함께 들어온 기존 조명과 환경 액터는 제거하고 가로등 등의 오브젝트를 남겼다.


이번 야경을 만들 때 필요한 것은 에셋의 기존 조명 전체가 아니라, 조명을 배치할 기준이 되는 가로등 모델이다.
Outliner에서 기존 Light가 남아 있지 않은지 확인해야 새로 놓는 Point Light의 효과를 구분할 수 있다.
가로등의 발광부와 비슷한 높이에 Point Light를 추가했다.
빛의 위치가 가로등과 크게 떨어지면 모델과 실제로 밝아지는 부분이 따로 노는 느낌이 날 수 있다.

배치 후에는 가로등 주변의 바닥뿐 아니라 가까운 나무와 건물 벽을 함께 확인한다.
라이트가 모델이나 벽 안에 들어가지 않도록 위치도 살펴본다.
Attenuation Radius를 늘려 빛이 영향을 주는 범위를 정했다.
값을 바꾸면서 가로등 아래에만 빛이 머무는지, 보행로와 주변 벽까지 닿는지 확인한다.
반경을 키우는 것은 광원 자체의 밝기를 높이는 것과 다르다.
무조건 크게 잡으면 이웃 조명과 과도하게 겹쳐 어두운 구간이 사라지므로, 필요한 공간을 비추는 정도로 맞춘다.
범위를 정한 뒤 Intensity로 조명의 밝기를 맞췄다.
가로등 주변은 분명하게 밝아지되, 나뭇잎이나 벽면의 색이 흰색으로 뭉개지지 않는지 확인한다.
색은 Light Color 또는 Temperature로 조절할 수 있다.
Temperature를 사용할 때는 Use Temperature도 확인한다.
따뜻한 가로등 느낌을 줄지, 중성적인 빛으로 갈지 정한 뒤 바닥과 벽에 반영되는 색을 본다.
MegaLights 활성화 & 간격 조절
PPV의 MegaLights를 활성화하고 Point Light를 띄엄띄엄 배치했다.
중요한 것은 많은 라이트를 빈틈없이 채우는 것이 아니라, 밝은 구간과 어두운 구간이 반복되도록 만드는 것이다.


가로등 아래가 밝아지고 다음 가로등까지 가는 구간은 조금 어두워지면 거리의 깊이가 읽힌다.
반대로 범위가 모두 겹치면 밤하늘 아래에 낮처럼 고르게 밝은 바닥이 생길 수 있다.
MegaLights를 켰더라도 조명 배치는 여전히 중요하다.
특히 동일한 영역에 여러 라이트가 집중되지 않도록 반경과 간격을 함께 조절한다.
여기서 확인할 것은 단순히 라이트 개수가 많다는 점이 아니다.
밝은 영역이 길을 따라 반복되며 시선이 안쪽으로 이어지는지, 흰 발광부 주변의 나뭇잎과 바닥이 지나치게 날아가지 않는지 살펴본다.
정면 구도만 보고 끝내지 않고, 옆 거리에서도 Point Light의 영향 범위를 확인했다.
정면에서는 자연스러워 보여도 옆 건물에 불필요한 밝은 얼룩이 생길 수 있기 때문이다.
도로와 건물 벽이 어디까지 밝아지는지, 맞은편이나 먼 영역까지 범위가 지나치게 넓어지지 않았는지 확인하기 좋다.
이미지에 보이는 구형 선 자체는 렌더링되는 빛이 아니라 편집용 범위 표시다.
필요하면 Attenuation Radius와 위치를 먼저 조절하고, 그다음 Intensity를 다시 맞춘다.
여러 라이트가 겹친 영역의 노이즈나 잔상도 카메라를 움직여 확인한다.
야경은 라이트를 더할수록 완성되는 것처럼 느껴지지만, 어느 부분을 어둡게 남길지 정할 때 빛의 역할이 더 분명해진다.

이번 포스트에서는 같은 거리 레벨을 대상으로 기본 낮 라이팅을 다시 구성하고, HDRI를 이용한 맑은 날·흐린 날·야경을 비교했다.
건물과 배치를 유지해도 태양 방향, 환경광, 하늘 이미지, 가로등의 간격에 따라 공간의 인상이 크게 달라졌다.
유리와 파티클을 비교하면서는 한 가지 렌더링 옵션만 보고 품질을 판단하기 어렵다는 점도 확인했다.
반사나 굴절이 좋아져도 필요한 이펙트가 사라지거나 작업 성능이 떨어지면 씬 전체를 기준으로 다시 선택해야 한다.
최종 확인에서는 카메라를 고정한 상태의 명암과 색감, 움직일 때의 노이즈와 FPS를 함께 봤다.
설정값을 높이는 것보다, 장면에서 실제로 필요한 변화가 생겼는지 확인하는 과정이 중요했다.
'3D Video Production > Unreal Engine (5.6.1)' 카테고리의 다른 글
| UE 5.6 MetaHuman: Metahuman 제작부터 Mixamo 애니메이션 Retarget과 Attach까지 (0) | 2026.09.11 |
|---|---|
| UE 5.6 Lighting: 그림자부터 Light Function까지 (0) | 2026.09.10 |
| UE 5.6 Lighting: Lumen부터 하늘·안개·Post Process까지 (0) | 2026.09.08 |
| UE 5.6 실내 모델링 & C4D 아치형 창문 만들기 (0) | 2026.09.08 |
| UE 5.6 Modeling Mode: 메시 결합·UV·노멀·머티리얼 수정하기 (0) | 2026.09.07 |