
コンピュータ グラフィックスでは、バックフェース カリングによってポリゴンが描画されるかどうかが決まります。これは、画面に投影されたときにポリゴン内の点が時計回りまたは反時計回りの順序で表示されるかどうかをテストするグラフィカル パイプラインのステップです。ユーザーが前面のポリゴンが時計回りに回転するように指定したが、画面に投影されたポリゴンが反時計回りに回転している場合は、ポリゴンはカメラから遠ざかるように回転されているため、描画されません。
このプロセスにより、プログラムが描画するポリゴンの数が少なくなり、オブジェクトのレンダリングが高速化され、効率が向上します。たとえば、街の通りのシーンでは、通常、建物のカメラに面していない側のポリゴンを描画する必要はありません。カメラに面している側によって、それらのポリゴンが完全に隠されているからです。
一般に、バックフェース カリングは、レンダリングされたシーンに閉じた不透明なジオメトリのみが含まれている場合、目に見えるアーティファクトを生成しないと想定できます。透明なポリゴンを含むシーンでは、アルファ合成のプロセスによって背面のポリゴンが見えるようになる場合があります。ワイヤフレーム レンダリングでは、バックフェース カリングを使用して、隠線除去の問題を部分的に解決できますが、閉じた凸型ジオメトリの場合のみです。
関連する技術として、ポリゴンがカメラの視野内にあるかどうかを判断する クリッピングがあります。
同様の別の手法として、 Z カリング (オクルージョン カリングとも呼ばれます) があります。これは、視点から見て他の可視ポリゴンによって覆われているポリゴンの描画をスキップしようとします。
非現実的なレンダリングでは、特定の面は、カメラから離れて向いているかどうかではなく、表示されているかどうかによってカリングされることがあります。「反転ハル」または「前面カリング」を使用すると、後処理効果なしでアウトラインまたはトゥーンシェーダをシミュレートできます。 [1]
実装
バックフェース カリングを実装する 1 つの方法は、表面法線とカメラから三角形へのベクトル のドット積が 0 以上であるすべての三角形を破棄することです。
ここで、Pは視点、V 0は三角形の最初の頂点、Nは三角形の法線であり、V 0に隣接する三角形の辺を表す2つのベクトルの外積として定義されます。
外積は反可換なので、外積で法線を定義すると、頂点順序(ワインディング)を使用して三角形の表面に対する法線の方向を指定できます。
頂点の順序は、正面を向いた三角形が時計回りに曲がるように選択されるため、上記のように定義されたN は、オブジェクトから外側に向けられた法線になります。
点がすでにビュー空間内にある場合、P は原点 ( 0 , 0 , 0 )であると想定でき、上記の不等式は簡略化されます。
上記の不等式を行列の行列式として表し、それに射影行列を適用することで、この方法を射影空間で使用することも可能である。 [2]
反射パリティに基づく別の方法も存在します。これは、表面法線を計算できない 2 次元 (CCW チェックとも呼ばれます) に適しています。
2次元(同次座標)の単位三角形を次のように定義する。
次に、同じく2次元の別の三角形について、
単位三角形を変換する行列を定義します。
となることによって:
行列Mに奇数の反射(単位三角形の反対方向を向く)が含まれている 場合は三角形を破棄します。
単位三角形は基準として使用され、変換M は2 つの三角形の頂点順序が異なるかどうかを判断するためのトレースとして使用されます。2 次元で頂点順序を変更できる唯一の方法は、反射です。反射は(頂点順序に関して)逆関数の例であるため、偶数の反射では、三角形は反射がまったく適用されていないかのように同じ側を向きます。奇数の反射では、ちょうど 1 回の反射の後のように、三角形は反対側を向きます。奇数の反射を含む変換には常に負のスケーリング係数があり、同様に、反射がまったくないか、反射がいくつかある場合は、スケーリング係数は正になります。変換のスケーリング係数は、その行列の行列式によって計算されます。
参考文献
- ^ Hoeven、van der、Jorick。「インタラクティブレンダリングシステムにおける非フォトリアリズム」(PDF) 。 2021年11月2日時点のオリジナル(PDF)からアーカイブ。 2023年8月10日閲覧。
- ^ David H. Eberly (2006). 3D ゲームエンジン設計: リアルタイムコンピュータグラフィックスへの実践的アプローチ、 p. 69。Morgan Kaufmann Publishers、米国。ISBN 0122290631。
