HOME

ロックカットSOPとエッジダメージSOPを作成する

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

環境

Houdini Indie 20.5.487

ロックカットSOPの作成

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

ベースの分割方法は講義を参考に作成

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

CurvatureでScatterのpointを調整

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

foreachで分割回数を調整できるようにする

全体のグラフ構成

全体のグラフ構成

エッジダメージSOP

概ねの方針
LabsEdgeDamageを利用して、AwasomeEdgeDamage のような大きめのディテールを加えられるようなものを目指した。

LabsEdgeDamageのBooleanモードはメッシュの破綻を起こしがちなので作業時の単位サイズを大きめにしてremeshも追加。

単位サイズを5で処理を実行

段階的なダメージ機能を追加
エッジダメージのラフネスをゼロ、ハイトで大きさを調整可能にする 利用した際に削ってる感を感じられそうなのでこちらも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

プロシージャル魚類