- Exterior < 벽돌 건물 외벽 만들기> -


길거리를 잠시 생각해보자. 수많은 재질 중에서, 시멘트, 대리석 다음으로 많은 건물은 벽돌건물이 아닐까. 길거리에서 건물외벽을 유심히 살펴보면, '벽돌'이 제법 많다. 특히, 카페나 상점들이 많은 거리에서 찾아볼 수 있다.


이번 포스팅에서는 벽돌 텍스처맵을 사용하지 않고, 순수 마야 쉐이딩 유틸리티 노드로 벽돌을 만들어본다. 

1 『 전체 노드 』

전체계획은 아래와 같다.


1) 전체 벽면에 자잘한 세월의 흔적을 낼 수 있는  노드1을 solid fractal 노드로 생성한다. 

2) 전체 벽면에 큰 세월의 흔적을 낼 수 있는 노드2를 ai noise 노드구조로 만든다.

3) ramp노드를 중첩으로 활용해서 벽돌 문양을 만들고, plusMinusAverage 노드로 벽돌색 ramp노드와 합성한다.


4) Layered 텍스처 노드에 input1, input2, input3 노드를 각각 넣어준다.

[전체 노드구조]


2 solid fractal 노드

solid fractal 노드를 생성하고, 기본 설정에서 Layered 레이어의 Color로 노드를 연결해보자. solid fractal의 기본 설정대로 건물에 씌우면, 아래와 같은 랜더링 이미지가 생성된다.


* ai Curvature 노드를 생성하고, multiply 노드를 불러온다.  input1에는 solid fractal 노드를, input2에는 Curvature 노드를 연결한다. Curvature 노드는 명암 대비를 극대화 시켜주는 기능을 한다. 또, 그림자가 나타나는 부위를 multiply하여 더욱 짙게 만들어준다.


아래는 curvature노드의 모드( convex, concave )와 radius 수치를 비교한 이미지다. convex는 볼록을 의미하는데, 함수 그래프에서 볼록한 2차 함수를 의미한다. (중간으로 갈수록 1에 수렴, 즉 밝다) concave는 convex와 반대로 오목한 2차함수이다. (중간으로 갈수록 0에 수렴)

좌측 상단의 이미지부터 살펴보자. 


convex모드에서는 그림자가 나타나는 건물 옥상 밑부분과 가장 하단 부분이 불에 탄 것처럼 까맣게 나타난다. radius 수치를 높이면, 범위가 넓어진다. 대로 concave모드에서는 현실에서 발생하는 것과 다른 역현상이 발생한다. (가장 밝은 창가 부분이 까맣게 나타남) convex모드건 concave 모든건 ai curvature은 너무 심하게 명암비를 만들어준다. multiply 수치를 0.1이하로 낮추면 되지만, 랜더링 속도가 느려진다.


랜더링 속도를 감안할 때, reverse 노드를 연결시켜주면 자연스러운 그림자 명암효과를 만들 수 있다. 윗 사진의 우측 하단을 살펴보면, reverse노드를 연결하는 것만으로도 자연스러운 세월의 흔적을 품은 건물외양을 만들 수 있다.

3 ai Noise 노드

아래 2번 벽돌 질감 Node2를 살펴보자. ai 노이즈 노드를 생성하여 setRange노드와 연결시켰다.


ai noise 노드만 Layered texture노드와 연결시켜서 랜더링을 실행하면, 아래와 같은 이미지가 나온다.


ai noise는 속성 노드는, Octaves(옥타브), Distortion, Lacunarity, scale 값으로 조절한다.


* octave값

-> 옥타브 값을 올리면(하단 이미지 참조) 노이즈 명암비가 뚜렷해진다.

-> scale값을 줄이면, 클로즈업 되는 효과를 보여준다. (확대, 해상도 떨어지고 blur효과 나타남)


너무 세부적인 노이즈보다는 큼직한 세월의 흔적을 담고 싶다면, 아래처럼 큰 노이즈를 만들어서 건물에 씌운다.

4 Ramp 노이즈로 벽돌문양 만들기

Ramp노드를 생성하고, Type을 Box Ramp로 설정한다. Interpolation은 Linear를 'None'으로 바꾼다. Ramp의 설정을 끝에 회색을 줘서 벽돌 느낌으로 만든다. 


Ramp 노드에 연결된 place2dTexture 노드에서 repeat 수치를 오브젝트 크기에 맞춰서 아래처럼 변경하고,(상황에 따라 다름) stagger에 체크를 한다. stagger에 체크를 하지 않으면, 벽돌이 쌓여진 게 아닌 직사각형 박스를 쌓은 것처럼 나온다. 반드시 stagger에 체크하는 것을 명심하자.


