https://www.twahoudini.com/course/rigidbody1
우리는 이후 충돌에 의해 Jeep차를 찌그러뜨려야 한다. 이에 물체를 조각조각내주려 한다.
Rigidbody19_03에서는 열려있는 Primitive와 닫혀있는 Primitive를 구분해 조각을 내주고, 큰 물체와 작은 물체를 구별해주는 시스템을 만들어볼 예정이다.
목차
1. Voronoi 시스템
2. 크기에 따른 분류
1. Voronoi 시스템
시작하기에 앞서 열린면에서 Voronoi Fracture를 올바르게 작동시키는 법을 설명을 하고 가겠다.
위와 같이 한쪽 면이 열린 물체를 어떠한 조치 없이 바로 Voronoi Fracture로 쪼개줄 경우에 모양이 일그러지게 된다.
이를 해결하기 위해서 PolyExtrude를 활용하여 전체 면에 두께를 주겠다.
그리고 Output Back으로 열린면을 닫힌면으로 만들어주겠다.
Reverse node를 활용해 뒤집혀있던 면을 올바르게 바꿔주었다.
그 다음 Voronoi Fracture로 조각 내주었다.
이전과는 달리 면이 제대로 쪼개지는 것을 확인할 수 있다.
이제 이를 활용하여 앞으로 Jeep에서 쓸 Voronoi 시스템을 만들어보겠다.
임시로 활용할 각기다른 물체를 6개 준비해주었다. 3개는 모든 면이 닫혀있고, 다른 3개는 열린 면이 존재한다.
각각의 물체에 대해서 작업하기위해서 For-each Connected Piece를 이용해주겠다.
먼저 열린면을 가진 물체와 닫힌면을 가진 물체를 구분해주는 시스템을 만들어주려 한다.
새롭게 Group node의 Unshared Edges를 이용해주겠다. 이는 열린면 주위의 면을 선택해주는 기능을 한다.
그 다음 nprimitivegroup function으로 선택된 Primitive의 갯수를 @check에 저장해주겠다.
Group Expression을 활용해 @check가 0보다 큰 경우 open 그룹에 속하도록 해주겠다.
check가 0인 경우는 열린면이 없고 면이 전부 닫혀있다는 것으로 볼 수 있다.
Split node로 open에 속한 그룹과 속하지 않은 그룹을 분리시켜주겠다.
분리된 그룹을 각각의 Primitive에 대해서 Voronoi로 쪼개주는 작업을 해주었다. 이때 열린면에서는 앞서 이용하였던 열린면 시스템을 사용해주었다.
이제 각각의 조각들이 @part의 세부조각으로서도 분류되었으면 한다.
이에 @part_detail이라는 새로운 정보를 만들어주겠다.
미리 만들어둔 @part라는 정보에 "_d_"와 iteration 정보를 추가해주겠다.
(@part 정보를 만드는 과정은 일지에 추가하지 않았음)
그리고 Attribute Promote로 앞서 직접 만들어준 Attributes를 Primitive에서 Point 정보로 넘겨주었다.
@name에 관한 정보를 만들때 활용하기 위해서 Attribute Copy로 part와 part_detail을 가져와준다.
Assemble에서 조각을 Pack해줄 때 생성되는 이름을 의도에 맞게 입력해주었다.
part_detail 정보와 name 정보가 합쳐져 조각에 세부적인 이름이 붙은 것을 확인할 수 있다.
왼쪽 사진의 Frac 자료를 Unpack해준 뒤 각각의 조각에 대해서 ConvexHull로 단순화시킨 뒤 다시 Pack해주었다.
이렇게 얻어진 물체를 Proxy로 활용해주겠다.
그 다음 Constraint를 구해주려 한다.
어렵지 않게 Voronoi Fracture의 Output2에서 Primitive를 구해준 다음 Attribute Copy로 Frac에서 name정보를 가져와주겠다.
For-each 밖에서 다시 분리시키기 쉽도록 Group을 지정해주었다.
열린면과 닫힌면 둘 다 같은 시스템으로 만들어졌으며, 차이는 PolyExtrude와 Reverse가 닫힌면에는 없다.
둘을 Merge한 뒤 Blast로 그룹에 따라 분리해주고 Output으로 결과를 뽑아내주었다.
(생략했지만 중간에 시스템을 Subnetwork 안으로 넣는 과정이 있었다.)
Scatter를 Density로 쪼개주어 전체 면적이 균일한 간격으로 쪼개지도록 해주었다.
2. 크기에 따른 분류
이번에는 크기에 따라 큰 녀석은 Voronoi 시스템의 영향을 받고 작은 녀석은 조각내지지 않도록 해주려 한다.
조각의 면적을 확인하기 위해서 Measure를 활용해주었다. 이때 Measure가 조각마다의 사이즈가 아닌 연결된 Primitive 전체의 면적을 구하도록 Throughout을 이용해주었다.
얻어준 면적에 대해서 파라미터 값이 넘는 경우에만 Big 그룹에 속하도록 해주었다.
Geometry Spreadsheet을 보면 설정 값인 10보다 더 큰 숫자들만 그룹에 속해진 것을 확인할 수 있다.
Split을 활용해 Big에 속한 녀석은 Voronoi 시스템으로 빠졌고, 그렇지 못한 녀석들은 Voronoi가 없는 새로운 시스템을 만들어주었다.
작은 물체에 대한 Constraint는 그때그때 필요에 따라 만들기위해서 따로 제작해주지 않았다.
새롭게 만들어준 크기 시스템이 잘 작동하는지를 Output을 통해 확인해보았다.
완성된 시스템을 Jeep차의 파츠 중 하나에 연결해 얻어낸 결과이다.
의도한대로 잘 작동하는 것을 볼 수 있다.
만약 위와는 다르게 조각이 뾰족하게 튀는 느낌이 든다면, PolyExtrude에서의 Distance 값을 더 낮춰주도록 하자.
'TWA Houdini1 > Rigidbody' 카테고리의 다른 글
TWA 후디니 1 RIGIDBODY_19_05 : 바디와 트렁크 쌓기 (0) | 2023.06.20 |
---|---|
TWA 후디니 1 RIGIDBODY_19_04 : 하체세팅 + 찌그러짐 세팅 (0) | 2023.06.17 |
TWA 후디니 1 RIGIDBODY_19_02 : 휠 & 서스펜션 (0) | 2023.06.15 |
TWA 후디니 1 RIGIDBODY_19_01 : 자료 분석 및 메터리얼 세팅 (0) | 2023.06.13 |
TWA 후디니 1 RIGIDBODY_18_10 : 나무와 유리 (0) | 2023.06.12 |