BLOGブログ

2022.11.16UE5UE/ LevelUE/ Landscape

[UE5] Sky Atmosphereで地球を作る

執筆バージョン: Unreal Engine 5.0

月がきれいな季節になりました(本記事執筆時)。

こういう季節になると逆に、月から地球を見てみたくなりますよね!

そんなときに便利なのが、Sky Atmosphereです。

実はこのSky Atmosphere、惑星の大気をそのままシミュレートしているので、このままカメラを遠くに連れて行くだけで簡単に、宇宙から見た惑星の姿も再現できちゃいます。


まず何もないレベルを用意し、Sky Atmosphere、Directional Lightをレベルに配置します。

いつもの空ですね!

 

次に惑星の大地を生成していきます。

とはいえ、今回は月から見た地球を想定しているため、それほど細かいディテールは必要ありません。

巨大な球を作り、それらしいテクスチャを貼ることにしましょう。

Modeling Modeを選択し、球を追加します。

Mode ToolbarよりSphereを選択し、

Radiusを最大値の1,000,000にします(スライドで数字を変更するのではなく、直打ちします)。

なめらかな球に見せたいので、Subdivision TypeをLat Longにし、

Horizontal SlicesとVertical Slicesを100にします。

ついでにPivot LocationもCenteredにしておきます。あとで楽になります。

 

レベルに配置したら、原点に移動させ、今後のためもう少し大きくしておきます。

このままの大きさでも良いですが、できるだけ大きくして地球に寄せた方が、より正しいであろう大気のシミュレーションをしてくれます。

しかし大きすぎると反対に扱いが難しくなるので、そのあたりはバランスです。

今回はScaleで30倍にしておきます。

でかいですね!

次に、大気の大きさを大地に合わせていきます。

Sky Atmosphereを選択し、Ground Radiusを300にします。

ちなみにここの値の単位はkmで、さきほどModeling ModeでいじったRadiusの単位はcmです。

これでちょうど同じ大きさになっているはずです。

その後、Transform ModeをPlanet Center at Component Transformに変更します。

こうすることで、SphereとSky Atmosphereが重なっているはずです。

惑星っぽくなってきました!

 

次に月の設定をしていきます。

月の大地はLandscapeを使っていきます。

LandscapeのMaterialをStarterContentにあるM_Rock_Slateにします。

大きさ等ほかの設定はデフォルトで大丈夫です。

Landscapeを配置したら、Sphereからかなり遠くに離します。

ただし、Sphereがかなり大きい関係で、移動させるとき普通のカメラ速度だとしんどいと思います。

そこでCamera SpeedとCamera Speed Scalarを最大値にします。

適度に遠いところに配置し、ほどよくLandscapeをいじった状態がこちら。

これは誰がどう見ても月ですね!

最後にマテリアルの設定を行なっていきます。

今回はマーケットプレイスにある地球のテクスチャを貼ります。

配置したSphereに向かって、テクスチャをContent Browserからドラッグ&ドロップするだけで勝手にマテリアルが生成されます。

本来は質感を設定するためにマテリアルをいじる必要がありますが、Sky Atmosphereのおかげで、地球のテクスチャだけでもそれなりに見えます。

SphereとDirectional Lightの角度をいい感じにしたものがこちら。

ちなみにこのままプレイしても、おそらく地球のど真ん中にスポーンしてしまうと思います。

World SettingsのEnable World Bounds Checksのチェックを外します。

すると月の上からスタートできるようになります。

 

ここまでくるとせっかくなので重力も軽くしたいと思います。

サードパーソンテンプレートを使っている方は、

BP_ThirdPersonCharacterのCharacter Movement Componentを選択し、Gravity Scaleを0.8ぐらいにします。

これで月から地球を見たくなったときも安心ですね!