https://www.twahoudini.com/course/rigidbody1
Rigidbody18_part2에서는 조각의 끝부분을 잘라내는 치핑을 묘사하면서 조각에 Noise를 주고 Noise를 들어가면 Constraint 세팅을 어떻게 잡을지에 대해 공부해보겠다.
오늘 작업은 여태까지의 작업 중 가장 꼼꼼해야 한다. Attribute 관리가 중요해질 것이고 면에 Noise가 들어감으로써 지금까지와는 다른 새로운 Constraint 세팅을 만들어줄 것이다. 이는 Voronoi에 특화된 세팅으로 기존 세팅보다 더 빠르게 작동할 것이다.
Noise 없이 그냥 Voronoi로 쪼갠 결과와 Noise 작업이 된 결과의 큰 흐름을 같게 해줄 것이다.
목차
1. 조각에 Noise 주기
2. Constraint 이론 설명
3. @f_name
4. @f_by, @f_by_name
5. 접하는 면의 중심점, @area
6. 치핑
7. Simulation 세팅
8. Asset
1. 조각에 Noise 주기
가장 먼저 조각과 조각 사이에 Noise를 주는 방법이다.
먼저 Box를 Voronoi Fracture로 간단하게 조각내주겠다.
Noise를 입히기 전에 Noise가 들어가지 않은 세팅과 들어간 세팅으로 나누어주기 위해서 Voronoi Fracture를 하나 더 만들어준다.
Noise를 주기 위해서는 면이 많아야 한다. Remesh로 조각을 나누어주겠다.
Noise를 준 것과 주지 않은 것 둘 다 똑같이 조각나는 것을 볼 수 있다. 그리고 Fracture의 안쪽에는 Remesh 효과가 적용되지 않은 것도 확인할 수 있다.
이제 Noise를 추가하는 법을 배워볼 것인데, 먼저 확인할 것이 있다면 Voronoi Fracture가 제공하는 결과에 어떤 정보들이 있는지 볼 필요가 있다.
그 이유는 조각을 내는 단계에 따라 정보의 이름을 다르게 저장하기 위해서이다.
치핑의 과정은 전체 시스템에서 두번째로 조각을 내는 과정이기에 첫번째로 조각을 내는 지금 단계에서는 Interior Group과 Exterior Group의 이름을 Ain과 Aout으로 바꿔주겠다.
그 다음은 면의 안쪽을 꾸며주기 위해서 새롭게 RBD Interior Detail node를 사용해보려 한다. 이는 Fracture의 안쪽에 면을 추가하고 Noise를 줄 때 사용하는 노드이다.
이때 RBD Interior Detail을 제대로 사용하려면 어떤 Interior Group에 대해서 면을 꾸며줄지를 정해주어야 한다. 우리가 앞서 만든 Ain을 입력해준다.
RBD Interior Detail이 연결됨에 따라 안쪽에 추가적으로 면이 생성된 것을 볼 수 있다.
Detail Size를 조절해줌으로써 추가적인 면의 간격을 줄여줄 수 있다.
Noise Amplitude를 조절해줌으로써 Noise의 세기를 조절해줄 수도 있다.
만약 Interior Group에 Aout에 대한 정보를 입력해준다면 외부에 Noise 효과가 들어간 것을 확인할 수 있다.
이번에는 칼같이 잘려있는 단면이 구불구불하게 잘리도록 묘사해보려 한다.
이를 위해서 따로 @restpos에 대한 개념을 공부하고 가겠다.
@restpos를 만든다는 것은 원래의 위치를 기억시키겠다는 것이다.
새로운 Geometry에서 Box를 Remesh로 쪼개준 다음 Attribute Vop에서 Noise를 주겠다.
만약 우리가 얻은 어떠한 결과가 Noise를 먹인 결과와 같다면, 다시 원래의 형태로 돌아갈 수 있는가?
이때 Attribute Wrangle로 @restpos에 Noise를 먹이기 전의 위치 정보를 저장시켜 준다면, 모양이 변형된 이후에도 다시 원래의 위치 정보를 @restpos에서 불러올 수 있다.
이러한 개념을 단면 묘사에서 이용해주겠다.
방금 개념 설명에서 이용한 node들을 가져와 Remesh 아래에 붙여주겠다.
순서는 조각을 내주기 전에 미리 Noise를 주고, 조각난 뒤에 원래 상태로 되돌려주겠다.
이 과정을 통해 직선으로 잘려 있던 단면이 구불구불하게 잘리게 된다.
이때 Attribute Vop에서 준 Noise의 파라미터를 조절해줌으로써 단면이 잘리는 느낌을 조절해줄 수 있다.
Noise를 주는 과정에 의해 변한 색은 Normal을 다시 정해줌으로써 해결해줄 수 있다.
2. Constraint 이론 설명
Constraint 세팅에 들어가기 전 어떻게 시스템을 만들지 설명해보겠다.
이 과정에서 Voronoi의 두 가지 기능을 새롭게 배울 것이다.
조각의 절단면에 Noise가 들어감으로써 절단된 구역의 중심을 한번에 구하기가 어려워졌다. 이전의 시스템에서는 절단면이 하나의 면으로 구성되어 있었기에 중심을 찾기 수월했다.
이에 각 조각들이 접하는 면과 같은 하나의 Primitive를 구해주어 그 중심을 구해줄 것이다. 이때의 Primitive에 각각의 조각을 대변해주는 이름을 지어줄 것이다.
이렇게 만들어준 Primitive들을 이어서 Constraint로 활용해줄 것이다.
그리고 그 다음 작업으로 치핑을 해줄 것이다.
이때 A라는 조각에 있는 새롭게 치핑된 두 개의 조각의 이름을 A_c_0, A_c_1로 지어주겠다. 치핑이 되었다고 큰 조각의 이름은 바뀌면 안된다.
이름이 지정이 되었다면, 큰 조각과 작은 조각 사이에 연결 관계를 만들어줄 것이다.
또한 치핑된 조각들 사이에도 Constraint를 만들어줄 것인데, 큰 시스템 상에서 만들어줄 빨강색과 노란색 Constraint와는 달리 파랑색 Constraint는 핵심 Constraint가 만들어진 다음에 시스템 밖에서 추가적으로 구해주는 과정을 거치도록 하겠다.
이제 Voronoi에 추가적인 기능이 언제 어떻게 쓰이는지에 대해서 이야기해보겠다.
첫 번째는 조각이 가지는 이름 정보를 조각의 모든 points에 넘겨주는 기능이다.
이때 points들은 A라는 조각을 Packing할 때 Transfer Attribute로 이름을 받아줌으로써 새롭게 대변될 위치가 발생될 것이고 이름 A도 가지게 될 것이다.
요약해보자면, 조각을 내는 point의 Attribute을 각각의 조각의 모든 points에 넘기는 기술을 쓴다는 것이다.
두 번째는 primitive에 무언가를 저장할 것인데 누구에 의해서 발생된 면인지를 저장해줄 것이다.
예를 들어 B의 윗면은 A에 의해서 만들어진 면이다. 이때 이 면들에게 A에서의 point number를 저장해줄 수 있다. 0번 point에 의해서 생성된 면이라고 저장될 것이다. C와 겹친 면은 2번이라고 저장될 것이다.
이때 바깥쪽 면은 누군가에 의해서 절단된 면이 아니다. 이는 -1이라고 저장될 것이다.
이렇게 조각난 면의 구역을 특정하는 것이 훨씬 쉬워지게 되었다.
예를 들자면, B 조각에서 primitive에 저장된 0번에 대한 내용만 골라서 보겠다고 Attribute Wrangle에서 수행해준다면 A와 B로 인해 만들어진 면을 얻게 된다. 이렇게 얻어진 면에 의해 통합적인 중심을 찾는 것이 수월해지게 된다.
요약하자면, 누구 때문에 만들어진 면인지 primitive에 pointnumber를 저장하는 기술을 쓸 것이다.
그리고 이후 과정에서 추가적으로 얻어준 숫자 정보들을 이름 정보로 변환해주는 과정을 거쳐줄 것이다.
3. @f_name
Voronoi Fracture에서의 부가적인 기능들을 확인해보겠다.
먼저 조각을 내는데 쓴 point의 이름 정보가 각각의 조각에 잘 넘어가는지 확인해보겠다.
Scatter로 뿌려준 점을 Blast로 떼어내 하나하나 이름을 지어준 다음 이 점들을 가지고 조각내어 주겠다.
이때 조각에 이름 정보가 넘어오지 않은 것을 볼 수 있는데, 이를 Voronoi Fracture에서의 Copy Cell Point Attributes를 체크해준 뒤 To Piece Points에 @f_name 정보를 넘겨받음으로써 해결해줄 수 있다.
Marker를 이용해 화면상에서 확인해보면 각각의 조각의 모서리에 조각을 나게한 point의 이름이 들어간 것을 볼 수 있다.
그 다음 Assemble로 Pack해주겠다. 이 과정에 의해 @name 정보가 생기게 된다.
우리가 이용할 정보는 @name이 아니라 @f_name이기에 파라미터에서 Attribute Transfer로 정보를 가져오겠다.
f_name이 잘 불러와져 a,b,c,d의 이름을 확인할 수 있다.
이제 Noise가 들어간 정보에도 위의 내용을 적용시켜 보겠다.
Voronoi Fracture를 보면 모든 포인트에 이름 정보가 저장된 것을 확인할 수 있다.
그리고 Assemble에서 Pack 해주고 @f_name의 정보를 넘겨받음으로써 면이 적었을 때와 같은 결과가 나오는 것을 볼 수 있다.
그런데 Scatter로 쪼개주는 points의 수가 늘어나게 된다면 지금과 같이 하나하나 이름을 지정해주는 것은 어렵다.
이에 Attribute Wrangle로 겹치지 않게 @ptnum에 따라 달라지는 이름 정보를 만들어주겠다.
4. @f_by, @f_by_name
Constraint를 만들 때 가장 중요한 것은 각각의 조각을 대변하는 points이다.
Add로 점만을 남겨 어떤 곳에 points가 생겼는지 확인해보면, 아쉽게도 조각의 중심에서 떨어져 있는 점들이 보인다.
원치 않는 위치에 있는 point들을 조각의 중심에 위치시켜 주겠다.
조각을 Unpack해준 뒤 Extract Centroid로 중심을 찾아주겠다. 그리고 사라진 @f_name의 정보를 Attribute Copy로 다시 가져오겠다.
모든 조각에 대해 작업을 해줄 것이기 때문에 위의 과정을 For-each Primitive 안에서 이루어지게 해주겠다.
이제 Connect Adjacent Pieces를 이용해 점들을 이어 선으로 만들어주겠다.
최대한 맞닿아 있는 조각끼리는 점끼리 선으로 연결되도록 Search Radius와 Max Search Points를 조절해주겠다.
이때 원치 않는 조각들끼리도 선으로 연결된 것을 볼 수 있는데, 이 문제는 나중에 해결될 예정이다.
이번에는 잠시 아까 이론 설명에서 이야기했던 어떤 point 때문에 새롭게 면이 생겼는지를 구하는 법에 대해 공부해보고 가겠다.
point에 의해 생긴 면에 point의 이름이 들어갔으면 한다.
Voronoi Fracture의 파라미터에 Primitive Clip Piece를 이용해줄 것이다. 이는 추가적인 면을 만들 때 어떤 조각 때문에 면이 만들어졌는지에 대한 정보이다.
Geometry Spreadsheet의 primitive 정보에 @clippiece라는 정보가 생긴 것을 볼 수 있다. 이름을 clippiece가 아닌 @f_by로 변경해주겠다.
Marker로 @f_by의 정보를 보면 원했던 정보가 잘 들어온 것을 볼 수 있다.
다음은 우리가 얻어낸 primitive에 @f_by의 정보에서의 값과 동일한 숫자의 @f_name을 가지도록 해주겠다.
Attribute Wrangle에서 point function으로 두 번째 인풋으로 들어오고 있는 @f_name의 정보를 @f_by라는 숫자 정보를 기준으로 가져오도록 하겠다.
이때 point number는 0부터 시작하기에 @f_by의 -1에 의해 정보를 가져오는 것이 의미가 맞지 않는다.
조건문을 이용해 @f_by가 -1인 경우에 가져오게 되는 @f_name의 정보를 따로 지정해주겠다.
Marker로 @f_by_name을 씬뷰에서 확인하면 좀 더 직관적으로 어떤 point에 의해 발생한 면인지를 확인할 수 있다.
이제 공부한 개념을 본작업으로 가져와보겠다.
Noise가 들어간 결과와 그냥인 결과 둘 다 원했던대로 정보가 잘 저장된 것을 볼 수 있다.
5. 접하는 면의 중심점, @area
우리는 아까 Connect Adjacent Pieces로 점들을 이어 선으로 만들어주었었다.
우선은 만들어준 선들 중 하나의 선을 떼어내어 작업해보도록 하겠다.
선이 가진 @f_name이 f_2와 f_3인 것을 확인할 수 있다. 이는 조각들 중 f_2와 f_3 조각들 간의 연결 관계라는 것을 뜻한다.
선이 가진 두 점의 정보를 Blast로 떼어내어 준다.
이때 Blast:0이 가지고 있는 f_2와 이름이 다른 points들을 모두 지워준다면 f_2를 따로 떼어내줄 수 있을 것이다.
이렇게 Connect Adjacent Pieces에 있는 선들을 활용해 조각을 다시 불러와주었다.
이제 이 조각들이 접하는 면을 구해주려 한다. Unpack 해주겠다.
우리는 앞서 어떤 면이 접하는 면인지에 대한 정보 @f_by를 Voronoi Fracture에서 저장해주었었다.
선에서 Blast로 떼어낸 point 정보에서의 @f_name과 방금 얻어낸 조각의 primitive 정보에서의 @f_by_name이 같지 않은 경우의 모든 primitive를 지워주도록 하겠다.
이 과정을 통해 접하는 면을 얻어내주게 되었다.
이렇게 얻어준 면에서 Extract Centroid로 중심을 구해주도록 하겠다.
그리고 사라진 @f_name을 Attribute Copy로 다시 받아오도록 하겠다.
그 다음 두 점을 합쳐 Add로 하나의 primitive 정보로 만들어주겠다.
그리고 Measure로 @area 값을 얻어준 뒤 Attribute Copy로 정보를 넘겨주겠다.
이제 완성된 시스템을 For-each Primitive 안에 넣어 모든 primitive에 적용시켜주도록 하겠다.
결과를 보면 겹치는 조각들에 한해 Constraint로 이용될 primitive들이 잘 구해진 것을 볼 수 있다.
이때 아까 Connect Adjacent Pieces로 겹치지 않는 조각들에서도 선이 생겼었는데 시스템에 의해서 필요없는 선들은 지워진 것을 볼 수 있다.
방금 만든 시스템이 Noise가 들어간 조각에서도 잘 작동하는지 확인해보겠다.
하나하나 작동이 잘 되는지 확인해보면서 내려오다보면 중심점을 구해주는 부분에서 문제를 발견할 수 있다.
Noise로 인해 중심점이 면에서 떠버리는 현상이 발생한다.
Ray node를 활용해 점을 Noise가 적용된 면에 붙여주도록 하겠다.
또한 @area에서도 문제가 생긴다.
Measure가 전체에 대해 면적을 구해주는 것이 아닌 조그만 면적들을 하나하나 구해주는 것이다.
이는 간단하게 Measure의 파라미터에서 Accumulate를 Throughout으로 변경해주면 해결된다.
이로써 전체 면적을 한번에 구하여 @area 값으로 제공받게 된다.
Just에서의 @area 값과 큰 차이가 없는 것을 볼 수 있다.
6. 치핑
이제 치핑을 해줄 차례이다.
먼저 하나의 조각을 따로 떼어내어 작업해준 뒤 전체에 적용시켜주도록 하겠다.
Unpack 해준 다음 Fuse로 한 점이 여러갈래로 나뉘지 않도록 정리해주겠다.
그 다음 꼭짓점들을 활용해 치핑을 만들기 위해서 Add로 점만을 남겨주겠다.
그리고 따로 Extract Centroid로 중심점도 구해준다.
그 다음 어떤 점을 쓸지에 대해서 랜덤한 seed와 확률에 따른 limit도 만들어주겠다.
그리고 중심점을 기준으로 꼭짓점들을 더 먼 곳에 위치시킬 수 있게 Deep에 대한 정보도 세팅해주겠다.
이제 그 다음 과정에 대해 잠시 설명하고 가겠다.
조각을 내주었으니 이제 작은 조각들에 대해 이름을 지어줄 차례이다.
큰 조각은 잘려나갔음에도 그대로 이름을 유지시켜주겠다. 그리고 작은 조각들은 원래의 이름 뒤에 "_c_" + @ptnum을 붙여주겠다.
이렇게 이름이 지어진 점들을 이어 선으로 만들어주고 이 primitive에서의 정보를 가지고 면적을 구해줄 것이다.
그리고 그 면에 이름의 정보를 넘겨주어 constraint로 이용될 primitive를 만들어줄 예정이다.
이때 문제가 발생할 수 있어 고민해주어야 하는 내용이 있다.
사진에서의 조각은 갯수가 4개이다.
그런데 제공했던 points의 갯수는 5개인 것을 볼 수 있다. 이는 Deep 값에 의해 발생할 수 있는 현상이다.
하지만 이것이 @f_by를 구하는 내용에서 문제를 일으키게 된다.
이에 제공한 point의 갯수와 조각의 갯수가 다른 경우에 이름 체계를 다시 잡아주어야 한다.
확실한 이해를 위해서 먼저 틀리게 작업한 경우를 보고 그 다음 올바르게 작업해보도록 하겠다.
어떠한 과정에 의해서 만들어진 결과를 보면, 큰 조각에서의 한 면의 @f_by_name과 그 면에 접하는 조각에서의 @f_name에서의 숫자가 차이가 나는 것을 볼 수 있다.
총 5개의 point 정보를 제공하고 있는데, 이 중 실제로 활용이 된 것은 1번을 제외한 0,2,3,4번 point이다.
그런데 Voronoi Fracture에서 조각에 쓰일 이름이 0,2,3,4이 아닌 0,1,2,3인 것을 볼 수 있다.
만약 활용할 수 있는 point가 더 늘어난다면, 이에 따라 이용되지 않는 point도 늘어나게 될 것이다.
이제 올바른 방식으로 작업해보겠다.
조각을 내기 전이 아닌 조각을 낸 이후에 이름을 만들어주도록 하겠다.
이름을 새로 만들줄 것이기에 Attribute Delete로 필요없는 정보는 지워주도록 하겠다.
그 다음 두번째 Voronoi Fracture이기에 Inside와 Outside를 Bin과 Bout으로 변경해주겠다. 그리고 @f_by를 구해주기 위해서 Primitive Clip Piece도 켜주겠다.
만들어준 조각들을 Assemble로 묶어준 뒤 Pack 해주겠다.
Blast로 0번을 떼어내어주면 큰 조각만을 따로 볼 수 있다. 그리고 Blast를 하나 더 만들어 0번을 제외한 모든 점을 보겠다.
Attribute Copy로 각각 @f_name을 받아와주겠다. 이렇게 해줌으로써 작은 조각의 첫 번째 점이 1번이 아닌 0번이 되게 된다.
이제 작은 조각에 이름을 지어주겠다. 0번부터 이름이 잘 구해진 것을 볼 수 있다.
작은 조각의 이름이 잘 준비되었기에 Assemble에서의 조각을 기준으로 @f_by_name을 찾아주겠다.
그 다음 다시 Assemble해주고 Attribute Copy로 @f_name을 받아와준다.
이제 조각에 필요한 이름 준비가 완료되었기에 이제 조각의 중심을 구해주려 한다.
앞에서 만들어주었던 Constraint를 구하는 시스템을 가져오겠다.
하나씩 확인하여 시스템이 잘 작동하는지 확인하였다면 Noise가 들어간 곳에서도 시스템이 잘 작동하는지 확인해보겠다.
이때 Noise가 들어간 조각들은 많은 면과 점에 의해 그대로 이용한다면 치핑 조각이 무수히 많이 늘어나게 된다.
Just에서와 같은 갯수로 쪼개고 싶기 때문에 싸이클의 주체를 Noise가 아닌 Just로 해주도록 하겠다.
그리고 Voronoi에 들어갈 물체가 싸이클이 가지고 있는 @f_name에 의해 Noise에서 선별이 되도록 해주겠다.
그 다음 작은 치핑 조각에도 Noise 효과가 적용되도록 복사해 붙여넣어 주겠다.
필요없는 Attribute 정보는 미리 지워주고 Noise 효과를 적용시켜 주겠다.
이때 RBD Interior Detail에서의 Interior Group을 Bin으로 입력해주어야 한다.
그리고 Normal을 달아 Noise가 들어간 @N 정보를 원래대로 정리해주겠다.
조각에 Noise가 들어오고 모든 시스템이 잘 작동하는 것을 확인하였다면 이제 모든 primitive에 대해서 지금의 시스템이 작동하도록 해주겠다.
이때 모든 조각이 한번에 For-each Primitive 안에 들어감으로써 이후 필요한 부분을 따로 빼낼 수 없다.
이에 미리 Group을 만들어주도록 하겠다. Object로 쓰일 결과와 Constraint로 쓰일 결과를 Group으로 지정해준다.
그 다음 For-each 밖에서 Blast로 Group들을 각각 분리해주겠다.
Scatter에서의 점의 갯수를 변경해주어도 결과가 잘 변경되는 것을 볼 수 있다.
그리고 Noise에서와 Just에서의 Constraint의 primitive 갯수 차이를 볼 수 있는데, 이는 Noise로 인해 더 작게 치핑된 조각들이 발생되었기 때문이다. 별 문제는 되지 않는다.
7. Simulation 세팅
먼저 Just로 Simulation 세팅을 잡아보겠다.
Object와 Constraint로 들어갈 정보에 필요없는 Group과 Attributes을 모두 지워주겠다.
그리고 우리가 가진 @f_name을 Dop Network 안에서 이용될 @name으로 변경해주도록 하겠다.
Constraint 세팅을 잡아주겠다. type은 all이다.
Glue Constraint에서의 Strength와 @area 정보를 연결시켜주겠다.
치핑 조각간의 Constraint 세팅을 잡아주었으니, 큰 조각들 간의 Constraint도 가져와 동일하게 세팅해주겠다.
Dop Network안에서 Glue Constraint 세팅을 잡아주고 충돌할 Sphere가 40 Frame 마다 나타나도록 세팅해주었다.
이번에는 Noise로 Simulation 세팅을 잡아보겠다.
Noise의 경우는 Proxy 자료를 만들어준 뒤 나중에 Simulation 결과를 Transform Pieces로 전환해줄 예정이다.
Proxy를 만들기 위해서 각각의 조각에 대해서 작업해주겠다.
조각을 VDB from Polygons로 SDF 정보로 만들어준 뒤 Convert VDB로 다시 Polygon으로 만들어주겠다.
조각이 거칠어졌다고 느껴져 VDB Smooth를 이용해 부드럽게 만들어주겠다. 이때 Smooth가 너무 많이 들어가있어 Iteration 값을 줄여주겠다.
Convert VDB에서의 Iso Value 값도 올려주어 충돌 지점이 원래 조각보다 약간 커지게 해주었다.
그리고 Adaptivity 값을 올려주고, Poly Reduce와 Convex Hull을 달아 용량을 줄여주었다.
그 다음 Dop Network에 넣기 위해서 Pack 해주고 Attribute Copy로 @f_name을 받아온다.
For-each 밖에서 Attribute Rename으로 @f_name을 @name으로 변경해주겠다.
Constraint 세팅과 Dop Network 세팅은 Just에서와 동일하게 해주겠다.
잘 작동하는 것이 확인되었다면 Proxy로 만들어진 Simulation을 고화질 자료로 치환해주겠다.
Transform Pieces에서 치환할 때 @name이 활용될 것이기에 고화질 자료에서 Assemble에 의해 만들어진 @name을 지워주고 @f_name을 @name으로 변경해주겠다.
Transform Pieces의 결과를 보면 치환이 잘 된 것을 볼 수 있다.
그런데 결과를 잘 보면 공중에 작은 조각들이 떠 있는 것을 볼 수 있다.
이는 Proxy를 만드는 과정에서 무언가 정보가 유실됨으로써 입력되는 정보보다 출력되는 정보가 줄었기 때문이다.
이에 Proxy 조건을 다르게 잡아주도록 하겠다.
복잡한 과정 없이 Unpack해준 뒤 바로 Convex Hull 해주고 다시 Pack 해주겠다.
그 다음 Attribute Copy로 @f_name을 가져온 다음 @name으로 변경해주겠다.
그리고 Dop Network 안에서 box의 Collision Padding 값을 0으로 해주겠다.
결과를 보면 오류 없이 잘 작동하는 것을 볼 수 있다.
이렇게 Noise에서의 Simulation 세팅도 완료되었다.
트윅에 있어서는 Just로 어느정도 느낌을 낸 뒤, Noise로 전환해 결과를 보면 될 것이다.
8. Asset
이제 전체 시스템을 사용하기 편하게 Asset화 시킬 것이다.
Simulation에 이용된 세팅은 전부 지워주고 작업하겠다.
그리고 사용하지 않는 node들을 전부 제거해준 뒤, Tweak에 이용되는 node들은 잘 보이게 색을 바꿔주겠다.
정리가 되었다면 정보들을 복사해 SubNetwork 안으로 넣어주도록 하겠다.
현재 우리가 만들어둔 시스템에서의 결과는 네 갈래이다.
Output을 결과의 수와 같이 4개로 복사해주겠다.
그리고 Output에서의 Output Index를 0,1,2,3으로 전부 다르게 설정해주겠다.
차례대로 연결해준다면, SubNetwork 밖에서 4개의 Output이 생긴 것을 확인할 수 있다.
Null을 연결하여 정보가 잘 들어왔는지 확인해줄 수 있다.
이번에는 SubNetwork 밖에서 편하게 Tweak하도록 Control을 만들어주려 한다.
Control을 SubNetwork의 Input2에 연결해주겠다. 그리고 정보를 달고 다닐 수 있도록 Control 위에 점을 두겠다.
Control에서 Edit Parameter로 파라미터들을 만들어주겠다.
그리고 만들어진 정보를 SubNetwork안에서 Input2에 연결된 Null에 저장시켜주겠다.
이때 저장된 정보들은 이름이 간단하게 지어져야 한다.
SubNetwork 안에서 저장된 정보들을 이제 point function을 활용해 실제 Tweak에 활용될 파라미터들에 연결시켜 주겠다.
전부 연결해줌으로써 이제 SubNetwork 밖에서 Control로 쉽게 Tweak 해줄 수 있다.
이렇게 Voronoi에 특화된 Constraint 시스템이 완성되었다.
'TWA Houdini1 > Rigidbody' 카테고리의 다른 글
TWA 후디니 1 RIGIDBODY_18_05 : 캐릭터로 박살내보자 (1) | 2023.05.06 |
---|---|
TWA 후디니 1 RIGIDBODY_18_03,04 : 출력준비 (Brute & Car), 기둥+벽 박살내기 (0) | 2023.05.04 |
TWA 후디니 1 RIGIDBODY_18_01 : 콘크리트 - 치핑 (0) | 2023.04.28 |
TWA 후디니 1 RIGIDBODY_17 : mixamo 캐릭터로 충돌조건 만들기 (1) | 2023.04.26 |
TWA 후디니 1 RIGIDBODY_16_01 : Constraint 데이터 부르기 (Vis Data 활용) (0) | 2023.04.23 |