언리얼 엔진에서 자신만의 재질(Material) 만들기
많은 분들이 '창문이 없을 때는 어떻게 해야 하나?'라는 질문을 하실 수 있습니다. 만약 이 실내 장면에서 제가 커튼을 닫으면, 외부 조명이 없는 상황이 됩니다. 이는 기본적으로 **밤 시간 조명(nighttime lighting)**과 같아서 모든 것을 **인공 조명(artificial lights)**으로 처리해야 합니다. 이는 현실에서도 마찬가지입니다. 이미 다양한 기술과 팁을 배웠기 때문에 문제없이 잘 해낼 수 있을 겁니다.
만약 커튼이 반만 닫힌 것처럼 외부 조명이 부분적으로 들어온다면, **외부 광원의 강도(intensity of that outside source of light)**를 높이고, 나머지는 내부의 인공 조명으로 처리하면 됩니다.
이전 세션에서는 조명에 대해 배웠고, **Quixel 재질(Quixel materials)**에 대해서도 배웠습니다. 하지만 이번 영상에서는 자신만의 재질을 처음부터(from scratch) 만드는 방법을 배우기 시작할 겁니다.
Quixel Bridge에는 이미 훌륭한 품질의 재질과 텍스처가 많이 있지만, 때로는 우리만의 재질을 만들어야 할 필요가 있습니다. 지금 화면에 보이는 소음(noises)은 걱정하지 마세요. 나중에 파일을 **내보내기(export)**할 때 **최종 모으기(final gather)**를 통해 **반사(reflections)**의 품질을 높이고 이 소음들을 제거할 수 있습니다.
우리는 이 장면의 모든 재질을 처음부터 만들 겁니다. 이 가구, 테이블 아래의 강철, 화강암, 식물, 수건, 콘크리트, 주방의 재질, 강철 등 이 모든 재질을 처음부터 만들 겁니다.
우선 모든 것을 **체계적(organized)**으로 하기 위해 폴더를 만들 겁니다. Content 폴더 안에 Material이라는 새 폴더를 만들겠습니다.
이 폴더 안에 들어가서 Texture라는 또 다른 폴더를 만들겠습니다. 텍스처는 이 화강암이나 가구처럼 모든 것에 있는 것입니다. Shader라는 또 다른 폴더도 만들겠습니다. 여기에는 재질의 **기본적인 필수 요소(basic essential parts)**가 들어갈 겁니다. Texture 폴더는 텍스처 파일용이고, 이 두 가지를 함께 사용해서 첫 번째 재질을 만들 겁니다.
자, 이제 장면을 둘러보고 첫 재질을 만들기에 적합한 오브젝트를 찾아볼게요. 이 조각상이 괜찮아 보이네요. 재질 만들기 과정을 시작하기 좋은 오브젝트입니다.

이제 새 재질을 만들어 봅시다. 먼저 Material 폴더 안의 Shader 폴더로 가서 오른쪽 클릭하고 Material 파일을 만듭니다. 이름을 Plastic으로 지을게요.
우리가 재질에 적용할 모든 디테일, 즉 거칠기(roughness), 노멀(normals), 색상(color) 등 모든 것이 이 Plastic 파일로 처리될 겁니다. 더블 클릭해서 열게요.
우리가 Quixel Bridge에서 봤던 탭들과는 다른 창이 보일 겁니다.

나중에 재질을 다 만들면 이 재질도 Megascans 재질처럼 똑같은 탭과 창으로 보이게 할 수 있습니다.
이제 언리얼 엔진의 **재질 슬레이트(material slate)**를 3ds Max의 Corona나 V-Ray, Arnold 재질 슬레이트와 비교해볼게요. 3ds Max에서는 여러 재질을 동시에 슬레이트에 둘 수 있지만, 언리얼 엔진에서는 한 번에 하나의 재질만 슬레이트에 둘 수 있습니다.
저는 Shader를 즐겨찾기(favorites)에 추가해서 나중에 쉽게 접근할 수 있도록 하겠습니다. 이제 다른 모든 창을 닫고 즐겨찾기만 남길게요.
재질 탭에는 Base Color(기본 색상), Metallic(메탈릭), Specular(스페큘러), Roughness(거칠기) 등 다양한 옵션이 있습니다. 슬레이트의 아무 곳이나 클릭해도 똑같이 작동합니다.

