Tutorial 1: 원통형 나무의자

hip 다운로드


자연적인 나무의자의 패턴을 프로시주얼 모델링으로 재구성 해보자.

이 튜토리얼을 이해하려면 SOP, VOP 영역의 선행학습이 요구된다.





나무테 패턴 구하기

복잡해 보이는 갈라진 나무의 패턴을 단순화하여 머릿속에 그려본다.

아래 그림처럼 방사형 패턴을 발견할 수 있다.

완벽한 방사형은 아니지만 대략적인 패턴을 발견할 수 있는 능력이 중요하다.


/obj 에 지오메트리를 하나를 생성한 후, 이름을 'woodCrack' 으로 바꿔준다.



Geometry 레벨로 들어가서 Circle SOP 을 만들고 파라미터 창을 다음과 같이 수정한다.



XZ 평면위에 30개의 점으로 분할된 서클이 위치하게 된다.



Copy SOP 을 만들어 'circle1' 노드에 연결하고 파라미터 창을 다음과 같이 수정한다.



크기가 0.8씩 작아지는 10개의 서클로 이루어진 동심원이 만들어졌다.

이는 'copy1' 파라미터 창의 'Transform Cumulative' 속성에 기본적으로 체크가 되어있기 때문이다.

Copy SOP 에 대한 보다 자세한 정보는 여기 에 있다.



Add SOP 을 만들어 'copy1' 노드에 연결하고 파라미터 창을 다음과 같이 수정한다.

'Delete Geometry but Keep the Points' 옵션은 모든 Edge 와 Primitive 를 삭제하고 Point만 유지한다.



동심원의 Point들만 남고 나머지는 삭제되었다.

이 점들은 이후에 만들 Voronoi Fracture SOP 의 가이드 역할을 할 것이다.



계속해서 Voronoi Fracture SOP 을 만들어 다음과 같이 노드들을 연결한다.

'voronoifracture1' 노드의 두번째 인풋으로 사용되는 'add1' 노드의 Template Flag 를 켜 준다.



한 개의 면이었던 서클이 Voronoi 수식으로 인해 방사형의 여러 면들로 분할되었음을 볼 수 있다.



그림 A처럼, Voronoi Cell 점들의 위치에 따라 다양한 모양의 새로운 면들을 만들게 된다.

Voronoi Fracture SOP 에 대한 보다 자세한 정보는 여기 에 있다.

반면 Voronoi Cell 점들이 동일한 간격일 경우, 나눠지는 면들 또한 바둑판처럼 반듯하게 된다 (그림 B).




나무테 패턴 수정하기

우리가 만든 방사형 패턴은 나무테라고 하기에는 그 모양이 너무 완벽하다.

그 모양을 좀더 자연스럽게 만들어보자.


Attribute VOP 노드를 한개 만들고 그 이름을 'make_noise'로 바꿔준다.

다음과 같이 연결하고 엔터를 눌러 VEX Builder 레벨로 들어간다.



TAB메뉴를 이용해서 다음과 같이 2개의 VOP 노드를 만든다.


새로 만든 VOP 노드들을 다음과 같이 연결해 준다.



'aanoise1' 노드의 파라미터 창을 다음과 같이 수정한다.

원래의 점들 위치 P 에 3D 노이즈를 더한 값이 새로운 위치 P 가 된다.

노이즈 에 대한 보다 자세한 정보는 여기 에 있다.

위의 속성값이 꼭 정답은 아니다. 속성값을 다양하게 바꿔가면서 달라지는 결과를 확인해 보자.


완벽했던 방사형 패턴이 노이즈로 인해서 자연스럽게 울퉁불퉁해졌다.

현재 이 노이즈의 세기가 모든 점들에 동일하게 적용되고 있다.

만일, 방사형 중심에 가까운 점일수록 노이즈의 영향을 덜 받게하려면 어떻게 해야할까?



다양한 방법이 있지만, 아주 간단한 방법은 다음과 같다.

각 점의 위치 P 가 원점 <0 0 0> 으로부터 떨어진 거리값을 노이즈 결과에 곱하는 것이다.

다음과 같이, 원점에 가까운 점 A는 멀리 떨어진 점 B 보다 상대적으로 적은 노이즈가 적용된다.



거리값을 구하기 위해 TAB메뉴를 이용해서 다음과 같이 2개의 VOP 노드를 만든다.


새로 만든 VOP 노드들을 기존 노드들과 같이 연결해 준다.

Distance VOP 은 두 점들의 위치값을 인풋으로 받고 그 거리값을 출력해주는 노드이다.

우리는 아직 'make_noise' 노드 안쪽인 VEX Builder 레벨에서 작업하고 있음을 명심하자.


'distance1' 노드의 p1, p2 기본값이 모두 원점 (0, 0, 0) 이기 때문에 둘 중 하나를 P 와 연결시켜 준다.

이 'distance1' 노드의 결과물인 거리값을 노이즈 결과물에 곱해 준다.



중심축에 가까운 점들이 노이즈의 영향을 거의 받지않아 원형 패턴을 유지함을 볼 수 있다.

반면, 바깥쪽으로 갈수록 점점 노이즈의 영향을 많이 받는다.