버스 정류장 모델링과 UV 작업을 마친 뒤에는 언리얼 엔진 안에서 씬을 구성하는 과정이 필요하다.
모델을 단순히 불러와 배치하는 것만으로는 장면이 완성되었다고 보기 어렵다.
이번 포스트에서는 UV 작업까지 끝난 버스 정류장 모델을 FBX로 Export한 뒤, 언리얼 엔진으로 Import해 씬을 구성했다.
이후 Cine Camera Actor로 구도를 잡고, 정류장 간판에는 네온사인 효과를, 바닥에는 물이 고인 듯한 젖은 재질을 추가했다.
버스 정류장 FBX 파일을 언리얼로 가져오기
먼저 C4D에서 UV 작업까지 완료된 버스 정류장 모델을 FBX 파일로 Export했다.

그다음 언리얼 엔진에서 해당 FBX 파일을 Import하고, 필요한 파일들을 선택해 레벨에 배치했다.


모델을 불러온 뒤에는 바로 머티리얼 작업에 들어가기보다, 먼저 전체 위치와 비율을 확인하는 것이 좋다.
씬 안에서 버스 정류장이 너무 작거나 크면 이후 카메라 구도와 조명 설정도 함께 어색해질 수 있기 때문이다.
Cine Camera Actor로 렌즈 느낌 잡기
버스 정류장 모델을 배치한 뒤, Cine Camera Actor를 생성해 구도를 확인했다.


언리얼의 Cine Camera Actor는 일반 Camera Actor보다 실제 카메라에 가까운 설정을 제공한다.
특히 Current Focal Length 값을 조절하면 화면이 넓게 보이거나 좁게 보이는 렌즈 느낌을 만들 수 있다.

광각렌즈는 21~35mm 정도의 짧은 초점거리로, 넓은 공간을 담을 때 유리하다.
다만 카메라와 피사체가 너무 가까우면 왜곡이 강해질 수 있다.
현관문 렌즈처럼 주변이 넓게 보이지만 형태가 휘어 보이는 느낌을 떠올리면 이해하기 쉽다.
표준렌즈는 40~60mm 정도로, 비교적 자연스러운 시야를 만든다.
사람이 장면을 바라보는 느낌과 가까워서 과한 왜곡 없이 안정적인 구도를 잡기 좋다.
망원렌즈는 85mm 이상으로, 멀리 있는 대상을 가까이 당겨 보는 느낌을 만든다.
야생동물 촬영이나 스포츠 경기처럼 촬영자가 가까이 접근하기 어려운 장면에서 자주 사용하는 렌즈 느낌이다.
카메라 위치를 잡은 뒤에는 Lock Actor Movement를 사용해 실수로 카메라가 움직이지 않도록 잠가두었다.
카메라 구도를 확정한 뒤 잠가두면 이후 머티리얼이나 조명 작업을 하다가 구도가 틀어지는 일을 줄일 수 있다.
정류장 간판에 사용할 RGB 마스크 텍스처 만들기
다음으로 정류장 간판에 네온사인 효과를 주기 위해 포토샵에서 간판용 텍스처를 만들었다.
먼저 정류장 간판의 UV만 PSD 파일로 Export했다.

이 과정에서 어떤 UV 영역이 간판의 정면에 해당하는지 확인하는 것이 중요하다.
UV 위치를 잘못 보고 작업하면 언리얼에서 텍스트가 엉뚱한 위치에 표시될 수 있다.
포토샵에서는 간판에 들어갈 정보를 색으로 구분해 배치했다.
- 검은색: 이전/다음 역 이름
- 빨간색: 현재 역 이름
- 흰색: 간판 배경 영역

이때 포토샵에서 보이는 색은 최종 색이 아니라 영역을 구분하기 위한 임시 색에 가깝다.
실제 색상은 언리얼 머티리얼에서 Parameter로 지정할 예정이기 때문에, 포토샵에서는 각 영역이 분리되도록 만드는 것이 더 중요하다.
그다음 각 정보를 R, G, B Channel로 나누었다.
- R Channel: 이전/다음 역 이름
- G Channel: 현재 역 이름
- B Channel: 간판 배경



