今回は『mib_twosided』ノードにしてみました。この『mib_twosided』、珍しく見れば使い方が分かるノードではないでしょうか。それでもあえて、取り上げてみます。このノードは、"twosided"という名前のとおり、法線方向見て面の表と裏に別のマテリアルだったりテクスチャを割り当てるノードですね。アトリビュートを見ると、パラメータは二つだけ。Front表面のカラーBack裏面のカラー実際に使ってみました。テスト用シーンとして、スタンフォードドラゴンに布をかぶせたものを用意しました。この布に『mib_twosided』[...]
read morePolyCapノードでフタをするpolycapノードで穴を塞ぐ時、Groupのところを*(アスタリスク)にしておくと穴が開いてるところをオートで塞いでくれるっぽい。ポイントだけ残す その1addノードを使うと、ポイントだけ残して他削除することができます。Pointのタブに"Delete Geometry But Keep the Points"ってのがあるのでそれ。ポイントだけ抽出する時は、ほぼaddノードを使っている気がします。ポイントだけ残す その2Deleteノードでもpoint1だけ[...]
read moreHoudini"こんなシェルフがあったのか回"。先日、シェルフに"Bake Constraint"なるシェルフを見つけて吃驚しました。シェルフの"Constraints"タブにありました。いつから、追加されたのだろう。名前の通り、CHOPsで作られたコンストレイントの動きをキーフレームにベイクしてくれる機能のようですね。例えば、こんな感じに球体の周囲を回る箱を作って、箱は常に球体の方を向くようにコンストレイントを設定したとします。Bake Constraintの使い方は簡単。ベイクしたいオブジェクトを選択して、シェルフボタンを押すだけ[...]
read more以前教えていただいたのに、毎回忘れて調べるのでここに書く。Orientをrotateに変換するVOPの場合orient(bind)を Rotate by Quaternionのquaternionに繋ぎ、qrotateのvecに何かしらのVectorデータを繋ぐ。qrotateにつなぐvectorは、上例の場合vec(0,1,0)としているが、例えば@Nにすれば結構、各ポイントでコントロール可。Wrangleの場合@N = qrotate(@orient, {0,1,0});2022/02/18追記これの活用例。サンプルファイ[...]
read moreHoudiniサンプルファイル勉強回。今回使うのは、下記のファイル。https://www.sidefx.com/docs/houdini/examples/nodes/sop/vellumsolver/CollisionDisable.html内容は、コリジョンの有効/無効についてとなっております。サンプルファイルの開き方はこちらの記事を参考。絵としては地味ですが、上図では、コリジョン用の球体が最初布にめり込んだ状態でシミュレーションが開始されている。通常であれば、めり込み部分はコリジョンオブジェクトに引っかかったような挙動になるが、ここではそれが回避されている。[...]
read moreHoudini勉強回。前回、MatchSize(SOP)について取り上げましたが、そこで紹介しなかった機能があります。それが、Restore/Stash Transformのパラメータです。これらを使うことで、MatchSize(ROP)による原点への移動値をアトリビュートとして保持したり、逆にアトリビュートをもとに移動することができます。以下のようなネットワークで、ジオメトリ(任意座標)を原点に移動、Twistをかけて、元の位置に戻す、というものです。(1):MatchSize(SOP)で原点に移動。パラメータ"Stash Transform"を有効に[...]
read moreHouly Daily Challenge Week2の感想戦。Day5 WAVE前日に発症した「何も思いつかない病」が尾を引いている感がありました。もっと抽象的なイメージにしたかったのですが、やってみると上手くまとまらず、こういった構図になりました。この日になるともう、若干いじけてDaily Winnerとか諦めてた気がします。Day6 SWINGニュートンのゆりかご。Daily Winnerで2位が取れたヤツです。ニュートンのゆりかご自体は、結構簡単に作れたのですが、イマイチ華がなかったので、球体の中にGrainを入れたのです。D[...]
read moreHoudini Python、ダイアログ系のサンプル。シェルフにでも張り付けてポチると出てくる・・・たぶんね。ポップアップメッセージhou.ui.displayMessage("hoge")テキストフィールド付きダイアログimport houDialog = hou.ui.readInput(message ="Text Field Dialog\n",title = "TextField Dialog",severity=hou.severityType.Warning,b[...]
read more