8

背面カリングでは、面法線を使用して、面がカメラから離れているかどうかを確認したり、三角形が時計回りまたは反時計回りに描かれている場合に何らかのテクニックを実行したりできます。

このテクニックと時計回りについて混乱しています。この方法では、グラフィックス カードに送信される頂点データの順序によって、カメラに向いているか離れているかが決まるようです。カメラは任意の方向を見ることができるため、これがどのように理にかなっているのかわかりません。まるでカメラの位置に基づいて頂点データを変更する必要があり、それは明らかに CPU では行われません。

どうすればこれを理解できますか?

4

3 に答える 3

13

これは反対側から見た 1 つの三角形です。

時計回りと反時計回り

3D 空間の 3 点が三角形を定義しています。さらに、これらのポイントが順序付けられている場合 (ここのように)、三角形の 2 つの辺 (面) も決定します: 時計回りと反時計回り (面の内側に配置された時計がその頂点を指す順序によって決定されます)

上記の例では、三角形は反時計回りにテクスチャリングされています

この三角形がサイコロの要素であると想像してください。

ccw テクスチャード ボックス

サイコロを振る (またはその周りにカメラを回転させる) と、CCW からの三角形が CW になり、これ以上テクスチャを付けたくありません。

このサイコロは、実際には 12 個の三角形から構築されます。それらを適切に並べると、一度にカメラに面している 6 個だけをテクスチャリングすることになります。

于 2013-02-23T14:55:14.630 に答える
5

これをクワッドの例で示します。

  (0,0)-------(1,0)
    |           |
    |     X     |
    |           |
  (0,1)-------(1,1)

から始めているとしましょう(0,0)。ここで、頂点を「時計回り」の順序で巻き上げる(渡す)と、次の頂点は、、に(1,0)なり(1,1)ます(0,1)(1,0)多かれ少なかれ2時に置かれ、(1,1)4になります。

したがって、GPUメモリ内のデータは次のようになります0,0, 1,0, 1,1, 0,1

巻き上げ方向を設定と関連付けると、「前面」と「背面」を簡単に区別できます。より良いと想像すると、透明なものに描画してから、反対側から見ることができます。巻き上げ方向は次のようになります。逆になりました。

したがって、巻き上げ方向の指定は、GPUにどちらの側が前面にあり、どちらが背面にあるかを指示するだけです。これは、それ自体では実行できないためです。三角形の両側は等しく良好であり、指定されたポリゴンの法線ベクトルは次のようになります。またはのいずれN-N。ただし、GPUは、それらのどれが適切な巻き上げ順序に合わせられているかを確認できます。

(古い)Red Bookの第2章には、OpenGL固有のものに関するいくつかの素晴らしい説明がありますが、それは今日でもかなり関連性があります。

于 2013-02-23T14:47:14.950 に答える
1

それがまさにポイントです。頂点の順序は、最初に顔を作成/描画するときのカメラの向きとは関係ありません! カメラは単なる変換であり、openGL によって認識されるものではないことに注意してください。
そのため、レンダリング時に、カメラを通して「監視」した後、openGL は (すべての変換が適用された後) 新しい向きに従って、面の頂点の新しい順序を単純にチェックします (カリングが有効になっている場合)。顔を表示するかどうか。

于 2014-03-15T08:05:52.317 に答える