* 벽돌 줄눈 Ramp노드 만들기

벽돌 줄눈 node역시 벽돌 ramp처럼 stagger에 체크해주고, 같은 비율의 place2dTexture노드와 연결한다.


벽돌 ramp 노드와 같은 place2dTexture에 연결하려면, mel 스크립트를 이용해야 한다. 

가령 아래 사진에서는,

connectAttr place2dTexture5.outUvFilterSize ramp2.uvFilterSize 명령어로 같은 place2dTexture노드와 ramp를 연결시켰다.


ramp를 생성하고, Type을 'V Ramp'로 한다. ( Interpolation: none ) 현실에서는 벽돌벽의 벽돌이 모두 같은 명암과 대비값을 가질 수가 없다. 따라서 램프노드의 각 줄의 명암을 다르게 설정해준다. 


램프노드의 색을 많이 넣을수록 현실과 가까운 느낌을 준다. 현재 포스팅 실험에서는 실용적인 내용(색을 많이 넣기)보다는, 극단적인 색을 넣어서 원리를 설명하는 방향으로 진행한다.


V램프의 각 색의 점을 클릭하고, color맵으로 다시 램프노드(u type)를 삽입한다.


V램프 안에 3개의 U램프를 아래처럼 넣어준다. (극단적으로 까만색을 넣었음)


위와 같이 U램프에 극단적인 검정색을 넣어서 나온 ramp19 ( V램프 )를 랜더링하면, 아래와 같은 이미지가 나온다.


검정색을 아래처럼 회색으로 바꾸고, setRange노드에 삽입한다. setRange노드에서 min값을 높이면, 명암비가 약해진다. 아래처럼 min값과 max값을 설정하자.


plusminusAverage 노드는 말 그대로 색을 더해주거나 빼주는 기능을 하는데, 여기에서는 input3D를 이용한다.


ramp 줄눈의 흰색과 까만색이 ramp 벽돌색 노드와 더해지면, 흰색(줄눈 부분)은 그대로 남고  회색톤 부분의 검은색(줄눈램프)에 더해진다. 아래 이미지의 우측상단을 보면,  흰색(수치값 : 1 )부분이 모두 더해져서 배경이 되고, 검정색( 수치값:0 )은 사라진다. 


그 이유는, 검정색은 컴퓨터그래픽에서 수치값이 0이기 때문에 어떤 색이더라도 multiply(곱하기)를 하면 그대로 검정색인 0이 되기 때문이다. 반면, 더하기(sum)를 하면 검정색은 수치값이 변한다.  


같은 의미에서, 흰색은 수치값이 1이기 때문에 곱하기를 하면, 색이 그대로 된다. 

반대로 더하기를 한다면 그대로 흰색이 된다. (수치값 1보다 높아질 수는 없기 때문)


plusMinusAverage노드로 더하기를 하면, 검정색이었던 줄눈 ramp노드의 검정색에 ramp19의 회색과 흰색이 더해진다. 즉, 흰색은 그대로 흰색이다. 그 결과 아래 이미지처럼 된다.(우측 상단)


Clamp노드를 연결한다. clamp노드는 input에 들어오는 값을 받아서 실제 사진의 무게감(?)을 연출한다. clamp노드의 구성원리는 빛이 굴절되거나 반사되어 현실적인 느낌을 구사하는 미적분이 활용되는데, 공식의 자세한 원리는 생략한다. 


아래사진에서 clamp노드를 사용했을 때, before & after를 비교해보자. 아래에서 윗부분이 No clamp상태이며, 두번째 사진은 clamp노드를 삽입한 이미지다.


* clamp노드 삽입한 랜더링 이미지


clamp노드를 삽입하면, 벽돌 줄눈부분의 명암비가 상당히 떨어진 것을 알 수 있다. 동화 애니메이션이 아닌 현실에서는 줄눈의 색이 새하얀 색이 될 수가 없다.  따라서 실사랜더링을 할 때에는 항상 clamp 노드를 사용해서 무게감을 연출하는 습관을 익히자. 


5 최종노드 연결

multiply-divide노드를 생성하여 clamp노드의 output과 연결한다. multiply노드의 input1은 갈색 벽돌램프와 연결한다.  


Layered Texture레이어에 들어오는 노드의 Blend Mode방식에서, 흰색과 검은색으로 표현되는 ai noise나 fractal 노드부분은 'multiply'방식으로 합성하고, 칼라색이 있는 맵은 'over'방식으로 가장 마지막에 위치시킨다.


이번 포스팅에서는 벽돌의 색을 단조롭게 설정하였다. 실제 현장에서 랜더링을 한다면, 벽돌 명암을 설정하는 U램프의 색을, 지금보다 20배 정도 다양하게 설정한다.