同種座標がコンピューターグラフィックスで使用されるのはなぜですか?
マトリックス変換で同次座標が使用されていない場合、問題は何になりますか?
同種座標がコンピューターグラフィックスで使用されるのはなぜですか?
マトリックス変換で同次座標が使用されていない場合、問題は何になりますか?
回答:
グラフィックスで使用される数学を簡素化し、統一します。
これらを使用すると、行列で翻訳を表すことができます。
透視投影で深さによる区分を表すことができます。
1つ目は、アフィンジオメトリに関連しています。2つ目は射影幾何に関連しています。
それは名前にあります:同種座標はよく...同種です。均質であるということは、回転、平行移動、スケーリング、およびその他の変換の均一な表現を意味します。
統一された表現により、最適化が可能になります。3Dグラフィックスハードウェアは、4x4マトリックスでマトリックス乗算を実行するように特化できます。0または1による乗算を認識して保存するように特化することもできます。これらは頻繁に使用されるためです。
同種の座標を使用しないと、強力に最適化されたハードウェアを最大限に使用することが難しくなる場合があります。同種の座標にハードウェアの最適化された命令を使用できることを認識しているプログラム(通常はコンパイラーですが、状況はより複雑になる場合があります)は、他の表現の最適化に苦労します。最適化されていない命令が選択されるため、ハードウェアの潜在能力は使用されません。
例の呼び出しがあったように:ソニーのPS4は大規模な行列乗算を実行できます。非常に優れているため、高価なスーパーコンピューターの代わりにクラスターが使用されたため、しばらく売り切れました。ソニーはその後、ハードウェアを軍事目的に使用しないよう要求しました。はい、スーパーコンピューターは軍事装備です。
研究者がグラフィックスを使用しない場合でも、グラフィックカードを使用して行列乗算を計算することは非常に一般的になっています。単に汎用CPUよりも優れているからです。比較のために、最新のマルチコアCPUのパイプラインは16程度(x0.5またはx2はそれほど重要ではありません)ですが、GPUのパイプラインは1024程度です。
実際の並列処理を可能にするのはパイプラインほどコアではありません。コアはスレッドで動作します。スレッドは明示的にプログラムする必要があります。パイプラインは命令レベルで機能します。チップは、それ自体で命令を多少並列化できます。
補体:
同次座標は無限大を表すこともできます:3Dの 0、つまり方向x、y、zの無限遠点。通常、有限または無限の位置にある光源は同じ方法で表現できます。
遠近法変換については、遠近法の歪みなしで正しく補間することさえ可能です(PCの初期のグラフィックスハードウェアとは異なります)。
個人的な趣味として、私は常に(可能な場合)同次座標の使用を控え、単純なデカルト定式化を好みました。
主な理由は、同次座標が変換行列の4つの自明なエントリ(0、0、0、1)を使用し、無駄なストレージと計算(「デフォルトで」使用される汎用行列計算ルーチンのオーバーヘッドも含む)この場合)。
欠点は、方程式を書く際により多くの注意が必要であり、行列理論のサポートを失うことですが、今のところ生き残っています。
plain Cartesian formulation
3Dグラフィックスでの使用を説明するリソースの例またはリソースへのリンクを提供できますか?
w
ますか?