텍스처 | 쉐이딩

[Maya] 쉐이딩 (10) - Exterior <아스팔트 길 만들기(2)>

by MoGL3D 2019. 4. 15.

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


지난 포스팅, '아스팔트 base weight(1편)'에 이어 (2)편에서는 color와 bump설정에 관해 알아본다.

1 『base color 노드구조


layered texture(shading 아님) 노드에 3가지 노드를 삽입한다.


1) 도로에 라인을 표시할 projection 노드(multiply divide에 넣어줌)

2) 도로의 색상과 세월의 흔적을 표시할 알파맵

3) 기본 도로색상


2 『도로라인 만들기

쉐이딩 구조를 제대로 알지 못하면, 도로 라인을 텍스처로 처리해야 한다. 그러나 텍스처를 넣은 방식으로는 카메라 각도에 따라 반응하지 못한다. 만일 반응형 맵을 제작하려면, projection맵을 만들어서 기존 텍스처맵에 맵핑하는 방식을 알아야 한다.


 2-1 ramp(projection) 노드생성

윈도우 -> 노드에디터를 실행하거나 하이퍼쉐이더에서 ramp[projection]노드를 실행한다.


 2-2 projection ramp 설정

1) V-Ramp로 설정(세로), linear방식을 none으로 설정한다. (도로 라인의 가장자리가 날카롭기 때문에)

2) 램프의 구간에 2개의 색상spot을 설정한다.

3) 두번째 spot에 칼라맵을 선택하고, ramp(texture)를 삽입한다.


2-3 도로의 짧은 라인 만들기

-> v램프의 한 점에 삽입된 램프는 u램프로 설정하고, linear를 none으로 설정한다.

-> 아래 사진의 ramp모양을 보면, ramp6가 도로 라인으로 생겨난 것을 알 수 있다.


2-3 프로젝션 연결하기

-> 도로 라인에 씌울 알파맵을 file텍스처 노드로 생성한다.

-> projection과 file텍스처노드의 outColor값을 multiplyDivide_LoadLine의 input1, input2에 연결한다. 

-> 도로라인 텍스처 다운 : 

sourceimages.zip


2-4 얼룩 색상맵 만들기

-> solid fractal 노드를 생성한다.(default설정, threshold 수치만 0.5~0.6으로 설정, 2dTexture scale: default )

-> reverse노드를 생성하고, solid fractal outColor값을 input에 연결한다.

-> solid fractal이나 multiply-divide값은 흰색과 검은색으로 이뤄져 있기 때문에 각각 outputX값을 layered texture_LoadLine의 input -> alpha값에 연결한다.

-> layered texture의 outColor값을 ai aspalt 쉐이더의 baseColor값에 연결한다.

-> Layered texture 합성 방식은 over - over -none(순서대로) 으로 한다.


2-5 Test Rendering

base weight값만 설정했을 때와 달리 흰색 라인과 얼룩덜룩한 흔적이 나타난다. 프로젝션 카메라로 도로에 흰색 라인을 나타내려면, projection에 연결된 3d 텍스처의 scale과 위치를 조정하고, 회전을 하면서 상이 나타날때까지 설정해야 한다. 만일, 흰색이 나타나지 않는다면, 3d 텍스처를 카메라 주변에서 움직이며 view포트에서 나타날 때까지 설정한다.


3 『bump설정

1) geometry의 bump Mapping을 클릭해서 bump를 선택한다. (bump노드 자동으로 생성)

2) solid fractal노드를 생성하여, threshold수치를 0.6으로 높이고 아스팔트 느낌에 맞도록 모양을 설정한다. (place2dTexture scale: default )


3) multiply-divide노드를 생성한다. (프로젝션맵의 알파값을 받음)

4) base color에 넣었던 projection맵의 outColor R을 multiply-divide노드의 input X에 연결한다.


5) layered 레이어를 생성하고, input[0]에는 over방식으로 알파값에 multiply-divide노드를 연결한다.


6) layered레이어의 input[1]에는 over방식으로 solid fractal의 outColor값을 Color와 연결한다.


7) layered 레이어의 out Alpha와 bump2d의 bump value값을 연결한다.


4 『랜더링

bump값을 설정해서 최종 랜더링을 해보자. 아래 이미지에서는 프로젝션 영역은, bump값이 침범하지 않음을 보여주기 위해서 과도하게 흰색라인을 설정하였다. 프로젝션된 부분을 제외하고, 범퍼값이 제대로 들어가면서 색상이 달라졌다.


layered 레이어의 합성방식을 잘못 설정하면, 제대로 된 랜더링이 되지 않는다. 아스팔트 쉐이딩을 정리하면, 총 3개의 layered 레이어를 사용하였으며, 각 합성 방식은 다음과 같다.


* base layered texture노드

1) xtraLarge : multiply

2) Large : multiply

3) small : multiply

4) default : over


* base color

1) multiply-divide_loadLine : over

2) reverse노드 : over

3) 기본색 : none


* bump

1) multiply-divide_bump : over

2) fractal node : over