언리얼 - Material 8

Material (8) _ Triplanar

경사면을 보면 위와 같이 텍스쳐가 길게 늘어져있다. 이는 텍스쳐를 한번만 적용함으로써 발생하는 일인데 이번에는 Triplanar를 이용하여 이것을 고쳐볼 것이다. 위는 Triplanar함수를 간단히 적용한 머티리얼이다. 이 함수는 xyz축을 따라 3번의 텍스쳐를 적용시킨다. 구를 하나만들고 위의 머티리얼을 적용한다. 수치를 조절하고 보면여러개의 텍스쳐가 붙어있는 것을 볼 수 있다. 이를 함수로 만들기 위해 기존의 MF를 복사하여 위와 같이 Triplanar로 대체하였다. 아래쪽도 전부 바꿔준다. Landscape 머티리얼로 와서 SlopeLayer에 위의 새로 만든 MF를 추가한다. 새로 추가된 변수2개를 위한 파라미터를 추가한다. 나머지는 기존에 있던 파라미터들을 복사한다. 이후 스위치에 따라 바꿀 수..

Material (7) _ 경사로 VertexNormal 계산

이번에는 꽤나 재미있는 작업을 해 볼 것이다. 물체의 표면에서 나오는 벡터를 나타내는 VertexNormal을 내적(Dot)을 하여 경사로의 알파값으로 이용할 것이다. 우선 경사로의 돌은 보다 텍스처 크기를 크게 쪼개야하므로 따로 파라미터로 지정한다. 위와 같이 강도를 낮추면 보다 큰 돌질감이 나타난다. 다음으로 VertexNormal의 내적이다. 수학이 조금 들어가서 어려울 수 있는데 내적의 원리만 알면 간단하다. a 벡터와 b 벡터의 내적은 |a| x |b| x cos θ로 표현이 되는데 코사인의 값에 따라 직각일 경우 0, 평행일 경우 1 이며 그 사이의 경우 0~1 사이의 값이 된다. 이를 이용하면 특정한 벡터와 물체의 표면 벡터들을 내적하였을때 값들이 0~1 사이로 분포하고 이를 활용할 수 있다..

Material (6) _ 랜드스케이프 블렌드

랜드스케이프에 앞서서 만들었던 블렌드 기능을 랜드스케이프에도 적용해 볼 것이다. 가장 먼저 만들었던 GrassLayer를 복사하여 아래쪽에 붙여넣기하고 이름을 SoilLayer로 바꾸었다. 텍스처를 넣는 작업은 동일하므로 머티리얼 인스턴스에서 흙 머티리얼을 넣어줄 것이다. 언리얼에서 제공하는 Landscape Layer Blend라는 함수를 이용하여 여러개의 머티리얼을 블렌드 할 수 있다. 위와 같이 랜드스케이프모드에서 페인트를 누르면 아래의 추가된 레이어들을 볼 수 있다. GrassLayer를 디폴트로 하였다. +를 눌러 레이어를 만들고 적용시킬 수 있다. 추가된 SoilLayer에 퀵셀 브릿지에서 적당한 흙 머티리얼을 받아서 넣는다. 골목길 만들때처럼 페인팅 할 수 있다. 흙 색깔이 나도록 수치를 조..

Material (5) _ Specular, Normal, ORD 추가

지난번에 이어서 퀵셀 브릿지에서 다운받은 에셋에 포함된 노말맵과 ORD를 적용하고 Specular도 적용해 볼 것이다. 단순 노이즈만 적용되었고 음영처리, 빛반사 등이 적용되지 않아 어색하다. Specular, Normal, ORD 전부 마스터 머터리얼에서 만들어보았던 것들로 원리 그대로 적용하면 된다.  노말 텍스처와 강도를 Input으로 넣어 조절할 수 있도록 하였다. 노드를 잘라 적용하였다.  ORD에서 O는 Ambient Occlusion이고 R은 Roughness, D는 Displacement이다. Displacement는 언리얼5에서 적용되지 않으므로 OR만 적용하였다. 최종적으로 노드를 연결한다. 최종적인 머터리얼 함수의 모습 위와 같이 머터리얼 인스턴스에서 조절할 수 있다.

