개발/Unreal Engine / / 2022. 3. 3. 14:14

Learning Unreal 4 언리얼 공부일지 - Material Vertex Blend(Megacans Plugin) & World Aligned Blend

반응형

 

 

위 사진의 모델이 뭔지 아는가?

 

바로 툰드라 지형의 돌 모델이다. 근데 위에 눈이 덮혀있다면 얼마나 좋을까.

 

언리얼 엔진의 quixel bridge plugin인 megascans를 열고, 두 material을 선택한 상태로 create material blend를 실행한다.

BlendMaterials라는 폴더에 material이 떡하니 생긴다.

 

material을 켜보면 Texture가 뭔가 더 많다.

 

자 이 Blend된 Material을 사용하는 방법은 다음을 참고하면 좋다.

https://www.youtube.com/watch?v=j_3_lYyydgA 

위에서 설명하는 vertex blend material 기능을 이용해 볼 것이다.

 

Material 디테일 파라미터 중 Global의 Use Puddle Layer가 있다.

 

devil may cry 5

Puddle은 웅덩이를 말하는데, 본디 이 기능이 유용하게 사용되는 곳이 위 사진 게임에서 바닥에 보이는 물웅덩이를 만들 때이다. 기존 Material위에 다른 Material을 페인트칠하듯 칠하는 것이다.

 

Quixel의 plugin인 megascans에서는 이러한 기능을 위해 mesh의 vertex를 기준으로 페인트를 색칠하는 기능을 만들어놓은 것이다. 본래 위 게임처럼 평평한 바닥에 웅덩이를 만들때 유용하게 사용하려는 의도이기 때문에 돌 위에 눈을 자연스럽게 뿌리는데에는 부족함이 있다.

 

이어서 기능이나 알아보자.

Global 옵션에서 Use Puddle Layer를 체크한 후,

Base Layer Adjustments와 Middle Layer Adjustments를 체크하여 두 개의 Material Layer를 조정가능하게 설정한다. 

Use Individual Displacement Values는 각각의 Layer를 개별로 Displacement 값을 조정하는 설정인데, 현재는 사용할 필요가 없다.

 

Material을 오브젝트에 넣고

모드의 메시 페인트를 클릭하여 모드를 변경한다.

 

mesh를 선택한 상태에서 페인트 기능으로 변경하면

 

메시 페인트 창에서 브러시를 조절할 수 있다.

Size는 브러시의 크기, Strenth는 페인트의 강도이다.

색 페인팅의 채널은 Red가 Middle Layer, Green이 Top Layer이고, Blue의 경우 표면이 매끄러워지기만 하는 듯 하다.

Green은 Top Layer를 설정하지 않은 경우 Parent Material로 적용된다.

(채널은 한 가지에만 체크하여 사용해야한다)

 

 

위 사진에서는 Base Texture가 Snow이지만, 반대로 본래의 Texture에 Snow를 페인팅하기 위해서는 색을 교체하고, 채워 바꿔버린다.

다시 색을 교체하여 Paint Color를 Snow로 설정한 후 브러쉬로 칠하면, 돌 위에 눈이 덮히는 것을 볼 수 있다.

 

하지만 페인트 기능으로 칠하니까 눈이 덮힌게 아니라 그냥 흰 색 페인트를 칠한 느낌이다.

 

사실 Quixel에서 megascans의 옛 기능인 world aligned blend기능을 없애고 이러한 브러시 기능으로 변경한 것이다.

 

World Aligend Blend

world aligend blend는 world 좌표계의 축 방향으로 투영하는 shader기법이다.

이를 이용한 쉐이더 그래프로 눈이 쌓이는 Material을 만들어보자.

 

아직 쉐이더를 공부해보거나 한 적이 없어 여러 방법들의 구현과정은 아직은 정확히 알지 못한다.

https://www.youtube.com/watch?v=yjByX5DKQhY 

위 영상을 참고하여 

 

world aligned blend노드를 사용한 쉐이더 그래프를 작성하였다. 위 그래프에서는 blend되는 값들이 interpolate (보간 Lerp)노드의 비율값으로 들어간다. 이 보간된 값으로 base color와 roughness값에 적용되는 방식이다.

(참고로 base color에 연결되는 texture는 각각 돌과 눈의 Albedo textrue이다)

 

Blend Sharpness, Blend Bias 등 조절에 영향을 미치는 수치 값에 대해서는 앞으로 공부할 필요가 있다.

 

위 처럼 눈이 쌓이는 식으로 Material이 적용되고, 쉐이더 그래프의 World Aligned Blend의 Blend Bias값을 조절하면, 덮이는 영역을 조절할 수 있다.

 

보통 이러한 방식은 돌에 이끼가 덮이는 shader를 작성할 때 많이 사용되어 Mossy Rock Shader로 통용되는 것 같다.

 

 

위 그래프는 또 다른 방법이다. 

여기서는 roughness가 아니라 normal에 world aligned blend를 적용하였다. albedo texture와 normal texture가 world aligned blend에 의해 보간 비율이 결정된다.

 

추가된 textrue coordinate node에 대해서는 document를 참고하자.

https://docs.unrealengine.com/4.27/ko/RenderingAndGraphics/Materials/ExpressionReference/Coordinates/

 

Coordinates 표현식

텍스처 좌표나 텍스처 좌표를 수정 또는 그 자체로 사용할 수 있는 출력값에 어떠한 작업을 하는 표현식입니다.

docs.unrealengine.com

 UV 텍스처 좌표를 출력하여, 머티리얼에 다른 UV 채널을 사용하거나 타일링을 지정하거나 메시 UV 에 다른 작업을 하거나 할 수 있는 표현식이라고 한다. 

 

위 사진으로 두 방법을 비교해보자. 가장 오른쪽에 있는 것이 normal에 world aligned blend를 적용한 material instance를 적용한 것이다.

대충 보기에도 왼쪽(중간 돌)은 눈이 쌓였다기보단 페인트를 부은 느낌이라면 오른쪽 material이 눈이 내린 것과 더 가깝다. 그 이유는 왼쪽에서는 normal texture를 blending하지 않고 static mesh의 normal texture를 사용했기 때문일 것이다.

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유