Fab에서 가져온 에셋은 바로 배치해서 사용할 수 있는 경우도 있지만, 실제 씬에 넣어 보면 머티리얼이 의도와 다르게 적용되거나 발광 부위가 제대로 분리되지 않은 경우도 있다.
이번 작업에서는 이전에 C4D에서 리토폴로지로 새롭게 만든 램프 발광면을 정리한 뒤, 언리얼 엔진으로 다시 가져와 Material Slot을 수정했다.
이후 Emissive 머티리얼과 Material Instance를 만들고, 어두운 지하 공간에 Spot Light와 Rect Light를 배치해 실내조명을 구성했다.
특히 이번에는 단순히 장면을 밝히는 것이 아니라, 램프가 실제 광원처럼 보이도록 만들고 플레이어가 이동해야 할 공간과 시선이 머물러야 할 지점을 조명으로 구분하는 데 중점을 뒀다.
Fab 에셋 분리하기
Fab 에셋은 여러 오브젝트가 하나의 Static Mesh로 묶여 들어오는 경우가 있다.
여러 구조물을 개별 오브젝트로 사용하려면, 먼저 하나의 Mesh로 묶인 지오메트리를 분리해 줄 필요가 있다.

분리 작업은 기본 Select Mode에서 Modeling Mode로 변경한 뒤 진행했다.

그리고 XForm - Split을 사용하면 연결되지 않은 지오메트리를 각각의 Mesh로 분리할 수 있다.


이번 작업에서는 Split Mode를 By Vertex Overlap으로 설정했다.
정점의 연결과 중첩 상태를 기준으로 분리 범위를 판단해, 하나의 에셋 안에 함께 들어 있던 상자들을 각각 나누는 데 사용했다.
분리 전에는 하나의 에셋처럼 보였던 상자들이 Split 결과 미리보기에서는 서로 다른 색으로 구분된다.
이 색상은 최종 머티리얼 색상이 아니라, 어떤 지오메트리가 각각의 Mesh로 나뉘는지 확인하기 위한 표시다.
Pivot 위치 정리하기
오브젝트를 분리한 뒤에는 Pivot이 정중앙에 있지 않거나, 원래 묶음 에셋 기준 위치에 남아 있는 경우가 있다.

Pivot은 오브젝트의 이동, 회전, 스케일 기준이 되는 위치다.
따라서 상자나 문처럼 특정 기준점을 중심으로 움직여야 하는 오브젝트는 Pivot 위치를 미리 정리해 두는 편이 좋다.
Modeling Mode의 XForm 카테고리에서 Edit Pivot을 선택한 뒤, Center를 사용하면 Pivot을 Mesh 중앙으로 옮길 수 있다.


Pivot은 단순히 화면에 보이는 중심점처럼 느껴질 수 있지만, 이후 배치나 애니메이션 작업에서 회전 기준이 된다.
처음 구조를 정리할 때 Pivot까지 함께 확인해 두면, 이후 수정 과정이 훨씬 편해진다.
Plane Cut으로 필요한 부분만 남기기
Fab 에셋 중 일부 구조만 사용하고 싶을 때는 Plane Cut을 활용할 수 있다.
Plane Cut은 평면을 기준으로 Mesh를 자르는 도구다. 필요 없는 부분이 한쪽에 몰려 있거나, 특정 높이와 방향을 기준으로 잘라내야 할 때 사용하기 좋다.


평면의 위치와 각도를 조절하면 필요한 부분만 남겨 사용할 수 있다.

다만 잘라낼 구조가 복잡하게 얽혀 있거나 여러 방향으로 나뉘어 있다면, Plane Cut만으로 해결하기보다 Split, Delete, 선택 편집을 함께 사용하는 편이 더 정확할 수 있다.
Nanite Triangle Visualization으로 Mesh 구조 확인하기
에셋 구조를 정리한 뒤에는 Nanite 적용 여부도 함께 확인했다.
기존 LOD 방식은 카메라와의 거리에 따라 서로 다른 단계의 Mesh를 보여 주는 방식이다.
반면 Nanite는 고밀도 Mesh를 화면에 필요한 수준으로 처리하도록 설계된 가상화 지오메트리 시스템이다.
Fab이나 Megascans처럼 폴리곤 수가 많은 에셋을 사용할 때 특히 활용하기 좋다.
언리얼에서는 Viewport의 Lit 메뉴에서 Nanite Visualization - Triangles를 선택하면 Nanite Mesh의 삼각형 구조를 시각적으로 확인할 수 있다.

