2025/05/21 16:30 Zoo CAD Engine Overview

やあ、ロボ子。今日もCADエンジンの話で盛り上がろうかの!

はい、博士!今日はどんな面白いお話が聞けるのか、とても楽しみです。

今日はCADエンジンの内部構造についてじゃ。B-Rep、NURBS、CSGといったモデルジオメトリの表現方法があるのは知っておるかの?

はい、存じております。SketchUpはポリゴンを基本としていて、シーメンスNXは高度な曲面ジオメトリを基本にしているんですよね。

その通り!CADエンジンを作るモチベーションは、既存のCADソフトが抱える問題を解決するための新しい視点を得ることじゃ。外科的な精度で顧客のニーズに応える柔軟性を提供できるのじゃ。

なるほど。既存のCADソフトは、どうしても肥大化やリソースの制約、レガシーといった問題があるんですね。

そうじゃ。CADシステムは、ポリゴン、NURBS、細分割サーフェスなど、色々な表現形式をサポートする必要があるからの。それがパフォーマンスのボトルネックになることもあるんじゃ。

ZooというCADエンジンでは、フィレットなどの特殊な表現を実装する代わりに、B-スプラインとして表現することで、操作をB-スプラインのみに絞り、GPUフレンドリーなアルゴリズムを開発しているんですね。

そう!GPUの並列処理能力は、CADアルゴリズムに必要な幾何学的演算にピッタリなのじゃ。CADの表示に必要な技術は、3Dビデオゲームエンジンがゲームワールドをレンダリングする技術と一緒じゃからの。

CAD-as-a-Serviceシステムは、レガシーCADシステムをAPIから利用できるように構築されているんですね。Zooでは、CADエンジンをCAD APIと直接相互運用できるように設計し、バッチ処理や並列化などの最適化の機会を提供しているんですね。

その通り!スイープされたサーフェスは、トポロジカルに結合して、CADアプリケーションで使用できる有効なB-Repを形成する必要があるんじゃ。

パターンと複製は、オブジェクトの多数の複製を配置したい場合に便利ですよね。Zooのパターンは、変換マトリックスで構成されていて、パターン化されたジオメトリをインスタンス化することで、CPUからGPUへの転送中に使用される時間とメモリリソースを制限しているんですね。

そうじゃ!サーフェス-サーフェス交差(SSI)は、CAD/CAMにおける重要な操作で、2つ以上のサーフェスが交わる曲線を決定することじゃ。

NURBSは、複雑な形状を作成するための優れた柔軟性と精度を提供する数学的表現ですよね。SSIのアプリケーションには、ブール演算、トリミング、ブレンドなどがあるんですね。

NURBSを直接交差させる最も一般的な手法はマーチングと呼ばれておる。ZooのGPUフレンドリーなSSI手法は、GPUの能力を利用し、総当たりで単純な命令と大量のデータを並行して処理するのじゃ。

Zooは、GPUを利用するために特別に作成されたSSIに対する独自のアプローチを開発し、特許を取得しているんですね!

そう!両方のサーフェスを密にサンプリングし、結果の点群をペアワイズ点距離で比較し、互いに特定の「公差」内にある点のみを保持するのじゃ。

サンプルポイントは、3つのxyzオブジェクト空間コンポーネントと、2つの関連するuvパラメータとして生成されるんですね。

SSI点群の解像度が小さすぎる場合は、サンプルサイズを増やすか、すでに計算されたSSI点の周りのより小さいローカル近傍でペアの距離をスーパーサンプリングして比較するのじゃ。

パラメータ空間での処理では、点群のuvコンポーネントを使用して、SSI曲線の品質、精度、および有用性を向上させるんですね。

Medial Axis Transform(MAT)は、uv空間で点群を間引いて曲線にするために使用されるのじゃ。

uvポイントが単純なブランチに分割されたら、点の順序付け、畳み込み、およびそれらからのb-スプライン曲線の作成を開始できるんですね。

空間内の順序付けられた点のセットでの畳み込みは、点がSSIなどの基礎となるグラウンドトゥルースに関して生成された場合に有益な効果があることが知られておる。

SSIルーチンの最終段階は、b-スプラインをサンプリングし、ユーザーが指定したb-スプライン関数を介して3dでそれらの画像を計算することにより、uvブランチをオブジェクト空間にマッピングすることなんですね。

ルーチンのパフォーマンスは、2つのサーフェスのサンプリングに大きく依存するのじゃ。さて、ロボ子、今日のCADエンジンの話はどうだったかの?

とても勉強になりました!CADエンジンの奥深さを改めて感じました。ところで博士、CADソフトで図面を描くとき、いつも線がガタガタになるんですが、どうすればいいですか?

ふむ、それはCADソフトのせいではなく、ロボ子の手が震えているからじゃろう!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。