MeshをBrepに変換したい

MeshをBrepに変換したい

トポロジー最適化や陰関数モデリングなどの形状生成手法では、結果がMeshとして出力されることがあります。また、3Dスキャンなどの形状計測でも、取得した形状は点群やMeshとして扱われるのが一般的です。

これらの形状を既存のCADワークフローで編集したり、設計データとして再利用したりするためには、Brepへの変換が求められる場合があります。

ただし、MeshをBrepに変換するといっても、元のMeshに忠実な形状が欲しいのか、編集しやすいCAD形状が欲しいのかによって、適した方法は変わります。

本記事では、MeshをBrepに変換する代表的な方法を整理し、いくつかの方法を実際に試した結果を紹介します。

Brep化の目的と求められる形状

Brep(Boundary Representation)は、面・稜線・頂点によって立体の境界を表現する形状表現です。一般的な3D CADでは、平面やNURBS曲面などを組み合わせたBrepが、設計形状の表現に広く使われています。

一方、Meshは三角形や四角形の集合によって形状を表す、形状の可視化や3Dプリントなどに利用しやすい形状表現です。

CAD上の操作や後工程では、Brepの方が扱いやすい場合があります。たとえば、以下のような作業ではBrepの方が便利です。

  • フィレットや面取りなどのCAD編集
  • 寸法変更
  • 図面化
  • 解析用メッシュを生成するためのCADモデルの作成
  • 他CADシステムとのデータ連携

ただし、単にBrepに変換できればよいわけではありません。変換後の用途によって、求められる形状は異なります。

寸法変更や穴径の変更など形状の特徴に基づく編集を想定する場合は、平面や円筒面などの形状の特徴に沿って整理されたBrepが扱いやすくなります。一方、意匠面や有機的な形状では、元のMeshとの一致度や曲面の滑らかさが重要になります。

数値解析に利用する場合は、Brepを解析用メッシュの生成元となる形状として使用します。そのため、元形状の再現性だけでなく、微小な隙間や重複面がなく、解析用メッシュを安定して生成できることも重要です。

このように、MeshからBrepへの変換は単なるファイル形式の変換ではなく、用途に合わせて形状を再構成する処理として考える必要があります。

MeshからBrepを作る代表的なアプローチ

MeshからBrepを作る方法には、Meshの面をそのままBrep化する方法から、元の形状を参照しながらCAD形状として作り直す方法まで、さまざまなものがあります。

方法によって、得られるBrepの面構成や、元のMeshとの関係、変換後の編集方法が異なります。

以下では、代表的な6つのアプローチについて、それぞれの考え方と実例を紹介します。

1. プリミティブなBrepに変換する

Meshから平面、円筒、球、円錐などの単純な形状を検出し、それらを組み合わせてBrepを作る方法です。

この方法のメリットは、BrepがシンプルでCAD上で編集しやすいことです。一方で、自由曲面や複雑な形状を少数のプリミティブな形状だけで表現するのは難しいです。

機械部品のように、平面や円筒面が多い形状に適した方法です。

実例

一般的には、Meshから平面や円筒面などの領域を抽出し、それらをプリミティブなCAD面として再構成する方法がよく使われます。今回は、フィッティングの様子を分かりやすく示すために、Brep形状のパラメータを変化させ、Mesh上サンプリング点とBrepの二乗距離の和を最小化するフィッティング方法を用いました。

GIF 1
GIF 2
GIF 3

Mesh

Mesh

Brep

Brep

Mesh
Brep
Mesh
Brep

2. Meshの各面をそのままNURBSパッチ化する

Meshの各面を、対応するNURBS面またはトリムされたNURBS面としてBrep化する方法です。

実装は比較的シンプルで、元のMesh形状との一致度も高くなります。

一方で、Meshの面数が多いほどBrepの面数も増えるため、データが非常に重くなります。また、面構成は元のMeshとほぼ同じであるため、CAD上で編集しやすい形状になるとは限りません。

形状をほぼ維持したままBrep形式に変換したい場合には有効ですが、設計編集用のモデルとしては注意が必要です。

実例

Mesh

Mesh

Brep

Brep

Mesh
Brep

3. リメッシュしてからBrep化する

元のMeshを一度Quad Meshなどにリメッシュし、その面構成に沿ってBrep化する方法です。

Meshの各面をそのままBrep化する方法と比べて面数を減らしやすく、曲面の流れも整理できます。ただし、得られるBrepの面構成はリメッシュ結果に大きく依存します。

実例

Mesh

GIF 1

細かくリメッシュ

GIF 2

粗くリメッシュ

GIF 3

GIF 1
GIF 2
GIF 3

4. MeshにNURBS曲面をフィットする

Meshの頂点や面を参照して、滑らかなNURBS曲面を近似的に当てはめる方法です。

適切にMeshをリメッシュしてフィットできれば、元のMeshよりも滑らかで少ない面数のBrepとして表現できる場合があります。

