Apr 21 2013

Unity 初心者の手習い (3) ~ 自動で地形を生成する 〜

Version : Unity 3.5.7
スクリーンショット_2013_04_21_13_39

前回は地形エディタを使用して自分で地形を一から作りました。広大な地面のすべての地形を描くのは骨が折れます。全自動あるいはある程度自動で作られたものを編集することができたら随分楽になりそうじゃないですか?
今回は Terrain Toolkit を使って、自動的に地形を生成してみます。生成ボタンを押すたびに毎回違う地形が作られます。見ているだけでも楽しいです。
Toolkit は以前は Asset Store にあったようなのですが、なぜか現在はなくなってしまったようなので別の場所からダウンロードしてきました。いつなくなるか分からないのでお早めに。


Pocket

前回のシーンとプロジェクトをそのまま流用して、そこに新たに Terrain Toolkit を導入します。

 

Terrain Toolkit は現在 Asset Store から削除されてしまったようで検索しても見つかりません。フォーラム等を覗くと、探している方がそれなりにいるようでダウンロード方法の情報交換がされていました。そこから得た情報なので今後は変わるかもしれませんが、今日現在下記のページから Terrain Toolkit をダウンロード出来ます。

スクリーンショット_2013_04_20_19_04

 

ダウンロードした zip はダブルクリックして適当な場所に解凍すると TerrainToolkit_1_0_2.unitypackage が展開されるはずです。Unity を起動してシーンを開いた状態で、そのファイルをダブルクリックすると次のインポートダイアログが表示されます。すべてのアイテムにチェックが入っていることを確認して、Import を押しましょう。

スクリーンショット_2013_04_20_19_06

 

Project ペインに 「Terrain Toolkit」がフォルダ階層ごと追加されます。これで準備は完了です。

スクリーンショット_2013_04_20_19_07

 

まずはすでに作成済みの Terrain オブジェクトを Hierarchy から選択しておきます。すると Terrain オブジェクトのプロパティが Inspector ペインに表示されるので、Project ペインの中の TerrainToolkit フォルダ内にある TerrainToolkit(ややこしいですがこちらはフォルダではなくて C# アイコンがついているスクリプトファイル)を Inspector にドラッグ&ドロップします。

TerrainToolkit をクリックしてしまうと Inspector の表示が変わってしまうので注意。押しっぱなしにしてドラッグします。

スクリーンショット_2013_04_20_19_08-2

 

Inspecter に表示された Terrain Toolkit (Script) を使用して地形を生成していきます。下図のように [Create] モードにします。[Voronol], [Fractal], [Perlin] が基本的なアルゴリズムとして選択できるようです。アルゴリズムによってパラメータが変化します。自分でそれぞれのパラメータを設定して生成しても良いですが、[Preset] に最初からいくつかの設定が入っているのでまずはそれを使ってみるのもよいでしょう。

[Generate なんたらかんたら] (なんたらかんたらはアルゴリズムによって変わります) ボタンを押すと地形が生成されます。

Create

 

いくつかの生成例をご紹介します。

Voronoi_RollingHills

Fractal_RoughMountains

Perlin_RockyMountains

 

[Erode] ボタンを押すと [Thermal(熱)], [Hydraulic(雨)], [Tidal(潮)], [Wind(風)] による侵食をシミュレートすることができます。

Erode

 

こちらもいくつか例をご紹介。

まずは Voronoi アルゴリズムのプリセット [Scattered Peaks] を使って地形をつくりました。

Voronoi_ScatteredPeaks

 

Thermal は温度変化による侵食かと思います。その中の [Fast Harsh Erosion] をかけました。ちょっと滑らかになった感じ?

Thermal_FastHarshErosion

 

さらに雨による侵食を重ねてみました。自然な感じの凹凸ができます。小さい画像だと分かりにくいので拡大してみてください。

Hydraulic_RainsweptEarth

 

最後に南風をあててみました。 最初の地形に比べてだいぶ自然な感じになったようなならないような。Voronoi よりも Fractal や Perlin で作った地形の方がより自然かもしれません。Voronoi はもともとかなりデフォルメされた地形のようですので。

Wind_Southerly

最後は [Texture] メニューです。地形をテクスチャで塗りつぶすことが可能ですが、傾斜や高度によって自動的に貼り付けるテクスチャを変えてくれます。しかもグラデーションをかけてスムースに変化するようにしてくれているようです。

下図のように使うテクスチャをあらかじめ選んでおきます。

このとき、Cliff は Cliff Start と Cliff End で指定する「崖の角度」に当てはまる傾斜の斜面に貼り付けられます。ようは絶壁用のテクスチャですね。

Texture 1 〜 n は高度に合わせたテクスチャで、低いところは草原、高くなるにつれて岩場になっていくような表現が簡単にできます。テクスチャを増やしていくと変化点を設定するポイント(下図の赤から緑に変わるバーの上にある数字のボックス)が増えていきます。赤いほうが低い高度、緑に行くほど高い高度です。なんとなく逆のほうがしっくり来ますが、なぜかそうなっているようです。この分岐点はデフォルトで勝手にいい感じに配分してくれるのであまりいじらなくてよいかもしれません。

Texture

 

実際に生成した例を見ると分かりやすいです。

TextureExample

テクスチャを設定した後に、地形生成を行うとテクスチャの計算が再度行われないため一つ前の地形に合わせたテクスチャが残ってしまいます。地形精製後は必ずテクスチャの再生成も忘れずに!

 

最後にいつものように再生モードで再生してみました。地形は Fractal の Rough Mountains に侵食を施してみました。リアルな地形の上を飛ぶ F16 をマウスでグルグル動かして見ることができるようになりました。

スクリーンショット_2013_04_21_10_56

 

次回は、、、まだ決めていません。

3D モデル素材を配布しているサイトのデータをインポートしてみるとか、飛行機を動かすとか、、、そのあたりに挑戦しようと思います。自分もまだ Unity を初めて触っているのでできそうなところからやっていこうかと思います。

 

Pocket

コメントを残す