각 채널에서는 표시할 부분을 흰색으로, 나머지 부분을 검은색으로 만들어 주었다.
이렇게 만든 이미지를 PNG로 Export한 뒤 언리얼로 Import했다.


언리얼에서는 RGBA 채널을 각각 별도의 마스크처럼 사용할 수 있다.
이 방식은 하나의 텍스처 안에 여러 마스크 정보를 담을 수 있어, 텍스처 수를 줄이고 머티리얼 구조를 정리하는 데 도움이 된다.
단, 이런 마스크용 텍스처는 색을 보여주기 위한 이미지가 아니라 데이터에 가깝기 때문에, 실제 작업에서는 Texture 설정에서 sRGB를 비활성화해 두는 것이 좋다.
네온사인 효과 만들기: Emissive Color
언리얼에서 버스 정류장 간판용 Material을 만들고, 앞에서 제작한 RGB 마스크 텍스처를 Texture Sample로 가져왔다.


원본 간판 이미지는 Base Color에 연결해 글자와 배경이 그대로 보이도록 했다.
그리고 RGB 마스크 텍스처는 Emissive 영역을 분리하는 용도로 사용했다.

그다음 RGB 마스크 텍스처에서 글자 영역과 배경 영역을 분리해 사용했다.
이번 간판 텍스처에서는 R Channel과 G Channel이 글자 영역을 나타내고, B Channel이 간판의 뒷배경 영역을 나타낸다.
다만 B Channel만 그대로 사용하면 글자가 있는 부분까지 배경 마스크에 포함될 수 있다.
그래서 먼저 R Channel과 G Channel을 Add로 합쳐 글자 영역을 하나의 마스크로 만들었다.
그다음 B Channel에서 이 글자 마스크 값을 Subtract로 빼주었다.

구조는 다음과 같다.
- Texture Sample의 R Channel과 G Channel을 Add로 합침
- B Channel에서 R+G 값을 Subtract로 빼줌
- 이렇게 하면 글자를 제외한 뒷배경 영역만 남음
- 남은 배경 마스크에 원하는 색상값을 Multiply로 곱함
- 최종 결과를 Emissive Color에 연결
- 각 결과를 Add로 합쳐 최종 Emissive Color에 연결
즉, 단순히 B Channel 전체를 발광시키는 것이 아니라, B Channel에서 글자 영역을 제외한 뒤 뒷배경만 발광하도록 만든 것이다.
이렇게 하면 원본 간판 이미지는 Base Color를 통해 그대로 보이고, Emissive Color에는 글자를 제외한 배경 영역만 전달된다.
그 결과 글자는 선명하게 유지되면서, 뒤에 있는 간판 배경만 은은하게 빛나는 형태로 표현할 수 있다.

Emissive Color는 머티리얼이 스스로 빛나는 것처럼 보이게 만드는 입력이며, Emissive 강도 값을 높이면 Bloom 효과가 더 강하게 나타날 수 있다.
다만 Emissive를 사용했다고 해서 무조건 실제 조명처럼 주변을 밝히는 것은 아니다.
주변을 실제로 밝히는 정도는 Lumen, Bloom, 조명 설정에 따라 달라질 수 있다.
따라서 이번 작업에서는 간판이 빛나는 듯한 시각적 효과를 만드는 것에 초점을 맞췄다.
노이즈 텍스처로 물이 고인 바닥 만들기
다음으로 바닥에 물이 고인 듯한 표현을 추가했다.
먼저 바닥에 적용할 Material을 만들고, Fab에서 가져온 바닥 텍스처와 흑백 Noise Texture를 Material Editor에 추가했다.



