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

構成的立体幾何学には多くの実用的な用途があります。単純な幾何学的オブジェクトが求められる場合や、数学的な精度が重要な場合に使用されます。[ 4 ] ほぼすべてのエンジニアリングCADパッケージはCSGを使用しています(ツールカットや部品同士がフィットする必要があるフィーチャを表現するのに役立つ場合があります)。
QuakeエンジンとUnreal Engineはどちらもこのシステムを使用しており、Hammer(ネイティブSourceエンジンのレベルエディタ)やTorque Game Engine / Torque Game Engine Advancedも使用しています。CSGが人気なのは、モデラーが比較的単純なオブジェクトのセットを使用して非常に複雑なジオメトリを作成できるためです。[ 3 ] CSGが手続き型またはパラメトリックである場合、ユーザーはオブジェクトの位置を変更したり、それらのオブジェクトを結合するために使用されるブール演算を変更したりすることで、複雑なジオメトリを修正できます。
CSGの利点の一つは、すべてのプリミティブ形状が水密であれば、オブジェクトが「ソリッド」または水密であることを容易に保証できることです。[ 5 ]これは、一部の製造業やエンジニアリング計算アプリケーションにとって重要です。一方、境界表現に基づいてジオメトリを作成する場合は、追加の位相データが必要になるか、または与えられた境界記述が有効なソリッドオブジェクトを指定していることを確認するために整合性チェックを実行する必要があります。[ 1 ]
CSGシェイプの便利な特性の一つは、任意の点をCSGによって作成されたシェイプの内側か外側かに簡単に分類できることです。点は、その下にあるすべてのプリミティブに対して単純に分類され、結果として得られるブール式が評価されます。[ 6 ]これは、レイトレーシングなどの一部のアプリケーションにとって望ましい特性です。[ 6 ]
メッシュからCSGへの変換
CSGモデルは構築時にパラメータ化されるため、カスタマイズされたモデルを作成することを目的としたアプリケーションでは、通常のメッシュよりも有利となることがよくあります。このようなアプリケーションでは、既存のメッシュをCSGツリーに変換することが興味深い場合があります。メッシュをCSGツリーに自動的に変換するこの問題は、逆CSGと呼ばれます。
結果として得られるCSGツリーは、入力メッシュと同じ3D空間の体積を占めながら、ノード数を最小限に抑える必要があります。結果のモデルを編集しやすくするためには、シンプルなソリューションが求められます。この問題の解決は、探索すべき探索空間が広大であるため、困難です。この探索空間は、プリミティブ形状の寸法やサイズといった連続パラメータと、最終的なCSGツリーの構築に使用されるブール演算子といった離散パラメータを組み合わせます。
演繹的手法は、幾何学的形状の内部を記述する半空間の集合を構築することでこの問題を解決します。これらの半空間は、最終的なモデルを得るために組み合わせることができるプリミティブを記述するために使用されます。[ 7 ]
別のアプローチは、プリミティブ形状の検出と最終モデルを定義するCSGツリーの計算を分離する。このアプローチは、現代のプログラム合成ツールの能力を活用し、最小限の複雑さでCSGツリーを見つける。[ 8 ]
遺伝的アルゴリズムを使用して、初期形状を目的のメッシュの形状に向けて反復的に最適化するアプローチもあります。 [ 9 ]
CSGをサポートする注目すべきアプリケーション
汎用モデリング言語とソフトウェア
レイトレーシングと粒子輸送
コンピュータ支援設計
- オートキャド
- オートデスク インベンター
- オートデスク Fusion 360
- BRL-CAD
- CATIA
- フリーCAD
- NX CAD
- ソルブスペース
- オンシェイプ
- オープンSCAD
- PTC Creo Parametric(旧称Pro/Engineer)
- リアルソフト3D
- ライノ
- ソリッドエッジ
- ソリッドワークス
- ティンカーキャド
- ベクターワークス
ゲーム
その他
- 3喜び
- Aqsis(バージョン0.6.0現在)[ 11 ]
- Blender – 主にサーフェス メッシュ エディターですが、メタ オブジェクトを使用したシンプルな CSG や、メッシュ オブジェクトでのブール演算修飾子の使用も可能です。
- CGAL – 幾何学アルゴリズムとデータ構造、特にポリゴン メッシュ上のブール演算のライブラリ。
- クララ.io
- ジャイアント4
- マジカCSG [ 12 ]
- MCNP
- スケッチアップ
- ウォンプ[ 13 ]
参考文献
- ^ a b c d Foley, James D. (1996)、「12.7 構成的立体幾何学」、コンピュータグラフィックス:原理と実践、Addison-Wesley Professional、pp. 557– 558、ISBN 9780201848403、
- ^ロス、スコット (1982). 「ソリッドモデリングのためのレイキャスティング」.コンピュータグラフィックスと画像処理. 18 (2): 109– 144. doi : 10.1016/0146-664X(82)90169-1 .
- ^ a bブルーメンタール、ジュールス;バジャジ、チャンドラジット(1997)、「5.2.5 CSG木との交差」、インプリシットサーフェス入門、モーガン・カウフマン、pp. 178– 180、ISBN 9781558602335。
- ^フォーリー(1996)、559ページ。
- ^ van Rossen, Sander; Baranowski, Matthew (2011)、「リアルタイム構築立体幾何学」、Ansari, Marwan (編)、ゲーム開発ツール、CRC Press、pp. 79– 96、ISBN 9781439867723。
- ^ a b Glassner, Andrew S. (1989) 『レイトレーシング入門』 Morgan Kaufmann、p. 80、ISBN 9780122861604。
- ^ Buchele, Suzanne F.; Crawford, Richard H. (2004). 「暗黙的境界表現からの3次元半空間構成的立体幾何学ツリー構築」. Computer-Aided Design . 36 (11): 1063– 1073. doi : 10.1016/j.cad.2004.01.006 .
- ^ Du, Tao; Inala, Jeevana Priya; Pu, Yewen; Spielberg, Andrew; Schulz, Adriana; Rus, Daniela; Solar-Lezama, Armando; Matusik, Wojciech (2018). 「InverseCSG: 3DモデルからCSGツリーへの自動変換」 ACM Trans. Graph . doi : 10.1145/3272127.3275006 .
- ^ Fayolle, Pierre-Alain; Pasko, Alexander A. (2016). 「3Dポイントクラウドからのオブジェクト構築ツリー抽出への進化的アプローチ」(PDF) . Computer-Aided Design . 74 : 1–17 . doi : 10.1016/j.cad.2016.01.001 .
- ^ Godot エンジン - Godot が CSG サポートを取得
- ^ Gregory, Paul (2002年2月12日). 「メジャーリリース」 . 2020年5月20日閲覧– SourceForge経由.
- ^マジカCSGウェブサイト
- ^ Wompのウェブサイト