본문 바로가기

Program/Houdini

기본 조작 - 서피스 노드와 이동

(후디니를 공부하며 학습한 내용을 기록하는 포스트입니다!)

 

목차

  • 기본 화면 구성
  • 지오메트리 노드 : 오브젝트 생성하기
  • 기본적인 서스 노드 사용

 


 

기본 화면 구성과 오브젝트 생성하기

 

후디니 화면 구성

 

후디니의 기본 화면 구성은 위와 같습니다.
이번에 주로 살펴볼 것은 ③ 3D Scene view (뷰포트)와 ⑧ Network editor 입니다! 

다른 UI와 자세한 화면 설명은 아래 후디니 공식 문서를 참고해주세요.

 

 

Houdini user interface

When you use a tool on the shelf, or select a node in the network editor, the node’s most important parameters appear on a toolbar above the 3D scene view. These controls let you modify the tool/node’s operation even if the parameter editor is not visi

www.sidefx.com

 

 

③ 3D Scene view

 

3D Scene view 동작

 

3D 뷰는 다른 프로그램들에서 보는 일반적인 화면과 동일합니다.

개인적으로 사용 빈도수가 좀 있거나 잊어버렸을 때 불편한 단축키들을 조금 정리했습니다.
자세한 내용과 다른 단축키는 링크의 공식 문서에서 설명하고 있습니다.

 

  • Alt + MMB + 드래그 : 화면 패닝
  • Alt + LMB + 드래그 : 화면 회전
  • Alt + RMB + 드래그 / Alt + 휠 스크롤 : 화면줌 인/아웃
  • Ctrl + Alt + MMB + 드래그 : 카메라 화면 패닝
  • Ctrl + Alt + LMB + 드래그 : 드래그를 위로 했을 경우 화면 축소, 아래로 했을 경우 화면 확대
  • Space + A : 표시되는 오브젝트들을 화면에 맞게 채우기
  • Space + G : 선택된 오브젝트를 화면에 맞게 채우기

 

 

Viewing the scene

You can set up different feature display and shading options for all geometry, selected geometry, geometry near the mouse pointer, and other states. For example, you can only show point numbers on points near the mouse pointer, or only on selected geometry

www.sidefx.com

 

 

⑧ Network editor

Network editor

 

후디니의 노드 그래프가 표시되는 영역입니다.

이미지와 같이 지오메트리 노드와 같은 상위 노드들이 표시되는 최상위 상태를 Scene level 이라고 부릅니다. Geometry, VOP 등의 자식을 가질 수 있는 노드들을 클릭해서 내부 레벨로 진입할 수 있습니다.

 

  • U : 위 계층으로 이동
  • R + LMB : 클릭한 노드 렌더
  • T + LMB : 클릭한 노드 와이어프레임 표시
  • C : 노드 색상 적용
  • L : 노드 정렬 (선택 시 선택한 오브젝트들만)

 

 

Network editor

You can get statistics and information about a particular node in the info window. For example, the info window for geometry nodes shows the number of points, primitives, and vertices, as well as the groups and attributes in the node’s geometry. This is

www.sidefx.com

 


 

지오메트리 노드 : 박스 오브젝트 생성하기

상단 Create 탭에서 기초 도형을 선택해 오브젝트를 생성하면, 자동으로 지오메트리 노드와 그 내부에 서피스 노드가 생성됩니다. 물론 지오메트리 노드를 생성하고, 그 안에서 박스 노드와 같은 서피스  노드들을 추가해 오브젝트를 생성하는 것도 가능합니다.

 

후디니에서는 모델 하나 = 지오메트리 노드 하나로 취급하고 있습니다. 추가로 기억해두면 좋을 것은, 일반적인 유닛 단위의 이동 (옮기기, 회전, 크기 변경) 은 오브젝트 단에서 이루어지는 게 좋다는 것입니다.

지오메트리 내부에서 서피스 노드를 이동하는 것 (예 : Transform 서피스 노드를 사용해 움직이는 것) 은 정확히 말하자면 변형(deform) 입니다. 또 씬 레벨에서 지오메트리 노드를 움직이는 것보다 계산이 오래 걸릴 수 있습니다.

지오메트리 내부의 이동이 나쁘다는 이야기는 아니지만, 서피스 노드를 이동하기 전에 오브젝트 노드를 이동하는 것으로 작업할 수 있는 지를 찾아보는 것을 추천합니다. 오브젝트 노드를 이동하는 것이 더 효과적이기 때문입니다.

- Working with objects / Transforming objects vs. surface 中

 


 

기본적인 서피스 노드 사용

Transform 노드

