[투명 재질 머티리얼 : Lit / UnLit / Translucency]
1. 블랜드 모드 : Translucent / 세이딩 모델 : Default Lit 의 머티리얼 생성
Details 패널에서 Disable Depth Test를 체크해주면 다른 물체에 가려져도 항상 표시된다. ( ex> 게임의 상태창 )
2. 블랜드 모드 : Translucent / 세이딩 모델 : UnLit 의 머티리얼 생성 ( Unlit은 빛의 영향을 받지 않는 상태이므로 Emissive Color로 색을 표현)
뷰모드를 세이더 복잡도로 바꾸어 머티리얼 부하 정도 확인하기. 투명 재질은 기본적으로 연산 비용을 많이 잡아 먹기 때문에 주의가 필요하다. 차이를 비교하면 Lit 보다는 Unlit의 투명재질이 좀 더 저렴하게 사용가능하다.
투명 재질을 겹쳤을 때 부하가 심해지는 모습. 투명 재질 사용을 줄이는 방향으로 설계하여 사용하기 (ex> 앞에는 투명재질, 뒤에는 다른 Fake 방식 이용하기)
최적화를 확인하기 위해서 ( 버벅임을 줄이기 위해서 ) Show FPS를 켜서 30프레임 밑으로는 떨어지지 않는지 확인한다.
사용 용도에 따라 최적화의 프레임 정도는 달라질 수 있다.
3. 블랜드 모드 : Translucent / Translucency에서 Screen Space Reflections를 체크해주고 Lighting Mode를 Surface ForwardShading으로 설정한 머티리얼 생성
가장 비싼 방법, 표면에 반사가 맺히므로 유리, 물의 표현에 적합
4. 블랜드 모드 : Translucent / Translucency에서 Lighting Mode를 Volumetric PerVertex NonDirectional로 설정한 머티리얼 생성
버텍스를 중심으로 빛 계산을 하게 되는 세팅. 와이어의 흐름에 따라 빛이 영향을 받는 것을 볼 수 있다.
5. 블랜드 모드 : Translucent / Translucency에서 Lighting Mode를 Volumetric NonDirectional로 설정한 머티리얼 생성
자체적으로 쪼갠 단위별로 라이트를 계산하는 방식. 버텍스와 상관 X. 특정 범위별로 뚝뚝 끊기듯이 라이트가 반사되는 것을 볼 수 있다.
6. 블랜드 모드 : Masked 로 설정한 머티리얼 생성
Opacity Mask를 사용하면 알파 부분이 투명으로 계산되는 것이 아니고 아예 없는 것으로 취급 되기 때문에 이 방법은 연산이 저렴하다.
7. 블랜드 모드 : Masked 로 설정 + Dither TemporalAA 노드 사용
픽셀화하여 구멍이 생기듯 표현이 되는데, 이를 통해 반투명 재질의 느낌을 낼 수 있다. 게임 쪽에서 많이 사용하는 Fake 반투명 느낌. 연산이 저렴하다.
8. 블랜드 모드 : Translucent / 디테일 패널 - refraction Method를 Index of Refraction으로 변경.
결과 노드에 Refraction ( Index of Refraction )핀이 활성화된다.
간단히 노드를 연결하고 머티리얼을 확인ㄴ하면 가장자리로 갈 수록 굴절이 들어간 것을 확인할 수 있다.
추가로 노멀 맵을 적용하면 노멀 맵에 따라 굴절이 변화하는 효과를 볼 수 있다.
9.
임의의 이미지를 반사, 굴절에 입히기
9_1. 반사 이미지 적용
VertexNormalWS - Reflection Vector - Texture Cube 맵(HDRI)의 UVs에 연결하여 Base Color에 넣어주면 보는 각도에 따라 이미지가 반사되는 듯한 느낌을 줄 수 있다.
9_2. 굴절 이미지 적용
Refract 노드에 Camera Direction Vector를 Ray Direction / VertexNormalWS를 Surface Noraml / Constant를 Refractive Index Origin / Constant(IOR값 조절용)를 Refractive Index Target에 연결해준다.
Refract 노드의 Vector를 Texture Cube 맵(HDRI)의 UVs에 연결하여 Base Color에 넣어주면 보는 각도에 따라 이미지가 굴절되는 듯한 느낌을 줄 수 있다.
9_3. 반사와 굴절 동시 적용
앞서만든 반사와 굴절 이미지를 Lerp로 연결하여 Fresnel을 Alpha로 연결해주면 반사와 굴절을 동시에 가지는 유리 구슬과 같은 느낌을 낼 수 있다. Emissive Color에 같이 연결하면 빛나는 HDRI 느낌을 더 살려줄 수 있다.
10.
ICE 머티리얼
Camera Vector에 TransformVector 연결.
Transform Vector는 좌표계 변환을 위해서 사용하는 노드. World Space를 Tangent Space로 바꾸어준다.
Custorm Reflection Vector에 머티리얼의 겉면( 아이스의 표면)에 넣을 노멀 텍스처를 연결.
Camera Vector에는 Transform Vector를 연결.
Custorm Reflection Vector를 Mask로 RG와 B채널로 분리해주고,
B채널은 내부의 텍스처와 외부의 노멀의 깊이 차이를 조절하기 위해서 Constant와 Abs를 Divide에 연결하여 노드를 연결해준다. (Abs는 -값을 양수로 변환해준다.)
Constant 대신 텍스처의 하나의 채널을 이용하여 흰 컬러는 깊게, 블랙 컬러는 깊이가 안들어가게 조절해줄 수 있다.
추가적으로 Texture Size(내부 이미지의 사이즈)를 조절하기 위해 노드를 추가로 달아준다.
조절된 노이즈 맵을 기반으로 3 Vector를 달아주고, Roughness 조절 노드를 달아주면 완성.
이렇게 텍스처/ Vector로 연산하여 제작한 머티리얼의 경우 주변환경에 물리적인 영향을 받지 않기 때문에 이에 대한
주의가 필요하다.
11. Dissolve
알파 텍스처 값에 따라 서서히 사라지는 효과의 머티리얼 제작.
머티리얼 함수를 하나 생성하여 노이즈 텍스처 불러오기.
(World Position과 Noise 노드로 하는 것은 테스트 필요)
Noise Texture 값에 -2를 더해주어서 값이 0 이하로 내려가도록 만들어준 후,
Input 노드와 Multiply 노드를 Add로 연결해주어 값이 다시 0~1값이 되도록 정규화 시켜준다.
Clamp값을 이용하여 다시 한번 정리해준 후
제작한 머티리얼 함수를 머티리얼 제작할 때 사용하기 위해서
에디터의 빈 곳을 눌러서 디테일 패널의 Expose to Library 체크
블랜드모드 Masked로 새로운 머티리얼을 하나 생성한 후 에
앞서 만든 머티리얼 함수를 불러와 적용해준다.
노이즈 맵에 따라 서서히 사라지는 효과 완성.
[ 움직이는 커튼 머티리얼 ]
Time과 Panner를 이용하여 움직이는 Texture를 위해 세팅해주고, 노멀 텍스처의 UVs에 연결해준다.
VertexNormalWS를 텍스처의 RGB값과 연결해주면 버텍스가 월드축을 기준으로 움직이게 되고,
여기에 3 vector를 add로 연결하면 흔들림의 방향을 잡아 줄 수 있다.
추가적으로 커튼의 윗쪽에 움직임의 제한을 주기 위해서 Vertex Color를 연결하여 버텍스 페인팅이 가능하도록해준다.
* 마지막에 Transform ( TransformVector ) 노드를 이용하여 LocalSpace를 World Space로 변경해주면 레벨에서 회전했을 때 흔들리는 방향이 바뀌는 현상을 방지해줄 수 있다.
제작한 머티리얼을 적용하고 Mesh Paint Mode에서 Red채널에 위에서부터 value값이 0 ~ 아래 1값이 되도록 칠해준다.
버텍스 페인팅으로 윗부분 고정 완료.
똑같은 어셋일 경우 Mesh Paint를 Copy & Paste해서 복사 붙여넣기 해줄 수 있다.
저번 수업 복습.
ss 재질 적용하기 & 단면 메시 양면 그림자 켜기 ( 메시 선택 후 디테일 창에서 검색)
[ 물 머티리얼 제작 : Single Layer Water ]
AbsorptionCoefficients : 흡수한 컬러의 반대 색을 반사시키는 역할.
물의 깊이에 따른 컬러 변화를 주기 위해서 추가적으로 노드를 달아준다.
Divide를 이용해 100을 나눠주는 이유는 Murkiness 조절을 위해 섬세한 컨트롤이 필요하기 때문이다.
머티리얼 인스턴스를 만들어서 WaterMurkiness를 조절한 결과
비슷한 방식으로 Water Scattering에 관한 옵션을 추가할 수 있다.
마지막으로 흘러가는 물결 노말을 연결해주면 완성.
[Post Process Volume으로 Reflection 조절하기]
Reflection을 조절하기에 앞서 Project Settings에서 Engine - Rendering - Global illumination - Dynamic Global illumination Method와 Reflections - Reflection Method를 Lumen으로 바꿔준다.
Post ProcessVolume을 하나 생성하고 디테일 패널에서 Reflections Method - Lumen으로 변경
Lumen Reflections의 옵션들을 모두 켜준다.
High Quality Translucency Reflections를 켜주면 좀 더 퀄리티 높은 반사를 얻을 수 있다.
Max Reflection Bounces는 필요에 따라 올려준다.
[ Displacement Map 대체 머티리얼 : WPO / World Position Offset ]
Unreal 4에서는 Displacement를 표현하기위해 Tessellation 옵션을 사용했지만 Unreal5에서 나나이트가 들어오면서
기본 기능에서 Tessellation을 없애버렸다.
버텍스 수에 따른 결과 차이.
WPO 사용 시 깜빡거리는 현상이 나타날 수 있는데 이는 메시 선택 후 디테일 창에서 Bounds Scale을 2정도로 높여주면 된다.
[ Displacement Map 대체 머티리얼 : Parallax ]
착시효과를 이용해서 Displacement Map을 표현하는 방법
단점으로는 가장자리의 변형이 일어나지 않아 완벽한 입체로 보이지 않을 수 있다. 단순 노멀맵보다는 고퀄리티의 결과를 얻어낼 수 있다.
[ Displacement Map 대체 머티리얼 : BumpOffset ]
월드포지션으로 텍스처의 위치를 월드에 고정 시키면 메시를 움질일때 텍스처가 변하도록 할 수 있다.
가상의 층을 분리시켜 착시를 일으키는 방법
Height 값이 적을 수록 밑에 레이어의 텍스처가 왜곡이 심해진다.
텍스처 적용 버전으로 응용.
* End 키를 누르면 오브젝트를 바닥에 붙일 수 있다.
https://blog.naver.com/othiai4239/130142774226?trackingCode=blog_bloghome_searchlist
'Unreal Engine' 카테고리의 다른 글
Unreal Level Design Project- 01 (0) | 2024.05.07 |
---|---|
생성형 AI - 04 (0) | 2024.05.03 |
Motion Capture - 02 (0) | 2024.04.30 |
Unreal Lighting - 04 (0) | 2024.04.29 |
생성형 AI - 03 (0) | 2024.04.26 |