UDN
Search public documentation:

MaterialBasicsKR
English Translation
日本語訳
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 홈 > 머티리얼과 텍스처 > 머티리얼 기본

머티리얼 기본


문서 변경내역: David Green 원저. 홍성진 번역.

개요


일반적인 기본 머티리얼을 만드는 법을 그림으로 알아보는 간단한 튜토리얼입니다. 독자분들께서는 최소한 콘텐츠 브라우저에서 텍스처를 임포트하는 법머티리얼 에디터 사용법 은 알고계신다 가정하고 진행하겠습니다.

언리얼 엔진 2.5와 언리얼 토너먼트 2004 레벨 디자인에 익숙하신 분들이라면 이 튜토리얼의 기본 머티리얼 다수에 붙인 이름이 친숙하게 느껴지실 텐데, UE2.5 의 해당 머티리얼 부분과 함수성이 비슷하기 때문입니다.

이러한 기본 머티리얼은 종종 서로간의 조합을 통해 더욱 복잡한 머티리얼 셰이더를 만드는 데 쓸 수도 있습니다.

디테일 텍스처


UE3 머티리얼 시스템은 UE2.5 처럼 Detail Texture 프로퍼티가 없습니다만, 비슷한 함수성을 만드는 것은 일도 아닙니다.

UT2004 디테일 텍스처와 비슷한 디테일 텍스처는 매우 잘 돌아갑니다. 거의 중간 127 회색 값 중심으로 편향시킨 것으로, 경계선이 없는 타일링 가능 텍스처입니다.

디테일 텍스처를 임포트한 후, UnpackMax 에 대한 프로퍼티를 2.0 에서 3.0 사이로 설정해 줍니다. 그러면 텍스처를 언패킹한 상태의 밝기를 올려주는데, 보통 이렇게 하지 않으면 Multiply 연산 도중 최종 머티리얼이 어둡게 렌더됩니다. UnpackMax 디폴트 값은 1.0 입니다.

TexCoord 디바이스의 UTiling / VTiling 을 디테일 텍스처 타일링에 적당한 양으로 설정해 줍니다. 보통 그 사용량에 따라 8 에서 64 사이의 값입니다.

이 디테일 텍스처는 스태틱 메시에도, 터레인에도 좋습니다.

UE3DetailMaterial.gif

UE3DetailMaterialPreview.jpg

즉석 스페큘러


머티리얼 콜렉션의 반짝이(shiny) 메탈의 경우, 베이스 디퓨즈 텍스처 자체에서 직접 파생된 스페큘러를 추가하는 것은 꽤나 쉽습니다.

반짝이는 스페큘러 하이라이트를 만들려면, 디퓨즈 텍스처를 1 보다 큰 상수 값으로 곱해 줍니다. 보통 4 에서 8 사이의 상수 값이 좋습니다. 8 이 넘어가면 스페큘러에 블룸 "글로우"가 번지기 시작합니다.

주: 스페큘러는 텍스처에 그런 기능이 포함된 경우 디퓨즈 텍스처의 알파 채널에 있는 정보로 물려줄 수도 있고, 다른 방법으로는 별도의 2차 텍스처로 물려줄 수도 있습니다. 이런 식으로 디퓨트 텍스처 자체와는 다른 커스텀 스페큘러가 가능합니다.

주: 머티리얼에 스페큘러를 추가하면 할당된 노멀 맵의 "깊이"감 역시 향상됩니다.

UE3SpecularMaterial.gif

UE3SpecularMaterialPreview.jpg

고급 스페큘러


위에서 본 것처럼 베이스 디퓨즈 텍스처에서 파생된 스페큘러 머티리얼은 거의 약간은 평평하고 부자연스러워 보일 수가 있는데, 휘도가 비슷한 텍스처 픽셀 전체에 걸쳐 고르게 스페큘러 효과를 적용하기 때문입니다.
스페큘러를 조금 더 도드라져 보이게 만들고 노멀맵 깊이감도 향상시키기 위해서는, 파생된 스페큘러 대비값을 Power 표현식을 사용하여 올려주면 됩니다.
Power 표현식은 대비 콘트롤같은 식으로 작동하는데, Exp 값이 1.0 이면 그대로이고, 1.0 에서 2.0 사이면 대비가 올라갑니다.

그리고서 텍스처의 전체적인 밝기 수준을 정상으로 되돌리기 위해 더 커진 Power 표현식 출력값을 곱해줍니다. Multiply 의 Constant 값을 16 이나 32 이상으로 정말 높게 설정하면, 스페큘러 효과 중 더 밝은 부분은 블루밍으로 밀립니다.

UE3SpecularEnhMaterial.gif

UE3SpecularEnhMaterialPreview.jpg

노멀 맵


언리얼 엔진 신버전의 특징인 노멀 맵은 머티리얼에 3D 디테일을 강화시켜 줍니다.

디퓨즈와 노멀 텍스처를 임포트합니다. 노멀 텍스처에 대해서는 CompressionSettings 을 TC_Normalmap 로 하고 LODGroup 을 TEXTUREGROUP_WorldNormalMap 으로 설정했는지 확인해야 합니다.

