시작 전, 지오메트리 옵션 켜기
- D를 눌러 Display Option 켜기
- Additional Information → Geometry Information을 Always On으로 설정하면 다음과 같이 포인트와 프리미티브 정보가 나옴
RBD(Rigid body) Solver
- 딱딱한 물체, 강체에 시뮬레이션을 해주는 Solver
- 0프레임에서 작업하는 것을 추천
Fracture
- 깨뜨리기 위한 노드
기본적인 RBD Solver(RBD Bullet Solver)
- 가장 기본적인 셋팅
- Ground Collision으로 부딪힐 수 있는 임시 바닥 마들기
- 플레이를 해 부숴지는 걸 확인
1) 부숴지지 않고 붙어서 떨어지기(Materialfracture)
- 기본적인 세팅에서 중간에 rbdmaterialfracture 노드 불러오기 (RBD Material Fracture)
- RBD와 항상 붙어다니는 노드
- 그런데 연결하고 재생했더니 산산조각이 남
- 깨지는 이유는 피스가 일일이 나뉘어 있음
- Primary Fracture → Fracture Level 0(clear)을 하면 조각나지 않고 한 덩어리로 떨어짐
- 활인해보니 아래와 같이 피스가 하나가 됨
2) 동시에 여러 개의 오브젝트 떨어뜨리기
- Copy and Transform 노드로 복사본의 개수와 위치값 지정
- 아래와 같이 하나의 뭉텅이 동시에 떨어짐
3) 여러 개의 오브젝트를 각각 동시에 떨어뜨리기
- Copy 노드 편집창에서 Pivot Transform → Copy Number Attribute를 체크하고 이름을 복사(copynum)
- rbdmaterialfracture 노드 상세창에 들어가 Fracture per Piece 체크를 하고, Piece Attribute내에 아까 복사했던 복사본 이름을 넣기(copynum)
- 오브젝트가 동시에 각각 떨어짐
4) 여러 개를 정렬시켜 동시에 우수수 떨어뜨리기
- 왼쪽의 box가 원본, 오른쪽은 각 포인트에 입혀진 카피본
- 인스턴스화(Pack Instance) 시키기 → 가벼워짐
- Box의 편집창에서 Primitive Mode를 Polygon으로 변경한 뒤, Division 체크 후 모두 2로 수정
- Transform 노드에서 Uniform Scale을 조정해서 각 오브젝트가 멀어지도록 하기
- 플레이를 할 때 오브젝트가 끝없이 떨어지지 않도록 Solver → Collision에서 Ground type을 Ground Plane지정
- 지금까지의 노드 구성
- attribwrangle노드에서 VEXpression 작성하기(이 노드는 나만의 커스텀 노드로 만들 것이라는 의미)
- my가 붙은 것은 커스텀의 의미, @는 속성값이 만들어짐
i@myID = @putnum;
대중적으로 많이 쓰고, i@myID를 @ptnum;에 대입하겠다는 의미의 대입 연산자로, ptnum은 앞의 숫자를 그대로 가져옴
- i는 integer, f는 float, s는 string
- 사용하지 않으면 대부분은 묵시적으로 float로 표기
- Copy to Points에서 Pack and Instance를 해제
- Attributes from Target에서 값을 하나 늘려 아까의 myID를 넣고, Primitives로 바꿈
- rbdmaterialfracture 노드에서 Fracture per Piece체크하고, Piece Attibute에서 myID 입력
- Fracture Level도 0으로 정정
- 조각나지 않는 상태에서 동시에 여러 개가 우수수 떨어짐
5) 애니메이션이 적용된 다른 오브젝트의 영향 받기
- 이전 노드에 더해서 Box 노드 추가하고 Transform적용
- Y에 $3을 입력하면 Y 방향으로 돌면서 움직임
- *3을 하면 3배 빨라짐
- rbdbulletsolver 노드의 네 번째 Collision Geometry에 Null을 연결
- Collision Type을 Animated에서 Deforming으로 변경
- Transform Y값에 다음과 같이 Expression을 설정하면 박스가 왔다 갔다 움직이며 오브젝트와 물리 충돌이 일어남
6) 떨어져서 깨지는 효과
- 떨어진 후 어떻게 깨져 보이는지 미리 확인할 수 있는 노드(explodedview)
- 깨지는 정도를 조정하는 부분
- rbdbulletsolver 편집창에서 Constraints의 Primary Strength 값을 조정 (크기도 중요, 돼지는 2m되므로 크기에 따라 정도를 알맞게 줄 것)
- Chipping과 Detail(Edge Detail, Interior Detail) 추가하기
- Chipping을 하면 더 잘게 쪼개짐
7) 깨지는 부분 컨트롤 하기
- add노드 에서 Number of Points를 +로 생성하기
- color의 왼쪽 노드는 검정, 우측은 흰색으로 지정하면 하기의 돼지와 같이 보임
- attribtransfer 노드를 넣고 편집창에서 그라디언트 영역 설정하기
- Conditions → Distance Threshold를 체크하고 조절
- Scatter 노드 추가
8) 페인트 모드로 지정 영역 깨지는 것 컨트롤 하기(Attribute Paint)
- 중간에 attribpaint 노드 추가하고, 스프레드 시트에 Mask 영역 생긴 것 확인
- 씬 뷰에서 오브젝트를 선택하고 Enter를 눌러 Mask 칠하기, 나올 때는 Esc
- 붉은 색이 1값, 값이 들어간 부분은 스프레드 시트에서 확인이 가능
- Primary Fracture에서 Cell Points → Attribute Name을 아까 페인트로 지정한 Mask로 바꾸고 Scatter Points로 값 설정
- Display 플래그를 눌러주고 해야 잘 읽힘
- 지정한 영역 위주로 깨짐
9) 금이 가있는 효과/찌그러지는 효과 (rbdconstraintproperties)
- 기존의 깨지는 노드 세팅에서 rbdconstraintproperties 노드를 중간에 넣기
- rbdmaterialfracture노드의 편집창에서 Glue의 Primary Stregnth 값을 1로 설정
- rbdconstraintproperties 편집창에서 Constrint Type을 Soft로 바꾸고 값도 조절
10) 두 오브젝트에 물리 충돌 일으키기 - 스피어로 오브젝트 깨기 (rbdconfigure)
- 전체 노드
- 돼지머리 오브젝트와 공 위치를 나란히 두기
- rbdmaterialfracture 편집창에서 Constrants의 Glue Primary Strength 값을 1000 정도로 설정
- Primary 1과 2 탭의 Scatter Points도 조절하기 (각 60, 22)
- rbdconfigure 노드를 추가해서 Visualiztion의 Visualize는 Active로 설정
- Bounds의 Bounding Type은 Bounding Box
- 아래 Enable 체크하고, Active 항목도 체크해서 조정 (Use Bounds 꼭 체크)
- 바운드 박스로 아래 영역 조정하기 → 초록색이 영향 받는 부분
- rbdbulletSolver의 편집창에서 Collision내 Collision Type을 Deforming으로 해야 두 오브젝트의 애니메이션이 재생됨
'3. 후디니(Houdini) 공부 > Houdini [이론]' 카테고리의 다른 글
1. [Houdini] 후디니 기본 세팅 & 간단한 실습 및 렌더(기어제작) (0) | 2024.09.19 |
---|