Unity 初心者の手習い (3) ~ 自動で地形を生成する 〜
前回のシーンとプロジェクトをそのまま流用して、そこに新たに Terrain Toolkit を導入します。
Terrain Toolkit をダウンロードする
Terrain Toolkit は現在 Asset Store から削除されてしまったようで検索しても見つかりません。フォーラム等を覗くと、探している方がそれなりにいるようでダウンロード方法の情報交換がされていました。そこから得た情報なので今後は変わるかもしれませんが、今日現在下記のページから Terrain Toolkit をダウンロード出来ます。
ダウンロードした zip はダブルクリックして適当な場所に解凍すると TerrainToolkit_1_0_2.unitypackage が展開されるはずです。Unity を起動してシーンを開いた状態で、そのファイルをダブルクリックすると次のインポートダイアログが表示されます。すべてのアイテムにチェックが入っていることを確認して、Import を押しましょう。
Project ペインに 「Terrain Toolkit」がフォルダ階層ごと追加されます。これで準備は完了です。
地形を生成する
まずはすでに作成済みの Terrain オブジェクトを Hierarchy から選択しておきます。すると Terrain オブジェクトのプロパティが Inspector ペインに表示されるので、Project ペインの中の TerrainToolkit フォルダ内にある TerrainToolkit(ややこしいですがこちらはフォルダではなくて C# アイコンがついているスクリプトファイル)を Inspector にドラッグ&ドロップします。
地形を生成する
Inspecter に表示された Terrain Toolkit (Script) を使用して地形を生成していきます。下図のように [Create] モードにします。[Voronol], [Fractal], [Perlin] が基本的なアルゴリズムとして選択できるようです。アルゴリズムによってパラメータが変化します。自分でそれぞれのパラメータを設定して生成しても良いですが、[Preset] に最初からいくつかの設定が入っているのでまずはそれを使ってみるのもよいでしょう。
[Generate なんたらかんたら] (なんたらかんたらはアルゴリズムによって変わります) ボタンを押すと地形が生成されます。
いくつかの生成例をご紹介します。
アルゴリズム Voronoi : Preset – RollingHills
アルゴリズム Fractal : Preset – Rough Mountains
アルゴリズム Perlin : Preset – Rocky Mountains
侵食を再現する
[Erode] ボタンを押すと [Thermal(熱)], [Hydraulic(雨)], [Tidal(潮)], [Wind(風)] による侵食をシミュレートすることができます。
こちらもいくつか例をご紹介。
まずは Voronoi アルゴリズムのプリセット [Scattered Peaks] を使って地形をつくりました。
Thermal : Fast Harsh Erosion
Thermal は温度変化による侵食かと思います。その中の [Fast Harsh Erosion] をかけました。ちょっと滑らかになった感じ?
Hydraulic : Rainswept Earth
さらに雨による侵食を重ねてみました。自然な感じの凹凸ができます。小さい画像だと分かりにくいので拡大してみてください。
Wind : Southerly
最後に南風をあててみました。 最初の地形に比べてだいぶ自然な感じになったようなならないような。Voronoi よりも Fractal や Perlin で作った地形の方がより自然かもしれません。Voronoi はもともとかなりデフォルメされた地形のようですので。
テクスチャを地形で変化させる
最後は [Texture] メニューです。地形をテクスチャで塗りつぶすことが可能ですが、傾斜や高度によって自動的に貼り付けるテクスチャを変えてくれます。しかもグラデーションをかけてスムースに変化するようにしてくれているようです。
下図のように使うテクスチャをあらかじめ選んでおきます。
このとき、Cliff は Cliff Start と Cliff End で指定する「崖の角度」に当てはまる傾斜の斜面に貼り付けられます。ようは絶壁用のテクスチャですね。
Texture 1 〜 n は高度に合わせたテクスチャで、低いところは草原、高くなるにつれて岩場になっていくような表現が簡単にできます。テクスチャを増やしていくと変化点を設定するポイント(下図の赤から緑に変わるバーの上にある数字のボックス)が増えていきます。赤いほうが低い高度、緑に行くほど高い高度です。なんとなく逆のほうがしっくり来ますが、なぜかそうなっているようです。この分岐点はデフォルトで勝手にいい感じに配分してくれるのであまりいじらなくてよいかもしれません。
実際に生成した例を見ると分かりやすいです。
最後にいつものように再生モードで再生してみました。地形は Fractal の Rough Mountains に侵食を施してみました。リアルな地形の上を飛ぶ F16 をマウスでグルグル動かして見ることができるようになりました。
次回は、、、まだ決めていません。
3D モデル素材を配布しているサイトのデータをインポートしてみるとか、飛行機を動かすとか、、、そのあたりに挑戦しようと思います。自分もまだ Unity を初めて触っているのでできそうなところからやっていこうかと思います。