本稿はUnity #3 Advent Calendar 2019における12月12日の記事です。
#はじめに
家庭用ゲーム機やPCゲームなどで、オープンワールドと呼ばれるフィールドシステムが広く採用され始めています。オープンワールドとは、プレイヤーがゲーム世界を自由に歩き回ることができるレベルです。最近ではゼルダの伝説ブレスオブザワイルド(こちらはオープンエアーと呼称されていますが)やグランドセフトオートⅤ、アサシンクリードシリーズなどが存在します。
これらのようなフィールドを手作業で作成するのは、とても時間がかかります。そこで、Unityというゲームエンジンと、Gaia, CTS2019の2つのアセットを使用して、1時間でオープンワールドを作成してみようと思います。
#導入
Unity:https://unity3d.com/jp/get-unity/download
・本記事ではUnity2019.1.14f.1を使用しています
Gaia:https://assetstore.unity.com/packages/tools/terrain/gaia-terrain-scene-generator-42618
CTS2019:https://assetstore.unity.com/packages/tools/terrain/cts-2019-complete-terrain-shader-140806
#Gaiaを使ったオープンワールド制作
参考動画:Gaia 1.9 Quick Start Guide - Procedural Terrain Generation For Unity 3D
###アセットストアからGaiaをダウンロード
まずはアセットストアに入り、以下の画像のImportボタンから、Gaiaをインポートします。
インポートが終了した後、Window>Procedural WOrlds>Gaia>Show Gaia Managerを選択します。
ここでMissing Gaia Dependenices
というポップアップが出現した際には、Installを選択します。
###地形作成
GaiaManagerの1. Create Terrain&Show Stamper
をクリックします。すると、Unityのシーンに地形が生成されます。
続いて、ヒエラルキーでGaia>Stamperを選択し、StamperコンポーネントのOperations>Stamp Previewに画像を入れます。この画像に基づいて地形が生成されます。ProjectウィンドウのAssets>Gaia>Stamps配下に適当な画像類がありますので、そちらから好みの画像を選択すると良いです。今回はValleys>Chumash Valleyを選択します。
すると、それっぽい地形が作成されました。StamperコンポーネントのPosition, Rotate and Scale
を変更することで、地形に変化を加えることができます。地形の高さ(Y軸)を変えたいときは、GroundBaseのチェックを外し、PositionYを変更します。
最終的にStampControllerコンポーネントのStampボタンを押すことで、Terrainに対して変更が焼き付かれます。
また、地形にさらにスタンプを重ねたいときは、上記の作業を繰り返し、Terrainにスタンプを焼き重ねていきます。なお、UndoとRedoは1つ前後しか戻れないため注意が必要です。
###テクスチャ作成
GaiaManagerの2. Create Spawners
を選択します。すると、ヒエラルキーに~Spawnerというものが5つ作成されます。
まずは、Coverage Texture Spawner>Spawn Controller>Spawnをクリックします。
すると、地形にテクスチャが貼られます。
###オブジェクト作成
テクスチャ作成の際と同様に、Coverage GameObject Spawner
, Coverage Tree Spaner
, Clustered Tree Spawner
, Coverage Tree Spawner
, Coverage Detail Spawner
でSpawnボタンを選択していきます。
この時点で、だいぶそれらしいオープンワールドになってきます。
###その他細部の作成
GaiaMangerのControllerをFirst Person
に変更します。
そして、3. Create Player, Post FX, Screenshotter, Skies, Water & Wind
をクリックします。
すると、キャラクターと海等が生成されます。この際、ヒエラルキーのFPSControllerは地面に接地する場所に移動しましょう。
実行を行うと、以下のようになります。
#CTSを使ったシェーディング
参考動画:Enhance Gaia Terrains with CTS
###アセットストアからCTS2019をインポート
アセットストアに入り、CTS2019をインポートします。特段の注意事項はありません。
作成したTerrainを選択し、Component>CTS>Add CTS To Terrainをクリックします。
Window>Procedural Worlds>CTS>Create And Apply Profileを選択します。(上の動画ではComponent>CTS>Create And Apply Profileとなっていますが、現在この方法はできないようです。)
Assets>Procedural Worlds>CTS>Profile配下に、CTS_Profile_~というファイルが作成されます。こちらを、先ほどのTerrainにあるComplete Terrain ShaderコンポーネントのProfileにドラッグアンドドロップします。
###CTS Profile設定
#####Global Settings
Global Settings>Shader Typeは5種類存在します。
Unity
はUnityデフォルトのシェーダーです。
Basic
はCTSでの一般的なシェーダーです。
Advanced
はHeight Map BlendingやAmbient Occlusionなどが適用されるシェーダーです。
Tessellation
は高度なテセレーションが可能なシェーダーです。Draw Instancedに対応していないため、画像は用意していません。
Light
は最も軽量なシェーダーです。
Shader Typeを決定したら、Bake Terrainsボタンを押し、焼き付けましょう。
Global Mixingは、シェーダーを反映させる距離を決定します。Mix Sharpnessでシェーダーの混合具合を調整できます。
#####Texture Settings
Texture Settingsでは、地面や岩のテクスチャの調整が行えます。サイズや色、反射率などの変更が可能です。
Triplanarでは、崖などY軸方面での変化が強くテクスチャが伸びてしまう現象を、修正できます。
#####Detail Settings
Detail Settingsでは、地形に細かい凹凸を付けることができます。Close Powerで凹凸の強度を調整し、Far Powerで適用距離を設定します。
#####Geological Settings
Geological Settingsでは、地形全体の模様を付けることが可能です。Albedoで模様のテクスチャを選択し、Close Powerで強度を設定します。
#####Snow Settings
Snow Settingsでは、地形に雪を降らせることが可能です。Snow Amountの値で雪の量を調整します。Minimum Heightで雪の降り始める高さ(Y軸の値)を決めます。Texture Settings>各テクスチャのSnow Powerで、それぞれのテクスチャにおける雪の積もり方を設定できます。
#####Optimization Settings
Optimization Settingsではテクスチャサイズや圧縮率の変更が行えます。Runtime Optimization>LOD DistanceでLODの距離を設定できます。
#Post Efefct
最後に全体の見栄えをよくするため、ポストエフェクトをかけます。Gaia ManagerからGX>Procedural Worlds>Ambient Skies SamplesやAmbient Water Samplesを設定します。
これにより、空と水の見た目を変更することができます。
1時間ほどで手軽にオープンワールドを作れてしまうGaiaとCTS2019、いかがでしたでしょうか。今回はデスクトップ用のハイクオリティなワールド生成を行いましたが、モバイル用のローポリでのワールド生成も行うことができます。興味を持った方は、ぜひお試しください。