【Houdini 18.5】初心者向けchエクスプレッションの所作

Rebuild Factoryzの礒です。
今回は、ジオメトリー間でサイズを合わせたり、面の位置を合わせたりするときに使うch関数について、備忘録代わりに書いておこうと思います。


やりたいこと

Box1(赤色)の上にぴったりBox2(青色)を乗せる。

全体図

全体図は割とシンプルに収めました。
右側のネットワークは緑色のtransformノードしか使わないです。

青色Boxの位置調整

Boxの底面をグリッドに合わせたいので、

ch("sizey")/2

とCenterのY軸に入力します。

Transformで面を合わせたい

青色BoxをTransformノードで位置合わせしたいと思います。
さてパラメーターにはどう入力すればいいんでしょうか。

海外のモデリング例などを見るとよく見かけることもありますし、自分でジオメトリーの編集結果をNullノードを用いてOutputを明確化することが多々あります。
そこでジオメトリーの編集結果であるNullをch関数で引っ張ってきて書いてみましょう。

ch("../OUT_box1/sizey")

書いてはみましたが、これではだめです。

ではどうすればいいのか

ch("../box1/sizey")

そこで赤色のBox1のYサイズを引っ張ってきてみましょう。

今回は青色BoxがY軸方向に動きました!
正解かと思いきや…

間が空いている…。

これは単純に赤色BoxのYサイズ分動かしたからこうなっているだけです。
さらに前提条件として、青色Boxは最初からグリッドと面合わせをするために、CenterをY軸方向に動かしていました。
それが結果としてBox間に隙間を作る原因となりました。

余談:bbox

あえてNullノードを使って面合わせをするのであれば、

bbox("../OUT_box/", D_YMAX)

とTranslateのYパラメーターに入力すれば、Nullノードのバウンディングボックスのサイズを引っ張ってくることができます。

赤色BoxのCenterを変える

余談はさておき、赤色Boxの底面を青色Boxと同じようにグリッドと合わせてみましょう。

これで期待通りの結果が導かれました。
赤色BoxのYサイズを変更しても青色Boxが追従してくれるようになります。
ここで終わってもいいのですが、少し余談を書いていきます。

Transformを挿入すると…

赤色Boxノードの下にTransformノードを入れてみましょう。
当たり前ですが追従しません。

そこでTransformのサイズを引っ張ってきてみましょうか。

ch("../transform2/sizey")

Transformはサイズを持っていないので結果は0です。

解決策として考えられるのはバウンディングボックスを利用することです。

bbox("../transform2", D_YMAX)

ですが、この手はNullノードを相手にしても同じことです。
モデリングのフローをわかりやすくするためにもNullノード(名前はOUT_をつけるなど)を活用することで、ノードネットワークなどが綺麗に保たれます。

まとめ

ということでバウンディングボックスを使って位置合わせをするならNullノードで事足りますね。

そしてch関数でジオメトリーのサイズを参照する場合は、必ずジオメトリーを相手にすること。
Nullノードなどからは引っ張ってくることはできません。

chとbboxはモデリング中、割と混同する関数だと思います。
僕も結構間違えることがあります。

間違えずにバシッと一発で決めることができるようになったら初心者から脱却できるかもしれませんね。

終わり

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

投稿者: Rebuild Factoryz 礒

Rebuild Factoryzの礒です。 現在は3DCGのモデリングやレンダリング、そしてUnityでのVR環境構築の仕事をしております。 アスペルガー症候群とADHD、双極性障害、解離性障害(記憶障害)を持っています。障害を持っているとは思っていなかった少年時代はいじめ問題に悩まされて生きてきました。今は障害を持ちながら、適度に社会と交流しながら生活していければ良いなと思っています。普通の人とは違う価値観をブログ等で発信していけたら幸いです。 趣味は3DCGモデリングと読書、そしてブログです。

コメントを残す

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

WordPress.com ロゴ

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

Google フォト

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

Twitter 画像

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

Facebook の写真

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

%s と連携中

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

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