화면이 여러 색의 삼각형으로 보이는 것은 텍스처 오류가 아니라, Nanite Triangle Visualization이 활성화된 상태다.


이 화면은 최종 결과를 확인하는 용도라기보다, Mesh의 삼각형 밀도와 Nanite가 처리하는 구조를 확인하기 위한 디버그 화면에 가깝다.
이번 작업에서는 Nanite가 적용되지 않은 에셋을 선택해 Enable Nanite Support와 Preserve Area 옵션을 함께 확인했다.


다만 두 옵션은 같은 기준으로 적용할 항목은 아니다.
Enable Nanite Support는 고밀도 Mesh나 복잡한 Fab 에셋에 적용 여부를 검토할 수 있는 설정이다.
하지만 단순한 상자나 저폴리 오브젝트까지 모두 Nanite로 바꾼다고 해서 항상 큰 이점이 생기는 것은 아니다.
또한 Preserve Area는 나뭇잎, 풀, 철망처럼 얇고 분리된 면이 많은 식생 계열 Mesh에서 면적 손실을 줄이기 위한 옵션에 가깝다.
일반 상자, 벽, 램프, 가구처럼 단단한 구조물에는 보통 필요하지 않으므로, Nanite 적용 여부와 Preserve Area 적용 여부는 따로 판단하는 편이 좋다.
Nanite를 적용했다고 해서 모든 성능 문제가 해결되는 것은 아니다.
텍스처 해상도, 머티리얼 복잡도, 그림자, 라이팅, VRAM 사용량은 별도로 확인해야 한다.
램프 발광 부위 수정
에셋 구조와 Nanite 적용 여부를 확인한 뒤에는 램프의 발광 부위 문제를 수정하는 작업을 진행했다.
가져온 램프 에셋에는 이미 Emissive 관련 머티리얼 설정이 들어 있었지만, 값을 높이면 실제 전구 부분만 밝아지는 것이 아니라 램프 전체가 밝아지는 문제가 있었다.



이런 경우에는 머티리얼 값만 수정하기보다, 실제로 빛나야 하는 부분을 별도의 Mesh 또는 별도의 Material Slot으로 분리하는 편이 정확하다.
따라서 언리얼에서 램프 Mesh를 Export한 뒤, C4D에서 발광 부위를 새롭게 만들기 위한 리토폴로지 작업을 진행했다.
언리얼에서 C4D로 Export 하기
언리얼에서 C4D로 Export할 Static Mesh를 우클릭한 뒤 Asset Actions - Export를 선택한다.

이번처럼 발광 부위만 수정하기 위해 Export하는 경우에는 불필요한 정보가 함께 넘어가지 않도록 Level of Detail과 Collision 옵션을 해제하고 Export했다.

Export한 FBX 파일은 C4D에서 열 수 있다.
C4D에서 파일을 열면 FBX와 함께 넘어온 머티리얼 표현의 영향으로 오브젝트가 검게 보일 수 있다.

이때 Options에서 Materials를 해제하면 머티리얼 표시가 사라지고, 기존 Mesh의 토폴로지 흐름을 확인할 수 있다.


Polygon Pen으로 리토폴로지 시작하기
C4D에서 불러온 Mesh는 삼각형이 많고 복잡한 구조로 보일 수 있다.
리토폴로지 작업을 위해 Polygon Pen의 Reproject Result 옵션을 켜고, 기존 램프 표면을 기준으로 발광 부위의 외곽선을 따라 새 폴리곤을 만들기 시작했다.



이때 원본 Mesh의 모든 삼각형을 그대로 따라가기보다, 발광 부위의 형태를 유지하는 데 필요한 만큼만 면을 잡고 가능한 한 정리된 흐름을 만드는 것이 중요하다.
발광면을 덮을 수 있도록 외곽선을 따라 새로운 면을 만든 뒤, 기존 모델에 남아 있던 발광 부위는 삭제했다.