Material (4) _ Landscape 지형생성 및 타일링 제거하기

Landscape를 이용하여 간단한 무작위 지형생성 및 타일링 제거를 해볼 것이다. 랜드스케이프 모드로 들어가서 노이즈를 선택하고 노이즈 강도, 툴 강도, 브러쉬 크기 등을 조정하여 지형을 만든다. 퀵셀 브릿지에서 찾은 Mossy Grass 머터리얼 인스턴스를 지형에 넣어주었다. 지형을 보면 마치 블록처럼 풀이 깔려있어 매우 부자연스러운 것을 볼 수 있다. 이를 자연스럽게 보이게 하는 작업(타일링 제거)을 할 것이다. 먼저 머터리얼 함수를 생성한다. 이 함수에 기존에 마스터 머터리얼을 만들어 BaseColor, Brightness, Saturation, Contrast, Tint 등을 조절한 것을 이 함수로 전부 조정할 수 있도록 한다. Input 값을 넣으면 함수의 입력부분에 값이 생긴다. 이 값의 종..

Material (3) _ 머터리얼 블렌드 및 시네마틱 카메라

머터리얼들을 블렌드해서 메시 페인트로 블렌드된 머터리얼들을 적절히 섞어볼 것이다. 또한 시네마틱 카메라로 씬을 간단히 구현해볼 것이다.  언리얼에서 제공하는 퀵셀 브릿지(Quixel Bridge)를 이용하면 고품질의 머터리얼 에셋들을 쉽게 구할 수 있다. 위와 같이 여러개의 머터리얼들을 사용하여 뒷골목을 만들어 볼 것이다.  퀵셀 브릿지에서 제공하는 머터리얼 블렌드로 머터리얼들을 합칠 수 있다. 5.4버전에서 버그가 있어 위와 같이 수동으로 넣어주었다. Base Layer, Middle Layer, Top Layer로 나뉘며 Base Layer가 가장 위에 오는 Layer이다. 블렌드된 머터리얼을 벽에 넣어주면 위와같이 Base Layer가 기본적으로 적용된다.  메시 페인트 모드로 들어가서 위와 같이 ..

Material (2) _ Master Material

Material의 다양한 값들중에 많이 쓰이는 베이스컬러, 메탈릭, 스페큘러, 러프니스, 노말, 앰비언트 오클루전을 사용자가 쉽게 조절할 수 있는 Master Material을 만들것이다. 파라미터를 이용하여 사용자가 직접 값을 넣을 수 있도록 하는 것이다.  4Vector을 파라미터로 바꾸면 위의 UV에서 보듯이 4개의 변수를 할당 할 수 있어서 편하다. Metalic은 물체의 금속성을 표현하는 값이고 Specular는 물체가 빛을 얼마나 반사시키는지에 대한 값이다. Roughness는 물체 표면의 거칠기, Normal은 물체의 음영을 표현하는 값이다. 노말은 값이 작아질수록 음영어 강화되는데 편의를 위해 1-x를 써서 값이 커질 때 음영이 강화되도록 바꾼것이다. AO는 물체가 스스로 만드는 그림자 표..

Material (1) - 머터리얼 기초

나이아가라를 살짝 공부해보면서 머터리얼에 대해서 먼저 공부해야겠다는 생각이 들어서 머터리얼 관련 기초적인 공부를 하는 중이다.  머터리얼을 하나 만들어서 베이스 컬러에 대충 검은색에 가까운 색을 넣었다. TextureCoordinate를 가져와 ComponentMask로 UV를 나누어 각각 다르게 값을 넣을 수 있도록 하였다. 넣는 값은 U Tile, V Tile로 파라미터로 만들어 Append 함수로 합쳐서 넣으면 된다. 파라미터는 사용자가 값을 조절할 수 있는 변수로 승격과 비슷하다고 보면 된다. Panner이라는 함수를 쓰면 머터리얼의 움직임을 줄 수 있는데 아래와 같이 Time함수로 값을 넣어 연결해주면 된다. R의 값을 Opacity(불투명도)에 넣어 0인 검은색은 투명해지고 1인 흰색 화살표만..