여기서 Noise Texture는 색을 표현하기 위한 이미지가 아니라, 물이 고일 영역을 정하는 마스크 역할을 한다.
핵심은 Lerp 노드다.
Lerp는 A와 B 두 값을 Alpha 값에 따라 섞는 노드다.
Alpha가 0이면 A, 1이면 B가 나오고, 0과 1 사이 값이면 두 값이 섞인다.
이번 작업에서는 Alpha에 Noise Texture를 연결했다.
- 검은 부분: 원래 바닥
- 흰 부분: 물이 고인 부분
- 회색 부분: 두 재질이 섞이는 경계
처음에는 바닥 텍스처와 1 값을 Lerp해 Base Color에 연결했다.


이렇게 하면 Noise 모양을 따라 밝고 어두운 얼룩이 생기지만, 물이라기보다는 단순한 색 변화처럼 보일 수 있다.
그래서 이후에는 검은색 Constant3Vector를 연결해 물 영역을 어둡게 만들었다.
하지만 완전히 검은색에 가까우면 물이 너무 탁하고 인위적으로 보일 수 있다.


최종적으로는 원본 바닥 텍스처에 작은 Scalar 값을 곱해, 원본 색을 유지하면서 어둡게 만드는 방식으로 정리했다.


이 방식이 더 자연스러운 이유는 젖은 바닥이 완전히 다른 색으로 바뀌는 것이 아니라, 원래 바닥색이 어두워지고 반사가 강해지는 방향으로 변하기 때문이다.
Roughness를 낮춰 젖은 바닥처럼 보이게 만들기
물이 고인 바닥을 만들 때 Base Color만 바꾸면 충분하지 않다.
물처럼 보이려면 표면이 매끈하게 반사되어야 한다.
이를 위해 ORM 텍스처의 Roughness 채널과 낮은 Roughness 값을 Lerp로 섞고, Alpha에는 Noise Texture를 연결했다.
즉 Noise Texture의 흰 부분은 Roughness가 낮아져 반사가 강해지고, 검은 부분은 기존 바닥의 Roughness가 유지되도록 만든 것이다.

이렇게 하면 Noise Texture의 흰 부분을 따라 물이 고인 영역은 매끈하게 반사되고, 검은 부분에 해당하는 마른 바닥은 기존의 거친 표면 느낌을 유지할 수 있다.
실제 결과 화면에서는 물웅덩이에 주변 구조물이나 하늘이 비치면서 바닥이 훨씬 입체적으로 보인다.

Normal도 함께 조절해 물 표면을 평평하게 만들기
젖은 바닥 표현에서는 Normal도 함께 조절했다.
바닥의 Normal Map은 돌이나 틈의 요철을 표현한다.
하지만 물이 고인 부분까지 바닥의 요철이 그대로 강하게 보이면, 물이 아니라 단순히 반짝이는 돌바닥처럼 보일 수 있다.
그래서 물이 고인 부분에는 (0, 0, 1) 값을 사용해 평평한 Normal에 가깝게 만들었다.
이 값을 원래 Normal Map과 Lerp하면, 물이 고인 영역에서 표면의 굴곡이 줄어드는 효과를 만들 수 있다.


최종적으로 노드를 정리하면, Noise Texture가 물이 고일 영역을 정하고, 그 영역에 맞춰 Base Color, Roughness, Normal이 함께 바뀌는 구조가 된다.
이렇게 여러 값을 같은 마스크로 제어하면 젖은 바닥 표현이 훨씬 자연스럽게 연결된다.


Material Instance에서 조절할 수 있게 노드 정리하기
기본 머티리얼 구조가 완성된 뒤에는 Material Instance에서 값을 쉽게 바꿀 수 있도록 노드를 정리했다.
Texture Sample은 Parameter로 바꾸고, 색상과 수치도 Vector Parameter와 Scalar Parameter로 정리했다.
이렇게 해두면 머티리얼 그래프를 매번 열지 않아도 Material Instance에서 필요한 값만 빠르게 조절할 수 있다.
이번 작업에서는 다음 값들을 조절할 수 있게 정리했다.
- 바닥 텍스처
- Noise Texture
- 물 색상 또는 어두워지는 정도
- Roughness 조절값
- Normal 강도
- Tiling X, Tiling Y
- Offset X, Offset Y
- Rotation Angle