그다음 새로 만든 발광면과 램프 본체를 하나의 오브젝트로 정리했다.



이때 중요한 것은 오브젝트를 하나로 합치는 것만이 아니다.
발광면과 본체가 같은 Mesh 안에 있더라도, 서로 다른 머티리얼을 적용할 수 있도록 Material Slot이 분리되어 있어야 한다.
이번 작업에서는 램프 본체와 발광면에 각각 다른 머티리얼을 적용해 두 개의 재질 영역으로 구분했다.




겉으로는 하나의 램프처럼 보여도, 내부적으로 발광면과 금속 프레임이 따로 구분되어 있어야 언리얼 엔진에서 원하는 부위만 밝게 만들 수 있다.
FBX로 Export한 뒤 언리얼 엔진으로 다시 가져오기
Mesh와 Material Slot을 정리한 뒤에는 FBX로 Export하고 언리얼 엔진에 다시 Import했다.

FBX로 가져온 Mesh는 외부 3D 프로그램에서 설정한 여러 머티리얼 영역을 Static Mesh의 Material Slot으로 가져올 수 있다.
다만 Import 후 Material Slot이 두 개로 보인다고 해서, 면 분리가 완전히 정상이라는 뜻은 아니다.
실제로 각 Slot의 머티리얼을 바꿔 보면서 발광면과 본체가 정확히 구분되는지 확인해야 한다.


Import한 램프로 기존 램프를 교체한 뒤, Material Slot별로 머티리얼을 바꿔 보면서 발광 부위가 제대로 분리되었는지 확인했다.


하지만 Slot은 두 개로 나뉘어 있었음에도, 실제 면 선택 상태가 의도한 대로 나뉘지 않은 부분이 있었다.
이런 경우에는 머티리얼을 새로 만드는 것보다, Mesh의 Material ID를 다시 정리해야 한다.
Modeling Mode에서 발광 부위 다시 분리하기
언리얼 엔진에서 Material ID를 수정할 때는 Modeling Mode를 사용했다.
Modeling Mode의 Attributes - Edit Materials에서는 Mesh의 면을 직접 선택하고, 선택한 면에 원하는 Material Slot을 할당할 수 있다.


작업 중 램프 가까이에서 면을 선택할 때 모델 일부가 잘려 보인다면 r.SetNearClipPlane 명령어를 사용해 Near Clip Plane 값을 일시적으로 조절할 수 있다.
다만 지나치게 작은 값은 작업이 끝난 뒤 원래 값으로 되돌리는 편이 좋다.

먼저 Materials Array에 새 슬롯을 추가하고, 확인하기 쉬운 임시 머티리얼을 넣어 두었다.
이 과정에서는 어떤 면이 어느 슬롯에 연결되어 있는지 눈으로 확인하는 것이 중요하다.

기존 발광면 중 잘못 지정된 영역은 삭제하고, 새로 만든 발광면만 선택했다.


그다음 Active Material을 발광용 Material Slot으로 지정한 뒤, Assign Active Material을 적용했다.


이 과정을 거치면 램프 본체는 기존 재질을 유지하면서, 새로 선택한 발광면에만 별도의 Emissive 머티리얼을 적용할 수 있다.

Material Slot은 단순히 재질 목록을 늘리는 기능이 아니라, 어떤 폴리곤이 어떤 머티리얼을 사용할지 결정하는 구조다.
그래서 발광 머티리얼을 만들기 전에는 재질 수보다 면 선택과 Material ID가 올바르게 지정되었는지를 먼저 확인해야 한다.
Emissive 머티리얼 & Material Instance 만들기
발광면이 분리된 뒤에는 별도의 Emissive 머티리얼을 만들었다.

기본 머티리얼에서는 밝기 조절용 Scalar Parameter를 만들고, 이를 Emissive Color에 연결했다.

이후 부모 머티리얼을 기반으로 Material Instance를 만들면, 머티리얼 그래프를 다시 열지 않아도 발광 강도를 조절할 수 있다.


램프 발광면에는 만들어 둔 Material Instance를 적용하고, 전체 장면의 밝기와 비교하면서 Emissive Intensity를 조절했다.

