
오늘 우리는 볼륨 충돌과 새로운 노드를 다뤘습니다.
먼저 기본 세팅을 했습니다.
밀도, 온도 및 속도 정보가 생성됩니다.
vel과 온도 정보를 변경하기 위해 볼륨 VOP를 넣었습니다.

dopnet에 기본 설정이 있습니다.
소스에서는 각 필드에 소스를 넣어 볼륨의 크기에 따라 유연하게 조정할 수 있는 경계 상자를 만듭니다.

null 컨트롤을 만들었습니다. div_size 및 온도 mult 값을 얻었습니다.

온도 볼륨 VOP에서 노이즈 값을 업데이트했습니다.

볼륨이 꽤 빨리 올라가서 smoke solver에서 값을 조정했습니다.

볼륨이 사라지도록 아주 작은 값을 주었습니다.
연기 모양에 가스 난기류를 추가하여 노이즈 효과를 추가했습니다.

여기까지 기본 설정은 끝났으니, 충돌 관련 내용에 대해 알아보겠습니다. 그렇게 어렵지 않습니다.
첫 번째는 입자와 같은 정적 개체를 사용하는 것입니다.
두 번째 방법은 vel과 관련된 새로운 정보를 새로운 방식으로 제공하는 것입니다.
그 방법을 사용하기 전에는 dopimportfield를 사용하고 외부에서 확인할 수 있도록 충돌로 사용할 상자를 만들었습니다.
충돌을 위해 나만의 볼륨을 만들었습니다.
sop 경로를 정적 개체로 설정하고 프록시 볼륨 경로를 설정하고 병합을 통해 연결합니다.

이동 충돌을 적용하기 위해 토러스에 변환을 첨부하고 회전을 했습니다.
정적 개체에서 변형된 형상 사용을 선택했습니다.
충돌하는 물체의 움직임에 따라 볼륨이 영향을 받는 것을 볼 수 있습니다.

이번에도 접지면과 중력을 적용했습니다.

아래 그림과 같이 물체의 중력과 회전이 영향을 받는 것을 확인할 수 있습니다.

밀도와 그림자 스케일을 높이기 위해 VV를 추가했습니다.
램프도 만들었습니다.

템플릿을 닫으면 충돌로 인해 구멍이 열린 것을 확인할 수 있습니다.

이번에는 두 번째 방법을 시도했습니다.
연기 해결사를 다룰 때 대부분의 안개 정보는 정보의 이름과 정보를 변경하면서 생성되어 사용됩니다.
이번에는 SDF 정보를 이용하여 볼륨의 충돌을 기술하고 정적 객체를 사용하지 않고 만들어 보겠습니다.
정적 객체를 사용한 결과에서 vel 정보를 보면 정적 객체가 vel 필드를 제공하고 있음을 알 수 있습니다.

정적 객체는 SDF를 제공하고 vel 값을 자동으로 업데이트합니다.
볼륨 소스로 만들려면 SDF와 vel을 별도로 제공해야 합니다.
이 때 SDF col 이름을 지정하고 vel 정보를 colvel로 저장했습니다.
vdbfrompolygons를 사용하여 col이라는 SDF를 만들었습니다.
또한 트레일 노드는 토러스의 회전 속도 정보를 얻기 위해 사용됩니다.
이때 Result Type을 Comput Velocity로 변경하면 회전하여 v 값을 얻을 수 있습니다.

한 번도 사용하지 않은 기능도 있습니다.
표면 속성 만들기
속성에서 point.v를 선택했습니다.
이 VDB 정보는 covel이라는 이름으로 보관됩니다.

정보가 잘 저장되어 있는지 확인할 수 있습니다.

속박을 날려버리다
볼륨 슬라이스와 볼륨 궤적을 통해 vel의 흐름을 볼 수 있습니다.

이 정보를 사용하려면 dopnet에서 볼륨 소스를 추가로 로드해야 합니다.
필드의 이름은 충돌 및 충돌 속도입니다.
충돌과 vel에 col이라는 SDF 정보를, crashvel 필드에 colvel이라는 벡터 정보를 넣을 수 있습니다.
이때 Operation과 Scale 값의 차이가 조금씩 다른 것을 확인할 수 있습니다.
이 부분은 Initialize에 따라 다른 값을 표시하는 것을 볼 수 있습니다.
즉, Scale 값을 조정하여 다른 결과를 얻을 수 있습니다.
SDF로 가져온 col 값에 Scale에 -1을 곱하면 SDF 내부의 음수 값은 양수가 되고 외부는 음수가 됩니다.
다른 템플릿을 보고 결과를 추정할 수 있습니다.

이때 결과에서 구멍에 무언가가 있음을 알 수 있습니다.
정보는 vdb로 만들어지기 때문에 충돌 정보는 없습니다. 내부 채우기를 선택하여 이 문제를 해결할 수 있습니다.

