Houdini1_RigidBody_07


오늘 우리는 매우 중요한 rigidbody를 위한 머티리얼을 얻는 방법을 배웠습니다.

솔버는 dopnet에서 사용하므로 정리를 해보도록 하겠습니다.


우선 소싱을 배우기 전에는 해결사만 다루며 고난주간의 기억을 되살렸습니다.

상자가 원을 그리며 움직일 때 잔상이 남는 효과를 만들었습니다.


먼저 솔버를 꺼내 시작 프레임을 11로 설정했습니다.

솔버 작업의 핵심은 솔버의 사이클이 이전 프레임의 결과로 시작되고 해당 사이클의 결과가 솔버의 결과로 기록된다는 것입니다.

점이 솔버에 추가되었는지 확인합니다.

Merge and Switch에서 표현식을 작성하여 원하는 프레임에 점이 나타나도록 했습니다.

스위치에 $FF==15라고 적으면 15번째 프레임에 점이 나타납니다.

$FF%15==0이라고 쓰면 15의 배수인 프레임에 점이 계속 나타납니다.


다른 프레임에 추가하려면 동일하게 병합할 수 있습니다.


이번에는 예시를 위해 포장박스를 넣었습니다.

그리고 atw와 표현식 s@name=”box” + itoa(int(@Frame));로 이름을 지정했습니다.

프레임 번호가 상자 뒷면에 배치되도록 작성되었습니다.

그리고 copytopoints를 사용하여 시간이 지남에 따라 원을 그리며 움직이는 점을 만들었습니다.

그리고 색상에 대한 업데이트를 했습니다.

솔버의 각 주기에 0.5를 곱하면 상자가 점차 탈색되는 것을 볼 수 있습니다.


잘 작동하는 것을 볼 수 있습니다.

다음은 위에서 생성된 결과를 간략하게 요약한 것입니다.

솔버 외부에서 사용할 소스를 생성하고 오브젝트 병합으로 임포트하여 솔버 내부를 정리했습니다.

이제 솔버를 준비했으므로 소싱을 시작하겠습니다.

리지드바디 초반에 소싱에 대한 기본 설정이 없다고 하셨는데 그 부분은 저희가 하겠습니다.

아래를 보면 Popsolver나 Smokesolver에 Source 노드가 있고 해당 부분에 대한 사용자 정의 소스를 생성합니다.


이제 우리가 하려는 것은 개체를 rbdpackedobjcet와 연결할 필요가 없습니다.

다음 3개의 노드가 소스를 형성하고 rbd 패킹된 객체 노드는 컨테이너로만 사용됩니다.

개체는 sopnet과 sopsolver로 제시되며 enablesolver는 개체가 생성되는 컨테이너를 결정하는 역할을 합니다.

셸이 2개인 경우 오른쪽 아래 그림과 같이 sopnet과 sopsolver enablesolver를 준비할 수 있습니다.

기본적으로 sopsolver에는 4개의 노드가 있습니다.

오늘 사용할 노드는 dop_geometry만 사용하고 나머지는 삭제합니다.

dop_geo를 일반 솔버의 prev_frame으로 생각할 수 있습니다.


솔버에서의 설정과 sopsolver에서의 설정이 같으면 20프레임에서 박스가 나타나는 동일한 결과를 볼 수 있다.

차이가 있다면 sopsolver가 dopnet의 중력의 영향을 받는 것을 알 수 있습니다.


이 부분은 지금까지 했던 것처럼 하면 rbdpackedobject 노드에 각각 넣을 수 있고,

표시되는 타이밍에 대해 생성 프레임을 조정하면 동일한 결과를 얻을 수 있습니다.

여러 셸을 복사하여 여러 개체를 만들 수도 있지만 이는 효율적이지 않습니다.

따라서 sopsolver를 사용한 검색은 시간이 지남에 따라 반복됩니다.



sopsolver에서 반복해보면 10프레임마다 박스가 나타났다가 떨어지는 것을 볼 수 있습니다.

이때 그릇이 2개 있고 그릇을 따로 지정하지 않으면 시각적으로는 같은 프레임에 하나의 상자만 나타나는 것처럼 보이지만 geo-table을 확인해보면 그릇의 개수에 따라 그릇이 겹치는 것을 볼 수 있다.

껍질.

이를 방지하기 위해서는 3개의 매듭이 필요합니다.

이를 위해 3개의 노드를 모두 제거하고 이번에는 sopsolver가 아닌 sopnet에서 작업했습니다.

이전 프레임에서 사용되는 삽입할 그릇의 지오메트리를 가져옵니다.

