私はMayaを使用してアニメーションや映画を中心としたプロジェクトに取り組んできましたが、ビデオゲーム開発に関する研究にも注力しています。とにかく、私は教授の一人と話していましたが、すべてのゲームエンジン(私が知っている)がなぜ三角形に変換されるのかわかりませんでした。
モデルを4面ポリゴンとして残すのに比べて、ゲームエンジンが三角形に変換する理由を知っている人はいますか?また、これを行うことの長所と短所(ある場合)は何ですか?
私はMayaを使用してアニメーションや映画を中心としたプロジェクトに取り組んできましたが、ビデオゲーム開発に関する研究にも注力しています。とにかく、私は教授の一人と話していましたが、すべてのゲームエンジン(私が知っている)がなぜ三角形に変換されるのかわかりませんでした。
モデルを4面ポリゴンとして残すのに比べて、ゲームエンジンが三角形に変換する理由を知っている人はいますか?また、これを行うことの長所と短所(ある場合)は何ですか?
回答:
一番下の行は、三角形のラスタライズです。これは、コンピューターがオブジェクトを画面にレンダリングする方法です。他の人は私よりも頻繁にそれを言うが:
コンピューター画面に表示される3Dオブジェクトはすべて、実際にはプリミティブと呼ばれる小さな幾何学的オブジェクトで構成されています。四角形、三角形、n角形などはプリミティブの例です。主に1つの理由により、三角形に集中します。すべてのオブジェクトを三角形に分割できますが、三角形を三角形以外に分割することはできません。このため、三角形の描画は、高次のポリゴンの描画よりもはるかに簡単です。対処するものが少なくなります。これが、これらの三角形がコンピューターグラフィックスで非常に一般的に使用される理由です。
強調鉱山。ソース:http : //www.devmaster.net/articles/software-rendering/part3.php
三角形には、描画をより簡単に、したがってより高速にする多くのプロパティがあります。
4つ以上のポイントが同じ平面上にない場合がありますが、常に3つのポイントがあります(縮退した場合は無視します)。これには、スカラー値が三角形の表面上で線形に変化するという興味深い特性があります。三角形がスクリーンに投影されている場合でも、x '/ zおよびy' / zに関してスカラー値は直線的に変化します。
これは、特殊なハードウェアで非常に高速に実行できる線形補間を使用して、三角形のシェーディング、テクスチャマップ、デプスフィルターに必要なすべてではないにしても、ほとんどを計算できることを意味します。
tl; dr:三角形は最も単純なプリミティブであるため、三角形を扱うアルゴリズムは大幅に最適化できます。
3つのポイント(三角形)は常に平面を定義します。つまり、3つのポイントがあれば、3つのポイントすべてを切断できる平面をいつでも作成できます。ただし、4つのポイントについて同じことが常に当てはまるわけではありません。すべて平面上に4つのポイントを持つことができますが、平面上にない4つのポイントを持つこともできます。
これを行うのは「ゲームエンジン」ではなく、使用するすべての3Dソフトウェアがこれを行います。それはあなたにそれについて教えてくれないだけで、あなたの教授はこれを知らないとかなり資格が足りないようです。ソフトウェアがそれらをあなたから隠していても、それらはコンピュータのメモリに存在します。すべての3Dプログラムには、三角形を表示するオプションがあります。また、それらを編集可能なエッジに分割するオプションも用意されているため、それらを操作できます。しかし、彼らは常にそこにいたので、あなたの教授はこの主題を教え、それでも「三角形は何のためにあるのか」と疑問に思っていました。
三角形は、頂点を配置し、平面を保証する唯一の方法です。クワッドがある場合は、曲げる必要がある方法で頂点を配置できます。しかし、すでに三角形で作られており、曲げることができるのはこれらの三角形です。
三角形は3つのポイントを持っているため、単独で記述できる最も単純なプリミティブであり、3Dで表面を記述しないものよりも少ないです。
三角形は単独で考えることができるため、単一の三角形のみをレンダリングできるコードまたはシリコンを作成することができます。これにより、繰り返しの力により、あらゆる表面をレンダリングできます。
したがって、「すべての表面」をレンダリングすることに成功した最初のコンピューターシステムは、自然に多くの三角形を独立してレンダリングすることでそうしました。
三角形と四角形を「プリミティブ」(つまり、コンテキストのない完全に分離されたジオメトリのビット)と考えると、三角形はよりプリミティブであるため、「勝つ」傾向があります。
しかし、1980年代にエンターテインメントグレードのコンピューターが一定の洗練度を超えると、「プリミティブ」を単独で考慮することの重要性は低下しました。グラフィックスを大量生産する場合、規模の経済は、ほぼ同一の100台の車を一度に組み立てることを好むのと同様に、関連する頂点の処理グループを好む。
これが、1980年代に映画が「クワッド」を採用した理由です。「クワッド」は、孤立した四辺形ではなく、3D空間の頂点の2Dグリッドを指すため、誤称です。
インタラクティブエンターテインメントの領域では、三角形から「クワッド」への同じシフトはまだ発生していませんが、映画ビジネスで発生したのと同じ理由で、まもなく発生する可能性があります。
三角形を三角形化する方法と、n辺の多角形の「n-2」の方法は1つしかありません。したがって、三角形は最終的に多面体形状を定義する最も曖昧な方法です。また、他のポスターが示しているように、三角形(4つ以上ではなく)のラスタライズを加速する方法はたくさんあります(定数zは私のお気に入りの1つです)。また、光線と任意の多角形の交差テストよりも、光線と三角形の交差テストを最適化する方が簡単です。実際、n辺のポリゴンでの多くの操作は、三角形化された表現を手に入れることから恩恵を受けます。それは、n辺のポリゴン表現が「悪い」ということではありません-それらは非常に便利ですが、最終的には、多くのメッシュ操作で三角形を使いたいと思うでしょう。
三角形が3つの非共線頂点によって定義されている限り(読み取り:角度はいずれも正確にはPiではありません)、頂点は一意の平面を定義します。
もちろん、クワッドは4つの頂点によって定義されます。それらの頂点が同一平面上にないことは完全に可能です。その場合、クワッドは実際にはクワッドの対角線で分割された2つの三角形になります。それは2つの平面、2セットの表面法線などです。
使用可能なすべてのモデリングツール、テクスチャリング、ライティングなどのすべてのアルゴリズムはすべて、モデルが平面セグメントで構成されていることを前提とし、すべての式(通常の計算の外積が最初の式です)は絶対最小入力データセットを使用します-3頂点は平面を定義し、平面はすべての凝ったものを行うために必要なものです。
確かに、クワッドで動作するエンジンを作成できますが、クアッドを定義する他の3つと同一平面上にあることを確認する必要がある場合を除き、ほぼすべての場合で4番目の頂点を無視していることに気付くでしょう。また、同一平面上にない場合の最も論理的な解決策は、クワッドを2つの三角形に分割することです。それでは、なぜそれだけで始めてみませんか?
クワッドで作業するポイントは一体何でしょうか?
クワッドが必要な場合は、2つの三角形をまとめます。
4点を同一平面上に置くことは問題ではないと仮定すると(他の人が指摘したように、しかし私と一緒に耐えます)、任意の台形をレンダリングすることがわかります(これは通常、四辺形のようになります画面空間に変換されるとき)は、三角形のレンダリングと特に違いはありません-実際、クリッピングを実行すると、余分な頂点が導入される可能性があるため、ほとんど同じように機能します。(少なくともソフトウェアモデルでは-ハードウェアはクリッピングを行うより単純なブルートフォースの方法を持つ可能性があります。)
したがって、残りの問題は表現効率の問題です。-三角形のストリップを使用すると、2つの三角形で追加の頂点なしで四角形を簡単に表すことができます(1番目の三角形に3つの頂点、2番目の三角形に1つの追加頂点)。一方、四角形を使用して三角形を表現しようとすると、4つの頂点を使用し、別の頂点と同じ縮退した頂点を使用する必要があります。これは効率の点で理想的ではありません。