박스를 만들어 지오메트리와 서피스 노드를 생성했다면, 이제 박스를 만져볼 차례입니다.

먼저 위에서 이야기한 Transform 노드를 이용해 박스를 움직여 보겠습니다. 네트워크 에디터 내에서 우클릭한 뒤 검색 또는 선택으로 transform 노드를 생성하고, box 노드와 연결해 줍니다. 그 뒤, translate 값을 조절해서 x,y,z 방향으로 box 노드를 움직여 줄 수 있습니다.

 

transform 노드

 

파라미터 복사

후디니에서는 대부분의 파라미터를 코드로 편집해 조작할 수 있습니다. 먼저 하나의 파라미터 값을 복사해 다른 오브젝트와 연동해 보겠습니다.

파라미터를 우클릭해 Copy Parameter - 연동하고 싶은 오브젝트의 파라미터 칸을 우클릭해 Paste Relative References 로 붙여넣으면 됩니다. 아래 움짤처럼 파라미터를 붙여넣어 연동한 뒤엔, box2의 size x 값은 box1 의 x 값을 따라가게 됩니다.

 

파라미터 복사해 연동시키기

 

ch("경로 문자열") 함수로도 동일하게 사용이 가능합니다.
파라미터 칸을 선택하고 Ctrl + E 단축키를 통해 코드 편집기를 빠르게 열 수 있습니다.

ch("../box1/sizex")
box1의 sizex 값을 사용함

 

bbox(), centroid()

다음은 서피스 노드를 다른 서피스 노드에 붙이거나 위치를 따라가게 할 때 자주 사용되는 bbox() 와 centroid() 함수를 살펴보겠습니다. 물론 이전 단락에서 다룬 ch() 를 활용해 노드의 크기와 좌표값 등을 가져와 동일하게 계산해줄 수 있지만, 코드는 항상 간결할수록 좋으니까요. 🫡

 

 

먼저 bbox() 함수입니다. 매개변수로는 서피스 노드 하나, 타입 하나를 가집니다. 더 자세한 설명 전에, 바운딩 박스가 어떤 것인지 한번 짚고 넘어가겠습니다.

바운딩 박스는 지오메트리의 최대 크기와 최소 크기를 각 좌표축 별로 가지고 있습니다.
만약 x, y, z 반지름이 0.5 인 sphere 서피스 노드를 만들었다면, 바운딩 박스의 x 값은 아래 이미지와 같이 최소값 -0.5, 최대값 0.5 를 가지는 식입니다.

 

반지름 0.5, 위치 0,0 인 구의 바운딩 박스

 

다음으로 다룰 centroid() 또한 바운딩 박스를 가지고 연산하는 함수입니다.

아래 공식 문서의 설명과 같이, 바운딩 박스의 중앙 값을 반환해줍니다. centroid("만든 구 노드 경로", D_X) 와 같이 사용한다면, 0을 반환값으로 가지게 됩니다.

 

 

이제 bbox() 와 centroid() 를 사용해보겠습니다. sphere1 을 transform 노드로 하나 복제한 뒤, 구의 위를 따라가게 만들어 봅시다.

먼저 아래와 같이 구를 생성한 뒤, 기본적인 움직임을 담당할 transform1 노드, bbox() 와 centroid() 를 사용해 trasform1 노드의 위에 붙어 따라가게 만들 transform2 노드를 만들어 연결해줍니다.
다음으로, merge를 통해 두 노드를 모두 같이 볼 수 있게 만들어주면 준비가 끝났습니다.

 

노드 구조

 

이제 transform2 의 이동 파라미터를 함수들을 통해 조작해주면 성공입니다!

 

Translate x 값의 코드
centroid("../transform1/", D_X)

Translate y 값의 코드
bbox("../transform1/", D_YMAX) + ch("../sphere1/rady")

Translate z 값의 코드
centroid("../transform1/", D_Z)

 

bbox()와 centroid() 함수를 활용해 위치를 따라가게 만들기

 

사실 위와 같은 경우는 x와 z 이동값에 그냥 transform1 노드의 이동 값을 연결해주면 동일하게 동작하기는 합니다. 다만 여러개의 서피스 노드가 합쳐진 형태의 경우에는 중간 위치를 여러 값들로 계산하기보다는 centroid() 를 활용해서 계산하는게 편리합니다.

 


 

더 많은 함수들은 아래 공식 문서에서 확인 가능합니다!

 

Expression functions

See the network and parameters chapter for more information on HScript expressions. You can also use Python in parameters instead of HScript expressions. Functions abs Returns the absolute value of the argument. abspath Returns the full path of a file. aco

www.sidefx.com