주: 머티리얼에 스페큘러를 추가하면 할당된 노멀맵의 "깊이"감 역시도 살아납니다.

UE3NormalMaterial.gif

UE3NormalMaterialPreview.jpg

고급 노멀 맵


가끔 노멀맵 텍스처로 낼 수 있는 범프(돌기) 효과의 양이 충분치 않을 수 있습니다.
노멀맵 효과나 그 시각적인 깊이감을 향상시키기 위해, NormalMap TextureSample 에 Constant3Vector 를 곱해주고, B (Blue 또는 Z) 벡터를 1.0 미만의 값, 이를테면 0.5 나 0.75 정도로 변경해 줍니다.
R 과 G 를 1.0 이상으로 올리면 노멀맵 깊이감도 살아나지만, 머티리얼에 있는 스페큘러의 시각 효과가 약간 달라집니다.
편하신 대로 R 과 G 값은 1.0 에서 2.0 사이로, B 값은 0.25 에서 1.0 사이로 바꿔 보시기 바랍니다.

참고로 노멀맵 깊이감은 간단히 B 는 1.0 으로 놔두고 R 과 G 값을 1.0 미만으로 낮추는 것으로도 줄일 수 있습니다. 예를 들어 R 과 G 가 0.5 이면 노멀맵 깊이가 상당히 떨어질 것입니다.

UE3NormalEnhMaterial.gif

UE3NormalEnhMaterialPreview.jpg

디테일 노멀 맵


디테일 텍스처가 디퓨즈 텍스처에 괜찮은 디테일을 추가시킨 것과 비슷한 방식으로, 디테일 노멀 맵 역시도 노멀 맵 텍스처에 괜찮은 디테일을 추가시킬 수 있습니다. 노멀 맵 텍스처의 해상도가 512x512 정도로 낮을 때 가장 좋은데, 최종 머티리얼에 괜찮은 고해상도 범프 디테일을 추가해 주기 때문입니다.

노이즈 노멀 맵은 단지 그림판으로 만든 그레이스케일 1024x1024 텍스처로, 회색 값 127 로 채운 다음 랜덤 픽셀 노이즈를 추가한 것입니다. 그런 다음 이 그레이스케일 텍스처를 ATI Compressonator 나 NVidia nvDXT 툴로 돌려 표준 노멀 맵 파일로 변환시킨 것입니다.

머티리얼의 Constant3Vector 장치는 R=1, G=1, B=0 로 설정하여 Multiply 장치를 통해 디테일 노멀 맵에서 파랑 채널을 모두 제거했습니다. 그렇게 하지 않으면 두 노멀 맵을 섞을 때 최종 범프 디테일이 제거되기 때문입니다. 그런 다음 디테일 노멀 맵을, 두 노멀 맵 텍스처의 합을 구하기 위해 디퓨즈 텍스처 용으로 만든 메인 노멀 맵에 더해줍니다.

UE3DetailNormalMaterial.gif

UE3DetailNormalMaterialPreview.jpg

자체-발광 / 이미시브 / 블룸


언리얼 엔진 3 는 라이트가 빛을 방사형으로 내뿜을 수 있도록 자체-발광(self-illumination) 텍스처를 "밀어주는"(pushing) 기능을 지원합니다. UE3 에서 색 값의 범위는 0.0 에서 1.0 까지입니다. 색 값이 1.0 을 초과하면 "블룸" 으로 렌더됩니다.

이 예제에서 디퓨즈 텍스처는 디퓨즈의 어느 영역이 자체-발광 부분인지를 결정하는 이미시브 텍스처와 함께 임포트됩니다. 이미시브 텍스처의 컬러 레벨 값을 1.0 이상으로 올리면 강제로 빛나도록 할 수 있습니다.

이미시브 텍스처 샘플에는 RGBA 값을 얼마만큼 늘려줄 것인지 지정할 수 있는 벡터 파라미터 장치로 곱해주어, 텍스처의 이미시브 컬러를 블루밍으로 밀어줍니다. 이 경우 RGBA 값 8,0,0,0 은 빨간색을 빛나도록 만들어 줍니다.

그레이스케일 이미시브 텍스처를 사용했다면, VectorParameter 프로퍼티에 적절한 RGBA 값을 입력해 줘서 원하는 대로 어떤 커스텀 이미시브 컬러도 지정할 수 있었을 것입니다.

UE3EmissiveMaterial.gif

UE3EmissiveMaterialPreview.jpg

텍스처 패너


Texture Panner(텍스처 패너, 이동기)는 X 및/또는 Y 방향으로 텍스처를 지정된 속력으로 패닝합니다.

패너 장치에는 패닝 속력과 방향을 지정할 수 있는 프로퍼티 SpeedX, SpeedY 두 개가 있습니다. 양수 값은 한 방향으로, 음수 값은 반대 방향으로, 값이 작으면 천천히, 크면 빠르게 패닝시킵니다.

UE3TexPannerMaterial.gif

