Unityでオープンワールドゲームなどの3Dゲームを作るときは必ずと言っていいほどTerrainを使うことになると思います。しかし実際にTerrainを作ってみると
- なかなかリアルな地形を作れない
- 頑張って作ったけど、なんかTerrainの見た目がダサくなってしまった
といった壁にぶち当たる方が多いのではないでしょうか?Terrainを使えば簡単に地形を作れる…と思いきや上手く作るのは意外と難しいですよね。
そこでこの記事では、今までにオープンワールドゲームを5作品作ってきた私が「見栄えの良いTerrainの作り方」を丁寧に説明していきますね。今回作る地形の例は次の画像の通り。
この記事を最後まで読んでいただければ上のようなTerrainを作れるようになると思います。張り切って作業していきましょう。
※注意:
この記事で使用しているUnityのバージョンは2021.2です。これよりも古いバージョンでは作業のやり方が異なる場合があります。
Terrainを使った絶景の作り方
では早速ですが、Terrainを使って冒頭の画像のような絶景を作る手順を一つずつ丁寧にご紹介していきます。主な手順は次の9ステップです。
- 必要なアセットをインポートする
- Terrainを作成・設定する
- 地形をスタンプする
- 地形を整える
- テクスチャをペイントする
- スカイボックスを変更する
- 木や草を生やす
- ライティングをベイクする
- ボリュームで画面を調整する
それぞれ詳しく見ていきましょう。
Step1:必要なアセットをインポートする
まずは絶景づくりに必要なアセットをインポートします。サンプルでは以下のものを使用させていただくことにしました。
1番目はUnity公式のアセットで、Terrain用のブラシやテクスチャなどがいろいろ入っています。非常に便利なのでTerrainを使うときはとりあえずインポートしておけば間違いありません。
Step2:Terrainを作成・設定する
そうしたらシーンにTerrainを新規作成して設定を行います。ヒエラルキーで右クリック→「3Dオブジェクト」→「Terrain(地形)」を選択して新しいTerrainを作り…
設定タブから上の図のように
- メッシュ解像度:すべて1024m
- ハイトマップ解像度:2049×2049
と設定してください。ざっくり言うとメッシュ解像度はTerrainの大きさ、ハイトマップ解像度は「地形をどれだけ詳細に描写できるか」を決定します。ハイトマップ解像度はこのままではかなり高いので、最適化のために地形を編集した後でもっと小さい値にします。
Step3:地形をスタンプする
お次は大まかな地形を作っていきます。Terrainのスタンプツールを使って地形を型押しして、適当な起伏を作りましょう。Terrain標準だとしょぼいブラシしかないのですが、先ほどの「Terrain Sample Asset Pack」をインポートしてもらったことでリアルな地形ブラシが追加されているのでそれを上手く活用してください。
とりあえずこんな感じになればOK。
この作業のポイントは地形スタンプツールを十分に活用することです。リアルな地形ブラシがあればポンポンと型押しするだけでリアルな地形ができるという点はぜひ覚えておいてください。今どきTerrainを手でペイントするなんてのは非効率的だし地形もダサくなってしまうのでお勧めできません。
Step4:地形を整える
さてこの段階でもかなり良い感じの地形になっていますね。しかしよくよく見てみるとスタンプの型押しの関係でできた「トゲトゲした地形」がかなり目立ちます(下図)。
そこで「Smooth Height」ツールを使い、丸いぼかしブラシでトゲトゲ部分をならすような感じに調整すると自然な感じになります。
これで地形ができました。ここで先ほどの「ハイトマップ解像度」を「513×513」に変更して必要以上に細かい部分を飛ばし、描画処理を高速化できるようにしておきましょう。
Step5:テクスチャをペイントする
地形ができたら次はテクスチャをペイントします。「Paint Texture」ツールに切り替えて適当なTerrainレイヤーを登録し、ブラシでテクスチャを描いていきます。このときブラシの不透明度は非常に低く設定して、テクスチャを塗るというよりは「置くように」すると作業しやすいです。
ちなみに、テクスチャをペイントすると「テクスチャの繰り返し」が目立ってしまうことがよくあります。そのような場合はTerrainレイヤーの設定を開いてタイリングのサイズを大きめの値にしてみてください。
Step6:スカイボックスを変更する
ここまでの作業でTerrain本体は完成なのですが、空がデフォルトのままではダサいので最初にインポートしたスカイボックスに変更しましょう。ついでにフォグもかけてあげるとかなり雰囲気が出てきます。
Step7:木や草を生やす
次にこのままでは殺風景もいいところなので木や草を生やします。お手本は次の通り。
まずTerrainエディタで「樹木をペイント」モードに切り替え、最初にインポートしてもらった木のアセットを登録してまばらに木を配置しましょう。このとき「樹木の密度」は最低にしておくのがおすすめです。デフォルトだと物凄い密度で木が生えてしまうので。
木が納得いく配置になったら、次は草を生やしていきます。Terrainエディタを「ディティールをペイント」モードに変更して適当な草を登録し、地形の低い部分に草を生やしてください。草はみっちり生えていたほうが見栄えが良いので、不透明度や密度を高めに設定してムラなくペイントしましょう。
Step8:ライティングをベイクする
これで地形や草木の編集が一通り完了したので、仕上げとしてシーンのライティングをベイクします。ディレクショナルライトの設定を
- モード:混合
- 強さ:1.8
に変更したら、ライティングウィンドウ(見当たらない場合はメニューバーのウィンドウ→レンダリング→ライティング)を開いて「ライティングの生成」ボタンをクリックしましょう。
Step9:ボリュームで画面を調整する
ここまでの作業でかなり見栄えの良い地形ができました。あとは最後にボリューム(※URPとHDRPの場合。ビルトインならポストプロセッシング)で画面を味付けします。
URPの場合はカメラの「ポストプロセス」にチェックを入れ、適当なゲームオブジェクトにVolumeコンポーネントをアタッチしたら次のようなプロファイルを作ってください。
これで画面の見栄えがさらに良くなりました。絶景の完成です!
おわりに
以上、Terrainで美しい地形を作る方法を一通りご説明しました。Terrainを上手く作るのは意外と難しいと思いますが、コツさえつかめれば手軽に絶景を作れるのでぜひ上記の内容を参考にしていただければと思います。
なお今回はTerrainの作り方だけをご紹介したのですが、おそらくこの地形を実際のゲームで動かすためには最適化が必要になると思います。Terrainの最適化に関しては以下の記事に詳しく書いたので、興味のある方はぜひそちらもご覧いただければと思います。
この記事がUnityでのゲーム開発のお役に立てば幸いです。