Houdini1_RigidBody_05


오늘은 어제의 문제를 풀려고 노력했습니다.


어제 생성한 그룹만 남기고 새로운 설정을 했습니다.


원의 점만 남기고 배열을 변경하고 atw로 위치를 늘렸습니다.

그리고 방금 dopnet에서 중력 설정을 조정하고 결과를 보니 약간 옆으로 굴러가는 것을 볼 수 있습니다.

ConvexHull을 구형으로 변경하면 흔들리지 않는 것을 확인할 수 있습니다.


다음으로 우리는 물리적 가치를 다루었습니다.

바운스에 임의의 값을 할당하면 각 공이 다르게 바운스되는 것을 볼 수 있습니다.


이때 바운스 값을 0~1 사이의 색상으로 크롬으로 지정하면 밝은 아이는 붉은색, 무거운 아이는 보라색이 된다.


이번에는 공의 색이 아닌 벨트만 색을 입혀보았습니다.

팩의 순서가 약간 바뀌지만,

먼저 폭발로 점 0 만 제거하여 작업했습니다.

@Cd를 직접 지정하는 대신 색상 정보를 @tempCd에 저장했습니다.

그리고 프림그룹과 밴드를 하게 되면서부터

tempCd의 정보는 attrib promotion에 의해 point에서 prim으로 변경되었습니다.

그리고 @Cd에 tempCd 정보를 넣고 패킹했습니다. 오버플로가 중요합니다.

그리고 foreach 포인트 노드를 사용하여 모든 구체에 적용했습니다.

이때 결과를 확인해보면 볼의 바운드율이 모두 같은 것을 확인할 수 있다.


twa는 그림을 그려 설명했습니다.

이전 방법에서 패킹된 포인트 프림이 포인트에 대한 복사본으로 들어와 속성 값을 가져오면

현재 방법에서는 구의 모든 지점에 속성 값이 있고 하나로 묶입니다. 압축을 풀면 원하는 결과를 얻을 수 있지만 이 경우 패킹은 의미가 없습니다.


이 부분은 해결하기 매우 쉽습니다. 팩 노드의 전송 속성에 바운스를 쓰면 바운스 정보가 잘 전달되는 것을 볼 수 있습니다.

점프 높이도 다르다는 것을 알 수 있습니다.


지금까지는 각 조각을 개별적으로 포장했습니다.

그리고 저는 Initial & Physics를 선택했습니다.

여러 개체가 하나의 셸에 들어가므로 각 개체에 이름을 지정해야 했습니다.


저는 atw로 s@를 만들었지만 itoa()를 사용하여 구체의 뒷면에 숫자를 추가하고 그 안에 @ptnum을 넣었습니다.

번호가 잘 붙어있는지 확인할 수 있습니다.

이때 이름도 패키지 노드와 별도로 제거해야 합니다.

다음으로 충돌할 상자 설정을 만들었습니다.

차이점은 가중치로 색상을 할당할 때 fit()을 사용하여 0에서 1까지의 정보 조각으로 변경된다는 것입니다.

*40000을 지정했으므로 0에서 40000까지 정보를 0.1로 조정할 수 있습니다.


box는 패킹된 상자를 포인트로 복사하기 때문에 별도의 tempCd를 생성할 필요가 없습니다.

그런 다음 충돌을 일으키는 부분에 대해 구체의 Vel 값을 지정하고 Inherit Velocity from Point Velocity를 활성화합니다.


결과가 좋아 보이는 것을 볼 수 있습니다.


이번에는 dopimport를 사용하여 이 정보를 검색했습니다.

atw를 이용하여 조건문을 작성하면 각각의 객체를 개별적으로 볼 수 있습니다.


보다 편리하게 보고 싶다면 Itoa에 Chi를 써서 파라미터로 제어할 수 있습니다.


chs를 사용하면 보고 싶은 이름을 선택할 수 있습니다.


