
構成的ソリッドジオメトリ(CSG、以前は計算バイナリソリッドジオメトリと呼ばれていました)は、ソリッドモデリングで使用される技術です。構成的ソリッドジオメトリを使用すると、モデラーはブール演算子を使用してより単純なオブジェクトを組み合わせることで複雑なサーフェスまたはオブジェクトを作成できます[ 1 ]。いくつかのプリミティブオブジェクトを組み合わせることで、視覚的に複雑なオブジェクトを生成できる可能性があります[ 2 ] [ 3 ] 。
3DコンピュータグラフィックスやCADにおいて、CSGはプロシージャルモデリングでよく用いられます。CSGはポリゴンメッシュに対しても実行可能であり、プロシージャルである場合も、パラメトリックである場合も、そうでない場合もあります。
CSGは、ポリゴンメッシュモデリング、境界表現、ボックスモデリングとは対照的である。
表現に使用される最も単純な立体オブジェクトは、幾何学的プリミティブと呼ばれます。通常、これらは単純な形状のオブジェクトです。直方体、円柱、角柱、ピラミッド、球、円錐などです。[ 1 ]使用可能なプリミティブのセットは、各ソフトウェア パッケージによって制限されます。一部のソフトウェア パッケージでは曲面オブジェクトに CSG を使用できますが、他のパッケージでは使用できません。
オブジェクトは、許容される演算によってプリミティブから構築されます。これらの演算は通常、集合に対するブール演算(和集合(OR)、積集合(AND)、差集合(NOT))と、それらの集合の幾何学的変換です。[ 1 ]
プリミティブは通常、いくつかのパラメータを受け取る手順によって記述されます。たとえば、球は中心点の座標と半径の値によって記述できます。これらのプリミティブは、次のような操作を使用して複合オブジェクトに組み合わせることができます。
これらの基本的な操作を組み合わせることで、単純なオブジェクトから複雑なオブジェクトを構築することが可能となる。
構成的なソリッドジオメトリのレンダリングは、レイトレーシングの場合、特に簡単です。レイトレーサーは、操作対象の2つのプリミティブとレイを交差させ、1次元レイに沿った交点区間に演算子を適用し、レイに沿ってカメラに最も近い点を結果として取得します。

構成的ソリッドジオメトリには、多くの実用的な用途があります。単純な幾何学的オブジェクトが必要な場合や、数学的な精度が重要な場合に使用されます。[ 4 ] ほぼすべてのエンジニアリング CAD パッケージは CSG を使用しています (ツールの切削や、部品が互いに嵌合する必要があるフィーチャーを表現するのに役立つ場合があります)。
QuakeエンジンとUnreal Engine はどちらもこのシステムを使用しており、Hammer (ネイティブSource エンジンのレベル エディタ) やTorque Game Engine / Torque Game Engine Advancedも同様です。CSG が人気なのは、モデラーが比較的単純なオブジェクトのセットを使用して非常に複雑なジオメトリを作成できるためです。[ 3 ] CSG がプロシージャルまたはパラメトリックである場合、ユーザーはオブジェクトの位置を変更したり、それらのオブジェクトを組み合わせるために使用されるブール演算を変更したりすることで、複雑なジオメトリを修正できます。
CSGの利点の1つは、すべてのプリミティブ形状が水密であれば、オブジェクトが「固体」または水密であることを容易に保証できることです。[ 5 ]これは、一部の製造またはエンジニアリング計算アプリケーションにとって重要となる場合があります。これに対し、境界表現に基づいてジオメトリを作成する場合、追加のトポロジデータが必要になるか、与えられた境界記述が有効な固体オブジェクトを指定していることを保証するために整合性チェックを実行する必要があります。[ 1 ]
CSG形状の便利な特性は、任意の点がCSGによって作成された形状の内側か外側かを簡単に分類できることです。点はすべての基底プリミティブに対して分類され、結果として得られるブール式が評価されます。[ 6 ]これは、レイトレーシングなどの一部のアプリケーションにとって望ましい特性です。[ 6 ]
CSGモデルは構築時にパラメータ化されるため、カスタムモデルの作成を目的とするアプリケーションにおいては、通常のメッシュよりも有利な場合が多い。このようなアプリケーションでは、既存のメッシュをCSGツリーに変換することが有効な場合がある。メッシュを自動的にCSGツリーに変換するこの問題は、逆CSGと呼ばれる。
結果として得られるCSGツリーは、入力メッシュと同じ3D空間の体積を占めつつ、ノード数を最小限に抑える必要があります。結果として得られるモデルの編集の容易性を確保するため、シンプルなソリューションが望ましいです。この問題の解決は、探索すべき探索空間が広大であるため困難です。これは、プリミティブ形状の寸法やサイズなどの連続パラメータと、最終的なCSGツリーの構築に使用されるブール演算子などの離散パラメータを組み合わせたものです。
演繹法は、ジオメトリの内部を記述する一連の半空間を構築することによってこの問題を解決します。これらの半空間は、最終モデルを得るために組み合わせることができるプリミティブを記述するために使用されます。[ 7 ]
別のアプローチでは、プリミティブ形状の検出と最終モデルを定義するCSGツリーの計算を分離します。このアプローチは、最小限の複雑さでCSGツリーを見つける最新のプログラム合成ツールの能力を利用します。 [ 8 ]
また、遺伝的アルゴリズムを使用して、初期形状を目的のメッシュの形状に反復的に最適化するアプローチもあります。 [ 9 ]