dopnet의 지리 테이블 콘텐츠입니다.

정보를 로드해야 하므로 sim:a/Geometry를 작성해야 합니다.

그리고 진행하던 동일한 과정이 sopnet에서 진행되었습니다.


그리고 sopsolver에서 외부 SOP 사용을 활성화하고 SOP 경로를 지정할 수 있습니다.

이 경우 노드를 로드하고 있으므로 /만 사용할 수 있습니다.


마지막으로 enablesolver에 키를 배치해야 함을 확인할 수 있습니다.

이렇게 셸을 선택할 수 있는데 Enable 개체에 a를 넣으면 a라는 이름의 셸에서만 동작합니다.

b를 입력하면 그릇 b에서만 작동합니다.


이 작업을 확인하기 위해 다양한 시점에서 플라토닉 솔리드를 떨어뜨렸습니다.

이 부분에서 object merge나 dopimport dopnetwork에서 ship well의 이름을 지정하면 결과를 따로 보거나 이름을 모두 합치거나 적어서 함께 볼 수 있다.


이제 이 과정을 반복해서 예제를 풀어봅시다.

올라갈 때 약간 회전하는 무작위 크기의 상자입니다.


간단한 조정 끝에 접시의 이름이 접시로 알려지게 되었습니다.

이번에는 sopsolver에서 모든 콘텐츠를 삭제했습니다.

우리는 sopnet을 사용할 것이고 객체 병합에 사용할 우주선의 지리 정보를 가져왔습니다.

생성된 힘 V와 pscale은 attrib randomize 노드를 사용하여 임의의 값을 부여했습니다.

기존 값에서 새 값을 지정하는 대신 Add Value로 설정하여 값이 추가되도록 하고 Distribution은 Inside Sphere로 설정했습니다.

그리고 옵션에서 $FF를 써서 시드 값이 시간이 지남에 따라 변경될 수 있도록 했습니다.

v 값은 동일하게 처리했지만 P와 v에 대한 전역 스케일링 값을 같은 방식으로 조정하여 레벨을 설정할 수 있습니다.

상상할 수 있듯이 이전에 설정한 값보다 Global Scale이 커질수록 오차 범위가 커집니다.

pscale은 float 값이므로 Dimensions를 1로 낮추고 얻을 수 있는 minmax 값을 조정하여 원하는 수준을 찾았습니다.


그리고 sopsolver에서 나는 soppath와 심지어 그릇까지 지정했습니다.

결과가 좋은 것을 볼 수 있습니다.

아래 예에서 두 종류의 상자가 하늘의 서로 다른 그릇에서 나오고 가운데 고무장난감이 상자에 의해 흔들립니다.


필요한 3개의 쉘을 만들고 쉘 이름과 노드 색상을 변경했습니다.

그리고 조달 작업을 위해 3개의 매듭을 빼서 3개의 껍질이 있기 때문에 3번을 반복했습니다.


그리고 위에서 한 것을 반복하십시오.

SOPNET에서 객체 병합을 통해 접시의 지리 정보를 가져와서 prev_frame처럼 사용합니다.

스위치와 함께 나타나는 상자의 빈도

나는 ctp 참조에 정보 이름, vel 및 w를 지정하여 상자가 튀어나오게 했습니다.


파란색 상자도 반복되며 v의 방향만 반전됩니다.

sopsolver에서 externalSOP를 확인하고 sopnet의 주소를 씁니다.

그리고 enablesolver에서 사용할 컨테이너 이름(rbdpackedobject)을 작성할 수 있습니다.

장난감이 가만히 서 있기 때문에 위치 값만 설정하면 됩니다.


상자가 튀어나와 충돌

나중에 고무장난감이 잘 나오는 것을 볼 수 있습니다.


오늘 나는 소싱을 하는 방법을 배웠고 그것이 정말 훌륭한 기술이 될 것이라는 느낌을 받았습니다.

조금 헷갈리는 부분이 있다면 주소 입력이 좀 헷갈렸는데 이번 조달에서 3노드의 역할을 이해하고 나니 너무 쉽게 이해가 된 것 같습니다.

어려운 만큼 오늘 수업에서도 수없이 반복해서 내 ​​것으로 만들고 있는 것 같아요!

좋은 오늘 강연과 아이디어를 제공해주신 TWA에 감사드리며 내일 학습 일지로 뵙겠습니다 😀

https://www.twahoudini.com/home-old

TWA 후디니

TWA Houdini의 클래식 홈페이지에 오신 것을 환영합니다.

www.twahoudini.com