UE3TexPannerMaterialPreview.jpg

텍스처 로테이터


Texture Rotator(텍스처 로테이터)는 텍스처를 지정된 좌표 오프셋과 속력으로 회전시킵니다. 로테이터 디바이스에는 텍스처 위에 회전 중심 좌표와 회전 속력을 지정할 수 있는 프로퍼티가 셋 있습니다. CenterX 와 CenterY 는 텍스처 위에 회전시킬 위치를 지정하는데, 0.0,0.0 는 왼쪽 위 구석, 0.5,0.5 는 텍스처 가운데, 1.0,1.0 는 오른쪽 아래 구석을 뜻합니다. 속력이 양수 값이면 텍스처를 반시계방향으로, 음수 값이면 시계 방향으로, 값이 작으면 천천히, 크면 빠르게 회전시킵니다.

UE3TexRotatorMaterial.gif

UE3TexRotatorMaterialPreview.jpg

텍스처 스케일 / 텍스처 타일링


타일링이나 스케일링이라 하면 머티리얼을 가지고 할 수 있는 가장 간단한 작업일 것입니다.

TexCoord 장치를 Texture Sample 의 UV 노드에 연결하고, UTiling 과 VTiling 프로퍼티 값을 지정합니다. 값이 1.0 이면 디폴트 텍스처 크기입니다. 값이 그보다 작으면, 예로 0.5 이면 스케일은 두 배, 타일링은 반 배가 됩니다. 값이 그보다 크면, 예로 2.0 이면 크기는 반 배, 타일링은 두 배가 됩니다.

UE3TileMaterial.gif

UE3TileMaterialPreview.jpg

마스크 머티리얼


Masking(마스킹)은 상자, 펜스, 풀, 나뭇잎처럼 군데군데 투명한 부분이 있는 머티리얼에 사용됩니다. 마스크를 얻기 위해 설정해 줘야 하는 프로퍼티는 조금밖에 없습니다.

머티리얼의 투명한 부분은 메인 디퓨즈 텍스처 자체에서 떼어올 수도 있고, 어느 픽셀이 (하얗거나 옅게 표시하여) 불투명한지 (까맣거나 짙게 표시하여) 투명한지를 나타내는 그레이스케일 알파 채널이나 모노크롬 마스크같은 2차 텍스처에서 구해올 수도 있습니다.

OpacityMask 노드는 마스킹 소스에 연결됩니다. 머티리얼 프로퍼티 중 BlendMode 는 BLEND_Masked 로, TwoSided 체크박스는 보통 체크(참으로 설정)하고, 선택적으로 투명한 부분 위의 에지가 제대로 나오도록 OpacityMaskClipValue (불투명 마스크 클립 값) 프로퍼티도 조절해 줍니다. OpacityMaskClipValue 픽셀을 그릴지 버릴지 결정하는 기준점입니다. 0.1 정도로 낮은 값이면 (0.0 에서 0.1 까지 어두운 색이 그려지지 않아) 검정쪽, 0.6 정도로 높은 값이면 (0.0 에서 0.6 까지 어두운 색에서 조금 밝은 색까지 그려지지 않아) 하양쪽이 됩니다.

UE3MaskMaterial.gif

UE3MaskMaterialPreview.jpg

반투명 머티리얼


Translucent(반투명) 머티리얼은 유리나 일부분만 투명한 머티리얼을 만드는 데 쓰입니다. 여러가지 반투명 효과를 내는 데 사용할 수 있는 머티리얼 표현식 구성과 스타일은 많이 있습니다. 반투명 머티리얼의 기본은 디퓨즈 텍스처 샘플과 오패시티(불투명) 텍스처 샘플입니다. 오패시티 텍스처를 디퓨즈 텍스처의 알파 채널에 합치면, 단 하나의 32 비트 텍스처에 텍스처 요구조건을 전부 포함시킬 수 있습니다.

머티리얼의 BlendMode 프로퍼티는 BLEND_Translucent 로 설정해야 하며, LightingModel 프로퍼티는 종종 MLM_Unlit 로 설정합니다. 머티리얼의 TwoSided 프로퍼티는 유리가 보통 양면이듯이 보통 참으로 설정합니다.

반투명 머티리얼에 대한 변종의 예를 들어 보자면:

  • Texture Sample RGB 출력을 머티리얼의 디퓨즈 노드가 아닌 이미시브 노드에 연결합니다. 그러면 머티리얼의 라이팅된 버전이 만들어집니다.
  • Texture Sample 을 머티리얼의 디스토션 노드에 추가하여, 유리 뒤의 물체가 일그러지게 합니다. 디퓨즈나 오패시티 텍스처, 또는 거기에서 파생된 버전이 여기에 자주 쓰입니다. 이렇게 하려면 LightingModel 을 MLM_Unlit 로 설정해 줘야 합니다.
  • NormalMap TextureSample 을 추가하여 머티리얼의 노멀 노드에 연결해 주면 돌출 부분이 세밀해 집니다.

UE3TranslucentMaterial.gif

UE3TranslucentMaterialPreview.jpg