UnrealEngineのアセット、「 CartoonSkyShader 」という物があります。空や雲を綺麗に表現することができるアセットです。70%OFFで衝動買いしてしまいました。
使い方を調査
公式の情報からは使い方YouTube動画が出ていますが如何せんわかりにくいので解読しながら実際にテストプロジェクトで動かしながら使い方を調査していきます。
公式動画をよく見る(固定の空の作り方)
- VolumetoricCloudを削除する
- SM_SkySphereを削除する
- アセットフォルダMeshesに存在する 「 SM_CartoonSky 」をレベルにドラッグアンドドロップで配置
- 座標を0にリセット
- Materialsフォルダ内の 「 M_CartooSky 」マスターマテリアルからマテリアルインスタンスを作成する。動画内では「 MI_Tutorial 」
- SM_CartoonSkyのマテリアルを5で作成したマテリアルインスタンスに差し替える。
- マテリアルインスタンスの大量のパラメータを調整することで空をデザインできる。
月の使い方
- レベルのディレクショナルライトを複製
- 「 moon 」に名前を変更
- Atmosphere Sun Light Indexを(0)から(1)に変更する
- moonの角度を変更すると月がビューポート上に現れる
- ディレクショナルライトの「 Light Color 」を白から黒に変更
- マテリアルインスタンスのMoonパラメータが有効になり、パラメータを変更すると月の調整が行える
- (moonを作成してからマテリアルインスタンスのmoonパラメータを変更すると値が反映されて月が表示される。ディレクショナルライトを複製した時に自動的にmoonが表示されずに少し戸惑った。)
実際にプロジェクトで動かしてみて
0から作るのは中々達人レベルのスキルがいる
パラメータが豊富で色々いじれるのは良いですが、あまりにも項目が多いので、全てを理解して調整できるにはかなりの時間と職人レベルのスキルが要求されるのではないでしょうか?
幸いなことにマテリアルインスタンスはプリセットが大きく5種類用意されているので、そこからまずは気に入ったプリセットを使用するのが良いでしょう。
そして細かい部分で気になるところがあれば自分好みに変更していく方法で、まずは理解を深めていけば良いと思います。(エラーはそれほど重要ではないっぽいですが、エラーが出ることがあることに注意しておきましょう。)
プリセットの画像
太陽や月を動かす(公式動画=4:20)
太陽や月を動かすには、「 SM_CartoonSky 」ではなく、「 SM_CartoonSky 」をブループリントに含んでいる「 BP_CartoonSky_DayNightCycle 」をレベルに配置する必要があります。
実験プロジェクトで動かした結果やや月の動き方が不自然でしたが、太陽は問題なく動きました。
ブループリントを配置したらレベル上にある4つの項目をブループリントのパラメータにセットする必要があります。セットする項目は以下の画像のプルダウンになっている4つの項目です。
- Sun Light
- Moon Light
- Skylight
- Height Fog
BP_CartoonSky_DayNightCycleのマテリアルの変更に注意
BP_CartoonSky_DayNightCycleでは空を表現するマテリアルをDayNightCycleのCloudTypeから選択するようになっています。コンポーネント内の「 CartoonSky 」コンポーネントのマテリアルを直接変更できません。マテリアルはブループリント内部の処理で複雑に処理されていて、レベル上に配置した、BP_CartoonSky_DayNightCycleの詳細パネルからどのマテリアルのタイプを使うかをプルダウンで選択するように設計されています。
なんどもコンポーネントの「 CartoonSky 」のマテリアルを変更しようとしても変更できずに一瞬戸惑いました。みなさんも気をつけてください。
月の動きが変
現実世界の月の動きは地平線に対して円を描くようにして動いて、地平線から出てきて、地平線に消えるような動きをすることが多いと思います。
月の動きを自然に改造する方法
現実の世界のように動かすにはブループリントを改造する必要があります。(著作権があるので最小限の説明画像にしています。)
- 月を動かしている Add World Rotation ノードを、Add Local Rotation ノードに変更
- 太陽と月の初期値の相対関係を設定
- 初期値を調整(X=-146 Y=-4.4 Z=222 )
↑太陽に黄色のマネキンを、月に青色のマネキンを親子付して回転が見えるようにしています。
また太陽も現実では地球に対してやや傾いた向きから動くので、東から西に動くように調整する必要があります。
太陽の回転初期値を(X=0° Y=0° Z=0° )にするとちょうど真南から出てきて真上を通って北に沈むようになる。
ここに動画を貼り付ける予定(7/22-7/26)頃公開したい
月の動きを自然にするように改造する動画を作る予定。実際にどうなるかはわからないが・・・。
夕方になると太陽の大きさが変わる機能
夕方になると太陽の大きさを調節できるような機能があったように思うのですが、自分の勘違いなのか?パラメータのどこを探してもそれらしき項目はありませんでした。
おそらく勘違いの可能性が80%くらいあるので、自分の勘違いだと思います。
もしその機能があったらここにまた追記しておきます。
まとめ
良い点
- 雲と空がとても綺麗
- カスタマイズできる項目が豊富
悪い点
- 時刻を管理するシステムがない
- デフォルトの太陽の傾きが不自然
- デフォルトの月の動きが不自然
総評
ぱっとそれっぽい空を作るには最適ですが、細部まで現実に拘った動きや時刻の管理をするには、自前で手を加える必要があり、少し詰めが甘いような印象を受けます。
もちろん調整できる項目が多く、カスタマイズ性が高い部分は優秀なのですが、購入してすぐに現実の太陽や月の動きにならないのは少し不満を感じるところです。
逆に雰囲気だけ出したい人や異世界の時間軸を作りたい人には気にならないかもしれませんが、現実に忠実に動くか?異世界の動きにするか?を選択できるようにしていれば完璧だったと思います。
現実の太陽と月の動きを作りたい人は自分で調整しなければならないことを念頭に、このアセットを購入すると良いと思います。
おまけ
時刻を自前で作る方法もまとめているので、気になった人は下のリンクから見に来てね。
Cartoon Sky Shaderに時刻の取得が無かったので自分で作った話
コメント