왼쪽에는 Details(디테일) 패널이 있는데, 오른쪽으로 옮겨서 사용할 수 있습니다. 이 검색창에서 원하는 **명령(command)**이나 **옵션(option)**을 검색하고, 마우스 왼쪽 버튼으로 슬레이트에 끌어다 놓은 다음, 메인 재질 탭의 옵션들과 연결(link)할 수 있습니다. 연결을 끊으려면 키보드의 Alt를 누른 상태에서 해당 옵션을 클릭하면 됩니다.

또한, 이 탭에서 오른쪽 클릭하고 검색하거나, 오른쪽 클릭 메뉴에서 Connect to Base Color 같은 옵션을 선택할 수도 있습니다. 이 메인 탭은 삭제할 수 없으며, 모든 변경사항을 적용하려면 **Apply(적용)**하고 **Save(저장)**해야 합니다.
이제 옵션들에 대해 얘기해 봅시다. 첫 번째는 Base Color입니다. 다른 소프트웨어에서는 디퓨즈 색상(diffuse color) 또는 **알베도 색상(albedo color)**이라고 불리며, 여기에 **텍스처(texture)**를 넣거나 색상을 선택할 수 있습니다.
우선 색상을 사용하는 방법을 알려드릴게요. 먼저 Shader 폴더에 있는 Plastic 파일을 오브젝트에 끌어다 놓습니다. 지금은 특별한 색상이나 텍스처가 없이 그냥 검은색입니다.
슬레이트로 돌아가서, 아주 단순한 흑백 색상을 사용하고 싶다면, 오른쪽 패널로 가서 **Constant(상수)**라는 노드(node)를 추가해야 합니다. 이 Constant 노드를 슬레이트에 끌어다 놓으면 됩니다. 아니면 오른쪽 클릭해서 Constant를 검색하거나, 키보드의 1을 누른 상태에서 왼쪽 클릭하는 단축키를 사용할 수도 있습니다.
이 Constant 노드는 앞으로 가장 자주 사용하게 될 노드 중 하나일 겁니다. 색상으로는 흑백 또는 그 사이의 회색을 나타낼 수 있습니다. 값을 바꾸면 0(검정)과 1(흰색) 사이의 다른 색상을 얻을 수 있습니다.

이 노드를 Base Color에 연결하면, 현재 값이 0이어서 가장 어두운 검은색이 됩니다. 1로 바꾸면 순수한 흰색이 되죠. 0.5나 0.1, 0.05 같은 다른 값으로 바꾸면 회색이 됩니다. 이 상태에서 Apply하고 Save하면 오브젝트에 적용된 것을 볼 수 있습니다.
이제 테스트를 위해 이 오브젝트를 몇 개 복사해서 나란히 놓겠습니다. 다시 슬레이트로 돌아가서 Constant 값을 1로 바꾸고 적용해서 모두 흰색으로 만듭니다.
Plastic 파일을 복사해서 Plastic 1이라고 이름을 바꾸고 값을 0.5로 변경하고 적용합니다. 이 재질을 다른 오브젝트에 적용하고, 또 복사해서 값을 0.05로 변경하고 적용합니다. 그러면 오브젝트들이 오른쪽부터 순수한 흰색, 회색, 그리고 더 어두운 회색을 띄게 됩니다.
보셨듯이, 이 Constant 노드는 흰색과 검은색 사이의 어떤 색이든 만들어낼 수 있습니다. 값이 0에 가까울수록 어둡고, 1에 가까울수록 밝아집니다.
이제 다음으로 넘어갈게요. Constant 노드 값을 변경할 때마다 Apply하고 Save해야 하는 불편함이 있습니다. 하지만 실시간으로(instantly) 변경사항을 확인할 수 있는 방법이 있습니다.
재질 탭에서 오른쪽 클릭하고 **Convert to Parameter(파라미터로 변환)**를 선택한 후, 이름을 Color라고 짓습니다. 이제 슬레이트를 닫고 저장합니다.
이제 콘텐츠 브라우저로 돌아가서 Material 파일에 오른쪽 클릭하고 **Create Material Instance(재질 인스턴스 생성)**를 선택합니다. 이 인스턴스를 오브젝트에 끌어다 놓으면, Megascans 재질처럼 보이는 창이 열립니다.

여기서 Color 파라미터를 활성화하고 원하는 값을 넣으면, 뷰포트에서 실시간으로 변경사항을 볼 수 있습니다. **Material Instance(재질 인스턴스)**를 사용하면 재질 슬레이트를 오가며 저장할 필요 없이 훨씬 빠르게 작업할 수 있습니다.

