언리얼 엔진에서 Plane이나 벽 메시를 크게 늘렸는데, 텍스처까지 함께 늘어나 흐릿하게 보이는 경우가 있다.
처음에는 텍스처 해상도가 낮아서 생기는 문제처럼 보이지만, 실제로는 메시를 스케일했을 때 기존 UV 좌표가 그대로 유지되기 때문에 발생하는 경우가 많다.
이번 포스트에서는 나무판자 텍스처를 기준으로 Base Color, Roughness, Normal Map을 연결하고, Material Instance에서 UV 타일링과 색상, 반사, 노멀 강도까지 조절할 수 있는 부모 머티리얼을 만들어 보았다.
단순히 텍스처를 적용하는 데서 끝나지 않고, 이후 벽이나 바닥처럼 반복해서 사용하는 재질에도 그대로 활용할 수 있는 구조를 만드는 데 초점을 맞췄다.
PBR 텍스처 파일 확인하기
웹에서 PBR 텍스처를 내려받아 압축을 풀면 보통 diffuse, roughness, normal, displacement처럼 여러 파일이 함께 들어 있다.

각 파일은 같은 재질을 서로 다른 방식으로 표현하기 위한 정보다.
- Diffuse: 표면의 기본 색상
- Roughness: 표면이 얼마나 거칠고 반사가 얼마나 퍼지는지 결정
- Normal: 빛을 받는 방향을 조작해 표면에 굴곡이 있는 것처럼 보이게 만드는 정보
- Displacement: 표면의 높낮이 정보
이번 작업에서는 Diffuse, Roughness, Normal 파일을 사용했다.

Normal Map은 실제 메시를 변형하는 것이 아니라 빛의 방향을 바꿔 굴곡이 있는 것처럼 보이게 한다.
따라서 표면의 음영은 달라지지만, 메시의 실루엣이나 충돌 형태 자체가 바뀌는 것은 아니다.
기본 머티리얼 만들기
레벨에 Plane을 배치한 뒤, 새 Material을 만들었다.


머티리얼 기본 설정은 다음과 같이 두었다.
- Material Domain: Surface
- Blend Mode: Opaque
- Shading Model: Default Lit
Surface는 일반적인 3D 오브젝트 표면용 설정이고, Opaque는 투명도가 없는 재질에 사용한다.
Default Lit은 조명, 반사, Roughness, Normal 같은 기본적인 PBR 계산을 적용하는 셰이딩 모델이다.
텍스처는 다음과 같이 연결했다.

이후 부모 머티리얼을 기준으로 Material Instance를 만들고 Plane에 적용했다.


부모 머티리얼은 기능과 계산 구조를 담당하고, Material Instance는 그 구조를 유지한 채 텍스처나 수치만 바꾸는 역할을 한다.
같은 구조를 공유하면서 나무 색, 반사 정도, 노멀 강도만 다르게 만들 수 있어 재질을 여러 개 만들어야 할 때 효율적이다.
Plane 크기를 늘려도 텍스처가 늘어나지 않게 만들기
Plane을 크게 늘리면 메시 자체는 넓어지지만, 메시가 가진 UV 좌표는 자동으로 늘어나지 않는다.
그래서 텍스처 한 장이 넓어진 Plane 전체에 그대로 적용되며, 결과적으로 무늬가 늘어나 보이게 된다.

이를 해결하기 위해 UV Tile과 Offset을 조절할 수 있는 구조를 추가했다.
먼저 Constant4Vector를 Parameter로 변환한 뒤, 이름을 UV Control로 지정했다.
이후 U Tile과 V Tile은 1, U Offset과 V Offset은 0이 되도록 기본값을 (1, 1, 0, 0)으로 설정했다.

그리고 각 채널은 다음과 같이 사용했다.

R과 G를 Append로 묶어 Tile 값으로 사용하고, B와 A를 Append로 묶어 Offset 값으로 사용했다.

그 뒤 TexCoord와 Tile 값을 Multiply로 곱하고, Offset 값을 Add로 더해 Texture Sample의 UVs에 연결했다.

