TWA Houdini1/Rigidbody

TWA 후디니 1 RIGIDBODY_19_02 : 휠 & 서스펜션

yiss09 2023. 6. 15. 16:11

https://www.twahoudini.com/course/rigidbody1

 

HOUDINI1_ RIGIDBODY

3️⃣ 출동 SIMULATION 기초 이론부터 심화된 내용을 공부합니다. 또한 자동차를 이용한 리깅 시뮬레이션 BASIC을 훈련합니다.

www.twahoudini.com

Rigidbody19_02에서는 Jeep차의 바퀴와 샤시 파츠를 치환해볼 예정이다.

 

목차

1. Proxy 준비, 치환

2. Constraint 세팅

 

 


1. Proxy 준비, 치환

 

바퀴 외에 필요하지 않는 부분은 제쳐두고 작업하겠다.

타이어와 그 안의 부속품이 위치가 같은 것들끼리 Merge로 연결해서 작업하겠다.

 

타이어를 Proxy로 만들어주는 시스템을 제작해주려 한다.

distance function을 이용하여 타이어의 길이와 지름을 구하여 그 값을 Proxy로 이용될 Tube에 입력해주었다.

만들어진 시스템은 Subnetwork로 묶어주었다.

 

각각의 바퀴에 Proxy 시스템을 연결해준 뒤 Pack해주었다.

Simulation에서 이용해야 하기에 name 정보도 입력해주었다.

 

Proxy를 Object로 Simulation을 실행시켜주었다.

잘 작동되는 것이 확인되어 Transform Pieces에서 @name에 맞게 원본 자료로 치환해주었다.

 

그 다음은 Chassis 파츠를 Proxy로 만들어주려 한다. 원래의 자료를 수정하여 Proxy로 쓰기 보다는 바퀴를 이용해보겠다.

바퀴 안쪽 면을 Blast로 떼어낸 다음 Bound, Add로 중심점을 구해주겠다.

 

두 점을 연결시켜준 뒤, Bound를 활용해 두께를 주었다.

이때 만들어진 Box가 바퀴와 충돌하지 않도록 간격을 벌려주어야 한다.

너무 딱 붙어있을 경우 Simulation에서 문제가 생길 수 있다.

 

방금 구한 Box들의 안쪽 Primitive의 중심점을 또 구해주어 같은 과정을 거쳐 Box를 생성해주었다.

 

RBD Packed Object에 넣어주기 위해서 전부 Pack 해주었다.

그리고 Simulation에서 잘 작동하도록 각각 이름 정보를 추가해주었다.

이렇게 Chassis로 쓰일 세개의 Proxy가 준비되었다.

Original 정보 또한 Pack 해주고 이름을 입력해주었다.

 

Chassis Proxy를 Original 자료와 치환해주려 한다.

그런데 그대로 이용하기보다는 바퀴 따로 샤시 따로 치환된 다음 합쳐지게 해주려 한다.

이미 완성된 Simulation에서 둘을 분리해주기 위해서 @part 정보를 이용해 둘을 구분시켜주겠다.

원래 Primitive Attribute에 있던 @part 정보를 새롭게 변경시켜준다.

그리고 Pack 이후에 동일한 @part 정보를 Point Attribute에 추가시켜주겠다.

바퀴에는 wheel, 샤시에는 chassis라는 @part 정보를 입력해주었다.

 

Attribute Wrangle을 활용해 part에서 우리가 원하는 정보만을 남겨 wheel과 chassis를 분리해주었다.

결과적으로 각각 잘 치환된 결과를 확인할 수 있었다.

 


2. Constraint 세팅

 

Constraint 세팅은 생각보다 간단했다.

앞서 Simulation에 이용했던 Proxy 자료들을 Object Merge로 가져와 작업해주었다.

앞쪽 바퀴 둘, 앞쪽 샤시 / 뒤쪽 바퀴 둘, 뒤쪽 샤시 / 앞쪽 샤시, 중간 샤시, 뒤쪽 샤시들 간의 Constraint를 제작해주었다.

 

지금껏 해왔던 방식대로 물체들이 접하는 부분의 Primitve를 구해주었다.

이때 신경써야할 부분은 Unpack 과정에 의해 사라진 @name 정보를 Attribute Copy로 다시 불러오는 것이다.

 

Primitive가 준비되었다면 Constraint에 관한 세팅을 해줄 차례이다.

바퀴가 회전할 수 있도록 Constraint의 type을 분리한 뒤 position과 rotation에 각각 다른 condof 세팅을 해주었다.

뒤쪽 바퀴에도 같은 세팅을 해주었다.

 

chassis끼리의 Constraint 세팅의 경우 바퀴에서와 condir 세팅을 다르게 해주었다.

그리고 chassis에서 변화에 대한 복원력을 가지도록 하기 위해서 "all" type 세팅을 하나 추가한 뒤 독립적인 constraint_name을 주었다.

 

Dop Network 안에서 Constraint 세팅을 해준 뒤 원하는 느낌으로 Tweak 해주었다.

스프링같은 느낌을 지워주기 위해서 chassispower의 Stiffness 값과 Damping Ratio를 조절해주었다.

그리고  바퀴와 충돌할 블럭을 추가해주었다.

바퀴가 box에 얹혀졌다가 box가 사라지면서 복원력에 의해 다시 원래 모습을 갖추는 것을 볼 수 있다.

이렇게 휠 시스템이 완성되었다.