ポリゴン
ポリゴン(英: polygon)とは、多角形のことであるが、この記事ではサーフェスモデルなど、コンピュータグラフィックス特に3次元コンピュータグラフィックスにおける応用について述べる。
一般に日常的には「三角形」や「四角形」といった語は、それらの辺だけのものを指すのか、囲まれた中身を含む「面分」か、明確でないことも多い(「円」で言うならば、「円周」と「円盤」の違い)。しかし、形状モデリング等の応用では、その面が塞がっている面なのか、穴が開いているのかは大きな違いであり、識別の必要がある。そのため、きちんと多角形として「閉じて」いて、囲まれた中身を含む場合はクローズドポリゴン(closed polygon)、ただの連結な線分など閉じていない場合をポリラインあるいはオープンポリゴン(open polygon)、と呼び分ける(ことがある)。
(なお、3次元に限らず2次元コンピュータグラフィックスにおいても同様である。一例として、地理情報システム(GIS) などの地図データ及び描画では、領域の輪郭はポリゴンであり、道路や鉄道などはポリラインである)
このようなポリゴンで構成された物体は、基本的に直線と平面のみで構成されるが、線・面分割を細かくしてスムーズシェーディングなどの処理を併用する事で擬似的に曲線・曲面も表現できる。またピクサー社は単純なポリゴン形状で有機的曲面形状を制御するサブディビジョンサーフェス技術を開発している。
概要
ポリゴンの数が増えるほど詳細な表現が可能になり、何らかの入力操作に応じてリアルタイムに表示計算を行うコンピュータやゲーム機では1秒間に処理できるポリゴンの数がハードウェアの性能の比較に用いられることもある。しかし、実際のところその数え方は個々の事例によって恣意的であり、以下の数字は基本的にマーケティング目的のカタログスペックとしての数字である。例えば、初期の家庭用ゲーム機では、1994年にはセガのメガドライブの周辺機器スーパー32Xでポリゴンのソフト(厳密にはこの場合のポリゴンは、三角形の意味でない)が発売されたが、スーパー32Xが32ビットでもメガドライブ自体は16ビットというハードの性能の限界があった。2000年に発売されたソニーのゲーム機、PlayStation 2に搭載されたEmotion Engineは、毎秒300~600万ポリゴン。2007年の時点では、携帯電話向けのものでさえ、東芝のTC35711XBGのように、毎秒1億ポリゴンにも達するものさえある。しかしCPUのMIPS値と同様、1秒間に処理できるポリゴンの数だけがハードウェアの性能の優劣を決定づける要素ではなく、そもそも繰り返しになるが前述したようにこのような数字の算出方法は個々の事例ごとに恣意的な数え方によるものであり(命令セットの違いによる1命令あたりの計算量の違いを考慮せずに、MIPS値だけで一喜一憂していた多くの人々と同様であって)基本的にマーケティング目的のカタログスペックとしての数字でしかない。また、ハードの負荷を減らす為に制作側は極力少ない数のポリゴン(ローポリゴン)でキャラクターのモデリングを行う事を要求されるため、細部の表現には各種のテクスチャマッピングと組み合わせることが多い。
(凸)多角形を塗り潰す定番のアルゴリズムとして、スキャンラインと辺の交点の間を塗る「スキャンライン法」がある。
以下はGPU等における処理に関する議論である。
現在では、ほとんどの場合、三角形のポリゴンが使われる。これは、四角形以上のポリゴンの場合は、個々の頂点座標の位置関係によっては、ポリゴンに捩れが発生してしまい、このときポリゴンの面を正しく(あるいは高速、またはグーロー補間に)塗り潰すアルゴリズムの実装が複雑なためである。三角形ポリゴンであれば、三つの頂点座標がどのような位置関係でも条件を考慮せずに同じアルゴリズムで塗りつぶせ、正しくグーロー補間できる。三角形ポリゴンを塗り潰すアルゴリズムを多少変更すれば、フラット補間なら四角形以上のポリゴンも塗りつぶせないことはないが、凹多角形の場合はアルゴリズムが複雑になり、フィルレートも低下する。これらの理由から、リアルタイムコンピューターグラフィックスの世界では、三角形ポリゴンが使用されるのが普通である。また、三角形ポリゴンを複数組み合わせて、四角形以上のポリゴンの処理を代替することは可能なので、いわゆるGPUなどは基本的に三角形ポリゴンの処理に特化した設計である(比較的に知名度があるハードウェアだと、セガModel3に使用されている、LockheedMartin Real3D/PRO-1000などは、四角形のポリゴンベースで処理をするが、もともとが軍事シミュレータ用であり例外的な存在である)。
関連項目
- ポリゴンメッシュ
- ワイヤーフレーム
- テクスチャマッピング
- トゥーンレンダリング
- シェーディング