TexCoord는 메시가 가진 UV 좌표를 불러오는 노드다.
U와 V는 각각 가로와 세로 방향을 의미한다.
UV Control의 기본값은 다음처럼 두는 것이 좋다.
U Tile = 1
V Tile = 1
U Offset = 0
V Offset = 0
즉, 기본 Vector 값은 (1, 1, 0, 0)이다.
Tile 값을 0으로 두면 UV 좌표가 한 지점에 모여 텍스처가 단색처럼 보일 수 있다.
처음에는 단순한 수치 조절처럼 보이지만, UV 타일링 구조를 한 번 만들어 두면 Plane이나 벽처럼 넓은 오브젝트에 텍스처를 적용할 때 훨씬 편해진다.
여기서 중요한 점은 최종 UV 결과를 Diffuse뿐 아니라 Roughness와 Normal Texture Sample의 UVs에도 동일하게 연결하는 것이다.
색상만 반복되고 반사나 굴곡이 반복되지 않으면 재질의 패턴이 어긋나 보일 수 있다.
UV 회전 기능 추가하기
타일링과 Offset만으로는 텍스처 방향을 바꾸기 어렵기 때문에 Custom Rotator도 추가했다.
Custom Rotator의 Rotation Center에는 Constant2Vector (0.5, 0.5)를 연결했다.

UV는 0~1 범위로 계산되기 때문에 (0.5, 0.5)가 텍스처 중앙이 된다.
Rotation Angle에는 UV Rotation 값을 360으로 나눈 결과를 연결했다.

Custom Rotator는 1을 360도로 처리한다.
0.25 = 90도
0.5 = 180도
1.0 = 360도
이번 구조에서는 Tile과 Offset을 적용한 뒤 회전시키는 순서로 구성했다.

노드 순서에 따라 결과가 달라지는 점도 확인할 수 있었다.
Offset을 먼저 적용한 뒤 회전하면 이동값까지 함께 회전하고, 회전 뒤에 Offset을 더하면 화면 기준 방향으로 텍스처를 이동시킬 수 있다.
Custom Rotator는 회전 중심과 0~1 범위의 회전값을 받는 방식으로 동작한다.
Texture Parameter로 텍스처 교체하기
Texture Sample을 Parameter로 변환하면 Material Instance에서 텍스처 자체를 바꿀 수 있다.


같은 머티리얼 구조를 유지하면서 나무, 벽돌, 콘크리트, 금속 텍스처만 교체할 수 있어 활용도가 높다.
다만 Base Color, Roughness, Normal은 서로 역할이 연결되어 있으므로 아무 텍스처나 섞어 넣기보다 같은 재질 세트 안에서 교체하는 편이 자연스럽다.
밝기 & 대비 조절
Base Color 경로에는 Brightness와 Contrast 조절 기능을 추가했다.
Brightness는 Scalar Parameter를 Texture RGB에 Multiply하는 방식이다.

- 0: 검정색에 가까워짐
- 1: 원본 밝기
- 1보다 큰 값: 원본보다 밝아짐
Contrast는 Power 노드를 이용했다.

Contrast 값이 1이면 원본을 유지한다.
1보다 큰 값에서는 중간톤과 어두운 영역이 더 빠르게 내려가며 대비가 강해진 것처럼 보인다.
다만 Power는 일반적인 이미지 편집 프로그램의 Contrast 기능과 완전히 같은 방식은 아니다.
밝은 영역을 더 밝게 만드는 기능이라기보다, 0~1 범위의 색상 값을 거듭제곱으로 변형해 명암 분포를 바꾸는 방식에 가깝다.
밝기와 대비를 조절할 수 있게 만들면 같은 텍스처라도 조명 환경이나 장면 분위기에 맞춰 훨씬 쉽게 맞출 수 있다.
Saturation & Tint로 색감 조절하기
채도는 Desaturation 노드를 사용했다.

Desaturation의 Fraction 값은 0이면 원본 색상, 1이면 완전한 흑백이다.


그래서 Material Instance에서 Saturation 값이 1일 때 원본 색상이 유지되도록 OneMinus를 앞에 연결했다.

이제 Material Instance에서 Saturation 값을 0으로 낮추면 흑백에 가까워지고, 1로 올리면 원래 색상을 유지할 수 있다.
Tint는 Vector Parameter를 Multiply하는 방식으로 만들었다.

기본값은 흰색으로 두었다.
흰색은 원본 색을 유지하고, 특정 색을 넣으면 텍스처 전체에 색감을 입힐 수 있다.
같은 나무 텍스처라도 노란색 계열 Tint를 사용하면 따뜻한 느낌을 만들 수 있고, 푸른색 계열을 사용하면 차갑거나 어두운 분위기를 만들 수 있다.
Metallic & Specular 조절
Metallic은 금속인지 아닌지를 정하는 값이다.
- 0: 나무, 벽, 플라스틱 같은 비금속
- 1: 철, 알루미늄, 금 같은 금속
이번 나무 판자 텍스처는 비금속 재질이므로 Metallic 기본값은 0으로 두는 것이 적절하다.

