6

同一平面上の接続された三角形のセット、つまり 2D メッシュがあります。ここで、z 軸方向に数単位押し出す必要があります。メッシュは頂点のセットによって定義され、レンダラーは三角形の配列と照合することで認識します。

メッシュの例:

頂点: (0,0,0), (10,0,0), (10,10,0), (0,10,0) <-- (x,y,z) 三角形: (1, 2, 3) & (3, 4, 1) <-- ここの数字は上の頂点の位置を参照します。

ここに 2D の正方形があります。次に、そのリストに頂点と三角形を追加して、押し出し形状を作成する必要があります。三角形は時計回りでなければなりません。

これには簡単なアルゴリズムがありますか?ありがとうございました。

4

1 に答える 1

13

距離 z だけ押し出すと仮定すると、次の手順に従う必要があります。

0) n を頂点の元の数にします (この例では 4)

1) 頂点配列の各頂点に (0,0,z) を追加し、その結果を頂点配列に追加して、合計 2*n 個の頂点を作成します。したがって、この例では、頂点 (0,0,z)、(10,0,z)、(10,10,z)、(0,10,z) を頂点配列に追加して合計します。 2*4=8 頂点。

2) 元のメッシュの境界 (内部ではなく) エッジのリストを作成します。これを行うには、すべての三角形エッジのリストを作成します (三角形ごとに時計回りに 3 つのエッジ)。次に、等しいが反対側のエッジのペアを削除します (これらは内部エッジです)。この例では、6 つのエッジで開始し、エッジ ペア (3,1) と (1,3) を削除すると 4 つのエッジになります。

3) 三角形リストの三角形 (a、b、c) ごとに、対応する三角形 (a+n、b+n、c+n) を作成します。これらは押し出された面になります

4) 最後に、押し出し形状の側面を作成します。ステップ 2 で作成した境界エッジ リストの各エッジ (a,b) に対して、三角形 (a,b,b+n) と (b+n,a+n,a) を追加します。

それでおしまい。私の側にタイプミスがなく、あなたの側にもタイプミスがないと仮定すると、目的のメッシュが得られます。

于 2010-10-03T18:45:31.283 に答える