정적 객체를 사용하지 않고 이 방법을 사용하면 제어 정보를 활용할 수 있는 부분이 있습니다.
아래와 같이 충돌 적용의 vel 값을 각 정보를 제거하고 colvel 값에 볼륨 VOP를 곱하여 scale up 또는 down 할 수 있습니다.

m 값을 3으로 설정하면 힘의 크기가 커지는 것을 볼 수 있습니다.
0을 쓰면 충돌로 인해 아무것도 바뀌지 않은 것을 알 수 있습니다.
다음은 다중 값 3에 대한 결과입니다.

다음은 오늘 공부할 두 번째 이론입니다.
지금까지 배짱이 가득한 포그 정보를 다루었습니다.
이번에는 표면에 생성된 볼륨을 다루겠습니다.
다음은 입자 및 pyrosource volumeraterizeattributes 노드에서 vdb를 사용하는 방법입니다.
현재 우리는 파티클에서 vdb를 사용하는 예제에 대해서만 작업하고 있습니다.
그 전에 폴리곤에서 vdb를 사용하여 이해하기 위한 예제를 만들었습니다.
vdb from polygons는 기본적으로 SDF 값을 얻기 위한 것이고, 이때 SDF 값은 포그 정보를 얻기 위해 사용된다.
SDF 값에 -1을 곱하는 동안 내부 정보만 포그 정보로 변경되고 외부 부정 정보는 클램프로 삭제됩니다.
이제 예제에 대한 설정을 만들었습니다.
나는 구체를 분산시키고 구체를 copytopoint로 사용합니다. atw를 사용하여 pscale을 조정할 수 있도록 했습니다.

부피에 따른 pscale의 증가를 살펴보면 다음과 같은 결과를 확인할 수 있습니다.

이때 주의해야 할 부분은 pscale이 너무 작아져서 bounding box가 매우 작아져서 정보가 사라지는 상황이다.
이 상황 역시 파티클에서 나온 vdb를 조심해야 하는 상황입니다.

TWA는 사진으로 상황을 친절하게 설명했습니다.
높은 음량에서는 큰 차이가 없지만 낮은 음량에서는 문제가 될 수 있습니다.
아래 그림의 박스를 복셀이라고 가정하고 그레이 포인트는 pscale이 작아질 때이며, 복셀 중간에 sdf 정보가 없기 때문에 sdf 외부에 양의 값이 있을 것으로 판단됩니다.
이때 포그 정보로 변환하면서 -1을 곱하면 음수는 모두 고정되어 남은 정보가 없게 된다.

아래의 경우에도 voxel이 sdf를 포함하고 있지만 중간 근처에 배치하기에는 너무 작다면 원하는 결과를 얻지 못할 것입니다.

해상도를 높이면 이 문제를 해결할 수 있습니다.
해상도를 2배로 하면 파란색 사각형 친구가 살아남습니다.
그러나 이것은 근본적인 해결책이 아니다. 복셀 해상도가 증가함에 따라 계산량이 크게 증가합니다.

이제 구체의 표면을 조밀하게 만들어 봅시다.
흩어지는 양을 늘려서 해보았지만 그 사이에 틈이 있습니다.
이 부분에서는 산란량을 늘리거나 해상도를 줄이거나 pscale을 높이는 등 여러 가지 방법이 있을 것입니다.

흩어진 점의 수를 많이 늘리면 내부를 채우는 결과를 볼 수 있습니다.
이 부분은 vdb를 사용하여 폴리곤에서 포그 정보를 얻는 것과 매우 유사한 결과라고 볼 수 있습니다.
이 표현을 하는 이유는 흩어진 점이 너무 많아 모든 표면이 가려지면 vdbfrompolygons는 점에 의해 가려진 내부 정보가 내부라고 판단하고 표면에 대한 포그 볼륨이 아닌 내부를 채우는 포그 볼륨을 생성하기 때문입니다.

우리가 원하는 것은 표면에 대한 정보이므로 그에 따라 조정할 수 있습니다.
얇은 표면의 결과를 얻기 위해서는 scatter, pscale, voxel size를 하나씩 조절하고 원하는 정도를 찾기 위해 voxel size보다 작지 않도록 주의해야 하는데 이는 매우 비효율적인 방법이다. .
이제 입자의 vdb를 사용하여 표면에 미스트 볼륨을 생성해 보겠습니다.
Point Radius Scale은 pscale처럼 반지름을 조정할 수 있습니다. 높이면 두꺼운 표면이 낮을 때 더 얇아지는 것을 볼 수 있습니다.

이제 값이 0.15가 되자마자 pscale이 vdbfrompolygons의 Voxel 크기에 비해 너무 작아지기 때문에 경계 상자가 작아지는 것을 볼 수 있습니다.

