ポリゴンメッシュ

イルカを表現した低ポリゴン 三角形メッシュの例

3Dコンピュータグラフィックスソリッドモデリングにおいてポリゴンメッシュとは、頂点エッジs多面体オブジェクトの表面の形状を定義しますワイヤーフレームモデルのようにレンダリングを面は通常、三角形三角形メッシュ)、四角形(クアッド)、またはその他の単純な凸多角形n角形凹多角形穴のある多角形で構成されることもあります

ポリゴンメッシュの研究は、コンピュータグラフィックス(特に3Dコンピュータグラフィックス)と幾何学モデリングの大きなサブフィールドです。ポリゴンメッシュの表現は、用途や目的に応じて様々です。メッシュに対して実行される様々な操作には、ブール論理構成的立体幾何学)、スムージング簡略化などがあります。また、レイトレーシング衝突検出、ポリゴンメッシュを用いた剛体力学のためのアルゴリズムも存在します。メッシュの面ではなくエッジをレンダリングすると、モデルはワイヤーフレームモデルになります。

メッシュ生成にはマーチングキューブアルゴリズムを含むいくつかの方法がある[1]

ボリューム メッシュは、構造の表面と内部領域の両方を明示的に表す点でポリゴン メッシュとは異なります。一方、ポリゴン メッシュは表面のみを明示的に表します (ボリュームは暗黙的です)。

要素

ポリゴン メッシュ モデリングの要素。

ポリゴンメッシュで作成されたオブジェクトは、異なる種類の要素を格納する必要があります。これには、頂点、エッジ、面、ポリゴン、サーフェスが含まれます。多くのアプリケーションでは、頂点、エッジ、および面またはポリゴンのいずれかのみが格納されます。レンダラーは3辺の面しかサポートしていないため、ポリゴンは上記のように、これらの面を複数組み合わせて構成する必要があります。しかし、多くのレンダラーは四角形や多角形ポリゴンをサポートしているか、ポリゴンを三角形にリアルタイムで変換できるため、メッシュを三角形形式で格納する必要はありません。

