テクスチャ付地形ファイルのインポート

参照サイト: Import textured terrains & heightmaps in Cinema 4D, Blender, Houdini, Maya, 3ds Max, Vue, Terragen, World Machine
参照サイトでは、テクスチャ付きの地形ファイル(ハイトマップ)を各3Dアプリケーションでインポートする方法を紹介していますが、ここではTerragenだけに絞って、インポートの方法を記述します。

今回使用したデータは、 Midge "Mantissa" Sinnaeve の"RESOURCES"にある、「Landscape Pack」を使用しました。こちらのサイトでは、8K高解像度のハイトマップファイルが無料で提供されています。
ハイトマップとは、グレースケール画像で構成されており、ハイトマップの各ピクセルの色(白-黒)を使用して、対応する地形頂点の高さを指定する事が出来ます。暗いグレー色は低い地形を意味し、明るいグレーは高い地形を意味します。各ピクセルは1バイトで表されます。従って、頂点の高度値はハイトマップの1バイトで表されます。


事前準備

Terragenを起動すると、デフォルトでは【Terrain】レイアウトが開いており、ノードリストには"Fractal terrain 01"、"Fractal warp shader 01"が用意されています。このチュートリアルでは邪魔になりますので、それぞれをクリックして[DEL]キーでノードを消去します。ノード・ネットワークには関連付けを失った"Simple shape shader 01"が残りますが、そのままでも良いし、気になる場合はノード・ネットワークパネルでクリックして、同じように消去して下さい。


ハイトマップデータの読み込み

画像の操作手順にクリックし、【Terrain】-> [Add Terrain] -> "Heightfield (load file)"を選択します。
ファイルダイアログが開くと、デフォルトではTerragenのネイティブフォーマットの".ter"ファイルのみを表示させています。多くが、ネイティブフォーマットではなく、JPEGやTIFFフォーマットであるため、"All file (".")"を選択します。すると任意のフォルダ内のすべてのファイルが表示されます。ここでは、"Ridges_01_DISP.png"ファイルを選択します。
ハイトマップデータが読み込まれると、基点(0、0、0)を中心にハイトマップを基に地形が配置されます。直後は、ハイトフィールドプレビューに赤丸印したところがカメラの位置になっているため、標高の高い地形の場合、カメラが地中に嵌ってしまう事があります。3Dプレビューに地形の全容が見える位置までカメラを移動して下さい。
大体これ位の眺望になれば、次の工程で起こる事が分かりやすくなります。
注: 読込んだハイトマップによっては、生成された地形が小さな面積で鋭利で高く伸びたように見えるものがあります。これはハイトマップデータの解像度(画像サイズ)に起因するためです。その場合の解決策は後程解説します。
ノードリストから"Heightfield load 01"をクリックし、ノード設定パネルの"XY size (metres)"を確認します。解像度が(8191 × 8191)と表示されています。また、"Height range"はグレー色の光度から、最低高度5.53メートル、最高高度248メートルを示しています。


テクスチャの貼り付け

画像の操作手順にクリックし、【Shaders】-> [Add Layer] -> "Color Shader" -> 『Image map』を選択します。
ファイルダイアログからテクスチャファイルの"Ridges_01_FLOW.png"を選択します。
『Image map shader 01』ノードを追加して画像を読込むと、デフォルトでは画像の位置が基点(0、0、0)の左下を基準に貼り付けします。"Projection type"は"Plan Y (edges = XZ)"で、画像を直下にY軸に沿ってシーンの縦方向に投影します。そして、"Size"は画像サイズを示しますが、これがデフォルトで(500、500 /単位:ピクセル)のため、実際のテクスチャファイルのサイズが(8192、8192)に対して縮小されています。3Dプレビューには地形の中心値から左上に向かって小さくテクスチャが貼られた状態となっています。

そこで、この"Size"を(8192、8192)に変更し、"Position center"にチェックを入れて下さい。
これで地形全体にテクスチャが貼られた状態になります。
折角の8Kデータなのでカメラを操作して地形に近付けてみましょう。3Dプレビューでもディテールの細かな地形を堪能する事が出来ます。このままでも景観は素晴らしいですが、もう少しそびえ立つ連峰を見てみたいと思います。
Terrain】レイアウトに戻り、ノードリストから"Heightfield shader 01"を選択します。ノード設定パネルが開くので、「Displacement」タブに移り、"Height mulyiplier"の値を1から2に変更します。地形の起伏が起こり、山の頂点が高く伸びますが、テクスチャはそれに沿うように適用されるため、再度『Image map shader 01』を変更する必要はありません。
それでは、どのような結果になるかをレンダリングしてみましょう。


ハイトフィールドのリサイズ

読込んだハイトマップによっては、面積の小さい、鋭利な剣山のような地形を生成する事があります。これは低解像度のハイトマップに多くあります。この場合、生成された地形をリサイズする事で解消する事が出来ます。
ノードリスト下にある[Add Operation] -> "Heightfield resize 01"を選択します。
注: この時、まずノードリストから"Heightfield shader 01"を選択してから[Add Operation]をクリックしないと、以下のダイアログが表示されます。

"ノードリストからハイトフィールドまたはハイトフィールドシェーダを選択して下さい。"
これは、どのハイトフィールドに対して操作を追加するのかを指定する必要があります。
8K高解像度のハイトマップを加工し、(2048 × 2048)の2K解像度に落としたデータを読込んだ地形。低解像度のハイトマップになるほど地形の高低差が出やすくなります。
追加した『Heightfield resize 01』のノード設定パネルより、"Re-size in metres"を(8191、8191)と設定します。これにより、4倍のサイズ拡大になります。
最初に読み込んだ8Kの"Ridges_01_DISP.png"ファイルと同等の地形にみえるようになりました。これを同じように"Height mulyiplier"の値を1から2に変更し、カメラ位置を合わせてレンダリングします。
本来2K解像度だったものを8K解像度に拡大しているため、ディティールは若干失われますが、遠景などの地形には問題なく有用です。