- Exterior <아스팔트 길 만들기> -


Exterior 쉐이딩은 interior 쉐이딩보다 어렵다. 실내의 구조물들에 비해 실외 구조물들은 세월의 흔적들이 많고, 다양한 간접광에 영향을 받기 때문에 재질에 세심한 주의가 필요하다. 이번 포스팅부터 Exterior 쉐이딩을 다뤄볼 예정인데, 첫번째로 아스팔트를 만들어보자.


아스팔트 쉐이딩은 ai standard surface 쉐이더의 3가지 노드구조를 조합해줘야 한다.

1) Base Weight

2) Base Color

3) bump 


1 『 씬 설정

먼저 씬을 설정해보자. 아래 사진처럼 간단한 건물 배경처럼 폴리곤 박스들을 세우고, 아스팔트 모양처럼 길을 만든다. 라이팅은 arnold skydom라이트(ramp 노드로 노을 느낌제작)와 directional 라이트의 색온도를 3000 k로 맞춰주었다.


2 『 전체 노드구조

base weight값에 아래 3가지 노드( Solid Fractal,set Range, Layered Texture )를 이용한다. 실외 쉐이딩에는 기본적으로 아래 9가지 노드가 자주 사용된다.  


- Solid Fractal, 

- ai noise, 

- set Range, 

- layered texture, 

- ramp(projection), 

- multiply divide, 

- curvature, 

- grid(projection), 

- granite(대리석) 




* solid fractal 노드

-> solid fractal노드는 아래처럼 2D 이미지의 안개 느낌을 준다. 노이즈를 확대 또는 축소하고, 비율조절에 따라 쉐이더의 거친느낌이나 세월의 흔적을 표현할 수 있다.


solid fractal 노드에서 중요한 부분은 Ratio와 frequency Ratio 항목이다. 위의 사진은 Ratio값을 default (0.705?)로 설정했고, 아래사진은 Ratio 수치를 작게 만든 이미지다.


-> Ratio값에 따라서 균열의 모습이 모호해짐을 알 수 있다. 그라디언트와 비슷하다.

-> Frequency Ratio는 균열을 더욱 세분화 시킨다.


아래 두개의 사진을 비교해보면, frequency값을 알 수 있다.


-> Frequency 값 감소 (default:2, 현재: 1)


* Set Range노드

-> set range노드는 정해진 수치의 최소값과 최대값을 임의의 값으로 재조정할 수 있는 노드다. 가령, 원래 값이 0 ~ 360로 정해진 속성을, 0 ~ 1 의 범위로 재조정하고 싶다면 set range노드를 사용한다. 또한, 재조정한 수치에서 영향력을 줄이고 싶다면, min수치를 높여주거나 낮춰준다. (max도 동일)


    OutValue = Min + (((Value-OldMin)/(OldMax-OldMin)) * (Max-Min))

autodesk 메뉴얼에는 위와 같이 set range노드의 output 공식을 설명해준다.


위의 setRange 노드에서 Value값은 0.858이다. 해당 값을 outValue공식에 접목해보자. OldMin값을 0으로 하고, Old Max값을 1로 정해주면, (Value - OldMin) / (OldMax - OldMin) = value 가 된다. 즉, "OutValue = Min + Value" 이 된다.


`(Max - Min)값은 1이기 때문에 곱하면 그대로이다.`


OutValue가 최소값 + Value값이라는 말은, value값을 작게 정하더라도, 최소값(Min)에 따라 setRange노드로 사후설정이 가능하다는 의미다. 반대로 Max - Min 값이 마이너스가 된다면, value값보다 더 낮은 수치로 만들 수도 있다. (알파값일 경우 양각에서 음각을 표현가능)


* Layered Texture노드

-> Layered Texture노드는 텍스처 노드들을 섞을 수 있는 노드다. 아래 사진처럼, 각족 문양들을 알파 텍스처로 넣고, 기본 색을 섞어서 다양한 흔적들을 쉐이더에 새길 수 있다. 


-> Layered 텍스처에서 기억해야 할 부분은, 텍스처 순서에 따라 output color값이 달라진다는 점이다. 알파값으로 'multiply'해야 할 값을 앞에 넣고, 'over'방식 합성으로 기본색이 되는 텍스처는 가장 나중에 위치한다. 텍스처들의 순서변경은 '마우스 중간버튼'으로 드래그 가능하다.


아스팔트를 표현할 때, 추가로 사용해야 할 노드에는 'ramp'와 'multiply divide'노드가 있다. multiply divide노드는 layered texture노드의 축소판이라 생각하면 된다. 두가지 input1, input2값을 받아서 곱하기를 하는지 더하기를 하는지 빼기를 하는지 계산할 수 있다.


ramp노드는 노드구조를 만들면서 설명해야 할 부분이다. 스팔트 쉐이딩의 전체 구조는 아래와 같다.


3 『 base weight

아스팔트는, 멀리서 보면 얼룩덜룩한 색들이 퍼져 있다. 텍스처없이 얼룩덜룩한 색을 어떻게 만들까? 답은 base weight값에 있다. base weight값에 solid fractal 노드를 넣어서 가변형의 weight값을 만들면, 아스팔트의 얼룩덜룩한 느낌을 살릴 수 있다. 


3-1 solid fractal 노드 4개 생성 

solid fractal 노드를 4개 생성하고, 이름을 각각 xLarge, Large, small, main으로 설정한다. 

xLarge, Large, small은 각각 얼룩의 크기를 말하는 것이며, 크기 조절은 solid fractal에 연결된 place3dTexture 노드의 scale값으로 조절한다. 


solid fractal 노드의 설정값은 랜더링을 하면서, 길거리 느낌에 따라 설정한다. 현재, 아래와 같이 solid fractal 값을 설정했다.


[사진 클릭시 확대]


『 3-2 노드 연결 』

각 solid fractal노드의 outcolor R의 값과 outColor값을 setRange의 value, valueX와 연결한다. 전체 OutColor값과 Value를 연결하고, 또 OutColorR과 ValueX를 연결하려면, 아래 사진처럼 'Lock'기능을 활용하면 된다. (전체 락을 걸고, outColor와 value연결하고 난 뒤에 valueY,valueZ에만 락을 걸고, X만 연결)


위의 과정이 끝나면, 각 setRange의 outValue값은 Layered Texture의 각 input Color값과 연결한다. 마지막으로 layered Texture의 outColor R값은 ai aspalt(ai standard surface)의 base와 연결한다. (노드 아웃라이너에서 other를 선택한 뒤 base에 연결) 


3-3 base weight 랜더링 

base weight값만 설정한 상태에서 랜더링을 걸어보면 아래처럼 나온다.


* specular ~ subsurface ~ Coat ~ Emission ~ Thin Film 등..나머지 weight값은 '0'로 설정한다.