Material 파일(부모)에서 변경하는 모든 내용은 이 인스턴스(instance)(자식)에도 적용됩니다. 예를 들어, Metallic 파라미터를 만들고 값을 설정한 후 저장하면, 인스턴스에도 이 파라미터가 추가됩니다.
키보드의 2를 누르면 두 가지 색상(R, G)을 가진 노드가 생깁니다. 3을 누르면 세 가지 색상(R, G, B)을 가진 노드가 생깁니다. 이 노드들도 **파라미터(parameter)**로 만들어서 인스턴스에서 쉽게 색상을 바꿀 수 있습니다.
텍스처(Textures) 사용하기

이제 텍스처에 대해 얘기해 봅시다. 텍스처를 추가하는 방법은 여러 가지가 있습니다. Megascans를 사용하거나, 오른쪽 클릭해서 하드 디스크에서 가져오거나, 윈도우 탐색기에서 직접 끌어다 놓을 수 있습니다.
저는 윈도우에서 텍스처를 Texture 폴더로 끌어다 놓겠습니다. 이제 이 텍스처를 슬레이트로 끌어다 놓으면 Texture Sample(텍스처 샘플) 노드가 생성됩니다.
다른 방법으로는 오른쪽 클릭해서 Texture Sample을 검색하거나, 키보드의 T를 누른 상태에서 왼쪽 클릭해서 추가할 수 있습니다. 이 노드들은 특정 텍스처가 연결되어 있지 않아서 그대로 연결하면 오류가 발생합니다. Details 패널에서 텍스처를 선택해야 합니다.
이제 이 Texture Sample을 Base Color에 연결하고 Apply한 후 Save하면 텍스처가 오브젝트에 적용된 것을 볼 수 있습니다.

텍스처의 크기나 **타일링(tiling)**을 바꾸고 싶다면, Material 파일로 돌아가서 오른쪽 클릭하고 **Texture Coordinate(텍스처 좌표)**를 검색합니다. 이 노드를 슬레이트에 추가하고 UV 옵션을 텍스처 샘플의 UVs에 연결합니다.
이제 UV Tiling 값을 변경하면 텍스처의 크기가 더 작아지거나 커지는 것을 볼 수 있습니다.
텍스처의 품질은 매우 중요하므로, 3dtextures.me와 같은 고품질 텍스처 리소스를 사용하는 것을 추천합니다.
메탈릭(Metallic)과 거칠기(Roughness)

다음은 Metallic입니다. 어떤 재질이 금속인지 아닌지를 결정합니다. 강철은 금속이지만, 천이나 콘크리트는 아닙니다.

금속이면서 반사율이 높다면 Metallic 값을 1로, 금속이 아니라면 0으로 둡니다. Constant(1) 노드를 Metallic에 연결하고 값을 변경할 수 있습니다. 값이 0이면 전혀 금속이 아니며, 1이면 가장 금속적이고 반사율이 높습니다.
**Roughness(거칠기)**는 재질의 **반투명도(opacity)**를 결정합니다. 3D 소프트웨어에서 Roughness 값이 0일 때 (검은색) 거울처럼 매우 반사적이고, 1일 때 (흰색) 반사가 전혀 없는 콘크리트나 천처럼 보입니다.
Constant(1) 노드를 Roughness에 연결하고 값을 0으로 두면 오브젝트는 거울처럼 매우 반사적으로 변합니다. 다른 오브젝트의 모습이 반사되는 것을 볼 수 있습니다. Lumen을 사용하면 이러한 반사를 쉽게 얻을 수 있습니다.

Roughness 값을 0에서 1로 높일수록 재질은 점점 덜 반사적으로 변합니다. 이 Roughness 노드를 **파라미터(parameter)**로 만들면 인스턴스에서 값을 실시간으로 변경하며 효과를 확인할 수 있습니다.
Roughness가 0이면 매우 반사적이고, 1이면 전혀 반사적이지 않습니다. 천처럼 반사가 없는 재질에는 Roughness를 1로, 거울처럼 매우 반사적인 재질에는 0을 사용합니다.
Metallic 값을 1로, Roughness 값을 0으로 하고 Base Color를 **금색(golden color)**으로 바꾸면 오브젝트는 아름다운 금속처럼 보입니다. 색상을 **구리색(copper color)**으로 바꾸고 Roughness 값을 0.1이나 0.2로 조금 높이면 훨씬 더 사실적으로 보입니다.
Roughness에 텍스처를 사용하는 방법도 있습니다. 검은색 부분이 반사적이고 흰색 부분이 불투명하게(opaque) 되는 흑백 텍스처를 사용하면, 오브젝트의 부분마다 다른 **반사(reflection)**를 표현할 수 있습니다.
이러한 **텍스처 맵(texture maps)**은 Roughness에 가장 자주 사용되며, Metallic에는 잘 사용되지 않습니다.
스페큘러(Specular)와 이미시브(Emissive)