一方で、曲面をどのように分割するか、制御点数をどの程度にするか、どこまで近似誤差を許容するかといった設定が必要です。

自由曲面や意匠面のように、滑らかさを重視したい場合に向いています。

実例

Mesh

GIF 1

リメッシュ後Brep

GIF 2

フィッティング後Brep

GIF 3

GIF 1
GIF 2
GIF 3

5. SubD経由でBrepに変換する

Meshを一度SubDに変換し、その後Brepに変換する方法です。

SubDは、ポリゴン形状をもとに滑らかな曲面を作る表現です。比較的少ない制御点で滑らかな形状を表現できるため、Meshの細かな面構成をそのまま引き継がず、整理された曲面としてBrepに変換しやすいという特徴があります。RhinocerosなどのCADソフトでは、MeshからSubD、SubDからBrepへの変換機能が用意されています。

この方法は、有機的で滑らかな形状に向いています。一方で、元のMeshを近似する形状となるため、鋭いエッジや平面を保ちたい場合には注意が必要です。

実例

RhinocerosのToSubDおよびToNurbsコマンドにより変換しています。

Mesh

GIF 1

リメッシュ⇒SubD

GIF 2

Brep

GIF 3

GIF 1
GIF 2
GIF 3

6. 断面カーブから再構成する

Meshから断面カーブや特徴線を抽出し、ロフト、スイープ、押し出しなどのCAD操作でBrepを作り直す方法です。

Meshを直接変換するというより、Meshを参照しながらCADモデルを再構成する方法です。

配管形状、押し出し形状、回転体のように、形状の作り方がある程度想定できる場合に向いています。得られるBrepは編集しやすい一方で、形状ごとの処理が必要になります。

実例

Mesh

GIF 1

特徴線

GIF 2

Brep

GIF 3

各アプローチの特徴

ここまで紹介したように、MeshからBrepを作る方法には、それぞれ得意な形状や仕上がりの違いがあります。

今回の実例は厳密な性能比較ではありませんが、方法を選ぶ際の目安として、各アプローチの特徴と注意点を整理します。

アプローチ 選択の目安 特徴・注意点
1. プリミティブなBrepに変換する 平面・円筒面・球面などで表せる形状を、寸法変更しやすい形にしたい場合 シンプルなBrepを得やすい、自由曲面の再現には向かない
2. Meshの各面をそのままNURBSパッチ化する 元のMesh形状をできるだけ維持したままBrep化したい場合 Meshとの一致度が高い、面数が多くデータが重くなりやすい
3. リメッシュしてからBrep化する 面数や面の流れを整理してBrep化したい、または後工程のために面構成を整えたい場合 面数を減らせる、リメッシュにより形状が変化する場合がある
4. MeshにNURBS曲面をフィットする 近似精度や曲面構成を調整しながら、自由曲面を滑らかなBrepとして近似したい場合 滑らかに形状を近似できる、曲面の分割方法や制御点数の適切な設定が必要となる
5. SubD経由でBrepに変換する SubDの面構成を利用して、形状全体を滑らかな曲面として再構成し、Brep化したい場合 滑らかに形状を近似できる、鋭いエッジや平面の保持には適切な設定が必要となる
6. 断面カーブから再構成する 配管・押し出し形状・回転体など、断面や生成方法を想定できる形状を再構成したい場合 編集しやすいCAD形状として再構成できる、 形状ごとに再構成方法を考える必要がある

MeshをBrepにするうえでの注意点

実際にMeshをBrepに変換する際には、変換前のMesh品質が重要です。

元のMeshに穴、自己交差、法線の反転、非多様体エッジなどがあると、Brep化がうまくいかないことがあります。

そのため、Brep化の前に以下のような修正が必要になる場合があります。

  • 穴埋め
  • 重複頂点の削除
  • 法線方向の統一
  • 非多様体エッジの修正
  • 極端に細長い三角形の修正・除去
  • ノイズの平滑化

また、Brepに変換できたとしても、それがCAD上で使いやすいとは限りません。

特に、Meshの各面をそのままBrep化した場合、見た目はBrepでも、実態は大量の小さな平面パッチの集合です。このようなデータは、CAD上での編集や後工程には向かない場合があります。

「Brep形式であること」と「CADモデルとして扱いやすいこと」は、分けて考える必要があります。

まとめ

MeshからBrepへの変換では、元形状への忠実さ、曲面の滑らかさ、面構成の単純さ、編集しやすさの間にトレードオフがあります。

元のMeshをできるだけそのまま保持したい場合は各面のBrep化、滑らかな曲面として近似したい場合はNURBS曲面フィッティングやSubD、編集しやすいCAD形状を作りたい場合はプリミティブや断面カーブからの再構成が候補になります。

重要なのは、変換そのものを目的にするのではなく、Brep化した後にどのような操作を行いたいかから方法を選ぶことです。

Author