巻雲を作る
「巻雲を作る」
1 はじめに
Houdiniで雲を作る場合、一般的には、Volumeを使って作ることが多いだろうと思う。夏の空に、力強く、高く立ち上る入道雲は、迫力ある画面に不可欠であろう。
これに対し、僕は、空を美しく彩る巻雲をどうやって作ればよいだろうか、と、いろいろと工夫を重ねてきた。
今回は、その悪戦苦闘の様子を紹介したい。
2 巻雲の生成
入道雲は、強い上昇気流に乗って、まるで爆発しているかのように、結露した水蒸気が、塊となって上昇するものだ。
これに対し、巻雲は、入道雲よりもずっと少ない水蒸気が、上空の様々な風に乗って、流されながら結露し、結露してからも流されることで生成される。
というのは、僕の想像でしかない。雲の生成過程について勉強したことはなく、研究することもできないので、まったく想像の世界で論じている。
とはいえ、ほかに方法が思いつかないので、現在のところは、この想像を採用している。
3 DOPで巻雲を作る
水蒸気が風に乗って流れるのであるから、DOPを使って、煙の対流をシミュレーションし、それをそのまま使えば良い。
ただ、残念ながら、僕は、DOPに関する知識も、Volumeに関する知識も、皆無といっていい。
なので、残念なことにDOPを使う方法は採用できなくて、ちまちまとSOPを使って作る方法を、いろいろと試みている。
4 SOPで巻雲を作る 理論
ここからは、SOPで巻雲を作る方法の一例を説明してゆく。
(1)水蒸気を作る
水蒸気の粒を作る。ポイントをばら撒く。
単に Scatter でもよいし、密度や、全体の分布の形状をいろいろ工夫することで、変化をつけることができる。
どれくらいの数が良いかは、シミュレーションしながら決めることになる。
実績としては、僕のマシンのリソースの制限もあって、最大で20万個といったところだ。
最近は、できるだけ少ない数で実現しようとして、あれこれと取り組んでいて、ものによっては、1000個くらいでも、それなりに見えるかもしれない、というところまで来ている。
Pic_04_01
(2)水蒸気を上昇させる
上昇気流を作って、水蒸気の粒を上昇させる。
ここは、単に、@P.y + @Time でもよいし、ベクトル・フィールドを作ってもよい。
上昇のさせかたも、全体に一様でもよいし、部分ごとに速さや方向を変えても良い。
Pic_04_02
(3)水蒸気を結露させる
水蒸気が上昇するにつれて、気温は低くなってゆくので、水蒸気は次第に冷えて、あるところまで上昇すると、結露しやすくなる。
結露すると、太陽光を反射するようになって、地上から見ると白く見えるようになる。
(4)水蒸気を流す
ある一定の高度まで上昇すると、そこから上は、横方向の風が吹いている。必ずしもそうではないが、ここでは一例として、そういうことにする。
結露しやすくなった水蒸気に、横風が当たると、水蒸気は結露して、水の粒になる。ということにする。
そして、水の粒は、横方向の風に乗って、横方向に流れることになる。
Pic_04_04
(5)水蒸気の流れを演出する
横方向にまっすぐ流すと、まっすぐな飛行機雲になる。
多少、ノイズをかけてあげると、少しほぐれたような飛行機雲になる。
もっと大きなノイズをかけたりすると、巻雲らしく見えるようになる。
(6)巻雲の糸を作る
4の(1)から(5)までができたら、移動したポイントを Trail する。
そうして、Trail したポイントから、Add で Line を作る。
(7)形状を調整する
Line の太さを、いい感じに調整する。
Line の端の部分を尖らせるなど、形状を調整する。
全体にノイズをかけるなど、形状を最終的に調整する。
(8)レンダリングする
レンダリングしながら、最終的に仕上げる。
5 SOPで巻雲を作る 実践
(1)水の粒の動きを確かめる
4の(1)から(5)までを実際に Houdini でやってみる。
ここでは、水蒸気の粒は1000個でやっている。
Pic_05_01
(2)巻雲の糸を作り形状を調整する
4の(6)から(7)までを実際に Houdini でやってみる。
こんな感じになる。
Pic_05_02
6 作成例
2021年に作ったフィルムでは、こんなことになっている。
Pic_07_03 YouTubeのスクリーンショット
Pic_07_02 YouTubeのスクリーンショット
Pic_07_01 YouTubeのスクリーンショット
7 課題
(1)形状の限界
この方法は、巻雲を、糸状の形状の束で表現する方法だ。
実際の巻雲の、糸の数は、無限といっていいところを、有限の、せいぜい1000本とか10000本とかの糸で表現しようというわけだから、当然、そこに限界がある。
糸を Volume にするとか、いろいろな工夫が必要となるかもしれない。
(2)シミュレーションの限界
水蒸気と水の粒の移動は、たとえば、ベクトル・フィールドを使って行うわけだが、そこに、ノイズを使ったり、乱数を使ったりする。そうすると、最終的にどんな形状に仕上がるかは、やってみないとわからないことになる。
つまり、いい感じに仕上げるまでに、いろんなパラメータや、ネットワークや、計算式を調整しながら、なんどもなんどもシミュレーションを繰り返すことになる。
当然のことながら、ここに限界がある。
(3)リソースの限界
当然、メモリや、プロセッサという、現実的な要因によって、限界がある。
(4)レンダリングの限界
高品質に仕上げようとすると、糸を細くしたり、レイの数を増やしたり、ということになる。
そうすると、当然、レンダリングの時間が長くなることになる。
(5)気合いの限界
高品質に仕上げるために、最も肝心なものは、気合いだ。
精神エネルギーとか、モチベーションと言い換えることもできる。
何がなんでも良いものを作る、という強い気持ちがなければ、良いものは作れない。
8 今後の展開
現状の手法は、まだまだ発展途上だ。ネットワークはまだ定型化できておらず、新しく作る度に、新しいネットワークを作っている。
マシンのパワーが限られるので、より効率的な手法も求められる。
これからも、機会があるごとに、研究開発を進めてゆきたい。
9 おわりに
空を見上げると、純白に輝く柔らかい巻雲が、青空に浮かんでいる。いつか、そんな巻雲を、僕のフィルムの中に浮かべたい。
そんな気持ちでいろいろ取り組んでいます。
ここまで読んでくださった皆様には、感謝を申し上げます。
ありがとうございました。
この記事は「Houdini Advent Calendar 2023」に参加しています。
この記事が気に入ったらサポートをしてみませんか?