回答:
「クラシック」な3D地形エディタの場合、手順は次のとおりです。
メッシュ(たとえば、正方形のグリッド、2つの三角形で構成されるすべての正方形)を生成し、すべての頂点が三角形間で共有されるように(交点ごとに1つの法線のみが存在するように)。
これを3DMeshにして、プログラムでレンダリングする必要があります。
グリッドの部分を上下に移動するツールを作成します(メッシュ上のマウスカーソルの位置を計算し、メッシュの頂点を変更する必要がありますが、上下のみです)。
大きなテクスチャ(1024x1024x4以上など)を作成し、スプラットマップと呼ばれるものでテクスチャリングします。
(たとえば、ピンクではなく、R、G、Bまたはアルファで)ペイントし、それらのい原色(赤、青、緑、アルファ)を置き換えるテクスチャを選択するか、さらにそれらによって表されるようにします。
シェーダー(作成する必要がある)は、これらの素敵なテクスチャ(石、草など)にスプラットマップの強度(いもの)を掛け、全体を混ぜて、たとえば(次のように2色のみ)
大きな画像でごめんなさい、私はこれを職場で一緒に打ちました...
最初のことは、地形のデータ構造と、エディターに必要なものを明確にすることです。メッシュですか?高さの配列?Minecraftスタイルのボクセルシステムのようなものですか?木や建物などのメッシュテレインフィーチャを追加できる必要がありますか?手動、自動、または両方?私は続けることができますが、あなたはアイデアを得る。
基本的なテレインエディターを書くのはそれほど難しくありませんが、作成するゲーム、したがって作成するテレインのタイプによって、詳細は大きく異なります。
これは、主にValmondの回答のフォローアップにすぎませんが、コメントとして追加するほど短いとは思えません。
基本的なエディターの作成に慣れたら、GPUで完全にハイトマップを生成して実験することをお勧めします。これは完全にオプションですが、絶えず変化する地形のためにGPUに作業をオフロードする良い方法です。Valmondは、ピクセルシェーダーでテクスチャスプラッティングが行われることについて既に言及しましたが、テクスチャルックアップを使用してグリッド内の頂点を上下させる頂点シェーダーも使用できます。頂点シェーダーを使用してこれを達成する方法に関するチュートリアルを次に示します。シェーダー以外のものはC#およびXNA固有ですが、重要なものはシェーダーコード内にあります。
この場合、CPU側のコードは、メモリに保存されているグレースケールテクスチャの変更を処理するだけです。メッシュグリッドはフラットのままで、頂点はCPUによって更新されません。テクスチャが変更されるたびに、新しいテクスチャをGPUに渡すことができます。
すべてのシェーダーモデルが頂点シェーダーでのテクスチャサンプリングをサポートしているわけではないことに注意してください(たとえば、HLSLでは、少なくともシェーダーモデル3.0が必要です)。
OgreのETM http://www.ogre3d.org/addonforums/viewforum.php?f=16を見ると、いくつかのアイデアが得られます。Artifex Terraは、実際の動作を確認したい場合に基づいています。