본문 바로가기

Houdini/Houdini1_Rigidbody

RIGID BODY_20 건물 붕괴 + 빌딩 에셋 제작 - Ep20_Part 01. 건물 에셋 만들기 : 베이스 만들기 + 치환 준비


만들어줄 빌딩 어셋으로 복잡한 형태까지 만들 수 있다고는 못하지만, rigidbody 실험을 하기에는 넉넉한 수준일 것이라 기대한다.

 

이번 강의에서 만들게 될 시스템의 제작은 크게 어렵진 않으나, 어떠한 방식을 사용하더라도 조각의 정보를 남기면서 가야한다. 

 


box를 하나 만들어주고, boolean fracture를 활용해서 아래와 같이 면을 나눠주도록 한다.

빨간색은 실질적인 방으로써 사용될 공간, 노란색은 메인 바닥, 초록색은 벽을 지탱하기 위한 바닥, 파란색은 벽, 하늘색은 방을 지지하기 위한 프레임, 보라색은 천장, 하얀색은 천장을 고정하기 위한, 방의 구조물을 견디기 위한 프레임, 주황색은 프레임과 프레임 사이를 이어주는 장치로 사용이 가능할듯 싶다.

 

 

일단 직관적으로 각 조각을 명시할 수 있도록 규칙을 정해주자.

top에서 바라봤을 때 x축 방향은 오른쪽, z축 방향은 아래쪽이다.

top에서 봤을 때, 조각의 번호 순서는 다음과 같다.(전화번호 키패드 순서와 같다.)

side에서 봤을 때, 조각은 다음과 같이 나눠주기로 한다.

빨간색 : bottom

초록색 : mid

파란색 : top

 

문제가 발생할 수 있는 부분

  • boolean fracture가 box의 size에 따라 순서를 다르게 인식할 수도 있다.
    • sort로 방지해줄 수 있다.

sort 적용 전
sort (by y) 적용 후

blast를 사용해서 위와같이 bottom, mid, top을 떼어줄 수 있다.

  • boolean fracture와 assemble의 조합으로 인해 혹시라도 포인트 번호가 바뀌는 경우가 발생하더라도 sort로 다시 재정렬해줬기 때문에 위와 같이 떼어낼 수 있게 된다.


방을 쌓아주기 위한 작업을 진행한다.

일단 모양을 잡아주기 위해 add 노드로 점을 만들고, 그 점을 copy stamp 노드로 복제해준다.

  • 이 때 각각의 x, y, z축으로 복제할 수량에 대한 값을 따로 받아서 입력해줄 수 있도록 해준다.
  • attribute wrangle에서는 각각의 위치를 특정할 수 있도록 해준다.

각각의 @ptnum을 가지는 포인트가 x, y, z 공간에서 어느 위치에 있는지 특정해줄 수 있다.

 

그 뒤에는 group expression을 활용해서 roof와 body, 그리고 네개의 구석과 네개의 엣지, 중간 부분으로 나눠줄 수 있도록 해준다.

그런데 이 정보들을 group으로 계속 들고 다니는 것은 정보의 낭비이다. 어트리뷰트로 관리할 수 있도록 해주자.

group expression에서 판별해줬던 내용을 if의 판별식으로 사용했을 뿐이다.

불필요한 정보는 삭제해서 용량을 줄여준다.


처음에 만들어준 방의 기본 모양을 가져와서 빌딩에 이식해주도록 한다.

이 때 잘 보이도록 색을 넣어준다.


세가지 세팅을 더 잡아줘야한다.

  1. 방의 어느 조각을 쓸 것인지, 안 쓸 것인지에 대한 컨트롤러가 필요하다.
  2. 컨트롤러를 적용시키기 위해서 각각 큰 파트별로 떼어내야한다.
  3. constraint를 세팅하는데 도움을 줄 수 있도록 포인트를 미리 심어줄 수 있다.

방의 어느 조각을 쓸 것인지 체크해주는 컨트롤러 만들기

위의 이미지는 top_1을 확대해놓은 것이다.

이 조각에 대해 if 조건문으로 사용을 할지, 사용하지 않을지를 체크해줄 수 있도록 세팅한다면 아래와 같다.

이번엔 전체 조각에 대해서 위와 같은 체크를 해줄 수 있도록 세팅해보자.

channel integer 이름에 주목하자. vector 정보를 저런 식으로 가져올 수 있다.

필요한 조각을 선별해서 사용하도록 해줄 수 있게 되었다.


큰 파트별로 떼어내는 방법

 

이미 bigpart라는 정보를 가지고 있기 때문에 따로 떼어서 확인하면 된다.

노란색은 body, 하늘색은 roof에 해당하는 조각

각각 1~9번 조각으로 분류되어있다.

 

이렇게 조각을 다 떼어주는 이유는 각각의 모서리 등을 상황에 맞게 직접 꾸며줘야하기 때문이다.

 

다른 방법으로는 규칙이 같은 방끼리 묶어서 꾸며줄 수도 있다.

이처럼 규칙이 같은 방을 선택해서 꾸며줄 수도 있다.


다음시간에는 치환을 진행해본다.

 

다음 수업 준비

공실 많은 빌딩 구현