이 단계에서는 램프가 충분히 밝아 보이는지보다, 주변 나무 벽이나 금속 기둥보다 과하게 눈에 띄지 않는지를 함께 확인했다.
조명 배치
Spot Light로 조명 다시 구성하기
기존에 공간을 밝혀주기 위해 배치되어 있던 Point Light는 우선 숨긴 뒤, Spot Light를 중심으로 조명을 다시 구성했다.

Spot Light는 원뿔 형태로 빛의 방향과 범위를 조절할 수 있기 때문에, 복도처럼 길고 좁은 공간에서 시선을 유도하기 좋다.

이번 작업에서는 조명의 위치와 밝기를 실시간으로 조절하기 위해 Spot Light의 Mobility를 Movable로 설정하고, Intensity Units를 Lumens로 변경했다.
Lumen Global Illumination을 사용하는 프로젝트에서는 사전 계산된 Static Lighting 결과가 제거된다.
이번처럼 조명의 위치와 밝기, 각도를 계속 조절해야 하는 작업에서는 Spot Light를 Movable로 설정해 실시간으로 확인하면서 배치했다.


Lumen 환경에서는 작은 면에 지나치게 강한 Emissive 값을 주면 노이즈나 플리커링이 생길 수 있다.

이런 현상이 보이면 먼저 Emissive Intensity를 낮추거나 발광면의 크기를 조절하고, 주변 밝기는 Spot Light나 Rect Light처럼 실제 광원으로 보완하는 편이 안정적이다.
Final Gather Quality를 높이면 Lumen 노이즈를 줄이는 데 도움이 될 수 있지만 GPU 비용이 커질 수 있다.
반면 Final Gather Lighting Update Speed는 조명 변화가 간접광에 반영되는 속도와 관련된 설정이므로, 플리커링을 해결하기 위해 무조건 높이는 값으로 사용하면 안 된다.


작업 중 장면이 너무 어두워 오브젝트 위치를 확인하기 어렵다면 Viewport를 Unlit 모드로 바꿔 볼 수 있다.
Unlit은 조명 결과를 제외한 기본 재질 색상을 중심으로 보여 주기 때문에, 어두운 환경에서 오브젝트 위치와 형태를 확인할 때 유용하다.


이번 씬에서는 램프가 있는 벽면과 바닥 일부를 Spot Light로 비췄다.

그리고 복도 끝 부분에도 조명을 추가해 플레이어의 시선이 어두운 공간 안쪽으로 이어지도록 구성했다.


빛이 없는 공간을 전부 밝히기보다, 이동 경로와 중요한 지점만 읽히게 만드는 편이 지하 공간의 분위기를 유지하는 데 더 효과적이었다.
Rect Light로 어두운 영역 보완하기
이번 작업에서는 Rect Light를 바닥 가까이에 배치해 위쪽을 향하게 만들고, 완전히 어두워진 벽면과 기둥의 실루엣이 최소한으로 읽히도록 밝기와 크기를 조절했다.

Rect Light는 넓은 직사각형 형태의 광원처럼 보조광을 넣을 때 활용하기 좋다.
이번 씬에서는 공간 전체를 밝히기 위한 주광이 아니라, Spot Light만으로는 지나치게 어두워지는 영역을 보완하는 Fill Light 역할로 사용했다.
Rect Light는 직접 빛을 내는 광원이다.
다만 Lumen 환경에서는 이 직접광이 주변 표면에 반사되면서 간접광 결과에도 영향을 줄 수 있다.
Rect Light 역시 Mobility를 Movable로 설정하고, Intensity Units를 Lumens로 변경했다.
레벨 전체가 지나치게 어둡게 느껴질 때는 Post Process Volume의 Exposure Compensation을 미세하게 조절할 수 있다.


하지만 노출 보정은 장면 전체에 영향을 주기 때문에, 실제 조명 배치가 부족한 문제를 Exposure Compensation만으로 해결하기보다 마지막 보정 단계에서 사용하는 편이 좋다.
광원 겹침 확인하기: Light Complexity
조명 배치가 끝난 뒤에는 Alt + 7을 눌러 Light Complexity 화면을 확인했다.

