Notifications
Article
Massive Clouds を使った雲レシピ
Updated 2 months ago
396
0
Massive Clouds というアセットで「実際どうやって雲を作るのか」をご紹介します
※本記事は Unityアセット真夏のアドカレ2019 Summer 8/17 の記事です
English Version is Here

ボリュームレンダリングによる立体的な雲表現

Massive Clouds へのリンク(Unity Asset Store)



自己紹介

こんにちは。 Unityアセット真夏のアドカレ2019 8/17 担当の mewlist (twitter) といいます。普段はゲーム会社でエンジニアをやりつつ,個人開発でも Unity Asset Store にて Massive Clouds というアセットを販売しています。
本記事では,拙作のアセット Massive Clouds を使った雲の作り方についてご紹介させていただきます!
それでは,よろしくおねがいします!



Massive Clouds とは


Massive Clouds は雲を描くための Unity アセットです。 2018年11月に最初のバージョンをリリースし,その後も継続的にアップデートを重ね,2019年8月には Version4 がリリースされました
ボリュームレンダリングによる立体的な雲をシーンに追加することができ,ノイズをもとにプロシージャルなアプローチで生成された雲は,高度,濃度,雲の形状などをパラメータで自由に調整することができます。VR にも対応しており,3D 空間に立体で表現されるので,雲の中に潜ることもできてしまいます
ボリュームレンダリングは GPU にとって負荷の高い部類の処理とはなりますが,最適化のためのパラメータも用意しており,リアルなフライト・ゲームや雲海表現といった,テクスチャのスカイボックスでは実現の出来なかった表現を可能とします。
実際どのようなものか,以下の動画をご覧いただくのがわかりやすいと思います。
本記事で紹介するように雲を自由に作ることもできますが,予め用意された60種類以上の豊富なプリセットから好きな雲を選ぶだけでもゲームのシーンに説得力を与えることができるでしょう。雲海や霧の表現,最新の Version4 からはゴッドレイといった表現までもができるようになっています。
本記事では,リリースされたばかりの Version4 を使い,セットアップ手順,パラメータをピックアップした動画解説,雲の調整 How To を TIPS 形式でお伝えしようと思います!



セットアップ

では,早速 Massive Clouds をプロジェクトに導入していきます。ここでは,Unity の 3D テンプレート(Standard RP) を使っかプロジェクトを想定して解説していきます。
MassiveClouds は Unity2019.1以降の Lightweight RP(Universal RP) ,VR にも対応しています

インポート

Asset Store から Massive Clouds をインポートすると,MassiveClouds フォルダが作成され,雲を描画するために必要なシェーダー類,スクリプト,テクスチャデータなどが作成されます。
Document_jp.pdf というファイルが説明書になっていますので,最初にごらんください
また, SampleScene フォルダには様々なデモシーンがありますので,Massive Clouds を使ってどんなことができるか感覚を掴んでいただくためにエディタ上で再生してみてくださいね!

カメラにコンポーネントを設定

Massive Clouds はカメラのシーン描画結果に,後処理となるイメージエフェクトとして雲を描画します。 ですので,撮影するカメラごとに設定を施していきます。
シーンのカメラに Massive Clouds コンポーネントを Add Component します。すると以下のようなコンポーネント UI が表示されます。
Massive Clouds コンポーネントは,どんな雲をどのように描画するかについての情報を保持します。リアルタイムにパラメータを調整して見た目を確認するといった雲エディタの役割も果たします。
続けて,Massive Clouds Camera Effect コンポーネントを追加します。
このコンポーネントは 3Dテンプレート (Standard RP) でセットアップされたプロジェクトのカメラに対して雲を描画する機能を追加する役割を果たします。
では,いよいよ雲を表示してみましょう。

雲を選ぶ

