본문 바로가기

Houdini/Houdini1_Rigidbody

RIGID BODY_19 COMPLEX 자동차 충돌 - Ep19_Part 05. 바디와 트렁크 쌓기


오늘의 목표

  • main이 되는 body와 trunk를 bottom 위에 올려준다.
  • side mirror, door, 보닛을 달아준다.(다음 강의로...)

 

목표작업 이전에 해야 할 작업

  • 지난 시간까지 만들어서 이용한 fracture 시스템에 추가적인 보완 작업 진행
  • 서로 연관이 없는 부품들 사이의 constraint를 위한 primitive를 만들어주는 시스템이 필요하다.

 

작업의 순서

  • 사전작업(main task에서 사용될 것이기 때문에 더욱 중요하다)
    • frac_sys 개선 및 보완
    • parts_detail 별로 연결되지 않은 물체들 사이에 primitive 자동으로 만들기

 

  • main task
    • body_mid, body_rear 달아주기
    • door, 보닛, side mirror 달아주기

지금 원하는 것은 조각나지 않은 결과도 system에서 출력이 되기를 원한다.

  • 작은 부품과 큰 부품을 나누는 것이 찌그러짐을 표현할 때 필요한 순간이 있다.

큰 부품의 원본과 작은 부품의 원본을 미리 준비하도록 한다.

  • 타깃이 되는 부품만 원하는 만큼 구부려줄 수 있다.
  • 타깃에서 제외된 작은 부품들은 point deform도 적용되지 않아야 하는 것이다.

 

system 안에서 부피가 큰 조각들에 대해 voronoi fracture를 적용하기 전의 부품들을 'ori'라는 그룹으로 모아준다.

부피가 작은 조각들은 frac을 small_ori로 바꿔주도록 한다.


현재 constraint 시스템으로는 서로 연관이 없는 부품들에 대해서 서로 잡아줄 수 있는 primitive가 존재하지 않는다. 이 부분에 대해 추가로 잡아줄 수 있는 primitive가 필요하다.

또한 body는 bottom위에 고정될 수 있도록 body와 bottom 사이의 고정이 가능한 primitive가 필요하고, 뒤에 붙일 trunk 또한 마찬가지이다.

이와 같이 연결되지 않은 부품들 사이에 결합을 만들어줄 수 있다.

그냥 이대로 proxy 데이터를 연결하고 constraint를 연결하면 원하는 결과를 얻을 수 없다.

각각의 parts에 해당하는 constraint를 group으로 만들어주고, 각 group에 대해 떼어서 constraint가 적용될 수 있도록 sop 세팅을 잡아줬기 때문에, body 또한 group 작업 및 sop network 내부에 적어주는 작업이 필요하다.

잘 찌그러진다.


이제 trunk를 달아주자.

  • 위의 body 작업의 복습이다.


이제 출력에 사용할 실제 원본 데이터가 예쁘게 찌그러지는지를 확인해봐야한다.

기존에 작업했던 것과 같은 방식으로 proxy 데이터의 애니메이션을 가지고 원본 데이터를 애니메이팅 하려면 문제가 발생하게 된다.

  • 충격이 가해지지 않은 곳들도 면이 울어버리게 된다.

이것은 원본 데이터를 오류 없이 애니메이팅 하기에는 proxy 데이터의 포인트 개수가 턱없이 부족하기 때문인데, 이것을 방지해 주기 위한 방법으로 system을 만들어주면서 얻게 된 결과 중 하나인 frac 정보를 이용하는 것이다.

frac 정보를 가지고 proxy 데이터를 치환해 주면, 치환된 frac 데이터는 원본보다도 더 많은 포인트 개수를 가지게 된다.

원본 데이터
proxy 데이터가 fac 데이티로 치환된 결과
위의 데이터를 이용해서 원본데이터를 찌그러뜨린 결과.


 

다음 시간에는 자동차의 골격을 열심히 채워보도록 한다.

  • door는 충돌에 의해서 떨어져 나가게 될 경우, 열리는 것처럼 움직이면서 떨어지게 되어야 한다.
    • 회전의 축이 있는 연결관계가 필요하다는 것이다.

찌그러지는 부분 중에 안으로 파먹는 면들은 어떻게 처리해야 할까...?

이 부분은 어찌 세팅해 줄 수 있을지 고민이 필요하다..