독학.NET

SOP COPY 2

Copy SOP 으로 지오메트리를 복사하는 두 번째 방식에 대해서 알아보자.

Posted: January 20, 2017
Version: Houdini 15

후디니 16부터 Copy SOP 이 그 기능에 따라 3개의 노드로 분리되었다. 이 강좌를 충분히 이해하면 16에서도 문제없이 적용이 가능하므로 걱정하지 말고 차분히 따라하기 바란다.

Copy Surface Operator

Copy SOP 은 다음과 같이 두 개의 인풋을 가지고 있다고 했다.

이번 강좌에서는 두 개의 인풋 모두 사용하는 방식에 대해서 배워보자.

Copy SOP 노드

Copy SOP 노드

 

우선 각 인풋에 대해서 Copy 노드는 다음과 같은 일을 한다.

Input 1 에 연결된 지오메트리를 Input 2 에 연결된 점들의 위치에 복사한다.

이때 Input 2 에 특정 도형이 연결된다면 그 선이나 면은 무시되고 오직 점들만 참조된다.

 

이 방식은 특히 파티클 시뮬레이션 이후 특정 오브젝트를 각 파티클에 복사하고자 할 때 유용하다.

밑의 예제를 따라하면서 좀더 쉽게 이해하도록 한다.


Copy SOP 사용하기

후디니를 열고 네트워크 뷰에서 /obj 에 그리드 지오메트리를 하나 만든다.

 

만들어진 'grid' 노드를 더블클릭하여 Geometry 레벨로 들어간다.

이제 Copy SOP 으로 이 그리드의 각 Point 마다 박스를 복사할 것이다.

 

복사할 대상인 Box SOP 을 하나 생성한다.

이때 복사할 대상에는 원하는 어떠한 도형도 될 수 있다는 점을 명심한다.

 

Copy SOP 을 생성한 후, 만들어진 노드들을 다음과 같이 연결한다.

연결한 후에는 'copy1' 노드의 Display Flag 를 선택한다.

연결시 두 개의 인풋 순서가 바뀌지 않도록 주의한다.

연결시 두 개의 인풋 순서가 바뀌지 않도록 주의한다.

 

Copy 노드 파라미터 수정 없이도 바로 다음과 같은 결과물을 얻는다.

Input 2 에 연결된 그리드의 각 Point 위치마다 박스 오브젝트의 복사가 이루어진다.

즉, 그리드의 총 점의 개수인 100개 만큼의 박스가 생긴다.


Copy SOP 로컬변수

우리는 이전 강좌 에서 Copy 노드의 로컬변수 $CY 에 대해서 배웠다.

이번에는 Copy 노드에서 역시 자주 쓰이는 로컬변수 $PT 를 사용해 보자.

변수 $CY 와 $PT 는 혼동하기 쉬우므로 두 개념을 확실히 잡자.

 

'copy1' 노드의 모든 속성값을 초기화시킨 후, 다음과 같이 수정한다.

Uniform Scale 속성을 절대값으로 적용하기 위해 Transform Cumulative 속성을 꺼준다.

 

변수 $PT 는 Copy 노드 두 번째 인풋에 연결된 오브젝트의 Point Number 값을 저장한다.

즉, 각 박스가 그리드 점에 복사될 때마다 그 점 번호를 변수 $PT 에 저장하게 된다.

모든 지오메트리의 Point Number 는 항상 0 부터 시작한다.

모든 지오메트리의 Point Number 는 항상 0 부터 시작한다.

 

앞서 우리는 변수 $CY 또한 복사되는 개체마다 차례대로 번호값을 저장한다고 배웠다.

그렇다면 변수 $CY 와 $PT 는 동일한 데이터 값을 가지고 있을까?

정답은 동일하지 않다라는 것이다.

 

변수 $CY 는 복사체마다 번호값을 부여할 때 Copy 노드의 Number of Copies 속성값을 참조한다.

변수 $PT 는 복사체마다 번호값을 부여할 때 Copy 노드에 연결된 Input 2 의 점 번호를 참조한다.

 

결과적으로, 박스들의 크기가 점차적으로 달라지는 것을 확인할 수 있다.

 

그 원리는 다음과 같다.

박스 1의 Scale 값 = 박스 1의 $PT x 0.01 = 그리드 Point 0 x 0.01 = 0

박스 2의 Scale 값 = 박스 2의 $PT x 0.01 = 그리드 Point 1 x 0.01 = 0.01

박스 3의 Scale 값 = 박스 3의 $PT x 0.01 = 그리드 Point 2 x 0.01 = 0.02

. . .

박스 100의 Scale 값 = 박스 100의 $PT x 0.01 = 그리드 Point 99 x 0.01 = 0.99

 

이처럼 Copy SOP 두 인풋을 모두 사용할 경우에는 Number of Copies 속성은 되도록 기본값 1을 유지하도록 하자. 물론 이 값을 원하는대로 바꿔도 무방하지만 필요 이상으로 작업을 복잡하게 만드는 것은 피하기 위함이다.