Massive Clouds コンポーネントの Layers にある + ボタンをクリックして Layer を追加し,次に Layer 1 の右にある◎ ボタンをクリックします。プロファイルと呼ばれる雲の定義データが選択できるので,適当なプロファイルを選んでください。
以上でセットアップは完了です。Game View に雲が表示されますので,先程の手順でプロファイルを切り替えて様々な雲の様子を確認してみましょう!
Massive Clouds はボリュームレンダリングという手法を使って雲を描画しています。カメラが撮影したシーンの画像からシェーダー内で空間を復元して一枚の画として立体物を描いています。この手法は GPU にとってコストの高い処理となる傾向がありますが,昨今ではゲームでもボリュームレンダリングを用いた表現が一般的に見受けられます。
Post Processing Stack v2 のカスタムエフェクト,もしくは,LWRP の Renderer Feature を利用した場合は,シーンビューにも雲が描かれます。



4つのレンダリングエンジンの解説

作業に入る前にレンダリングエンジンの解説をします。Massive Clouds には,4つのレンダリングエンジンがあり,切り替えて設定することが出来ます。それぞれの特徴を理解して,作りたい雲にあったレンダリングエンジンを決められるようにしましょう。

Lucid エンジン

半透明演算を基本としたボリュームレンダリングエンジンです。光が透過したような透明感のある表現を得意とします。サブサーフェススキャッタリングのような表面での散乱光があるようなルックを特徴とします。

Solid エンジン

雲の陰影のコントラストを表現するのが得意です。流体のような見た目を特徴としますが,以下の例に示すように,ライト方向次第では雲らしくない見た目になってしまうことも…

Surface エンジン

濃度の濃い雲をリアルに表現することが得意なエンジンです。透明感は Lucid や Solid よりもなくなりますが,シルエットと雲底の陰影をしっかりと出すことができます。

Authentic エンジン

物理的な光の表現をもっともリアルに再現することができるエンジンです。また,雲の中に潜るようなシチュエーションにおいても,遠景までしっかりとアーティファクトを抑えて描画することができます。これまで紹介した3つのエンジンとは異なり,最低限要求する GPU の性能が高くなりますが,高い描画品質を求めるケースではこのエンジンのほうが GPU 負荷が軽くなることがあります。ハイエンドな表現向けのエンジンです。

エンジンの選択ケーススタディ

パラメータの調整次第で様々な表現ができるので一概には言えないのですが,それぞれの特徴を活かしてどんな場面でどのエンジンを選んだら良いかをまとめてみました。
  • 雲に潜りたい!
  • Authentic
  • 透明感がほしい!
  • Lucid
  • やわらかな表現にしたい!
  • Lucid / Authentic
  • 昼と夜のシームレスな変化をさせたい!
  • Lucid / Surface / Authentic
  • 低スペック環境で動かしたい!
  • Lucid / Solid / Surface
  • スタイライズドな表現に合わせたい
  • Solid / Surface
  • 重々しい表現をしたい
  • Surface / Authentic
リアルな表現からスタイライズドな表現まで,どんなゲームの世界にも対応できるアセットを作りたいという思いから,バージョンを追うごとにレンダリングエンジンを改良,追加してきました。最新の Authentic エンジンはフライト・ゲームといったジャンルにも耐えうるものにしたいという目標で開発をしました。 VR 環境でのさらなる負荷軽減や雲の大域表現など,まだまだできないこともあります。今後も開発をつづけていきますので是非フィードバックをいただけると嬉しいです。



雲作成ワークフロー

セットアップが完了したら,オリジナルの雲を作っていく手順を解説します。

雲編集ツールとして CloudsDemo シーンを使う

最初は雲の編集をするのに,付属する CloudsDemo シーンをそのまま利用するのがおすすめです。 CloudsDemo シーンには簡易的な環境エンジンが実装されているため,時刻を変化させることで,太陽の位置やライトの色と強さといった環境パラメータを自動的に切り替えてくれます。この機能を使うとライティングを変化させたときの見た目の変化を確認できます。
また,雲の編集はMassiveClouds コンポーネント上ですべてのパラメータが編集できるようになっています
このシーンでは再生中にキーボードの WASDQE キーを押すことでカメラを自由に移動することが出来ます。 また,マウスでドラッグすることでカメラの向きを変えることができるので,再生後に,編集しやすい位置にカメラを移動させると良いでしょう。

元となるプリセットを選ぶ