MF_Tiling 노드를 사용하면 Material Instance에서 타일링과 오프셋을 조절하기 편하다.


Rotation Angle은 0~1 범위로 회전값을 다룰 수 있는데, 이번 노드 구조에서는 0.125 값이 45도 회전에 해당한다.

다만 여러 텍스처가 각각 다른 타일링과 회전값을 가져야 한다면, Diffuse, ORM, Normal, Noise에 별도의 UV 제어 구조를 만들어 주는 것이 관리하기 쉽다.


반대로 모든 텍스처가 같은 타일링과 회전을 공유해도 된다면 같은 UV 결과를 함께 사용할 수도 있다.
추가로 Flatten Normal 노드와 Scalar Parameter를 사용해 Normal 강도를 조절할 수 있게 만들었다.
Flatten 수치가 낮을수록 원본 바닥의 고저차가 더 잘 드러나고, 수치를 높이면 표면이 더 평평하게 보인다.

원본 텍스처의 색감도 조절하기 위해 색상 조절 노드를 추가로 연결했다.

최종적으로는 Base Color, Roughness, Normal, Tiling, 색상 조절값이 하나의 머티리얼 안에서 함께 제어되도록 노드를 정리했다.


최종적으로 노드가 길어지기는 했지만, Parameter 이름을 정리해 두면 이후 Material Instance에서 훨씬 편하게 수정할 수 있다.
처음에는 복잡해 보여도, 값을 조절해야 하는 항목을 미리 Parameter로 빼두면 반복 작업이 크게 줄어든다.

카메라 초점 확인하기: Draw Debug Focus Plane
마지막으로 Cine Camera Actor의 초점을 확인했다.
카메라 설정에서 Draw Debug Focus Plane을 켜면 현재 초점 위치가 보라색 평면으로 표시된다.


이 기능을 사용하면 카메라가 어느 지점에 초점을 맞추고 있는지 눈으로 확인할 수 있다.
초점이 피사체보다 앞이나 뒤에 있으면 정류장이 흐릿하게 보일 수 있기 때문에, 카메라 프리뷰를 보면서 Focus Distance를 조절해 주는 것이 좋다.


이번 수업에서는 버스 정류장 모델을 언리얼로 가져온 뒤, 카메라와 머티리얼을 이용해 씬의 분위기를 만드는 과정을 실습했다.
특히 기억할 부분은 세 가지다.
첫째, RGB 채널은 단순한 색 정보가 아니라 영역을 나누는 마스크로 사용할 수 있다.
둘째, Lerp와 Noise Texture를 사용하면 마른 바닥과 젖은 바닥을 자연스럽게 섞을 수 있다.
셋째, Material Instance에서 조절할 수 있도록 Parameter를 정리하면 이후 수정 작업이 훨씬 쉬워진다.
모델링이 끝난 뒤의 언리얼 작업은 단순한 배치가 아니라, 장면을 설득력 있게 보이게 만드는 과정에 가깝다.
이번 버스 정류장 씬에서는 네온 간판과 물웅덩이 표현만으로도 정류장의 분위기가 훨씬 뚜렷해지는 것을 확인할 수 있었다.
'3D Video Production > Unreal Engine (5.6.1)' 카테고리의 다른 글
| UE 5.6 버스 정류장 씬 제작: 시네마스코프 & Foliage 적용하기 (0) | 2026.07.11 |
|---|---|
| UE 5.6 Decal & 유리 Material 만들기: Alpha, Fresnel, IOR 활용 (0) | 2026.07.10 |
| UE 5.6 텍스처 작업: glTF·FBX 임포트 및 ORM 채널 패킹 (0) | 2026.07.07 |
| UE 5.6 다락 작업실 씬 제작: C4D 전선 제작부터 Volumetric Fog, Sequencer까지 (0) | 2026.07.06 |
| UE 5.6 다락 작업실 씬 제작: 블록아웃부터 Nanite, Decal 적용까지 (0) | 2026.07.03 |