독학.NET

SOP COPY 1

특정 지오메트리를 자유자재로 복사할 수 있는 Copy 노드에 대해서 알아보자.

Posted: January 18, 2017
Version: Houdini 15

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

Copy Surface Operator

Copy SOP 은 어떤 지오메트리를 특정 규칙을 통해 복사하고자 할 때 쓰인다.

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

 Copy SOP 노드

Copy SOP 노드

 

지오메트리를 복사하는 방식은 그 인풋 연결에 따라 두 가지로 나뉜다.

1. 첫번째 인풋만 연결된 경우

Input 1 에 연결된 지오메트리를 원하는 개수만큼 복사한다.

 

2. 두 개의 인풋 모두 연결된 경우

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

 

두 가지 방식 모두 유용하므로 상황에 따라서 알맞게 선택하면 된다.

이번 강좌는 이 중 첫번째 방식을 따를 것이다.


Copy SOP 사용하기

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

 

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

이제 이 박스 지오메트리를 Copy SOP 을 이용하여 여러 개 복사할 것이다.

 

TAB 메뉴를 이용하여 Copy SOP 을 하나 만든다.

 

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

Number of Copies 속성값은 복사할 박스 개수(10개) 를 설정한다.

 'box1' 노드를 'copy1' 노드 두 번째 인풋에 연결하지 않도록 주의한다.

'box1' 노드를 'copy1' 노드 두 번째 인풋에 연결하지 않도록 주의한다.

 

하지만 씬 뷰에서 박스의 양은 변함이 없는 듯하다. 왜 그럴까?

 

실제로는 10개의 박스가 이미 복사가 되었는데, 모두 겹쳐있기 때문에 그런 것이다.

마우스 가운데 버튼을 이용해 점과 면의 개수가 늘었는지 확인해 본다.

 지오메트리 각 요소별로 개수가 열 배씩 늘어났음을 알 수 있다.

지오메트리 각 요소별로 개수가 열 배씩 늘어났음을 알 수 있다.

 

이번에는 Translate X 속성값을 다음과 같이 수정한다.

Translate 속성은 복사된 박스들을 각각 얼만큼 이동시킬지를 정한다.

 속성값을 바꿔가며 박스들의 위치가 어떻게 달라지는지 관찰한다.

속성값을 바꿔가며 박스들의 위치가 어떻게 달라지는지 관찰한다.

 

이때 Transform Cumulative 속성이 켜져 있으면 Translate 값이 박스마다 누적되어 적용된다.

다음과 같이 10개의 박스가 X축으로 서로 1만큼씩 떨어져 나란히 위치하게 된다.

 

그 원리는 다음과 같다 (TX = Translate X).

박스 1의 TX 값 = 0 (초기 위치값)

박스 2의 TX 값 = 박스 1의 TX 값 + 1 = 0 + 1 = 1

박스 3의 TX 값 = 박스 2의 TX 값 + 1 = 1 + 1 = 2

. . .

박스 8의 TX 값 = 박스 7의 TX 값 + 1 = 6 + 1 = 7

만일 Transform Cumulative 속성을 끄게 되면 Translate 값이 절대값으로 적용되기 때문에 모든 박스가 (X = 1) 인 위치에서 겹치게 된다.

 

계속해서 'copy1' 노드 Uniform Scale 속성값을 다음과 같이 수정한다.

Uniform Scale 속성은 복사된 박스들 각각의 크기를 조절한다.

 속성값을 바꿔가며 박스들의 크기가 어떻게 달라지는지 관찰한다.

속성값을 바꿔가며 박스들의 크기가 어떻게 달라지는지 관찰한다.

 

이번에도 Uniform Scale 값이 박스마다 누적되어 다음과 같이 크기가 점점 작아지는 형태가 된다.

 

그 원리는 다음과 같다.

박스 1의 Scale 값 = 1 (초기 크기값)

박스 2의 Scale 값 = 박스 1의 Scale 값 x 0.8 = 1 x 0.8 = 0.8

박스 3의 Scale 값 = 박스 2의 Scale 값 x 0.8 = 0.8 x 0.8 = 0.64

. . .

박스 8의 Scale 값 = 박스 7의 Scale 값 x 0.8 = 0.2621 x 0.8 = 0.2097


Copy SOP 로컬변수

우리는 앞서 후디니 변수 에 대해서 공부한 바 있다.

여기서는 Copy SOP 의 로컬변수를 활용해 보도록 하자.

로컬변수란 해당노드 내에서만 사용할 수 있는 변수임을 기억하자.

 

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

이번에는 Translate 값을 절대값으로 적용하기 위해 Transform Cumulative 속성을 꺼주자.

 $CY 는 Copy SOP 에서만 쓸 수 있는 로컬변수들 중 하나이다.

$CY 는 Copy SOP 에서만 쓸 수 있는 로컬변수들 중 하나이다.

 

앞서 모든 변수는 특정한 데이터 값을 저장한다고 배웠다.

변수 $CY 는 복사되는 오브젝트마다 차례대로 그 번호값을 저장한다.

 

위에서 했던 예제와 동일한 결과가 나온다.

10개의 박스가 X축으로 서로 1만큼씩 떨어져 나란히 위치하게 된다.

 변수 $CY 값은 항상 0부터 시작한다는 사실을 명심하자.

변수 $CY 값은 항상 0부터 시작한다는 사실을 명심하자.

 

그 원리는 다음과 같다 (TX = Translate X).

박스 1의 TX 값 = 박스 1의 $CY 값 = 0

박스 2의 TX 값 = 박스 2의 $CY 값 = 1

박스 3의 TX 값 = 박스 3의 $CY 값 = 2

. . .

박스 8의 TX 값 = 박스 8의 $CY 값 = 7