同種座標がコンピューターグラフィックスで使用されるのはなぜですか?


回答:


12

グラフィックスで使用される数学を簡素化し、統一します。

  • これらを使用すると、行列で翻訳を表すことができます。

  • 透視投影で深さによる区分を表すことができます。

1つ目は、アフィンジオメトリに関連しています。2つ目は射影幾何に関連しています。


どのような例を探していますか?変換行列および透視投影に関連するものは、検索するのに十分簡単でなければなりませんか?
バート

@Bart、アナロジーが必要です。

2
@anonymousで申し訳ありませんが、実際には何もわかりません。探しているものを正確に説明するには、より多くの単語を使用する必要があります。
バート

この答えは、初心者にとって技術的すぎるため、それほど高く評価されていないと思います。たぶん、単純な文言を持つ単純な例では、より良い原理を示すだろう
率直

5

それは名前にあります:同種座標はよく...同種です。均質であるということは、回転、平行移動、スケーリング、およびその他の変換の均一な表現を意味します。

統一された表現により、最適化が可能になります。3Dグラフィックスハードウェアは、4x4マトリックスでマトリックス乗算を実行するように特化できます。0または1による乗算を認識して保存するように特化することもできます。これらは頻繁に使用されるためです。

同種の座標を使用しないと、強力に最適化されたハードウェアを最大限に使用することが難しくなる場合があります。同種の座標にハードウェアの最適化された命令を使用できることを認識しているプログラム(通常はコンパイラーですが、状況はより複雑になる場合があります)は、他の表現の最適化に苦労します。最適化されていない命令が選択されるため、ハードウェアの潜在能力は使用されません。

例の呼び出しがあったように:ソニーのPS4は大規模な行列乗算を実行できます。非常に優れているため、高価なスーパーコンピューターの代わりにクラスターが使用されたため、しばらく売り切れました。ソニーはその後、ハードウェアを軍事目的に使用しないよう要求しました。はい、スーパーコンピューターは軍事装備です。

研究者がグラフィックスを使用しない場合でも、グラフィックカードを使用して行列乗算を計算することは非常に一般的になっています。単に汎用CPUよりも優れているからです。比較のために、最新のマルチコアCPUのパイプラインは16程度(x0.5またはx2はそれほど重要ではありません)ですが、GPUのパイプラインは1024程度です。

実際の並列処理を可能にするのはパイプラインほどコアではありません。コアはスレッドで動作します。スレッドは明示的にプログラムする必要があります。パイプラインは命令レベルで機能します。チップは、それ自体で命令を多少並列化できます。


「SonyのPS4は大規模な行列乗算を実行できます。」PS3のCellプロセッサのことですか?PS4にはかなり普通のx86プロセッサが搭載されています。
Wumpf

これは良い答えですが、OPsの質問には答えないと思いますが、ハードウェアが最適化されているため、同種の座標が使用されることを示唆していますが、同種の座標がより有用であり、ハードウェアは最終的にその周辺で開発されました。vec4sのもう1つの引数は、128ビットに揃えられているため、ワイドメモリバス(GPU)での読み取りがより効率的になる
-PaulHK

4

補体:

同次座標は無限大を表すこともできます:3Dの 0、つまり方向xyzの無限遠点。通常、有限または無限の位置にある光源は同じ方法で表現できます。(x,y,z,0)=x,y,z0x,y,z

遠近法変換については、遠近法の歪みなしで正しく補間することさえ可能です(PCの初期のグラフィックスハードウェアとは異なります)。


2

個人的な趣味として、私は常に(可能な場合)同次座標の使用を控え、単純なデカルト定式化を好みました。

主な理由は、同次座標が変換行列の4つの自明なエントリ(0、0、0、1)を使用し、無駄なストレージと計算(「デフォルトで」使用される汎用行列計算ルーチンのオーバーヘッドも含む)この場合)。

欠点は、方程式を書く際により多くの注意が必要であり、行列理論のサポートを失うことですが、今のところ生き残っています。


1
原則として、それらのエントリが実際に動作する場合でも、それらのエントリを実際には保存しないデータ型を実装できます。

1
@Hurkyl明らかに。汎用のマトリックスツールボックスが手元にあるため、これはめったに行われません。
イヴ・ダウスト

@YvesDaoust plain Cartesian formulation3Dグラフィックスでの使用を説明するリソースの例またはリソースへのリンクを提供できますか?
ダン

@Dan:y '= Ax'(y '、x'は拡張ベクトル、Aは4x4マトリックス)の代わりに、y = Ax + bを使用します(Aは3x3マトリックス、ba 3x1ベクトル)。
イヴ・ダウースト

@YvesDaoustでは、シェーダーに4x4マトリックスの代わりに3x3マトリックスと3x1ベクトルを渡していますか?どこで計算して保存しwますか?
ダン

2

[バツy]
[あなたはv]=[cosθsnθsnθcosθ][バツy]
[あなたはv]=[k100k2][バツy]
[あなたはv]=[バツy]+[st]

RとSを回転行列とスケーリング行列、Tを並進ベクトルとする。コンピュータグラフィックスでは、ポイントへの一連の変換が必要になる場合があります。これがいかに難しいか想像できます。

p=SRSp+T+T

M=TSRTS
p=Mp

p=[バツy1]
R=[cosθsnθ0snθcosθ0001]
S=[k1000k20001]
T=[10t101t2001]

p=[バツyw]
Q=[1000010000100010]

1

アフィン座標での計算には、多くの場合、除算が必要です。これは、加算または乗算に比べて高価です。通常、射影座標を使用する場合、分割する必要はありません。

射影座標(より一般的には射影幾何)を使用すると、特殊なケースも排除される傾向があり、すべてがよりシンプルで均一になります。


「アフィン座標での計算にはしばしば除算が必要です」:理由はわかりません。実際、まったく同じ式を計算します。
イヴダウスト

@Yves:具体的な「コンピューティングマトリックス変換」の質問ではなく、より一般的な「コンピューターグラフィックスでの使用」トピックに応答しています。

@Hurkyl:Iもそうです。シーンをレンダリングするとき、同じ分割量でまったく同じ式を計算します(違いは0の係数を持つダミーの項にあります)。
イヴ・ダウスト

@Yves:ええと。アフィンへの変換をある程度延期できる計算を行うことに慣れています。それが頻繁に出てこないと言ったら、私はあなたの専門知識を譲ります。

-1
  • より単純な式
  • 少数の特別な場合
  • 統一と
  • 二元性

2
答えは非常に不明確です。各ポイントについて詳しく説明する必要があります。
ロテム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.