頂点
位置 (通常は 3D 空間内) と、色、法線ベクトル、テクスチャ座標などのその他の情報。
2 つの頂点間の接続。
閉じたエッジの集合。三角形の面は3つのエッジを持ち、四角形の面は4つのエッジを持ちます。ポリゴンは、同一平面上にある面の集合です。多辺面をサポートするシステムでは、ポリゴンと面は同義です。しかし、ほとんどのレンダリングハードウェアは3辺または4辺面しかサポートしていないため、ポリゴンは複数の面として表現されます。数学的には、ポリゴンメッシュは、幾何学、形状、位相といった追加のプロパティを持つ、非構造化グリッド、または無向グラフと考えることができます。
表面
スムージンググループと呼ばれることが多いものは、滑らかな領域をグループ化するのに便利ですが、必須ではありません。ソーダ缶のような、キャップ付きの円筒を考えてみましょう。側面を滑らかにシェーディングするには、すべての面法線が中心から水平に離れるようにし、キャップの法線は真上と真下を向いている必要があります。フォンシェーディングされた単一の面としてレンダリングすると、折り目の頂点の法線は不正確になります。したがって、ポリゴンが3面の面をグループ化するのと同じように、メッシュの滑らかな部分をグループ化するには、スムージングを終了する位置を決定する何らかの方法が必要です。サーフェス/スムージング グループを提供する代わりに、メッシュには分割角度などの同じデータを計算するための他のデータが含まれる場合があります (このしきい値を超える法線を持つポリゴンは、別のスムージング グループとして自動的に処理されるか、分割や面取りなどのテクニックがそれらの間のエッジに自動的に適用されます)。さらに、解像度が非常に高いメッシュでは、ポリゴンが非常に小さいためスムージング グループの必要性がないため、スムージング グループを必要とする問題があまり発生しません。また、サーフェス自体をメッシュの残りの部分から単純に切り離すという別の選択肢もあります。レンダラーは、隣接していないポリゴン間のエッジをスムージングしようとしません。
グループ
一部のメッシュ フォーマットには、メッシュの個別の要素を定義するグループが含まれており、スケルトン アニメーションの個別のサブオブジェクトや非スケルトン アニメーションの個別のアクターを決定するのに役立ちます。
材料
一般的に、マテリアルが定義され、レンダリング時にメッシュのさまざまな部分で異なるシェーダを使用できるようになります。
UV座標
ほとんどのメッシュフォーマットは、 UV座標の形式もサポートしています。UV座標は、メッシュを「展開」した状態での独立した2D表現であり、メッシュの異なるポリゴンに2次元テクスチャマップのどの部分を適用するかを示します。メッシュには、色、接線ベクトル、アニメーションを制御するウェイトマップなど、他の頂点属性情報(チャンネルと呼ばれることもありますを含めることもできます。

表現

ポリゴンメッシュは、頂点、辺、面のデータを格納するための様々な方法を用いて、様々な方法で表現できます。具体的には、以下の方法があります。

面頂点メッシュ
単純な頂点のリストと、それが使用する頂点を指すポリゴンのセット。
翼端縁
各エッジは2つの頂点、2つの面、そしてそれらに接する4つのエッジ(時計回りと反時計回り)を指します。ウィングドエッジメッシュでは、サーフェスを一定時間で走査できますが、必要なストレージ容量は大きくなります。
ハーフエッジメッシュ
エッジトラバーサル情報の半分だけを使用する点を除けば、ウィングドエッジメッシュに似ています。(OpenMesh を参照)
四角形エッジメッシュ
エッジ、ハーフエッジ、頂点をポリゴンへの参照なしに保持します。ポリゴンは表現に暗黙的に含まれており、構造体を走査することで見つけることができます。メモリ要件はハーフエッジメッシュと同様です。
コーナーテーブル
頂点を定義済みのテーブルに格納し、テーブルを走査することで暗黙的にポリゴンを定義します。これは本質的に、ハードウェアグラフィックスレンダリングで使用される三角形ファンです。この表現はよりコンパクトで、ポリゴンの取得効率も向上しますが、ポリゴンを変更する操作は遅くなります。さらに、コーナーテーブルはメッシュを完全に表現するわけではありません。ほとんどのメッシュを表現するには、複数のコーナーテーブル(三角形ファン)が必要です。
頂点間メッシュ
VVメッシュは、他の頂点を指す頂点のみを表します。エッジと面の情報は、どちらも暗黙的に表現されます。しかし、表現が単純であるため、メッシュに対して多くの効率的な操作を実行することはできません。

上記の各表現には、特定の利点と欠点があり、Smith (2006) でさらに議論されています。[2]データ構造の選択は、アプリケーション、必要なパフォーマンス、データのサイズ、および実行される操作によって決まります。たとえば、特に計算幾何学では、一般的なポリゴンよりも三角形を扱う方が簡単です。特定の操作では、エッジや隣接する面などの位相情報に高速にアクセスする必要があります。これには、ウィングドエッジ表現などのより複雑な構造が必要です。ハードウェアレンダリングでは、コンパクトで単純な構造が必要であるため、コーナーテーブル (三角形ファン) は、DirectXOpenGLなどの低レベルのレンダリング API に一般的に組み込まれています。

頂点間メッシュ

図2. 頂点間メッシュ
図2. 頂点間メッシュ

頂点-頂点メッシュは、オブジェクトを他の頂点に接続された頂点の集合として表現します。これは最も単純な表現ですが、面と辺の情報が暗黙的であるため、広くは利用されていません。そのため、レンダリング用の面のリストを生成するには、データを走査する必要があります。さらに、辺と面に対する操作は容易ではありません。

しかし、VVメッシュは、記憶容量が小さく、形状を効率的に変形できるという利点があります。上図は、VVメッシュで表現された四辺形のボックスを示しています。各頂点は隣接する頂点にインデックスを付けています。「ボックスシリンダー」の上下中央にある最後の2つの頂点(8番と9番)は、5つではなく4つの頂点に接続されています。一般的なシステムでは、任意の頂点に接続された任意の数の頂点を処理できる必要があります。

VVメッシュの詳細な説明についてはSmith(2006)を参照のこと。[2]

面頂点メッシュ

図3. 面頂点メッシュ
図3. 面頂点メッシュ

面頂点メッシュは、オブジェクトを面の集合と頂点の集合として表現します。これは最も広く使用されているメッシュ表現であり、現代のグラフィックスハードウェアで一般的に受け入れられる入力です。

面頂点メッシュは、面の頂点と頂点を囲む面を明示的に参照できるという点で、モデリングにおいてVVメッシュを改良したものです。上図は、「ボックスシリンダー」の例をFVメッシュで示しています。頂点v5は、それを囲む面を示すために強調表示されています。この例では、すべての面がちょうど3つの頂点を持つ必要があることに注意してください。ただし、これはすべての頂点が同じ数の周囲の面を持つことを意味するわけではありません。

レンダリングでは、面リストは通常​​、頂点のインデックスセットとしてGPUに送信され、頂点は位置/色/法線構造として送信されます(図では位置のみが示されています)。この方法の利点は、面の接続性を更新することなく、頂点データを再送信するだけで、形状の変化(ジオメトリの変化ではない)を動的に更新できることです。

モデリングには、あらゆる構造を容易に横断できることが求められます。面頂点メッシュでは、面の頂点を見つけるのは簡単です。また、頂点リストには、各頂点に接続された面のリストが含まれます。VVメッシュとは異なり、面と頂点は両方とも明示的であるため、隣接する面と頂点の検出は定数時間で実行されます。しかし、辺は暗黙的であるため、特定の面を囲むすべての面を見つけるには依然として検索が必要です。面の分割や結合といったその他の動的な操作も、面頂点メッシュでは困難です。

翼状エッジメッシュ

図4. 翼状エッジメッシュ
図4. 翼状エッジメッシュ

1975年にバウムガルトによって導入されたウィングドエッジメッシュは、メッシュの頂点、面、および辺を明示的に表現します。この表現は、分割と結合の操作を迅速に行うことができるため、メッシュジオメトリを動的に変更する際の柔軟性を最大限に高めるため、モデリングプログラムで広く使用されています。主な欠点は、多くのインデックスを管理することによる膨大なストレージ要件と複雑さの増加です。ウィングドエッジメッシュの実装に関する詳細な議論は、書籍『Graphics Gems II』に記載されています。

ウィングドエッジメッシュは、エッジからエッジへと移動し、エッジの周囲に整列した面の集合を提供するという課題に対処します。任意のエッジに対して、出力エッジの数は任意です。これを簡素化するために、ウィングドエッジメッシュは、各端点に最も近い時計回りと反時計回りのエッジの4つだけを提供します。他のエッジは段階的に移動できます。したがって、各エッジの情報は蝶の形に似ており、「ウィングドエッジ」メッシュと呼ばれます。上図は、「ボックスシリンダー」をウィングドエッジメッシュとして示しています。エッジのデータ全体は、2つの頂点(端点)、2つの面(各辺)、および4つのエッジ(ウィングドエッジ)で構成されます。

グラフィックハードウェア向けのウィングドエッジメッシュのレンダリングには、面インデックスリストの生成が必要です。これは通常、ジオメトリが変更された場合にのみ実行されます。ウィングドエッジメッシュは、メッシュの変更が局所的に発生するため、サブディビジョンサーフェスやインタラクティブモデリングなどの動的ジオメトリに最適です。衝突検出に必要なメッシュ全体のトラバースも効率的に実行できます。

詳細についてはBaumgart(1975)を参照。[3]

動的メッシュをレンダリングする

ウイングエッジメッシュは、ジオメトリの動的な変化を可能にする唯一の表現方法ではありません。ウイングエッジメッシュと面頂点メッシュを組み合わせた新しい表現方法が、レンダーダイナミックメッシュです。これは、面の頂点と頂点の面(FVメッシュと同様)と、エッジの面と頂点(ウイングエッジと同様)の両方を明示的に格納します。

ダイナミックメッシュのレンダリングには、標準的なウィングドエッジメッシュよりもわずかに少ないストレージ容量しか必要とせず、面リストに頂点のインデックスが含まれているため、グラフィックスハードウェアで直接レンダリングできます。さらに、頂点から面へのトラバースは、面から頂点へのトラバースと同様に、明示的(定数時間)です。RDメッシュでは、4つの出力エッジは必要ありません。これは、エッジから面へ、そして面から隣接するエッジへとトラバースすることで、これらのエッジを見つけることができるためです。

RD メッシュは、ジオメトリを動的に更新できるため、ウィングド エッジ メッシュの機能を活用します。

詳細についてはTobler & Maierhofer (WSCG 2006)を参照。[4]

メッシュ表現の概要

手術頂点-頂点面頂点翼端縁ダイナミックレンダリング
VV頂点の周囲のすべての頂点明示的なV → f1、f2、f3、... → v1、v2、v3、...V → e1、e2、e3、... → v1、v2、v3、...V → e1、e2、e3、... → v1、v2、v3、...
EF面のすべてのエッジF(a,b,c) → {a,b}, {b,c}, {a,c}F → {a,b}, {b,c}, {a,c}明示的な明示的な
VF面のすべての頂点F(a,b,c) → {a,b,c}明示的なF → e1、e2、e3 → a、b、c明示的な
FV頂点の周りのすべての面ペア検索明示的なV → e1、e2、e3 → f1、f2、f3、...明示的な
EV頂点の周りのすべての辺V → {v,v1}、{v,v2}、{v,v3}、...V → f1、f2、f3、... → v1、v2、v3、...明示的な明示的な
FEエッジの両面リスト比較リスト比較明示的な明示的な
VE辺の両方の頂点E(a,b) → {a,b}E(a,b) → {a,b}明示的な明示的な
フルック与えられた頂点を持つ面を見つけるF(a,b,c) → {a,b,c}v1、v2、v3の積集合v1、v2、v3の積集合v1、v2、v3の積集合
ストレージサイズV*平均(V,V)3F + V*平均(F,V)3F + 8E + V*平均(E,V)6F + 4E + V*平均(E,V)
10 個の頂点、16 個の面、24 個の辺を持つ例:
10 * 5 = 503×16 + 10×5 = 983*16 + 8*24 + 10*5 = 2906×16 + 4×24 + 10×5 = 242
図6: メッシュ表現操作の概要

上記の表において、explicit はデータが直接保存されるため、操作が定数時間で実行できることを示します。list compare は、操作を実行するために2つのリスト間のリスト比較を実行する必要があることを示します。pair search は、 2つのインデックスに対して検索を実行する必要があることを示します。avg (V,V)という表記は、特定の頂点に接続されている頂点の平均数を意味します。avg (E,V)は、特定の頂点に接続されている辺の平均数を意味します。avg (F,V)は、特定の頂点に接続されている面の平均数を意味します。

「V → f1, f2, f3, ... → v1, v2, v3, ...」という表記は、操作を実行するために複数の要素を走査する必要があることを示しています。例えば、面頂点メッシュを使用して「特定の頂点Vの周囲のすべての頂点」を取得するには、まず頂点リストを使用して特定の頂点Vの周囲の面を見つける必要があります。次に、それらの面から、面リストを使用してそれらの周囲の頂点を見つけます。ウィングドエッジメッシュはほぼすべての情報を明示的に保存し、他の操作では常に最初にエッジを走査して追加情報を取得します。頂点頂点メッシュは、特定の頂点の隣接頂点を明示的に保存する唯一の表現です。

メッシュ表現が複雑になるにつれて(概要の左から右へ)、明示的に保存される情報量が増加します。これにより、様々な要素のトラバースとトポロジへのより直接的かつ一定時間でのアクセスが可能になりますが、インデックスを適切に維持するためのオーバーヘッドとメモリ容量が増加します。

図7は、この記事で説明した4つの手法それぞれの接続情報を示しています。ハーフエッジテーブルやコーナーテーブルなど、他の表現方法も存在します。これらはすべて、頂点、面、エッジが互いにインデックスを付ける方法のバリエーションです。

一般的に、面頂点メッシュは、静的オブジェクトやモーフィングオブジェクトのリアルタイムレンダリングなど、ジオメトリ(接続性)は変化しないものの、形状(頂点位置)が変形または変化するグラフィックスハードウェア上でオブジェクトをレンダリングする必要がある場合に使用されます。ウィングドエッジメッシュまたはレンダリングダイナミックメッシュは、インタラクティブモデリングパッケージやサブディビジョンサーフェスの計算など、ジオメトリが変化する場合に使用されます。頂点頂点メッシュは、ハードウェアレンダリングが問題にならない限り、ジオメトリやトポロジの効率的で複雑な変更に最適です。

その他の表現

ストリーミングメッシュ
メッシュを分割して送信できるよう、面を順序付けしつつも独立した方法で保存します。面の順序は、空間的、スペクトル的、あるいはメッシュのその他の特性に基づいて決定されます。ストリーミングメッシュにより、非常に大きなメッシュを読み込み中でもレンダリングすることが可能になります。
プログレッシブメッシュ
頂点と面のデータを詳細レベルを上げて送信します。ストリーミングメッシュとは異なり、プログレッシブメッシュはオブジェクト全体の形状を低詳細レベルで提供します。追加データ、つまり新しいエッジと面によって、メッシュの詳細レベルは徐々に向上します。
法線メッシュ
ベースメッシュからの法線変位のセットとして、メッシュへの漸進的な変化を伝えます。この手法では、一連のテクスチャが、望ましい増分的な変更を表します。法線メッシュは、変位を表現するのに単一のスカラー値のみを必要とするため、コンパクトです。しかし、この手法では、変位テクスチャを作成するために、複雑な一連の変換が必要になります。

ファイル形式

ポリゴンメッシュデータを格納するためのファイル形式は数多く存在します。それぞれの形式は、作成者が意図した目的で使用すると最も効果的です。一般的な形式としては、.fbx.dae.obj.stlなどがあります。以下に、これらの形式のいくつかを一覧表で示します。

ファイルサフィックスフォーマット名組織プログラム説明
。生生のメッシュ未知様々なオープンなASCII形式。各行にはスペースで区切られた3つの頂点が含まれ、三角形を形成します。例:X1 Y1 Z1 X2 Y2 Z2 X3 Y3 Z3
。ブレンドBlenderファイル形式ブレンダー財団ブレンダー3Dオープンソース、バイナリのみの形式
.fbxAutodesk FBX 形式オートデスク様々な独自仕様。バイナリおよび ASCII 仕様が存在します。
.3ds3ds Max ファイルオートデスク3dsマックス頂点と面の数に16ビットの厳格な制限がある、一般的だが時代遅れのフォーマット。標準化されておらず、十分な文書化もされていないが、かつてはデータ交換の「事実上の標準」であった。
.daeデジタル アセット エクスチェンジ (COLLADA)ソニー・コンピュータエンタテインメントクロノス・グループ該当なし「 COLLA borative Design A activity」の。互換性の問題を回避するために設計されたユニバーサルフォーマット。
.dgnMicroStation ファイルベントレーシステムズマイクロステーションDGNファイル形式には、バージョン8以前とバージョン8(V8)の2種類があります。
.3dmRhinoファイルロバート・マクニール&アソシエイツライノセロス3D
.dxf.dwg図面交換フォーマットオートデスクオートキャド
.objウェーブフロント OBJウェーブフロントテクノロジーズ様々な3Dジオメトリを記述するASCII形式。すべての面の頂点は反時計回りに並べられ、面法線は暗黙的に示されます。滑らかな法線は頂点ごとに指定されます。
。プライポリゴンファイル形式スタンフォード大学様々なバイナリとASCII
.pmdポリゴンムービーメーカーデータ樋口優ミクミクダンスリギング、マテリアル、物理情報を含むヒューマノイド モデルのジオメトリを保存するための独自のバイナリ ファイル形式。
.stlステレオリソグラフィーフォーマット3Dシステムズ多くのもともとCNCを支援するために設計されたバイナリおよび ASCII 形式
.amf積層製造ファイル形式ASTMインターナショナル該当なしSTL 形式に似ていますが、ネイティブの色、マテリアル、星座のサポートが追加されています。
.wrlバーチャルリアリティモデリング言語Web3DコンソーシアムウェブブラウザISO規格14772-1:1997
.wrzVRML圧縮Web3Dコンソーシアムウェブブラウザ
.x3d、.x3db、.x3dv拡張可能な3DWeb3DコンソーシアムウェブブラウザXMLベース、オープンソース、ロイヤリティフリー、拡張可能、相互運用可能。色、テクスチャ、シーン情報もサポート。ISO規格19775/19776/19777
.x3dz、.x3dbz、.x3dvzX3D圧縮バイナリWeb3Dコンソーシアムウェブブラウザ
.c4dCinema 4D ファイルマクソンシネマ4D
.lwoLightWave 3D オブジェクト ファイルニューテックライトウェーブ3D
.smbスコアックapfRPIスコアプミPDE ベースのシミュレーション ワークフロー用のオープン ソースの並列適応型非構造化 3D メッシュ。
.mshGmshメッシュGMsh 開発者GMshプロジェクトオープンソース。1 次元から 3 次元までの線形および多項式補間要素の ASCII メッシュ記述を提供します。
。メッシュOGRE XMLOGRE開発チームOGRE、ピュアベーシックオープンソース。バイナリ形式(.mesh)とASCII形式(.mesh.xml)が利用可能です。頂点アニメーションとモーフターゲットアニメーション(blendshape)のデータが含まれています。スケルタルアニメーションデータは別ファイル(.skeleton)に含まれています。
.vegVega FEM 四面体メッシュジェルネイ・バルビッチベガ有限要素法オープンソース。FEMシミュレーション用の四面体メッシュとその材料特性を保存します。ASCII (.veg) およびバイナリ (.vegb) 形式が利用可能です。
.z3dZ3dオレグ・メラシェンコザノザ モデラー-
.vtkVTKメッシュVTKキットウェアVTKパラビューポイント データ、セル データ、フィールド データなど、さまざまなデータ フィールドを含むオープンな ASCII またはバイナリ形式。
.l4dLAI4D描画デザインのための人工知能研究所LAI4Dエンティティの階層ツリーを記述する ASCII データ形式。

参照

参考文献

  1. ^ Lorensen, William E.; Cline, Harvey E. (1987年8月1日). 「マーチングキューブ:高解像度3Dサーフェス構築アルゴリズム」. ACM SIGGRAPH Computer Graphics . 21 (4): 163– 169. CiteSeerX  10.1.1.545.613 . doi :10.1145/37402.37422.
  2. ^ ab Colin Smith、「頂点間メッシュと幾何学的および生物学的モデリングにおけるその利用について」(PDF
  3. ^ Bruce Baumgart, Winged-Edge Polyhedron Representation for Computer Vision. National Computer Conference, 1975年5月. 「Use of Polyhedra in computer vision. baumgart.org . 1975年5月. 2005年8月29日時点のオリジナルよりアーカイブ。 2005年8月29日閲覧
  4. ^ Tobler & Maierhofer、「レンダリングとサブディビジョンのためのメッシュデータ構造」、2006年。(PDF
Retrieved from "https://en.wikipedia.org/w/index.php?title=Polygon_mesh&oldid=1313294925"