Terrain Partyで地形をBlenderに反映させる方法
どうもこんにちは、たつぷりです。私は最近Blenderをはじめて小物をモデリングしたり、VFXのようなものを作ったりしてきました。しかしちゃんと背景があって、いろいろが物などが配置されているといった絵っぽい絵を作ってこなかったので、(Worldの設定とかではなく)背景になるような地形を作ってみたいと思いました。実際、Sculptingを使ったりして簡単に作ることもできるのですが、今回は実際の地形の情報からBlenderで地形を生成する方法をまとめることにします。
これによって「ありそうな」地形を比較的簡単に得ることができます。
例えば、練習として詳細は気にせずに作ったので粗削りですが即席で以下のような地形を作ることができました。
特に今回はTerrian Partyというサービスを用いてBlenderに実在の地形の情報を取り込む方法をまとめました。
Terrain Party
実際の地形の情報を取り込むためには、水平からの高さの情報のマップであるHeight Mapが必要である。このような高さの情報は公開されており、今回は以下のTerrain Partyを用いることにする。
筆者の不勉強で、その歴史的な経緯や仕組みなどは理解していないが、terrain partyはCities:Skylinesに実在する地形を取り込むためのサービスの一種であるらしい。
とりあえず上記のURLにアクセスしてみると以下のような操作画面であった(表示位置は筆者が適用に選んだ)。
ダウンロードボタンを押すと、ファイルの名前を入力することになる。今回は「test」とした。するとZIPファイルがダウンロードされ、それを展開すると以下のような一連のファイルが得られた。
Terrian PartyではHeightマップのデータは
ASRER(地球観測衛星に搭載されたセンサ:ASTER GDEMの公開情報)
SRTM (スペースシャトルからの観測データ:SRTM30 地形データ(全世界30秒メッシュ))
をもとに作成されており、これらを合わせて用いた「Merged」というデータも用意されている。
Blenderでの操作
Blenderでは、Textureに沿ってMeshを変形させるDisplacement Modifierが用意されている。そこで基本的にはPlaneを作成しDisplacement Modifierを用いて変形させればよい。しかしメッシュの変形は当然ながらその細かさに依存する。つまりSubdivision Surface Modifierなどを用いてある程度メッシュを細かくしておかないとDisplacement Modifierを適用しても変形が荒くなるので注意する。
Modifierを以下のように適用した。Subdivision Surface Modifierでは「Simple」のオプションにしておくと、平面の四角い形を変更するせずにその内部の分割数を上げることができる。Displacement ModifierではTexture CoordinateをUVにしておく。
Displacement Modifierで指定するテクスチャはTextureプロパティから設定する。Image>Settingsから先ほどダウンロードした画像を選択する。複数あるHeight マップの違いは以下で少し説明する。
Height Mapの比較
参考のために以下にそれぞれのHeight Mapに対してDisplacement Modifierを適用してみた結果を貼る。これらはいずれもDisplacement Modifierをデフォルトのパラメーターで使用した。SRTM30 Plus以外はそんなに大差がないように思える。
test_terrian Height Map (SRTM30 Plus)
test_terrian Height Map (Merged)
test_terrian Height Map (SRTM3 v4.1)
test_terrian Height Map (ASTER 30m)
調整
なお冒頭の完成品の図は、test_terrian Height Map (Merged)で変形させたものを用いている。Displacement Modifierで、Strengthを変更することで変形の大きさを変更することができる。
Mapの繰り返しによる、不連続な変形が気になる場合は適宜UVを編集して対応する。
後は適宜、マテリアルの設定など調整を行って冒頭の図を作成した。