네임베이스에 공과 상자를 쓰고 숫자 매개변수를 복사 붙여넣기 하면 같은 번호의 공과 상자를 볼 수 있습니다.

다음은 도미노의 예입니다.

나는 상자를 포장하고 그 위에 Copy to Points를 붙였습니다.

그러나 우리는 우리가 원하는 방향을 바라보는 것에 집착하지 않았습니다.


Joy of Trouble에서 배웠듯이 방향과 회전을 결정하는 속성이 있으며 @N, @UP, @orient가 있습니다.

이 세 가지 개념은 인스턴스화할 때 매우 중요하다고 합니다.

오늘은 @N에 대해서만 다루지만 곧 @orient에 대한 이야기가 나올 것이라는 소문이 있습니다.


Copy to Points를 사용하는 경우 참조에 @N이 들어오는 방향을 보면 부착물을 확인할 수 있습니다.

이 경우 기준점의 N 방향을 설정하여 원하는 방향으로 설정하면 됩니다.

이를 수행하는 한 가지 방법은 Polyframe 노드를 사용하는 것입니다.원을 열린 호로 설정하고 접선 이름에 N을 입력합니다.

원을 열린 호로 설정하면 포인트가 1씩 증가합니다. 나중 작업을 위해 이 부분을 제거할 수 있습니다.

Polyframe은 법선, 탄젠트 및 이중 접선 값을 찾고 그 뒤의 빈 공간에 정보를 저장할 이름을 제공할 수 있습니다.

접선은 선이 가리키는 방향입니다. 이 방향 정보는 N에 저장할 수 있습니다.

방향성도 잘 잡혔고 겹치는 부분을 삭제해서 원하는 결과를 얻었습니다.


그런 다음 dopnet 설정을 지정하고 각 조각에 이름을 지정했습니다.

그리고 첫 번째 조각은 터치해야 하기 때문에 트랜스폼으로 옮겼습니다.

이 시점에서 포이봇 값을 사용하여 회전을 줄 수 있습니다.

Move Centroid to Origin을 클릭하면 개체가 0,0,0으로 이동하는 것을 볼 수 있습니다.

그리고 번역을 다시 0,0,0으로 변경하면 원래 위치로 돌아가며 포이봇 정보가 유지되는 것을 볼 수 있습니다.

그리고 이 상태에서 회전을 하면 0,0,0이 아닌 상자 자체를 중심으로 회전하는 것을 볼 수 있습니다.

결과가 잘 표시되는 것을 볼 수 있습니다.


이번에는 S 곡선으로 도미노를 설정했습니다.

S곡선의 선을 만들 때 1자 선을 만들고 변형으로 포인트를 이동시켜 Z자 모양을 만들었습니다.

그리고 세분화를 주면 S자 곡선이 생성되는데, 이 부분을 다듬기 위해 리샘플링과 세분화를 한 번 더 반복하였다.

그리고 이전과 같은 방식으로 폴리프레임을 사용할 수 있는데 이번에는 리샘플링을 사용했습니다.

Resample에서 탄젠트 값을 찾을 수도 있습니다. 이 정보를 N에 저장하면 동일한 원하는 결과를 얻을 수 있습니다.

TWA는 resample을 사용하는 사례가 더 많다고 말했습니다.

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


오늘 재밌는 예시를 하나 풀고 지금도 느끼지만 패키지의 위치가 굉장히 중요한 것 같아요.

아, 그리고 @orient는 따로 체크해야 합니다. Joy of Anger에서 쿼터니언과 오리엔트를 재미있게 배웠던 기억이 있어서 기대가 됩니다. 뭔가 근본을 알아가는 느낌…

계속 강조하고 반복하면 나중에 강의를 들을 때 더 쉬울 것 같아요.

4월 초까지 일이 있어서 블로그가 미뤄지고 어제는 도미노도 못만들었습니다.

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

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

TWA 후디니

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

www.twahoudini.com