이 부분에서 TWA는 Voxel SIze, Point Radius Scale 및 Voxels의 최소 반경 간의 상관 관계를 알려줍니다.
복셀 크기 * 복셀의 최소 반경 < 포인트 반경 비율
이렇게 하면 경계 상자가 사라지는 버그를 방지할 수 있습니다.
복셀 크기 = 0.2
MR = 복셀에서 0.8
만약에
PR Scale = 0.16, 심지어 0.000001보다 조금 더 큽니다.
이 부분은 매개변수를 복사하여 곱한 후 아주 작은 값을 추가하면 매우 편리하게 조정할 수 있습니다.
복셀 크기를 변경하거나 복셀 크기에서 MR을 변경해도 경계 상자가 사라지지 않습니다.
복셀의 MR값이 작은 값이 되지 않는 한…!
그리고 표면에 미스트 볼륨을 쉽게 생성할 수 있습니다.

이 결과를 통해 원하는 결과를 이전보다 쉽게 달성하면서 산란량을 조정할 수 있습니다.

이제 위의 시스템으로 예제를 만들어 봅시다.
나는 기본 설정을했고 dopnet에서 기본을 설정했습니다. 이 부분은 계속해서 반복됩니다.

또한 볼륨이 올라가면서 구 내부로 들어가지 않도록 충돌을 주었습니다.
나는 SDF 정보를 얻었고 그것은 col의 이름을 따서 명명되었습니다.

dopnet에서 별도의 볼륨 소스를 생성하는 대신 상충되는 정보를 즉시 통합했습니다.
연산과 척도를 외운다고 합니다. 최대 배율은 -1입니다.

표면에서 연기가 피어오르는 것을 볼 수 있습니다.

다음으로 볼륨 모양의 온도 값에 대한 볼륨 vop로 trubnoise를 사용합니다.
그리고 충돌이 없는 경우를 만들어서 비교해 보았습니다.
표면으로 깊숙이 들어갈수록 볼륨이 표면에서만 나오는 것처럼 보이는 효과는 무의미해진다.

빛을 만들고 충돌을 다시 적용했습니다.
표면에 생성된 것을 볼 수 있으며, 표면에 라이드가 아주 잘 생성된 것을 볼 수 있습니다.

가스 분산을 사용하면 기화 효과를 높일 수 있습니다.
이때 VV 값을 흑체로 바꾸면 다음과 같은 결과가 나온다.
다음으로 콜렐을 만들고 움직이는 상자에 효과를 추가해 보겠습니다.
변환을 사용하여 상자를 이동하고 트랙을 연결하여 v 정보를 얻습니다.
이때 재메싱을 통해 더 많은 포인트를 얻고, 더 많은 v 정보를 얻는다.
콜벨 정보 획득 시 SDF나 포그 볼륨 정보를 획득할 필요가 없습니다.

볼륨 소스에서 collvel 필드에 collvel을 넣습니다.
기존과 마찬가지로 폭발로 없애고 곱하는 것이 아니라 눈금의 값을 조정하여 위력을 조절할 수 있습니다.

아래는 Source Scale이 1일 때의 결과입니다.
아래는 Scale이 3일 때의 결과입니다.
오늘 과제가 있습니다.
진행하면서 볼륨이 가슴으로 돌출되지도 않았으면 좋겠습니다.
앞쪽에 영향을 미치지 않도록 콜벨을 고정했습니다.
볼륨 추적으로 쉽게 확인할 수 있습니다.
어제의 프로세스를 검토하고 파티클도 처리했습니다.
TWA의 친절한 설명에 감사드리며, 이 책을 이렇게 쉽게 배울 수 있어서 자랑스럽습니다.
오늘 숙제를 할 때 Density, Temp, vel, col, colvel을 다루는데 별 문제는 없었지만, 아직 Volume의 형태를 다루는 데는 많이 부족했던 것 같습니다.
체적 형태로 작업할 때 많이 조정하지 않았기 때문에 이것은 자연스러운 결과처럼 보였습니다.
이번 주에 정말 많은 일이 있어서 주말에 프로세스를 조정하려고 합니다.
볼륨과 파티클을 결합하여 닥터 스트레인지 게이트웨이를 다시 조정하면 좋을 것입니다. 이전에 만든 관문과 비교해서 성장한 모습을 보면 다시 동기부여가 될까요?
오늘은 좋다 강의와 아이디어를 주신 TWA에 감사드립니다. 내일 공부일지와 함께 만나요 😀
https://www.twahoudini.com/home-old
TWA 후디니
TWA Houdini Classics 홈을 방문하는 모든 랭글러 여러분을 환영합니다.
www.twahoudini.com