2006年度 システム情報科学特別演習(イントロダクトリセミナー)関連技術調査レポート

3次元形状データの交換技術


はじめに
3次元のCADやCGソフトで扱うデータを異なるアプリケーション間で共有できれば、作業効率はあがるはずである。 ここではエンジニアリングの観点から、3次元CADデータのデータ交換技術についてまとめる。

3次元CADデータの共有
3次元CAD間でデータを共有することを考える。共有には、以下の二つの概念がある。 物理的共有は、データ形式に関することである。CADのファイル形式には、デファクトスタンダードである AutoDesk社のDXF形式などが有名であるが、これらは異なるコンピュータ間でのデータ共有を目的として 考案されたものなので、原則としてテキスト形式である。
概念的共有は、CADのベンダーごとに異なる固有のデータ構造のことである。 つまり3次元CADデータの交換とは、あるCADのデータ構造を、別のCADで理解できるように 翻訳することである。

3次元CADデータの分類
3次元CADソフトウェアが持つ、データ変換に必要なデータは、 以下の4つの種類に分類できる。
1:幾何データ
点、線、面の事。
線はパラメトリック曲線や、解析曲線で、面はパラメトリック曲面や解析曲面を用いる。
2:位相データ
点、線、面の隣接情報の事。3次元CADでは、パッチワークやサッカーボールのように、 境界を張り合わせることによって、内と外を分けるBrep(境界表現法)が用いられている。
3:属性データ
モデルの色や寸法、物理特性や製品番号などの形状以外の付加的情報の事。
4:モデル作成手順
CAD上で製品形状をどのように作りこんでいくかという過程に関する情報の事。
現在の3次元CADでは穴やフィレットといった形状の特徴「フィーチャ」に注目して 製品モデルを作成する。

3次元CADデータの変換
変換対象とする要素に応じて、以下のような変換のレベルが規定される。
レベル1 幾何要素の変換
CADで定義された製品形状には、必ず点、線、面が存在する。これらの幾何データ(要素)だけを変換する。 3次元空間に、ばらばらの点、線、面が浮かぶ。
レベル2 高度な幾何要素(トリム曲面)の変換
幾何データの変換は、面についてはトリム曲面を対象とする。パラメトリック曲面は、 基本的にハンカチを広げたような4辺形になるのに対し、「トリム曲面」は、曲面上に輪郭線を与えて 適当な形に切り取るデータ構造になっている。トリム曲面は、ベースとなる曲面と輪郭をあらわす曲線群から定義される。
変換されたモデルは、3次元空間にばらばらのトリム曲面が浮ぶ「サーフェスモデル」になる。
レベル3 位相要素の変換
幾何データとともに位相データも変換する。幾何要素に位相要素が付加されると、 隣接情報が与えられるので、ばらばらのトリム曲面があたかも1つの連続した大きな 曲面として振舞うようになる。この1つの大きな曲面は、製品の表面全体を表す。 このレベルの変換は、中身の詰まったモデル(「ソリッドモデル」)の変換に相当する。
レベル4 フィーチャの変換
CAD上のモデル作成手順を変換する。具体的には、フィーチャの種類、 パラメータと作成順序を変換する。
レベル] 属性の変換
CAD上のモデルに付加された各種属性を変換します。

幾何データの変換
幾何データの変換項目として、以下の5項目が挙げられる。
1.単位系の変換
2.点の変換
3.曲線の変換
4.曲面の変換
5.手続き型曲線、曲面の変換
幾何データのうち、位置に関する情報は、どの単位系で記述されているのかを確認する。 必要であれば、モデルの3次元空間での広がりを維持したまま、 変換後の単位系にあわせて位置に関する情報を再計算する
曲線や曲面は、数学表現によりなされているが、データを送る側が持つ曲線・曲面の数学表現が、 必ずしも受ける側で理解できるわけではない。これらのデータ変換は、次に示す指標で行われる。 送り側と受け側で全ての指標が一致しない場合、一般に誤差ゼロで変換することは不可能で、「近似変換」となる。
1)数学表現
解析表現、Fergason、Bezier、B-Spline、NURBS、その他
2)次数
例えば、B-Splineでも3次と9次では別物である。 多くのCADで最高次数に制限を設けている。
3)有理表現
例えばNURBSの座標記述は4つの要素(x,y,z,w)を含む。 4番目の要素(ウェイト)を利用した表現を有理表現という。 BezierやB-Splineには有理表現したものとそうでないものがある。
4)無限領域
直線やフル円などは無限の曲線(両端がない)とみなすことがある。 曲線として両端が必要か否かはCADによって異なる。
また、パラメトリックな関数に、CADが固有の関数をブラックボックスとして 与えている場合があるが、こういった手続き型曲線・曲面は、一般のBezierやNURBS表現に(近似)変換する。

位相データの変換
位相要素を表す表現はCAD毎に多少異なる。位相のデータ変換では、送り側が出す位相要素を 一旦中立の位相要素に置き換え、改めて受け側の位相要素に変換する。中立の位相要素には以下のようなものがある。
SOLID
中身の詰まった製品モデルそのもので、物体表面を表すSHELLで覆われている。
SHELL
一続きの大きな面で、隣接するFACEを縫い合わせたもの。
FACE
SHELLを構成する個々の面で、トリム曲面が対応する。
EDGE
FACEとFACEの縫い目の線で、有限の曲線が対応する。
VERTEX
EDGEが集中する場所で、点が対応する。