다음은 **Specular(스페큘러)**입니다. Specular 노드를 **파라미터(parameter)**로 만들고 Roughness와 함께 값을 변경하며 효과를 확인해 봅시다. Specular가 0이면 Roughness가 작동하지 않습니다. Specular를 1로 두면 Roughness가 효과를 보입니다.

Specular 값을 높이면 재질 위에 빛의 구체(light sphere) 같은 효과가 추가됩니다. 이 **빛 입자(light particles)**나 **빛의 빛(light glowy effects)**은 Specular 값을 0에서 1로 높일수록 더 잘 보이게 됩니다.
**Anisotropy(이방성)**는 지금은 크게 필요하지 않은 요소입니다. 다음은 **Emissive Color(이미시브 색상)**입니다. Emissive Color는 자체적으로 빛을 내는 재질에 사용됩니다.

Constant(1) 노드를 Emissive Color에 연결하고 값을 20으로 높이면, 오브젝트가 광원처럼 빛을 내는 것을 볼 수 있습니다. 어두운 곳에 이 재질을 적용하면 얼마나 많은 빛을 내는지 확인할 수 있습니다.
이 Emissive Color도 **파라미터(parameter)**로 만들 수 있습니다. **포스트 프로세스(post process)**의 **블룸(bloom)**을 활성화하면 이 이미시브(emissive) 효과가 훨씬 더 강해집니다.
나중에 이 **이미시브 빛(emissive light)**의 색상을 바꾸는 방법도 배울 겁니다.
노멀(Normals)과 텍스처 좌표(Texture Coordinate)

마지막으로 **Normal(노멀)**에 대해 얘기해봅시다. Normal은 재질 표면에 울퉁불퉁한(bumpy) 부분을 만듭니다. Base Color에 천 텍스처를 적용하고, Roughness는 1로 설정해서 반사가 없게 합니다. 이제 Normal에 텍스처를 적용해야 합니다. Normal에는 특정한 **범프 맵(bump maps)**이나 노멀 맵(normal maps) 텍스처를 사용해야 합니다.

이러한 텍스처를 Normal에 연결하고 Save하면 오브젝트에 작은 **울퉁불퉁함(bumpiness)**이 나타납니다.
이 울퉁불퉁함의 정도를 조절하려면 Flatten and Normal 노드를 사용해야 합니다. 이 노드를 Normal에 연결하고, Constant(1) 노드를 Flatten에 연결합니다. 이 Constant 노드를 **파라미터(parameter)**로 만들면 인스턴스에서 Normal 값을 변경하며 효과를 볼 수 있습니다.
또한, Texture Coordinate 노드를 사용해 Normal 텍스처의 크기도 조절할 수 있습니다. Texture Coordinate를 Normal 텍스처와 Base Color 텍스처 모두에 연결해야 합니다.
Normal 효과를 제대로 보려면 장면의 **조명(lighting)**과 **그림자(shadows)**가 매우 중요합니다.

마지막으로 Texture Coordinate를 **파라미터(parameter)**로 만들고 싶다면 Multiply(곱하기) 노드를 사용해야 합니다. Texture Coordinate를 Multiply의 A에, Constant(1) 노드를 B에 연결하고 이 Constant 노드를 파라미터로 만들면 **타일링(tiling)**을 쉽게 조절할 수 있습니다.
'Unreal Engine' 카테고리의 다른 글
Unreal Engine 모델링에서 재질(Materials) 편집하기 (0) | 2025.09.15 |
---|---|
Unreal Engine 재질 및 텍스처 작업 상세 가이드 (0) | 2025.09.15 |
Unreal Engine 다양한 종류의 재질을 직접 만드는 방법 (0) | 2025.09.14 |
Unreal Engine 레이 트레이싱의 도움 없이 씬에 조명을 적용하는 방법 (0) | 2025.09.13 |
Unreal Engine 야간 조명 설정하기 (0) | 2025.09.13 |