2

html5キャンバスで単純な3D形状(この特定の場合は立方体)をレンダリングしようとしています。3Dポイントを2D平面に変換するのは簡単だったので、先に進んでポリゴンの色付けを開始しました。それらは間違った順序で重なります。したがって、各ポリゴンの距離を(4つのコーナーの平均に基づいて)計算し、それに基づいて並べ替えます。

それが実際には機能しないことを除いて。では、最初に描画するポリゴンをどのように決定しますか?

PS私はこれを作成する方法を学ぼうとしているので、既存のライブラリなどを使用しても実際には機能しません。

4

1 に答える 1

1

しばらく検索した後、これを確認する方法を見つけました。これは「裏面カリング」によって行われ、私が理解していることから、最初にポリゴンの2D位置を計算し、次に3つのポイントを取り、それらを比較してポリゴンがどちらの方向を向いているかを判断します。

私が使用したチェックは次のとおりです。

ifVisible = function(p1, p2, p3)
{
    return ((p2[0]-p1[0])*(p3[1]-p1[1])>(p3[0]-p1[0])*(p2[1]-p1[1]));
}

ここで、p1、p2、およびp3は、ポイントのx位置とy位置を含む配列です。

これは、ポリゴン内のポイントの順序がある場合にのみ機能します(私の場合、位置はカメラに向かって時計回りになります)

于 2011-07-29T10:15:41.303 に答える