アセンブリは複数の「部品」が組み上げられたものである。1つのSOLIDが1つの部品を表す。CADデータのアセンブリは、 個々のSOLID(部品)に「配置情報」を付加し、それら部品を「グループ化」したものである。グループ化したものに、 さらに「配置情報」を加えると「サブアセンブリ」として親アセンブリに組み込むことができる。 1個の部品が複数の場所に配置されることもある。このような場合、部品のコピーのような要素(「インスタンス」)が配置対象となる。 データ変換において、受け側のCADで配置情報やインスタンスを利用できない場合、データ変換プログラムは配置「後」の位置へ、 対象となる曲線、曲面を移動、複写する。

CADによって苦手な位相状態がある。例えば缶のような部品の設計では、CADごとに次の位相状態になる。 状態cを望むCADに、状態aのBrepをそのままで渡せない。差異は変換プログラムが吸収することになる。

位相と幾何の調和
トレランス
ここでは、二つのトレランスを区別して考える。
幾何計算のためのトレランス
CAD内部では、曲線、曲面を対象に様々な幾何計算が行われている。CAD内部には、「これ以上小さな値は意味がない」という 「長さ」がある。2点間の距離がこの長さより小さい場合、座標値は(実数の有効桁の範囲で)区別されるかもしれないが、 3次元空間で同じ場所を占有するとみなす。いわゆる「同一点トレランス」と呼ばれる指標である。2曲面の交線は、 この距離以下でそれぞれの曲面上に存在する。
位相維持のためのトレランス
Brepでは位相情報に従っている。現実の問題として、定義、あるいは計算で求めることはできない曲線や曲面がある。この問題に対する妥協案として、 「位相維持のための同一点トレランス(マージトレランス)」を用いる。この距離の範囲内で、隣接する2FACEのベース曲面は離れているかもしれない。 同様にEDGEの曲線は2曲面から離れているかもしれない。このトレランスは、一般に「幾何計算のための同一点トレランス」より 1けたないし2桁程度大きな値を採用する。
マージトレランスの大小
Brep内部の線や面の大きさは、少なくとも「位相維持のための同一点トレランス」(マージトレランス)より大きい必要がある。 マージトレランスより小さな線や面は、全体あるいは部分的に消滅(縮退)しているものとみなされる。 データ変換において、マージトレランスの緩い(大きい)CADで作成されたモデルを、マージトレランスの厳しい(小さい)CADに渡すと、 隣接しているはずのFACEやEDGE間で「隙間」や「オーバーラップ」が検出されてしまう。マージトレランスに関して逆のケースでは、 EDGEやFACEが「縮退」してしまう。データ変換プログラムは、受け側のトレランスに応じて、隙間を埋めたり、 FACEやEDGEを積極的に削除する処理を行う。(ヒーリング)

ノンマニホールドモデル
工業製品の設計が前提なら、厚さゼロの部分をもつ製品モデルは好ましくない。 このような状態のモデルをノンマニホールドモデルと呼ぶ。マージトレランスを大きくすると このような部分が検出される可能性も大きくなる。
トレランスの統一
極端な例だが、Brepを利用するCADシステム全てが、同一の「幾何計算のためのトレランス」と「位相維持のためのトレランス」を設定すれば、 中間ファイルフォーマットによる変換の可能性が劇的に向上するだろう。ただし、トレランスは、 コンピュータ上の幾何計算と製品モデル定義のための妥協という性格を持つ。対象とする製品モデルに応じて、 最も効率(製品形状の複雑さ、計算時間、メモリ使用量、プログラム開発の難易度)のよいトレランスが設定される。 データ変換のためにトレランスという概念を前面に出すのは重要だが、その値を統一しようとするのは現実的ではない。

フィーチャの変換
フィーチャの定義は、Brepよりはるかにあいまいである。形状特徴ということだが、特徴の認識はピンからキリまである。 もっとも簡単なフィーチャだと、貫通穴の生成など幾何要素に近いレベルのものがある。 一方、複数稜線(エッジ)に対する一括フィレット(ラウンド)作成などは加工に近いレベルのものである。 さらに、ボルトや、ボルトに対する座繰り穴といった形状特徴(部品や加工単位)をユーザ定義フィーチャとするものもある。
CADベンダー毎に、他社にない工夫を凝らしたフィーチャを提供しようとするため、フィーチャの変換は極めて困難だと思われる。 フィーチャの種類は、発散することはあっても共通の仕様に収束していくことは難しいだろう。 現実的な変換手法としては、送り側CADのフィーチャ情報を、「中立的なコマンドの時系列」に翻訳する。 このコマンド列を受け側CADのフィーチャ作成コマンドに対応させていくことになる。フィーチャ作成の入力パラメータとして、 スケッチャーからの図形情報のほか、途中までできた形状のピック操作(特定の幾何要素の指定)などが伴うと、 それらを中立コマンド列に反映させるのが大変になりそうである。形状の作成が、フィーチャを単位として「時系列」に分解できるものは 変換できるかもしれない。

属性の変換
属性は、CADシステムごとの固有の仕様なので、汎用性のある変換方法はない。

参考文献
株式会社エムシースクエアド-研究室
3 次元データ交換の現状と 設計プロセス改革の最新動向 電子商取引推進委員会(「e−エンジニアリング」フォーラム)

調査担当: システム基礎論研究室 西田 武央 (提出年月日:2006年6月26日)