Massive Clouds には数多くのプリセットファイルが用意されています。プロジェクト内の Profile というフォルダに雲の種類ごとに大まかに分類してありますが最初は目的のプリセットになかなかたどり着けないかもしれません。
これらのフォルダ名が何を意味するのかがわかると理解が早いと思います。
  • Authentic : Authentic エンジンを使った最新のプリセット群
  • Cloudy : 曇り空。雨雲のように空を覆う鉛色の雲
  • Cumulonimbus : 積乱雲。高度数キロまで立ち上るモクモク雲
  • Cumulus : 積雲。そらにふわふわ浮かぶまばらな雲
  • Dissolved : Dissolve パラメータを振り切って背景に同化させたプリセット群
  • Efx : エフェクト。霧・オーロラ・ノイズといった雲以外の効果を狙ったプリセット群
  • HighDefinition : 描画負荷の高いパラメータ調整をした雲。ベンチマーク用途としても
  • InnerCloud : カメラ中心に雲を描画することで雲の中にいるような効果をねらったエフェクト
  • LightWeight : 軽めの描画負荷調整されたプリセット群
  • Mobile : モバイル端末向けに極限まで描画不可を下げたプリセット群。ノイジー,薄っぺらい
  • Stratocumulus : 層積雲。広めの範囲を覆う雲
  • Stratus : 層雲。平べったく広範囲を覆う雲。雲海
  • Upper : 上層雲をまとめたプリセット群。巻雲,うす雲,うろこ雲,筋雲
Demoシーンを再生すると,下部のUIでこれらのプリセットを切り替えながら確認することができるので,一通りご覧になってなんとなくイメージを掴むのが良いと思います。
これらプリセットの中からお目当てのものが見つかったら,Ctrl + D で複製して自由な名前を付けて,適当な場所に移動させておきましょう(右の例では MyMassiveCloudsPreset というフォルダを作成しました)。この新しい雲プリセットファイルを編集していくことになります。

パラメータを変更する

カメラにくっつけた MassiveClouds コンポーネントを開きます。 Layer 1 のプリセット選択ボタンを押して先程作成したプリセットをロードします。 即座に Game View へ雲プリセットが反映されていることを確認できるはずです。
次に, Layer 1 と書かれている部分をクリックして選択状態になると,その下にプリセットのパラメータエディタが表示されます。
パラメータが多く大変そうに見えますが,形状・ライティング・アニメーション・影…といったトピックで分類されています。パラメータの変更は瞬時に GameView に反映されるので視覚的に確認しながら雲を作っていくことができるでしょう。

保存する

最後に,パラメータを調整が終わったら, Save to Profile ボタンを押すことで,パラメータを保存することができます。逆に,Save するまで元のプロファイルは変更されないので,気楽にパラメータをいじって変化を確認してみてください。



思い通りの形をつくる

雲の形は Shape Parameters で決まります。以下の画像にざっくりと各パラメータがどのような役割を持っているかを示します。

雲頂と雲底の形を調整したい - SoftnessTop / Bottom

雲頂と雲底の形を調整したいときは,SoftnessTop / Bottom パラメータを変更します。値が大きくなるにつれて雲頂・雲底が削り取られていくような変化をします。 Figure パラメータを大きくすることで雲頂が残りやすくなるように削れ具合が変わっていくので Figure 値を変えて削れ方の違いを見てみると良いでしょう。

雲のディテールを調整したい・ちぎれ雲を作りたい - Octave / Sculpture

雲のディテールを調整したいときは, Octave / Sculpture パラメータを使用します。Octave を上げることで,雲のノイズが細かく描かれるようになります。 Sculpture パラメータを高くすることでより入り組んだ形に変化していきます。ふんわりと柔らかな雲は,Octave や Sculpture を低めに設定し,散乱したごちゃごちゃ感のある雲は高めの値を設定してみるのが良いでしょう。
Detail Distance に距離を設定することで,カメラから数百メートルの至近距離に雲が描かれるシチュエーションのときに,近いところに描かれる雲のディテールを足すことが出来ます。雲の中に潜るようなシーンではよりリアルな表現をすることができます。

