山里ぽん太Kaleidoscope10 February 2019 |
山里ぽん太は涸れ井戸を覗き込みました。 |
![]() ![]() |
Chapter 1 涸れ井戸 |
道端を歩いていると、涸れた井戸がありました。 井戸口の木組みが、三角に組まれた井戸でした。 その涸れ井戸を覗き込むと。。。 というわけで、涸れ井戸、もとい、カレイドスコープです。 和名では、万華鏡です。 |
Chapter 2 万華鏡 |
万華鏡というのは、アレです。 細長い鏡を3枚組み合わせて、三角柱にしたアレです。 鏡は内側を向いています。 端の一方は、透明なガラスになっています。 端のもう一方は、不透明な壁で、壁の真ん中に丸い穴が空いています。 三角柱の中には、色とりどりの星の砂だとかが入っています。 三角柱の端の一方の透明なガラスを明るい方に向けて、もう一方の端の丸い穴から覗きます。 三角柱をぐるぐると回転させると、色とりどりの星の砂だとかが、動きます。 そして、色とりどりの星の砂だとかが、3枚の鏡に反射して、いろんな模様が見える、という仕掛けです。 その模様が、千変万化する花のようだ、ってんで、万華鏡、という名前をつけたのだろうと思います。 昔、縁日のテキ屋とかで買って遊んだものでした。 星の砂は、いろんな色の、樹脂のチューブを細かく切ったものとかが入っていたように思います。 |
Chapter 3 Houdini で万華鏡を作る |
というわけで、Houdini で万華鏡を作ってみましょう。 構造は簡単です。 grid で作った3枚の鏡を三角柱の形に組み合わせて、両端に grid を当てるだけです。 はい、できました。 ![]() |
Chapter 4 星 |
というわけで、星を入れましょう。 星は、やはり「☆」でしょうか。 いえ、ここは六角形にします。 六角形というのは、アレです。 雪です。 雪は、星じゃないのではないでしょうか?。 大丈夫です。 雪だって、空に浮かんでいる間は、星みたいなものです(マジすか?)。 というわけで、できました。 ![]() |
Chapter 5 空に浮かぶ雪 |
万華鏡の中に雪を入れて大丈夫でしょうか?。 鏡にくっついて、雪の塊になって、溶けてしまうんじゃないでしょうか?。 大丈夫です!。 Houdini は魔術師です!。 不可能はありません!!(おおー!)。 というわけで、雪は、万華鏡の中を降ります。 |
Chapter 6 舞う雪 その1 |
ここで、星ではなく、雪にしたことを、若干後悔したのでした。 雪は、ひらひらと舞うのでした!!(がーん!)。 舞う動きはどうしましょう。 大丈夫です!。 Houdini は魔術師です。 不可能はありません!!(もういいってw)。 |
Chapter 7 舞う雪 その2 |
というわけで、雪が舞う動きを作るネットワークを作りました。![]() 一番上の tube と 次の scatter でポイントを作ります。 次の、attributewrangle_Scatter_Y では、作ったポイントを、Y 方向に適当にばらまく操作をしています。 その次の、solver_Fall で、ポイントの Y座標を変化させて、ゆるやかに下降させます。 その次の、attributewrangle_rotate で、雪が舞う動きをつけています。 雪が舞う動き、と言っても、回転するだけです。 X座標とZ座標を動かすと、いろいろ面倒なので、ここでは、X座標とZ座標は固定です(笑)。 要するに無風状態で、雪は静かに降る、というわけです(笑)。 その次の、attributewrangle_pscale では、雪の大きさに少し変化をつけています。 そして、copytopoints で、雪をポイントにコピーしています。 |
Chapter 8 舞う雪 その3 |
というわけで、attributewrangle_rotate の VEX のコードはこんなことになっています。 quaternion で @rot アトリビュートを作るだけです。 ![]() 1行目の「v@axis = noise( @P );」がけっこうミソです(笑)。 「noise()」関数は、Perlin Noise を発生してくれます。 そして、「noise()」関数の戻り値の型は、スカラー型とベクター型の2通りあるのですが、どちらの戻り値を希望するかを、明示して指定する方法はありません。 なので、代入演算子「=」の左辺に、「v@axis」と、ベクター型のアトリビュートを書いて、「ベクター型をくれー!」と、叫んでいます(笑)。 この「v@axis」のところを、「vector axis」と、変数にすると、「noise()」関数は、スカラー型の戻り値を戻してくれます。 このことに気づくのに手間取りました。 「あれー?、うごかないー?、なんでー?」と(笑)。 式そのものは単純で、回転軸が偏っているんじゃないかとか、正規化していないんじゃないか、ツッコミどころ満載です(笑)。 |
Chapter 9 レンダリング |
というわけで、レンダリングしてみました。 時間の節約のために、次のようなことをしています。 ①サイズは、640 / 360 です。 ②雪の透明度はゼロです。 ③mantra のパラメータの reflection limit の値は「10」です。 ④雪(point)の数は、ぜんぶで100です。カメラに映るのはその半分以下です。 |
Chapter 10 メモ |
① PrincipledShader の reflection を 1 にして、roughness を 0 にするのですが、きれいな鏡面反射ではなく、すこし、ボケる反射になります。これは、おそらく、PrincipledShader がそう設計されているからなのだろう、と思います。 ② 雪の結晶の透明度はゼロにしてあります。少し透明にして、分光をつけて、虹色にしようとしたのですが、うまく分光してくれませんでした。 ③ ①②のようなことがあって、Houdini の個性ある絵が生まれるのだろうと思いますが、このあたりは、いつか自由に変更できるようになりたいものです。 |