#Houdini 18.5 建築:屋根の自動判定

Rebuild Factoryzの礒です。
今回は建築物モデリングのお話です。

以前の記事:https://houdinist.jp/2020/11/10/archi/で紹介したtopとwallとbottomの3つにプリミティブのアトリビュートを設定しました。

今回はそこから発展して、屋根の自動判定をしていきたいと思います。
階数が変わっても一番上にあるプリミティブが屋根だと判定できるようにします。


初期ジオメトリ

このジオメトリは以前の記事の発展版で、プリミティブのアトリビュートでtop,wall,bottomの3つが設定されています。

topが設定されていても、それが一番上かどうかはわかりませんね。
そこを判定するのが今回の記事の目的です。

topだけを抽出

Blastノードでtopアトリビュートを持っているプリミティブだけを残します。

高さのアトリビュート作成

VEXで

f@roof_attribute = @P.y;

と入力し、Y軸方向のポジション値を@roof_attributeに代入します。
つまり高さのアトリビュートを作って、各プリミティブがどれぐらいの高さなのかを認識できるようにします。

最大値をいったん計算

先ほど作成したroof_attributeという名前のアトリビュートをPointからDetailに変更します。
Promotion MethodをMaximumにしておきます。
これで最大値がDetailに入ります。

Pointのアトリビュートに戻す

アトリビュートをDetailからPointに戻します。
これで各Pointに高さの最大値が入ったアトリビュートを割り当てることができます。

最大値と同じプリミティブを探す

if(@P.y != @roof_attribute){
     removepoint(0, @ptnum);
 }

Y軸方向のポジション値がアトリビュートroof_attributeと異なる場合、その点を削除するコードを書きます。

残ったプリミティブのfacingというアトリビュートにroofと代入します。

これでroofというアトリビュートを持ったプリミティブを作成することができました。
今回使っている例ではroof以外のtopをbalconyに入れ替えてます。

階数が変わってもroofが自動生成されるようになっています。

まとめ

今回の記事では、最初アトリビュート@facingにはtop、wall、bottomの3つが設定されていましたが、そのうちtopだけを抽出してアトリビュートを変更しました。

topのプリミティブの高さの最大値を出して、それと同値じゃないポイントを削除し、残ったプリミティブのアトリビュートにroofを代入。

これによって今後roofだけに対して屋根を置くことができる。

まだ実験中なので、完成してはいませんが、屋根を生成する作業をちょこちょこっとやってます。

終わり

では今回はこれで終わります。

投稿者: 矶信一

大家好!我在学习汉语。I like Houdini.

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

<span>%d</span>人のブロガーが「いいね」をつけました。