天候を変化させたい・曇り空を作りたい - Density

雲が空を覆う量を変えたいときは Density パラメータを変更します。晴れた空から曇りの空へと変化していきます。

シルエットをくっきり出したい・ぼやかしたい - Softness

霧のように柔らかく透明感のある雲や,ソリッドな雲を作りたいときには,Softness パラメータを調整します。パラメータを変化させて,シルエットのしっかりした固形の雲から,どんどん霧状に薄くなっていく様子を確認してみましょう。このパラメータが小さすぎるとアーティファクトが出やすくなるため,大きめの値を設定することをおすすめします。
ここまで Shape Parameters による形の変化を解説してきました。 ぜひ様々な形の雲を作ってみてください。
Massive Clouds はノイズを元にプロシージャルなアプローチで雲を生成します。予め決まった形を持たず,計算を通して形を決めるので細やかな調整ができるようになっています。



ライトを調整する

Massive Clouds は,シーンのディレクショナルライトと連動して,自動的に雲のライティングや影の生成を計算することができます。連携するためには,Sun Mode を Auto に設定し,Sun Source に Directional Light を紐付けます。ライティングこそが雲を雲らしく見せるための重要なパラメータとなります
ライトのパラメータは実際に目で見てみないとなかなか分かりづらいのと,狙った画にするには複数のパラメータを調整することが必要になります。

明るくしたい・暗くしたい

雲の陰影は様々なパラメータが絡み合って生成されます。白飛びが抑えられないときや,暗すぎるときに対処する方法を抑えておきましょう。
Lighting は,雲のライト計算の基本計算処理です。陰影の状態を維持しながら明るくします。
Light Scattering は散乱光の強度を調整します。雲の濃度が薄い部分の光が強くなります。
Shading は雲の陰影の強さを変えます。大きい値ほど陰が濃くなる傾向があります。
明るくするといっても,このように複数のパラメータが存在するので,それぞれのライトパラメータがどんな効果をもたらすか,実際にパラメータを調整しながら感覚を掴んで見ましょう。

白飛びしてしまいパラメータを変更しても治らない場合

白飛びが抑えられないときは,ライト連携の Instensity Scale を調整してください。Directional Light に大きな Intensity 値が設定されたときには雲が白飛びしてしまいます。このようなケースでは,Intensity Scale を小さな値にすることで,雲へのライティングを安定させることができます。

印象的な夕焼けを表現したい

Direct Light はライトを受けている雲の面を強調するのに使用します。Time スライダを動かし,夕暮れ時に時間を設定して効果を確認しながら調整すると,夕焼けのときに雲が赤く染まる演出を作ることができます。

景色になじませたい

Ambient はシーンの環境光の影響をどのくらい受けるのかを調整できます。一般的に,Ambient 値が高いほどシーン全体の色と馴染むようになります。
他にも,Dissolve・Transparent というパラメータがあり,これらを調整することで雲を空に溶け込ませることが出来ますが,雲の背後の色を拾って処理を行うため,雲よりも上の上空から地上を見下ろすようなシチュエーションでは整合性が取れない場合があります。

エフェクト的な表現や,トゥーン・スタイライズドな表現をしたい

Ramp テクスチャを設定することで,雲の陰影に従って色を付けることができます。これを利用して,サンプルプリセットのトゥーンやオーロラは作られています。アイデア次第でなにかおもしろいことができるかもしれません。
Ramp をオンにして,適当な Ramp Texture をセットします。 Ramp Strength スライダを動かすことで Ramp テクスチャの適用量を調整することが出来ます。


おわりに

Massive Clouds のセットアップから,雲の形の調整方法,ライティングの調整方法をご紹介してきましたがいかがでしたでしょうか。今回は基本的な機能の紹介にとどめましたが,Massive Clouds には他にも多くのパラメータが用意されており,雲の描画に特化して様々な環境を再現することができるようになっています。
Massive Clouds が気になった方は,是非アセットストアのページをご覧いただけると幸いです!
Massive Clouds(Unity Asset Store)
Hidenori Doi
Aiming Inc. Lead Software Engineer / Manager - Manager
11
Comments