4

私は現在、主に楽しみのためにいくつかのプラネットジェネレーションに取り組んでおり、いくつかのキックアスプラネットで終わることを望んでいます. 正規化によって球にマップされたキューブを使用しています。惑星の地形と空

この写真では、地形はまだ適切にテクスチャリングされていません。これは、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 または頂点シェーダーのいずれかで。

4

1 に答える 1

1

私は最終的にそれが意図したとおりに機能するようになりました。これを行うには、通常、キューブ マップまたは球体マップを使用せずにキューブをアンラップします。キューブ マップの形式で 3D パーリン ノイズを使用して高さを適用しますが、UV 座標を使用していないため、キューブ マップとしてアンラップしていなくても問題ありません。次に、頂点の高さに応じてテクスチャを適用すると、素晴らしい結果が得られるようです。たぶん、後で誰が知っているかで問題が発生するでしょう。これが私が今得たものの写真です:

ここに画像の説明を入力

PS: それは月ではなく、太陽です。テスト目的でより近くにあり、現時点では太陽のテクスチャを持っていないので、古いグレースケールの高さマップ テクスチャを使用して見やすくしました。惑星は今、素晴らしく見え始めています。

于 2013-01-27T13:25:43.777 に答える