본문 바로가기

Houdini/Houdini1_Rigidbody

RIGID BODY_13 GLUE, HARD, SOFT CONSTRAINT - Ep13. 글루, 하드, 소프트 컨스트레인트 기본기


Glue Constraint

  • 딱풀

Hard Constraint

  • 강한 복원력

Soft Constraint

  • 약한 복원력(값에 따라 강한 복원력도 가능)

예제 1)


예제 2)

경첩이 생긴 위치를 주의해서 봐야한다.

물체 사이의 관계(constraint)를 만들 때, 각각의 물체의 위치를 대변하는 포인트가 존재했다.

constraint 작업을 진행할 때 신경써야했던 부분은 대변하는 위치가 가지는 이름이었다.

  • 대변하는 포인트가 가지는 이름과, 물체의 이름을 동일하게 맞춰줌으로써 rigid body solver가 인지할 수 있었다.

지금까지는 물체를 대변하는 포인트의 위치를 (위의 이미지와 같이) 그 물체의 중심에 위치하도록 해줬었다.

하지만, 만약, 어떠한 물체를 대변하는 포인트의 위치가 물체의 중심이 아닌, 물체에 외접하는 어느 한 부분이라면? 혹은 아예 물체와 떨어져있는 어떠한 다른 곳에 그 물체를 대변하는 포인트가 위치한다면?

 

이 예제의 핵심은, 사용자가 임의로 물체의 위치를 대변할 곳을 정해줄 수 있다는 점이다.


물체를 대변하는 포인트의 위치를 바꾸는 또 다른 방법!!

Primitive Node를 사용하는 것이다.

primitive 노드의 transform tap에서 Do Transformation을 활성화해주고, Scale을 조절하는 것으로 물체를 대변하는 두 포인트를 연결한 선(primitive)의 길이를 조절할 수 있다.

빨간색 : 조절 전 / 파란색 : 조절 후
물체를 대변하게 되는 포인트의 위치에 생기는 경첩의 위치를 주목하자.

이렇게 조절된 선의 양 끝은 각 물체를 대변하는 포인트가 위치하게 되므로, constraint 세팅을 잡게 되면, 위와같이 조절된 위치에 경첩이 생성된다.


예제 3)

잠시 이것인줄 알았으나...
이것이었고...(선생님 설명 제대로 듣지못해서 뻘짓한...)

s@constraint_type = "position";

위와 같은 이미지로 물체가 연결되어있다.

box는 시뮬레이션 적용이 되지 않으며, dop network 외부에서 animation이 일어난다.

오른쪽의 sphere는 box에 매달려있다.

box의 움직임이 i@deforming이 어울릴지, i@animated가 어울릴지 고려해봐야한다.

s@constraint_type = "all";

primitive > intrinsics : transform || intrinsics : packedfulltransform 의 데이터 변화를 보고, 데이터 변화가 있다면, i@animated를 사용하것이 좋고, 변화가 없다면 i@deforming을 사용하는 것이 좋을 것이다.

  • instrinsics:transform 데이터의 변화가 있다 > i@animated를 활용했을 때, box의 실제 모양이 변형되지 않는 선에서 애니메이션 정보를 사용할 수 있다는 의미

sphere는 box에 연결된 상태로 시뮬레이션의 영향을 받도록 i@active를 1로 세팅하는 것이 맞다.

회전 속도에 의해서 두 경첩이 약간 벌어졌다.
움직임이 멈추니 처음과 같은 결합으로 복원되었다.

hard constraint의 성질 중 하나, '탄성'에 대해서 확인할 수 있다.

  • 아무리 딱딱하게 고정을 한다 하더라도, box가 도는 힘과 sphere가 끌려오는 힘이 서로 다르기 때문에 자연스럽게 벌어지게 된다.
  • 그리고 움직임이 멈추게 되면 다시 복원하게 된다.
  • 이것을 가지고 '탄성'과 같은 약간의 묘사가 가능해진다.

이제 hard constraint 말고 다른 constraint에 대해 이야기해보자.

 

Bullet Soft Constraint Relationship

  • 복원력이 상대적으로 hard constraint보다 약한 constraint이다.
  • Stiffness : 연결의 뻣뻣한 정도(?), 값이 낮을수록 상대적으로 낚시대처럼 낭창낭창 한다.

Stiffness 5의 결과
Stiffness 15의 결과
  • hard constraint와 soft constraint는 크게 차이가 없다. 다만, hard constraint에는 복원력에 대해 관여하는 항목이 없지만, soft constraint는 복원력을 조절해줄 수 있는 항목이 있다는 점이 다를 뿐이다.
  • Rest Length가 Dop network 밖에서 @restlength로 들어오는 값에 곱해지는것처럼, Stiffness와 Damping Ratio 또한 Dop network 밖에서 값을 받아와서 곱해줌으로써 사용이 가능하다.

예제 5)

이건 내가 작업한 노드
선생님 작업노드. 훨씬 깔끔하다...


예제 6)

hard constraint
soft constraint (bullet soft constraint relationship)
glue constraint

본인 예제 작업부분
선생님 작업부분 중 일부

constraint를 위해 line을 따는 과정을 굉장히 간단하게 하셨다.

각 점을 blast로 다 따와서 각각 add 노드로 이어주는 것이 아니고, 하나의 긴 line을 가져오고 poly cut 노드로 포인트마다 컷하는 방법으로 line을 나눠줬다.

  • 노드가 굉장히 깔끔해졌다.

Glue Constraint Relationship

  • 충격량에 따라 연결관계가 유지되거나 끊어지는 관계
  • 마치 딱풀로 붙여놓는듯한 관계이다
  • 충격이 임계점에 가기 전까지는 계속 관계가 유지되다가 임계점 이상의 충격이 발생하면 연결이 끊어진다.
  • constraint relationship의 기본세팅에서 관계가 빨갛게 나온다면, 일단 glue constraint relationship이라고 유추해도 될듯 하다.

Glue Constraint Relationship의 기본 세팅


정리

  • Glue Constraint
  • Hard Constraint
  • Soft Constraint
  • 결국 맥락은 거의 비슷하다.
  • 세가지 Constraint 모두 밀접한 것들이라고 생각해도 좋다.

숙제)

물체 - 물체 사이에 스프링 만들어주기

선생님 강의 중 캡쳐


숙제는 주말에...