Blenderを使ってCGで雲を作ってみる その15

みなさんこんにちは武田です。
GWは天気があまりよろしくない予報で残念ですね。
画像フォルダから何の写真を上げよう…と探していたのですが、折角なので良く晴れた日の富士山の写真をアップします。
これは半年ぐらい前の写真ですね。

前回までで、綿雲や入道雲、スジ雲と作成してきたのですが、典型的な雲で残る有名どころは羊雲やイワシ雲です。
ということで、羊雲の参考になりそうな描き方や、モデルを解説しているページが無いかなと調べたのですが、なかなか見つかりません。
モクモクした入道雲の描き方のTipsなどは、いろいろと見つかるのですが、やはり難しい題材なのだと思います。
漫画の背景の描き方などでは完全に割り切って「難しいから、写真を加工して使いましょう」と、なっているところもありました^ ^);
それが正解なのかもしれません。
対流のセルパターンとかでシミュレーションすることも不可能ではないのかもしれませんが…想像しただけでも相当に難しそうです!

ということで、ここで一旦あきらめて、雲の写真を使ってみようと思います。
といっても、雲の写真を背景に張り付けるだけでは、3DCGである意味が薄いので、雲のモデルを作ることを目指します。
(実は、シミュレーションや、プロシージャルテクスチャの羊雲、軽くトライをしてみたのですが…
これは難しすぎる…!と挫折してしまったのでした)

この雲の写真をもとにしてみます。
まずは、カラーの写真から、白黒の雲の濃さのデータに直してみます。
背景が青で、雲は白いので、RGBの赤成分を取り出せば、白黒データになるでしょうか。
blenderにはコンポジットの機能があるので、コンポジット機能を使って見ます。

良さそうなのですが、太陽が右側にあるので、多分写真の右側の雲は相対的に明るく(濃く)映っていそうです。
明るさにむらのある雲の写真でも大丈夫な手順にしたいので、グラデーションでも使って修正してみます。
幸い、blenderのお絵かき機能では、普通にグラデーション塗りで画像を作る機能もあるので、えいっとグラデーション画像を作成して、足したり引いたりしながら一様な濃さの感じに調整をしていきます。

太陽が映り込んでいたりする場所はさすがに使えないので、上下を切り取りました。
あとは、写真の切れ目があると使いずらいので、さらに一部を切り取って、上下には切れ目が無いようにちょっと加工してみます。

この写真は、カメラを真上を向けて取ったわけではなくて、斜め上を向けて撮った写真です。
なので、手前(写真上)の雲は大きく、遠く(写真下)の雲は小さく映っているはずです。
それを補正することを考えてみます。
こうした羊雲は、ほぼ高さ一様の平面上に分布しています。
ですので、(歪みがないとすれば)撮ったカメラの画角と傾きがわかれば逆算ができそうですが…写真を見ただけではカメラの傾きがわからないので、えいや、こんなものだろうと、見た目で傾きを決めてしまいます。
平面のオブジェクトを作成して、雲が分布している面だとします。
スマホカメラの画角は結構広いので、広めに設定したカメラで見上げて板が画面内に入るようにします。

カメラから見た画面と写真と合わせて、まぁこんなもんだろうかとカメラの傾きを調整しました。

このカメラから見た座標に合わせてUV座標を作成して雲の写真を張り付ければ、元の雲の配置が得られることになります。

ところで雲の平面は、ある程度細かくグリッドを切っています。これは格子と写真の見た目を合わせるためだけではなくて、UV座標を精度よく取るためでもあります。
頂点ごとのUVの座標が正しくても、その間の補間は単純な線形補間なので、UVの分布に粗密があると、荒いメッシュを使うと補間が不正確になってしまいます。
(なので、ある程度細かいグリッドが必要になるわけです)

ということで、カメラ(ビュー)からみた座標に合わせてUVを設定して、雲テクスチャを張り付けてみます。そのための機能が、ちゃんとUVマッピングの基本機能に用意されています。

こうしてカメラから見た座標に合わせて設定した UV に合わせてテクスチャを張り付ければ、
台形状の領域が、傾きを補正した雲の分布になりました。

台形の範囲に収まっていないところ、というのは、そもそも写真に写っていないところなので、これはどうしようもありません…
使えるところだけ切り抜いてしまいます。

これで平面としては羊雲が得られました。

これをペタッと空間上に貼っても、それなりの雲の表現はできるはずですが…
違う方向から見ると、平面状に見えるはずです。平面なので…。

折角なので、すこし厚みもある立体として雲の形状が欲しいところです。
立体形状にするにはこのカクカクのメッシュでは解像度が足りないもいいところなので、
メッシュを分割していきます。
どこまで細かく分割するかは、用途とマシンパワーで許容できる範囲次第でしょうか…

雲の明るさ = 雲の厚さと思ってみます。
ちょっと影がある雲なので、雲の塊の太陽側が明るく(厚く)、反対側が暗く(薄く)なってしまうのですが、影の影響を取り除くのはちょっと難しそうですので、ここはあきらめて我慢ですかね…

ジオメトリノードを使えば、テクスチャの色情報を頂点ウェイトに変換することができます。
頂点ウェイトの値に従って、Solidify(ソリッド化) モディファイアを使えば、厚みをあたえることができます。

メッシュをある程度細かく切って実行してみたところ、
これぐらいの精度での上から見た羊雲の雲海になりました。
(黒いところはそのままだと厚み=0、なので、上面と底面の2枚のポリゴンが張り付いたことになってしまいます。レンダリングに不具合が出るので、0のところにはほんの少しだけ厚みを与えるように調整をします)

この形のボリュームデータだと思って、レンダリングをしてみます。
写真の情報は使わないで、一様なマテリアルを使って、「この形に一様なボリュームが存在している」としてレンダリングをしてみました。
雲だけだと比較が無くて立体の把握がしにくいので、電柱などの小物を置いてみます。

なかなかいい雰囲気になりました。もとが写真ですからね、リアル味があります。
太陽を低くして(光源の色も赤くして)、夕方の雰囲気にしてみます。

夕方です。

ここで、単なる写真ではなくて、立体の形状にしたのが生きてきました。
光源に照らされてる明るくなったり、反対側が影が落ちています。
平面だとこうはいきません!


ということで、0からではなくて写真から作ることになってしまいましたが、
羊雲、行けそうですね。
写真と違って、パースの分を補正して立体状の形を作ってあるので、反対側から見ることだってできます。
という事で、羊雲なかなかいい感じに解決したかも!?というところで、次回に続きます。

コメントを残す

メールアドレスが公開されることはありません。