ロックカットSOPとエッジダメージSOPを作成する
virtuasのセッションをかみ砕き、自分なりのロックカット、エッジダメージを作成する

環境
Houdini Indie 20.5.487
ロックカットSOPの作成
概ねの方針
中央の点と表面のスキャッターポイントをスケールで調整して表面のカットに使う仕組みは倣って利用させてもらう。

曲率でカット位置の調整
そのままだと体積の三分の一を削るような、大きいカットになってしまうなパターンも多かったため、measureSOPで曲率を参照し、角近辺に参照点を集めるように変更

2段階のロックカットをloopにまとめる
講演のなかで二段階のカットになっていた処理をforeachのloopに置き換えて段階的なカットができるように変更

全体のグラフ構成

エッジダメージSOP
概ねの方針
LabsEdgeDamageを利用して、AwasomeEdgeDamage のような大きめのディテールを加えられるようなものを目指した。
LabsEdgeDamageのBooleanモードはメッシュの破綻を起こしがちなので作業時の単位サイズを大きめにしてremeshも追加。

段階的なダメージ機能を追加
エッジダメージのラフネスをゼロ、ハイトで大きさを調整可能にする 利用した際に削ってる感を感じられそうなのでこちらもloopで処理回数を制御できるようにした (ロックカットと違ってそこそこ重いので実用シーンでは多くて2回かなとは思うけど…)

破綻メッシュを回避する処理を追加
検証中、まれに破綻するメッシュも見つかったので(エッジダメージループ2回時に1%程度)、破綻回避の処理も追加した。

float after_volume = prim(0, "volume", 0);
float before_volume = prim(1, "volume", 0);
i@is_bloken = 0;
if(@numprim == 0){
@is_bloken = 1;
return;
}
if(after_volume == 0){
@is_bloken = 1;
return;
}
if ((after_volume/before_volume) < 0.9){
@is_bloken = 1;
}
全体のグラフ構成

動作検証
Voronoi分割で作成した概ね100個のサイズが異なるメッシュで検証。 メッシュがほぼ消滅してしまうエラーは回避できていそうだったがノイズの範囲がおかしくなってしまったようなエラーメッシュはでてしまった。
エラー率は1%程度なのとディスプレイスで目立たなくなりそうなものなのでひとまずスルー

細長いメッシュでもテスト

実用に向けて使っていきたい

fish_ball
プロシージャル魚類