コンテンツにスキップ

「Constructive Solid Geometry」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
Melan (会話 | 投稿記録)
en:Constructive solid geometry(2009年3月26日 16:13:47(UTC))の翻訳
(相違点なし)

2009年6月12日 (金) 01:03時点における版

Constructive Solid GeometryCSG)はソリッドモデリングで使う技法。CSGは3次元コンピュータグラフィックスCADで、手続き的モデリング技法としてしばしば使われる。ブーリアン演算を使って複雑な表面やオブジェクトを生成することができる。CSGで生成するモデルや表面は視覚的には複雑だが、オブジェクト群をうまく組み合わせたものでしかない。Constructive Solid Geometry はポリゴンの格子上で実行されることもあり、手続き的な場合もあるし、パラメトリックな場合もある。

CSGで使用する最も単純なソリッドオブジェクトをプリミティブと呼ぶ。典型的なプリミティブとしては直方体円柱角柱角錐球面円錐などがある。利用可能なプリミティブの種類はそれぞれのソフトウェアパッケージによって異なる。ソフトウェアパッケージによっては曲面のあるオブジェクトをCSGで扱えるものあるが、そうでないものもある。

CSGはプリミティブ群に操作を施すことでオブジェクトを「構築 (construct)」する。典型的な操作としては、集合論ブーリアン演算がある(和集合積集合差集合)。

プリミティブは一般に何らかのパラメータを手続きに入力することで記述できる。例えば、球はその中心の座標と半径の値で表せる。そのようなプリミティブ群に以下のような操作を施すことで複合的なオブジェクトを生成できる。

Constructive Solid Geometry における操作
ブーリアンの和 ブーリアンの差 ブーリアンの積
CSG Union の例 CSG Difference の例 CSG Intersection の例
2つのオブジェクトを1つにしたもの。 一方のオブジェクトからもう一方を引いたもの。 両方のオブジェクトの共通部分。

このような基本操作を組み合わせることで、単純なオブジェクトから非常に複雑なオブジェクトを構築できる。

CSGの応用

CSG オブジェクトは二分木で表すことができ、葉がプリミティブ、他のノードが操作を表す。

CSGにはいくつかの実用的用途がある。まず、単純な幾何学的オブジェクトが必要な場合や、数学的正確性が重要な場合に使える。Unreal EngineなどのゲームエンジンでもCSGを利用している。単純なオブジェクトから複雑な形状を生成できるため、CSGはモデラーにも扱いやすい。手続き的あるいはパラメトリックなCSGでは、オブジェクトの座標を変更したり、ブーリアンオペレータを入れ替えることで、ユーザーがオブジェクトの形状を修正できる。

工業製品の設計においても、CSGはオブジェクトが水密性を有するかどうかを確認できるという重要な特徴がある(個々のプリミティブが水密性なら、それらをブーリアンオペレータで組み合わせたものも水密性である)。それに対して境界表現に基づいた幾何学形状では、幾何学的データが余分に必要になるか、与えられた境界表現が妥当なソリッドオブジェクトとなっているかを検証する必要がある。

CSGで生成した形状の便利な特徴として、任意の座標(点)がその形状の内側にあるか外側にあるかを簡単に判別できるという点が挙げられる。つまり、その形状を構成している個々のプリミティブとブーリアン演算を行って比較すればよい。これは衝突判定などの用途に適した特徴である。

CSGをサポートしているアプリケーション

外部リンク