1

建物のメッシュを作成しようとしています。そのために、ベース(下)のポイントの座標があります。ベースの最も単純な形状は長方形ですが、より複雑にすることもできます。しかし、ベースのポイントは常に方向付けられ、常に接続されています。

取得したい3D形状の画像は次のとおりです。 ここに画像の説明を入力

頂点バッファーを埋めることができます。ボックスの場合、最初にポイント 0 ~ 4 のベースの座標を使用し、次にそれらを上方向 (Y 軸上) に変換して、ポイント 5 ~ 7 として再び使用します。

三角形を反時計回りに定義する必要があることを読み、長方形のボックスのインデックス バッファーを (手動で) 埋めることができました。しかし、私は形状ごとに手作業でそれを行うという考えが好きではないので、コードでそれを行う (おそらく簡単な) 方法は確かにあります。

正しい方向に向けてください。

4

1 に答える 1

1

最も簡単な方法は、4つのポイント、たとえばこの場合は0、4、5、1を取り、平面を作成して6つのインデックスのリストを返す2つの三角形を作成するメソッドを用意することだと思います。次に、4つのグループのすべてのポイントを反復処理するだけで済みます。

したがって、あなたの場合:最初の入力は:0、4、5、1これは出力インデックスを作成します:0、4、1、1、4、5。2番目の入力は:1、5、6、2これは出力インデックスを作成します:1、5、2、2、5、6など

ポイントはシステムに編成されているため、ポイントのループは簡単に実現できます。下部にあるポイントの数を追跡すると、他のポイントの「上」にあるポイントを簡単に取得できます。

たとえば、4つのグループのすべてのポイントをループする場合:

    for(i = 0; i < numberOfPointsInBottom; i++)
    {
         listOfIndices = getIndicesFromFourPoints(i,(i+numberOfPointsInBottom),i+1,(i+numberOfPointsInBottom+1))
    }

この例では、最初の反復での関数の入力は0、4、1、5になります。

これは、任意の数のエッジで定義された円柱の頂点を接続する必要があるときに行った方法です。私の考えを理解していただければ幸いです。

于 2012-10-15T13:32:16.957 に答える