テッセレーションとは
テッセレーション(tessellation)は、
コンピュータグラフィックスにおける画像演算手法の一つであり、特に3次元の複雑な立体を2次元画像上で表現する際に、その詳細度と滑らかさを向上させるために用いられる技術です。
ポリゴンメッシュをさらに細かく分割することで、より現実感のある描画を可能にします。テセレーションと表記されることもあります。
概要
テッセレーション技術が登場した背景には、コンピュータの性能向上に伴う3Dグラフィックスの
ポリゴン描画数の増加があります。映画やCMなどのプロダクションレンダリングでは、以前からサブディビジョンサーフェイス(細分割曲面)などの技術で、データ量を抑えつつ最終的なレンダリング品質を高める工夫がされてきました。
一方、PCなどのGPUによるリアルタイム3D描画では、
ポリゴン数の増加がデータ転送のボトルネックとなる問題が生じました。CPUとGPU間のデータ転送速度は、他の部分に比べて遅く、ビデオメモリの容量も限られています。そのため、初期モデルは粗い
ポリゴンで表現し、GPU側で細かく分割する技術が求められるようになりました。テッセレーションをハードウェアで実行することにより、遠景は粗く、近景は細かくといった動的な最適化が可能になります。この技術は、CPUの負担やデータ転送量を軽減し、より効率的な描画処理を実現します。
PC用グラフィックスAPIの標準規格であるDirectXと
OpenGLでは、テッセレーション機能の標準化が長らく進んでいませんでしたが、DirectX 11や
OpenGL 4以降で標準機能として搭載されました。これにより、GPU内の専用回路であるテッセレータによってリアルタイム処理でのテッセレーションが可能になりました。
描画パイプラインとテッセレーション
DirectX 11では、レンダリングパイプラインにテッセレーション機能が追加され、以下の3つのステージで構成されています。
1.
ハルシェーダー(hull shader)
-
ポリゴンごとの曲面制御点を算出します。分割数(Tess Factor)を調整することで、
ポリゴンの分割度を制御します。
2.
テッセレータ(tessellator)
- ハル
シェーダーの指示に従い、
ポリゴンを実際に分割します。三角形、四角形、線分が元の
ポリゴンとして用いられます。
3.
ドメインシェーダー(domain shader)
- テッセレータが分割した
ポリゴンごとの頂点座標を算出します。凹凸データを与えることで、ディスプレースメントマッピングが可能です。
これらのテッセレーション処理はオプションであり、必要がない場合はスキップできます。
OpenGL 4では、ハル
シェーダーに相当するものをテッセレーション制御
シェーダー(TCS)、テッセレータに相当するものをテッセレーションプリミティブジェネレーター、ドメイン
シェーダーに相当するものをテッセレーション評価
シェーダー(TES)と呼びます。
応用例
テッセレーションは、コンピュータゲームにおけるLOD(Level of Detail)技術の改善に貢献しています。従来は、距離に応じて複数の
ポリゴンモデルを切り替える必要がありましたが、テッセレーションでは分割度を動的に変化させられるため、形状が突然変わるポッピング現象を解消できます。このような手法は、距離適応型テッセレーション(Distance Adaptive Tessellation)と呼ばれています。
また、テッセレーションはディスプレースメントマッピングによる表現の向上にも役立ちます。テクスチャによる陰影表現だけでなく、実際に形状を変形させることで、よりリアルな凹凸感を表現することが可能です。例えば、球体に凹凸テクスチャを適用する場合、テッセレーションがないと外形は球形のままですが、ディスプレースメントマッピングでは外形まで変形させることが可能です。
テッセレーションとコンピュータモデル
テッセレーションは、
ポリゴンデータセットを管理しやすい構造に分割する際にも利用されます。特にリアルタイムレンダリングにおいては、三角形面に分割することが一般的です。CADなどの分野では、複雑な3D形状を分析しやすい要素に分割する際に、テッセレーションが活用されます。その際、以下のパラメータが用いられ、オリジナル形状の近似精度を制御します。
これらのパラメータを調整することで、分析に必要な精度と詳細度を確保できます。また、適応型メッシュを使用することで、詳細な分析が必要な部分だけメッシュを細かく分割することが可能です。ジオデシックドームなどの構造設計にもテッセレーションが活用されています。
テッセレーションの課題
テッセレーションには、2つの頂点間で法線が異なる場合に亀裂が生じたり、形状制御を誤ると不要な膨張が起こるといった課題もあります。これらの問題を解決するためには、より高度な技術が必要です。
まとめ
テッセレーションは、3Dグラフィックスの表現力を大幅に向上させる技術であり、リアルタイムレンダリングの効率化にも貢献します。DirectX 11や
OpenGL 4以降で標準機能として搭載され、ゲームやCADなど幅広い分野で活用されています。
DirectX 11 Tessellation - NVIDIA(2012年3月25日閲覧)
bit-tech.net(2012年3月25日閲覧)