私は現在、主に楽しみのためにいくつかのプラネットジェネレーションに取り組んでおり、いくつかのキックアスプラネットで終わることを望んでいます. 正規化によって球にマップされたキューブを使用しています。
この写真では、地形はまだ適切にテクスチャリングされていません。これは、Heightmap からの単なるレンダリングです。しかし、これは私の問題ではありません。立方体から球を作成すると、6 つの面が球の形に曲げられたままになります。したがって、地形の周りに球状の高さマップをラップするために使用できる緯度と経度がありません。現在、キューブ マッピングを使用しています。ただし、ご覧のとおり、これによりいくつかの問題が発生しました。 —私の問題が明らかになる場所。問題は、球体がまだ立方体のトポロジーを持っているという事実によるものです。顔ごとに高さマップを生成する必要があります。現在、ハイトマップに Libnoise を使用していますが、ここから大きな問題が発生します。球体の高さマップとしてエクスポートするか (球体があれば便利です)、6 つの面すべてにマップする必要がある平面の高さマップを使用できます。ただし、マッピングの仕組みによります。3 つの面を中央に並べてシームレスにすることはできますが、Lib ノイズが境界を使用して座標のグリッドを作成するため、最後のハイトマップは最初のハイトマップに結合しません。
球はこのように作成されます—
for(int i = 0; i < vertices.size(); i++)
{
glm::vec3 oldVec = vertices[i];
glm::vec3 newVec = glm::normalize(oldVec);
vertices[i] = newVec * glm::vec3(500, 500, 500);
}
この背後にある理由は、ここで見ることができます。
ただし、球体の構造により、後で Quad-Ttee の形で lod を実装しやすくなります。LibNoise を使用してキューブ マップの高さマップを生成できる方法はありますか? または、球が球状の高さマップを使用できるようにするためにできることはありますか?
Sphere Maps を使用してレンダリングする方法を見つけましたが、クアッド ツリーを使用するとうまくいきません。ただし、次のような素晴らしい結果が得られます。
そのため、ノイズをキューブ マップにタイル表示する方法を知る必要があります。Libnoise または頂点シェーダーのいずれかで。