Light Complexity는 오브젝트 표면에 영향을 주는 비정적 광원의 개수를 시각적으로 보여 주는 뷰 모드다.
한 공간에 많은 광원이 겹칠수록 셰이딩 비용이 증가하므로, 분위기를 위해 조명을 추가하더라도 중첩이 과한 구간은 줄이는 편이 좋다.
검은색 영역은 영향을 주는 비정적 광원이 없는 부분이다.
초록색과 파란색의 색상은 광원 수가 적게 겹친 상태를, 노란색과 주황색 계열은 여러 광원이 겹치기 시작한 상태를 뜻한다.
빨간색이나 흰색에 가까운 영역은 많은 광원이 겹친 고밀도 구간으로 볼 수 있다.
Light Complexity는 단순히 화면의 색을 예쁘게 만드는 기능이 아니라, 현재 조명 배치가 과도하게 무거워지지 않았는지 확인하는 도구에 가깝다.
특히 복도 중앙이나 바닥처럼 화면에 오래 보이는 영역이 여러 Spot Light와 Rect Light의 영향을 동시에 받지 않도록 확인했다.

빨간색이나 흰색에 가까운 영역이 보인다고 해서 무조건 문제가 되는 것은 아니지만, 좁은 공간 전체가 높은 단계의 색으로 표시된다면 광원 수나 Attenuation Radius를 다시 검토할 필요가 있다.
Photoshop으로 명암 확인하기
조명 배치가 끝난 뒤에는 스크린샷을 Photoshop으로 가져가 Hue/Saturation의 채도를 낮춰 흑백 화면으로 만들었다.
색을 제거하면 화면 안에서 밝은 부분과 어두운 부분의 관계가 더 잘 보인다.
이후 Levels의 중간톤 값을 조절해 어두운 영역을 확인하고, 포컬 포인트보다 더 밝은 부분이 없는지도 함께 점검했다.


어두운 영역을 확인할 때는 빛이 전혀 닿지 않는 부분이 너무 넓게 퍼져 있지 않은지 살펴봤다.
구석이나 시선에서 벗어난 공간은 어두워도 괜찮지만, 플레이어가 이동해야 하는 길이나 중요한 오브젝트까지 검게 묻히면 장면 정보가 제대로 전달되지 않을 수 있다.



반대로 밝은 영역을 확인할 때는 램프의 발광면이나 보조광보다, 실제로 강조하고 싶은 위치가 더 눈에 들어오는지 확인했다.



완전히 검은 영역이 있다는 사실 자체가 문제는 아니다.
중요한 것은 장면의 분위기를 유지하면서도 플레이어가 봐야 하는 길과 포컬 포인트가 의도한 대로 읽히는지 확인하는 과정이다.
이번 포스트에서는 Fab에서 가져온 램프 에셋을 단순히 배치하는 데서 끝내지 않고, 발광면을 직접 수정하고 Material Slot을 다시 할당하는 과정까지 진행했다.
이후 Emissive 머티리얼과 Material Instance를 적용해 램프 자체가 빛나는 모습을 만들고, Spot Light와 Rect Light로 주변 공간의 명암과 시선을 조절했다.
실내 라이팅은 광원을 많이 추가한다고 완성되는 작업이 아니었다.
어떤 부분을 보여 주고 어떤 부분을 어둡게 남길지 먼저 결정한 뒤, Light Complexity와 명암 검수로 결과를 확인하는 과정이 함께 필요했다.
이번 작업을 통해 에셋 수정, 머티리얼 분리, 발광 표현, 조명 배치가 각각 따로 떨어진 작업이 아니라 하나의 장면을 완성하기 위해 연결되는 과정이라는 점을 확인할 수 있었다.
'3D Video Production > Unreal Engine (5.6.1)' 카테고리의 다른 글
| UE 5.6 Material UV 타일링 (0) | 2026.07.01 |
|---|---|
| UE 5.6 Sequencer 렌더링 (0) | 2026.06.30 |
| UE 5.6 Material 기초 (0) | 2026.06.26 |
| UE 5.6 Scene 제작 기초: Cine Camera Actor와 Fab 에셋 배치 (0) | 2026.06.24 |
| UE 5.6 기초 정리: 레벨, 액터, 라이팅과 Post Process Volume (0) | 2026.06.23 |