Specular는 비금속 표면의 기본 반사율에 영향을 주는 값이다.

반사가 부담스러워 보인다고 해서 Specular를 바로 0으로 낮추기보다는, 먼저 Roughness를 조절하는 편이 일반적인 PBR 작업 방식에 더 가깝다.
언리얼 엔진의 기본 Specular 값인 0.5는 대부분의 일반적인 비금속 재질에 적절한 값으로 안내된다.
Roughness 범위 조절
Roughness Map은 흑백 이미지로 표면의 거칠기 차이를 표현한다.

Roughness는 검은색에 가까울수록 상대적으로 매끄럽고 반사가 선명하며, 흰색에 가까울수록 거칠고 반사가 퍼진다.


원본 Roughness Texture를 그대로 사용하는 대신, Roughness Min과 Roughness Max를 만들어 Lerp로 범위를 조절했다.

이 구조를 사용하면 텍스처가 가진 거칠기 패턴은 유지하면서도 전체 재질을 더 매끈하거나 더 거칠게 조절할 수 있다.
특히 재질이 지나치게 플라스틱처럼 보일 때는 Metallic이나 Specular보다 Roughness 범위를 먼저 조절해 보는 편이 원인을 찾기 쉽다.
Normal Strength 조절
Normal Map은 표면에 실제 굴곡을 만들지 않고, 굴곡이 있는 것처럼 빛의 반응을 바꿔 준다.
Normal Strength를 조절하기 위해 FlattenNormal 노드를 사용했다.

FlattenNormal의 Flatness 값이 높을수록 노멀 정보가 평평해진다.
그래서 Material Instance에서 Strength 값이 높을수록 노멀 효과가 강해지게 만들기 위해 OneMinus를 연결했다.

이제 Strength가 0이면 평평한 표면에 가깝고, 1이면 원본 노멀 강도가 유지된다.


노멀을 지나치게 강하게 올리면 벽이나 나무 표면이 과장돼 보일 수 있다.
실제 재질처럼 보이게 하려면 원본 노멀 강도를 그대로 쓰기보다 상황에 따라 조금 낮춰 주는 편이 자연스러운 경우도 많다.
Lerp
Lerp는 두 값을 Alpha 값에 따라 섞는 노드다.
- Alpha 0: A 값
- Alpha 1: B 값
- Alpha 0.5: A와 B를 절반씩 섞은 값
예를 들어 A에 빨간색, B에 파란색을 연결하고 Alpha를 0.5로 두면 두 색이 섞인 보라색 계열의 결과가 나온다.


이번 머티리얼에서는 Roughness Min과 Roughness Max 사이를 Roughness Texture로 섞는 데 사용했다.
Lerp는 단순한 색상 전환뿐 아니라 마스크 기반 재질 혼합, 젖은 표면 표현, 먼지나 오염 표현처럼 두 가지 상태를 섞어야 할 때 자주 활용할 수 있다.
Material Instance 파라미터 정리
기능이 늘어나면 Material Instance 안의 파라미터도 많아진다.
이때 Master Material에서 각 Parameter의 Group을 지정하면 Material Instance에서 기능별로 묶어서 볼 수 있다.


언리얼은 기본적으로 같은 그룹 안의 파라미터를 이름순으로 정리한다.

Sort Priority를 사용하면 실제 작업 순서에 맞게 배치할 수 있으며, 값이 낮을수록 Material Instance 목록의 위쪽에 표시된다.


이번 작업에서는 단순히 나무 텍스처를 Plane에 붙이는 것에서 끝나지 않고, UV 타일링과 Offset, Rotation, 색상, 반사, Roughness, Normal Strength까지 조절할 수 있는 부모 머티리얼을 만들었다.
이 구조를 한 번 만들어 두면 벽, 바닥, 나무, 콘크리트처럼 반복해서 사용하는 재질에 그대로 응용할 수 있다.
'3D Video Production > Unreal Engine (5.6.1)' 카테고리의 다른 글
| UE 5.6 다락 작업실 씬 제작: 블록아웃부터 Nanite, Decal 적용까지 (0) | 2026.07.03 |
|---|---|
| UE 5.6에서 C4D 애니메이션 불러오기: Cineware, Alembic, FBX (0) | 2026.07.02 |
| UE 5.6 Sequencer 렌더링 (0) | 2026.06.30 |
| UE 5.6 Fab 에셋 수정 & 실내 라이팅 작업 (0) | 2026.06.29 |
| UE 5.6 Material 기초 (0) | 2026.06.26 |