(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-16
(45)【発行日】2024-07-24
(54)【発明の名称】メッシュからの特徴木の抽出
(51)【国際特許分類】
G06F 30/10 20200101AFI20240717BHJP
G06T 17/00 20060101ALI20240717BHJP
【FI】
G06F30/10
G06T17/00
【外国語出願】
(21)【出願番号】P 2019233116
(22)【出願日】2019-12-24
【審査請求日】2022-11-25
(32)【優先日】2018-12-29
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】500102435
【氏名又は名称】ダッソー システムズ
【氏名又は名称原語表記】DASSAULT SYSTEMES
(74)【代理人】
【識別番号】110000752
【氏名又は名称】弁理士法人朝日特許事務所
(72)【発明者】
【氏名】ギヨーム ランドン
(72)【発明者】
【氏名】セルバン・アレクサンドル ステート
(72)【発明者】
【氏名】フェルナンド・マヌエル サンチェス・ベルムデス
【審査官】三沢 岳志
(56)【参考文献】
【文献】特開平10-312472(JP,A)
【文献】米国特許第06323863(US,B1)
【文献】特開2005-004382(JP,A)
【文献】米国特許出願公開第2005/0021318(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 30/10
G06T 17/00
(57)【特許請求の範囲】
【請求項1】
メッシュから特徴木を抽出するためのコンピュータ実施方法であって、
メッシュを提供するステップ(S100)と、
前記提供されたメッシュの幾何学的及び隣接グラフを計算するステップ(S110)であって、当該グラフの各ノードはメッシュの1つの領域を表し、当該領域のプリミティブ、種類及びパラメータを含み、2つのノード間の各接続は2つの接続されたノードによって表される領域のそれぞれの表面間の交差である、計算するステップと、
グラフの各ノードに対し、定義されたプリミティブタイプ及び領域のパラメータに基づく表面をインスタンス化するステップ(S120)と、
前記グラフの各ノードに対し、1つの外部交差ループ及び、場合によっては、1つ以上の内部交差ループを計算するステップ(S132)であって、各交差ループは当該各ノードに接続されたグラフのノードが順序付けられたリストから得られる、計算するステップと、
前記グラフの各ノードに対し、外部交差ループから少なくとも1つのスケッチを計算するステップ(S134)であって、場合によっては、インスタンス化された表面の1つ又は複数の内部交差ループからそれぞれ1つ又は複数のスケッチを計算するステップと、
各計算スケッチに掃引演算を適用するステップ(S140)であって、各スケッチに対して立体を生成する、適用するステップと、
得られた立体間の追加又は削除演算の可能な組合せの集合を演算するステップ(S150)であって、演算された各組合せについて最終立体を得る、演算するステップと、
前記提供されたメッシュを用いて各最終立体の類似性スコアを計算するステップ(S160)と、
前記類似性スコアに基づいて前記提供されたメッシュと最も類似した最終立体を特定するステップ(S170)であって、特定された最も類似した最終立体の追加又は削除演算の組合せが、前記メッシュの特徴木に対応する、決定するステップと
を含むコンピュータ実施方法。
【請求項2】
前記得られた立体間の追加又は削除演算の可能な組み合わせの集合を計算するステップが、
凸状の外部交差ループで生成された立体に対して追加演算を使用するステップと、
凹状の外部交差ループで生成された立体に対して削除演算を使用するステップと、
凹状の内部交差ループで生成された立体に対して追加演算を使用するステップと、
凸状の内部交差ループで生成された立体に対する削除演算を使用するステップと
を含む、請求項1に記載のコンピュータ実施方法。
【請求項3】
前記得られた立体間の追加又は削除演算の可能な組み合わせの集合を計算するステップが、さらに、
決定可能な凹形状又は凹形状を持たない外部交差ループを持つ生成された各立体について、追加と削除の両方の演算を使用するステップを含む
請求項2に記載のコンピュータ実施方法。
【請求項4】
前記得られた立体間の追加又は削除演算の考えられる組み合わせの集合を計算するステップが、
削除演算で使用される立体が追加演算で使用される単一の生成された立体の面にのみ隣接している場合、当該追加演算の後に当該削除演算を実行するステップと、
削除演算で使用される立体が追加演算で使用される2つ以上の生成された立体の面にのみ隣接している場合、当該追加演算の後に当該削除演算を実行するステップと、
追加演算で使用される立体が削除演算で使用される単一の生成立体の面にのみ隣接する場合、及び削除演算で使用される立体が追加演算で使用される単一の生成立体の面にのみ隣接する場合、又は追加演算で使用される2つ以上の生成立体の面にのみ隣接する場合、まず、削除演算で使用される前記立体に対する追加演算で使用される立体の削除演算を実行し、次に、最初に実行される前記削除演算の結果の削除演算のみを実行するステップと
をさらに含む、請求項2又は3に記載のコンピュータ実施方法。
【請求項5】
前記各計算スケッチに掃引演算を適用するステップが、
スケッチごとに、当該スケッチの1つの外部の交差ループに隣接する交差ループと、当該スケッチの1つ以上の内部の交差ループに隣接する交差ループからの掃引方向と掃引長さを計算するステップを含む
請求項1乃至4のいずれか一項に記載のコンピュータ実施方法。
【請求項6】
前記掃引方向及び掃引長さの計算は、前記スケッチの1つの外部交差ループ及び考えられる1つ又は複数の交差ループのそれぞれについて実行され、
当該計算が、前記スケッチの交差ループの各々について、
当該交差ループ上の1つ以上のスケッチ点を特定するステップであって、スケッチ点がスケッチの交差ループに隣接する交差ループに共通する点である、特定するステップと、
前記特定されたスケッチ点ごとに、前記スケッチの交差ループに隣接する交差ループに共通の点であるターゲット点を特定するステップと、
前記スケッチ点をターゲット点に結合するベクトルをスケッチ点ごとに計算するステップであって、当該ベクトルの方向が掃引方向であり、当該ベクトルのノルムが掃引長である、計算するステップと
を含む、請求項5に記載のコンピュータ実施方法。
【請求項7】
2つ以上のベクトルが計算されたとき、
前記2つ以上のベクトルが同じ方向を有し、かつスケッチの各交差ループに隣接する交差ループの表面が当該同じ方向に平行であるか判断するステップと、
凸形状
を生成する前記掃引演算を適用するステップであって、前記スケッチの立体を生成する、適用するステップと
をさらに含む請求項6に記載のコンピュータ実施方法。
【請求項8】
前記2つ以上のベクトルのノルムの
複数の値のうち各値
について、前記掃引演算を適用するステップ、又は
値の中から最小の値を選択し、選択した値に掃引演算を適用するステップ
をさらに含む、請求項7に記載のコンピュータ実施方法。
【請求項9】
2つ以上のベクトルが計算されたとき、
前記2つ以上のベクトルが同じ方向を有し、かつスケッチの各交差ループに隣接する交差ループの1つ又は複数の表面が当該方向に平行ではないか判断するステップと、
前記スケッチの各交差ループに隣接し、かつこの同じ方向に平行な交差ループのすべての面に対し共通の回転軸を検出するステップと、
各スケッチ点とそれに対応するターゲット点の回転角度を推定するステップと、
検出した共通の回転軸周りの回転である前記掃引演算を前記推定された角度に適用するステップと
をさらに含む、請求項6に記載のコンピュータ実施方法。
【請求項10】
前記共通の回転軸を検出したとき、
前記スケッチの交差ループに隣接する交差ループの表面が、シリンダ、円錐、球、及び/又はトーラスの中から選択されたタイプのプリミティブに属する場合、隣接する表面が回転軸で定義されることを検証するステップと、
前記スケッチの交差ループに隣接する交差ループの表面がタイプ平面のプリミティブに属する場合、隣接する表面が回転軸に平行又は直交していることを検証するステップと
をさらに含む、請求項9に記載のコンピュータ実施方法。
【請求項11】
前記回転角度の推定値の
複数の値のうち各値
について、前記掃引演算を適用するステップ、又は
前記複数の値の中から最小の値を選択し、選択した値に前記掃引演算を適用するステップ
をさらに含む、請求項9又は10に記載のコンピュータ実施方法。
【請求項12】
前記グラフのそれぞれのノードについて、前記特定されたプリミティブタイプ及び前記領域のパラメータに基づく表面がインスタンス化された後で、
前記インスタンス化された表面がどの平面にも隣接していないことを検出するステップと、
前記メッシュの境界の外部に新しい平面をインスタンス化するステップと、
前記インスタンス化された表面と新しい平面の交差を計算するステップであって、この交差は新しい平面上にループを形成するステップと、
前記交差ループから少なくとも1つのスケッチを計算するステップと
をさらに含む、
請求項1乃至11のいずれか一項に記載のコンピュータ実施方法。
【請求項13】
請求項1乃至12のいずれか一項に記載の方法をコンピュータに実行させるための命令を含むコンピュータプログラム。
【請求項14】
請求項13に記載のコンピュータプログラムを記録したコンピュータ可読記憶媒体。
【請求項15】
メモリとグラフィカルユーザインターフェースに結合されたプロセッサを含むシステムであって、
前記メモリが、請求項13に記載のコンピュータプログラムを記憶し、
前記プロセッサが前記コンピュータプログラムを実行するシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はコンピュータプログラム及びシステムの分野に関し、より具体的には、メッシュから特徴木を抽出するための方法、システム、及びプログラムに関する。
【背景技術】
【0002】
物体の設計、エンジニアリング及び製造のために、多数のシステム及びプログラムが市場に提供されている。CADはコンピュータ支援設計の頭字語であり、例えば、オブジェクトを設計するためのソフトウェアソリューションに関する。CAEはコンピュータ支援エンジニアリングの頭字語であり、例えば、将来の製品の物理的挙動をシミュレートするためのソフトウェアソリューションに関連する。CAMはコンピュータ支援製造の頭字語であり、例えば、製造処理及び動作を定義するためのソフトウェアソリューションに関する。そのようなコンピュータ支援設計システムでは、グラフィカルユーザインターフェースが技法の効率に関して重要な役割を果たす。これらの技術は、製品ライフサイクル管理(PLM)システム内に組み込まれてもよい。PLMとは、企業が製品データを共有し、共通の処理を適用し、企業知識を活用して、長期的な企業のコンセプトを越えて、コンセプトから生涯にわたる製品の開発に役立てることを支援するビジネス戦略のことをいう。(CATIA、ENOVIA及びDELMIAの商標で)ダッソーシステムズによって提供されるPLMソリューションは、製品工学知識を編成するエンジニアリングハブと、製造工学知識を管理する製造ハブと、エンタープライズハブ及びエンジニアリングハブ及び製造ハブの両方への接続を可能にする企業ハブとを提供する。全体として、システムは最適化された製品定義、製造準備、生産、及びサービスを駆動する動的な知識ベースの製品作成及び意思決定サポートを可能にするために、製品、処理、リソースをリンクするオープン・オブジェクト・モデルを提供する。
【0003】
メッシュからの特徴木の構築(又は再構成)は専用ソフトウェア(例えば、CAD/CAE/CAM/PDM/などのシステム)において特徴木によって表される3Dモデルのさらなる3D設計演算を実行することを可能にする。特徴木は立体表現及び幾何学的プリミティブ(立方体、シリンダ、押出によるスケッチなど)に対する木編成演算(例えば、ブール演算)を指す。立体のこのタイプの表現は、コンストラクティブ立体ジオメトリアプローチ(CSG)のカテゴリに入る。既存のメッシュは、メッシュに含まれる暗黙の知識を抽出する目的で分析することができる。例えば、メカニカル部品のような現実世界の物体を表すメッシュは計測学的精密スキャニングによって生成することができるが、メッシュに暗黙的に含まれる意味論はモデリングソフトウェアによって活用することができない。別の例として、CADシステムはオブジェクトを製造するために使用されるツールマシンのツール移動をエミュレートすることができ、マシンコマンド及び仕様を含むファイルからメッシュを出力することができる。繰り返しになるが、特徴木を取得するためにこれらのファイルをリバースエンジニアリングすることは必ずしも不可能ではなく、非常に困難である。
【0004】
”Topology Reconstruction for B-Rep Modeling from 3D Mesh in Reverse Engineering Applications, 2012”において、Benieareらは、メッシュから十分な情報を抽出して、平均曲率を使用して正確なB-Repモデルを構築することに強く取り組んできた。B-Repは境界線を通じた確固たるものを定義する方法を指す。B-Rep定義は、それらの境界があいまいでない方法で、閉じたサブスペースを区切る場合に有効である。メッシュの中には、固形の有効な境界表現かもしれず、したがってB-Repに分類されるかもしれない。他方、時間B-Repの大部分はCADプログラムで使用される表現のタイプ、すなわち、結合された面のセットを指定するために使用され、それらの各々は、閉じた体積を定義する正確な記述を有する表面によって定義される。この表現はしばしば、厳密なB-Repと呼ばれる。メッシュ全体の曲率分布に関するメッシュの三角形上の曲率を解析することにより、それらはB‐Rep表現の面である潜在的候補であるサブメッシュを構築する。サブメッシュがそれらの隣接するものに接触しない場合、それらは、隣接する面の間の限界のいくつかを回復することができるまでそれらを拡張する。それらは、既に構築されたサブメッシュまでの距離の概念に基づいて三角形を集約することによってサブメッシュを拡張する。複雑で曲がりくねった形状では、この処理は有効な限界を回復することが保証されない。さらに、このアプローチは、CAD処理/特徴木ではなく、正確なB-Repを再構成することにのみ焦点を当てている。
【0005】
“Extraction of generative processes from B-Rep shapes and application to idealization transformations”, 2014において、FBoussugeらは、B-Rep表現から始まる「処理木」再構成について広範な研究を行ってきた。「処理木」というそれらの概念は、特徴木に類似している。処理木を構築するために、彼らはB-Repの面と面の交差を分析して、後で押出できるスケッチを構築する。彼らのアプローチは正確なB-Repがすでに利用可能であることを考慮し、それから処理木(単純化された特徴木)と呼ばれるものを構築する方法を考案する。しかしながら、結果として得られる処理木は立体追加に限定され、すなわち、減算演算は生成されない。正確なB-Repが利用可能であるため、アルゴリズムは反復的に進行する。すなわち、特徴立体が定義され、現在のB-Repから全体の立体が処理されるまで、ブーリアン演算によって削除される。このアプローチは初期入力が正確なB-Repでない場合には正確な立体と多面体立体との間のブール演算がサポートされる例を除いて、機能することができず、これは最新技術の例ではない。
【0006】
したがって、メッシュから特徴木を得ることができることは、高度なエディションを可能にし、CAD/CAE/CAM/PDM/..システムによって伝統的に提供される設計ツールの全範囲をサポートするので、非常に価値がある。
【0007】
この文脈の中で、メッシュから特徴木を抽出するための改善された方法が依然として必要とされている。
【発明の概要】
【0008】
したがって、メッシュから特徴木を抽出するためのコンピュータ実施方法が提供される。この方法は: メッシュを提供するステップ(S100)と、
前記提供されたメッシュの幾何学的及び隣接グラフを計算するステップ(S110)であって、当該グラフの各ノードはメッシュの1つの領域を表し、当該領域のプリミティブ、種類及びパラメータを含み、2つのノード間の各接続は2つの接続されたノードによって表される領域のそれぞれの表面間の交差である、計算するステップと、
グラフの各ノードに対し、定義されたプリミティブタイプ及び領域のパラメータに基づく表面をインスタンス化するステップ(S120)と、
前記グラフの各ノードに対し、1つの外部交差ループ及び、場合によっては、1つ以上の内部交差ループを計算するステップ(S132)であって、各交差ループは当該各ノードに接続されたグラフのノードが順序付けられたリストから得られる、計算するステップと、
前記グラフの各ノードに対し、外部交差ループから少なくとも1つのスケッチを計算するステップ(S134)であって、場合によっては、インスタンス化された表面の1つ又は複数の内部交差ループからそれぞれ1つ又は複数のスケッチを計算するステップと、
各計算スケッチに掃引演算を適用するステップ(S140)であって、各スケッチに対して立体を生成する、適用するステップと、
得られた立体間の追加又は削除演算の可能な組合せの集合を演算するステップ(S150)であって、演算された各組合せについて最終立体を得る、演算するステップと、
前記入力メッシュを用いて各最終立体の類似性スコアを計算するステップ(S160)と、
類似性スコアに基づいて入力メッシュと最も類似した最終立体を特定するステップ(S170)であって、特定された最も類似した最終立体の追加又は削除演算の組合せが、前記メッシュの特徴木に対応する、決定するステップと
を含む。
【0009】
この方法は、以下のうちの1つ又は複数を含むことができる。
・得られた立体間の追加又は削除演算の考えられる組合せの集合を計算するステップが、凸状の外部交差ループで生成された立体に対して追加演算を使用するステップと、凹状の外部の交差ループで生成された立体の削除演算を使用するステップと、
凹状の内部交差ループで生成された立体に対して追加演算を使用するステップと、
凸状の内部交差ループで生成された立体に対する削除演算を使用するステップとを含む。
・得られた立体間の追加又は削除演算の可能な組合せの集合を計算するステップが、さらに、・決定可能な凹部又は凹部を持たない外部交差ループを持つ生成された各立体について、追加と削除の両方の演算を使用するステップを含む。
・得られた立体間の追加又は削除演算の考えられる組合せの集合を計算するステップが、削除演算で使用される立体が追加演算で使用される単一の生成された立体の面にのみ隣接している場合、追加演算の後に削除演算を実行するステップと、・削除演算で使用される立体が追加演算で使用される2つ以上の生成された立体の面にのみ隣接している場合、追加演算の後に削除演算を実行するステップと、・追加演算で使用される立体が削除演算で使用される単一の生成立体の面にのみ隣接する場合、及び削除演算で使用される立体が追加演算で使用される単一の生成立体の面にのみ隣接する場合、又は追加演算で使用される2つ以上の生成立体の面にのみ隣接する場合、まず、削除演算で使用される立体に対する追加演算で使用される立体の削除演算を実行し、次に、最初に実行される削除の結果の削除演算のみを実行するステップとをさらに含む。
・各計算されたスケッチに掃引演算を適用し、各スケッチに対して立体を生成するステップが、スケッチごとに、スケッチの1つの外部の交差ループに隣接する交差ループと、スケッチの1つ以上の内部の交差ループに隣接する交差ループからの掃引方向と掃引長さを計算するステップを含む。
・掃引方向及び掃引長さの計算はスケッチの1つの外部交差ループ及び考えられる1つ又は複数の交差ループのそれぞれについて実行され、当該計算が、スケッチの交差ループの各々について、交差ループ上の一つ以上のスケッチ点を定義するステップであって、スケッチ点がスケッチの交差ループに隣接する交差ループに共通する点であるステップと、定義されたスケッチ点ごとに、スケッチの交差ループに隣接する交差ループに共通の点であるターゲット点を定義するステップと、スケッチ点をターゲット点に結合するベクトルをスケッチ点ごとに計算し、ベクトルの方向が掃引方向、ベクトルのノルムが掃引長と、の各交差ループを含むステップとを含む。
・2つ以上のベクトルが計算されたとき、ベクトルは同じ方向を持ち、かつスケッチの各交差ループに隣接する交差ループの表面はこの同じ方向に平行であるか判断するステップと、押し出しである掃引演算を適用して、スケッチの立体を生成するステップとをさらに含む。
・ベクトルのノルムの異なる値ごとに、掃引演算を適用するステップ、又は値の中から最小の値を選択し、選択した値に掃引演算を適用するステップをさらに含む。
・2つ以上のベクトルが計算されたとき、ベクトルが同じ方向を有し、かつスケッチの各交差ループに隣接する交差ループの1つ又は複数の表面が、この同じ方向に平行ではないか判定するステップと、スケッチの各交差ループに隣接しかつこの同じ方向に平行な交差ループのすべての面に対し共通の回転軸を検出するステップと、各スケッチ点とそれに対応するターゲット点の回転角度を推定するステップと、検出した共通の回転軸周りの回転である掃引演算を推定角度に適用するステップとをさらに含む。
・共通の回転軸を検出したとき、スケッチの交差ループに隣接する交差ループの表面が、シリンダ、円錐、球、及び/又はトーラスの中から選択されたタイプのプリミティブに属する場合、隣接する表面が回転軸で定義されることを検証するステップと、スケッチの交差ループに隣接する交差ループの表面がタイプ平面のプリミティブに属する場合、隣接する表面が回転軸に平行又は直交していることを検証するステップとをさらに含む。
・回転角度の推定値の異なる値ごとに、掃引演算を適用するステップ、又は値の中から最小の値を選択し、選択した値に掃引演算を適用するステップをさらに含む。
・前記グラフのそれぞれのノードについて、前記定義されたプリミティブタイプ及び前記領域のパラメータに基づく表面がインスタンス化された後で、表面がどの平面にも隣接していないことを検出するステップと、メッシュの境界の外部に新しい平面をインスタンス化するステップと、インスタンス化された表面と新しい平面の交差を計算するステップであって、この交差は新しい平面上にループを形成するステップと、交差ループから少なくとも1つのスケッチを計算するステップとをさらに含む。
【0010】
さらに、上記方法を実行するための命令を含むコンピュータプログラムが提供される。
【0011】
さらに、コンピュータプログラムが記録されたコンピュータ可読記憶媒体が提供される。
【0012】
さらに、メモリに結合されたプロセッサとグラフィカルユーザインターフェースとを含むシステムが提供され、メモリは、その上に記録されたコンピュータプログラムを有する。
【0013】
例えば、上記の方法は、メッシュから構造化3次元(3D)モデルを生成(又は計算)するためのコンピュータ実施方法と組み合わせることができる。メッシュから構造化3次元(3D)モデルを計算する(又は生成する)ための方法は面を含むメッシュを提供することを含み、メッシュの各面は法線及び主曲率値を含み、離散化曲率値の発生数をカウントすることによってメッシュ全体にわたる主曲率値の分布を計算し、計算された分布において、主曲率値の1つ又は複数の支配的範囲を定義し、定義された支配的範囲ごとに、定義された支配的範囲に属する面を含むメッシュの1つ又は複数の領域を計算し、計算された領域ごとに、領域のすべての面の曲率値を使用することによってプリミティブタイプを検出し、領域のメッシュ表面を使用することによって検出されたプリミティブのパラメータを定義する。メッシュから構造化三次元(3D)モデルを計算する(又は生成する)ための方法は、以下の1つ又は複数を含むことができる。
・提供されたメッシュの構造化3D表現の幾何学的及び隣接グラフを構築するステップであって、グラフの各ノードは計算された領域のうちの1つを表し、定義されたプリミティブタイプ及び領域のパラメータを含み、2つのノード間の各接続は、ノードによって表される領域のそれぞれの表面間の交差である。
・幾何学的及び隣接グラフの構築は各接続について、2つのノード間の各接続がノード間の接続ごとに、関連する凸部、凹部、及び位置情報を有するノードによって表される領域のそれぞれの表面間の交差であるステップをさらに含む。
・主曲率値の1つ以上の支配的範囲の計算された分布における定義は、計算された分布において、2つの連続する極小間の極大を決定するステップと、2つの連続する極小間に含まれる面を、前記1つ以上の支配的範囲に属するものとして定義するステップとを含む。
・一方、極大値に対する出現数は所定の値に等しく及び/又はそれ以上であり、計算された分布における決定と、前記1つ以上の支配的範囲に属するものとしての面の定義とを繰り返し、各繰り返しの前に、前記1つ以上の支配的範囲に属するものとして以前に定義された面は廃棄され、それらの主曲率値による面の分布が再計算される。
・各面の主曲率値は最小曲率値及び最大曲率値を含み、面の分布を計算するステップは離散化された曲率値の発生数をカウントすることによってメッシュ全体にわたる最小曲率値の第1の分布を計算するステップと、離散化された曲率値の発生数をカウントすることによってメッシュ全体にわたる最大曲率値の第2の分布を計算するステップとを含み、方法の後続のステップは、第1及び第2の分布に対して実行される。
・ガウスカーネルを適用するステップにより、結果として得られる分布になる。
・各計算された領域に対して、領域成長を適用するステップであって、成長は面間の距離によって導かれ、距離は曲率値によって重み付けされて、計算された領域にまだ割り当てられていない全ての面を集約する。
・領域成長は同じ第1のスコアを面の第1のセットの面に割り当てるステップと、計算された領域のいずれにも属さない面を含む面の第1のセットと、計算された領域のうちの1つに属する各面に対してゼロの同じ第2のスコアを割り当てるステップと、第1のスコアが第2のスコアよりも大きい第1のセットの面をテストするステップと、面の各隣接領域について、面と隣接領域との間の距離及び面と隣接領域との間の主曲率値の差に基づいて第3のスコアを計算するステップと、第3のスコアが第1のスコアよりも小さい場合、第1のスコアを第3のスコアに設定し、第3のスコアが対応する領域を記録するステップと、近傍が面の第1のセットに属さない場合、第3のスコアが第1のスコアよりも大きい場合、テストされた面を第1のセットから削除することと、初期に第1のセットに含まれるテストされた面を、それらが持っている最高の3番目のスコアに関連する領域と共に再グループ化するステップと、を含む。
・2番目のセットのすべての面がテストされると、テストは停止する。
・メッシュの領域を計算した後、計算された領域間の交差ループを計算する。
・交差ループの計算後、各交差ループについて、この交差ループを構成する領域の順序付けられたリストを収集し、前記交差ループの各エッジについての凹部、凸部、及び位置情報を収集する。
・領域の表面を使用することによってプリミティブのパラメータを定義するステップは、検出されたプリミティブのパラメータを、それらのパラメータの最小の最適化で推定するステップを含む。
【0014】
メッシュから構造化三次元(3D)モデルを生成する方法を実行するための、又はメッシュから構造化三次元(3D)モデルを生成し、メッシュから特徴木を抽出する両方の方法を実行するための命令を含むコンピュータプログラムがさらに提供される。
【0015】
さらに、メッシュから構造化三次元(3D)モデルを生成する方法、又はメッシュから構造化三次元(3D)モデルを生成し、メッシュから特徴木を抽出する両方の方法を実行するためのコンピュータプログラムが記録されたコンピュータ可読記憶媒体が提供される。
【0016】
さらに、メモリ及びグラフィカルユーザインターフェースに結合されたプロセッサを備えるシステムが提供され、メモリは、メッシュから構造化3次元(3D)モデルを生成する方法を実行するための、又はメッシュから構造化3次元(3D)モデルを生成する方法とメッシュから特徴木を抽出する方法の両方を実行するためのコンピュータプログラムをその上に記録している。
【図面の簡単な説明】
【0017】
【
図1】メッシュの構造化3D表現を取得するための方法の一例のフローチャートを示す。
【
図3】本発明による方法と従来技術との比較例を示す。
【
図4】生メッシュの一例のスクリーンショットを示す。
【
図5】
図4の生メッシュの再メッシュ化の一例のスクリーンショットを示す。
【
図7】
図5のメッシュの主曲率のスクリーンショットを示す。
【
図8】
図5のメッシュの主曲率のスクリーンショットを示す。
【
図10】
図5のメッシュの主曲率値分布の例を示す。
【
図11】
図5のメッシュの関心のある曲率値範囲のスクリーンショットを示す。
【
図12】
図5のメッシュの均一な曲率の領域のスクリーンショットを示す。
【
図13】
図5のメッシュの均一な曲率の領域のスクリーンショットを示す。
【
図14a】領域成長処理の前後を示すスクリーンショットである。
【
図14b】領域成長処理の前後を示すスクリーンショットである。
【
図15a】領域成長処理の前後を示すスクリーンショットである。
【
図15b】領域成長処理の前後を示すスクリーンショットである。
【
図16】平面エンティティの主曲率値分布の一例を示す図である。
【
図17】円筒体の主曲率値分布の一例を示す図である。
【
図18】メッシュからの構造化3次元(3D)モデルの表現のスクリーンショットである。
【
図19】本発明による方法の一例のフローチャートを示す。
【
図20】隣接情報と交差の指向ループの一例を示す図である。
【
図21】ループから導出されたスケッチの例である。
【
図22】頂点位置を使用して解決される曖昧さの例である。
【
図23】頂点位置を使用して解決される曖昧さの例である。
【
図25】スケッチ点からの押出距離及び方向の一例を示す図である。
【
図26】
図25の距離及び方向で押し出された立体の例を示す。
【
図27】スケッチ点からの回転角度の一例を示す図である。
【
図29】2つの異なる押出方向が決定される状況の例を示す。
【
図30】スケッチ構築のために追加平面が追加される状況の一例を示す。
【
図31】凹凸情報からのブール演算選択の追加又は削除の4つの例を示す。
【
図32】押出方向及び凹凸情報に基づくブール演算の追加又は削除を示す。
【
図33】削除演算の位置を特徴木内で指定することができる状況の例を示す。
【
図34】削除演算の位置を特徴木内で指定することができる状況の例を示す。
【
図35】削除演算の位置を特徴木内で指定することができる状況の例を示す。
【発明を実施するための形態】
【0018】
図19のフローチャートを参照すると、メッシュから特徴木を抽出するためのコンピュータ実施方法が提案されている。この方法はメッシュ、例えば、計測精密走査によって得られる生メッシュを提供することを含む。この方法はまた、提供されたメッシュの幾何学的及び隣接グラフを計算することを含む。提供されたメッシュの幾何学的及び隣接グラフでは、各ノードはメッシュの1つの領域を表し、各ノードは領域のプリミティブタイプ及びパラメータを含む。さらに、幾何学的及び隣接グラフにおいて、2つのノード間の各接続は、2つの接続されたノードによって表される領域のそれぞれの表面間の交差を表す。この方法は、グラフの各ノードについて表面をインスタンス化することをさらに含む。インスタンス化は、領域の定義されたプリミティブタイプ及びパラメータに基づいて行われる。次に、この方法は、グラフの各ノードについて以下の計算を実行することをさらに含む。(a)1つの外部交差ループが計算され、場合によっては1つ又は複数の内部交差ループが計算され、1つの外部交差ループ及び可能な1つ又は複数の内部交差ループが第1及び第2の動作が実行される現在のノードに接続されたグラフのノードの順序付けられたリストによって取得される。(b)少なくとも1つのスケッチが外部交差ループから計算され、場合によっては1つ又は複数のスケッチがインスタンス化された表面の可能な1つ又は複数の内部交差ループからそれぞれ計算される。この方法はまた、各計算されたスケッチに掃引演算を適用し、それによって各スケッチに対して立体を生成することを含む。さらに、この方法は、得られた立体間の追加又は削除演算の可能な組合せの
集合を計算することと、演算された各組合せについて最終立体を得ることとを含む。本方法はまた、入力メッシュとの各最終立体の類似性スコアを計算するステップと、類似性スコアに基づいて入力メッシュとの最も類似した最終立体を定義するステップと、メッシュの特徴木に対応する定義された最も類似した最終立体の追加又は削除演算の組合せとを含む。
【0019】
このような方法は、メッシュからの特徴木の抽出を改善する。特に、特徴木の再構成は、メッシュの幾何学的及び隣接グラフを生成するためにメッシュに対して実行される強化された分析演算の結果に依存する。これは、最初に中間の正確なB-Repを生成することなく、特徴木を直接生成することを可能にする。B-Rep構築ソリューションはしばしば脆弱であり、すなわち、提供されるメッシュの品質に応じて、完全に成功するか、又は立体の有効な構造化表現を生成することができない。本手法において、提供されたメッシュの計算された幾何学的及び隣接グラフがメッシュの品質にあまり影響されない。さらに、この方法はCADモデラをパイロットするために、指向ループのエッジをインスタンス化する。これは一連の平面スケッチをもたらし、これらはその後、押し出されるか、又は回転される。次に、結果として得られる特徴立体は、ブール演算を介して結果として得られる特徴木にアセンブルされる。したがって、この方法は計算されたスケッチに対する複数の可能な交差ソリューションを区別するために、初期メッシュとの対応関係を利用する。幾何学的及び隣接グラフはまた、インスタンス化されたスケッチに基づいて押出距離及び回転角度を計算するために利用される。凹凸情報は、生成された特徴立体が最終特徴木内の物質を追加又は削除するかどうかを決定するために使用される。
【0020】
したがって、この方法は幾何学的形状及びメッシュ解析によって得られた隣接グラフから最も関連性のある情報を抽出することができ、定義によって有効な立体につながる一連の演算を導出することができる特徴木ビルダを提供する。中間ステップとして有効なB-Repを(再)構築することは必要ではなく、したがって、有効なB-Repを(再)構築することの既知の欠点は回避される。
【0021】
さらに、この方法は、生成されたすべての立体が明確に定義され、水密であることを保証する。これは、メッシュ分析によって得られた情報が完全なB-Repを再構築することに失敗した場合に特に興味深い。不完全なメッシュデータ、幾何学的複雑性、及びノイズは不正確な隣接グラフにつながり、したがって、他の方法では無効なB-Repにつながる可能性がある。これに対して、本方法はメッシュから十分な情報を抽出することができる限り、有効な立体を生成する。特徴木の構築のために幾何学的形状の使用可能な部分をチェリーピッキングすることによって、この方法は脆くなくなり、有効で有意義な立体を構築する。たとえそれらの部分が元のメッシュの完全な詳細を必ずしも反映しないとしても(例えば、提供されたメッシュが不完全である場合)、それらの部分はモデリング演算のための有効な基礎として働くことができ、任意の使用のための拡張によって、従来の正確なCADモデルを作ることができる。たとえば、ユーザは結果の一部を中間ステップとしてのみ使用し、パラメータを使用して要素を編集することができる。
【0022】
したがって、既知の方法と本方法との間の差異を示す
図3に示すように、本方法は計算が困難(又は不可能)であり、入力として正確なB-Repモデル(多くの計算資源(例えば、CPU及びメモリ)を必要とする)を必要とせず、本方法は、メッシュを入力とすることができる。さらに、スケッチから計算される立体は、単一のパスで生成され、したがって、反復解と比較して計算資源の消費を低減する。
【0023】
この方法は、コンピュータで実施される。これは、該方法のステップ(又は実質的に全てのステップ)が少なくとも1つのコンピュータ又は任意のシステムによって実行されることを意味する。したがって、本方法のステップはコンピュータによって、場合によっては完全に自動的に、又は半自動的に実行される。例において、方法のステップのうちの少なくともいくつかのトリガがユーザ/コンピュータ対話を介して実行され得る。必要とされるユーザ/コンピュータ対話のレベルは予測される自動化のレベルに依存し、ユーザの希望を実施する必要性とバランスをとることができる。例において、このレベルがユーザ定義及び/又は事前定義され得る。
【0024】
例えば、メッシュを提供するステップは、例えばデータベースに記憶されたメッシュのユーザ選択の結果であってもよい。
【0025】
方法のコンピュータ実装の典型的な例は、この目的のために適合されたシステムを用いて方法を実行することである。システムはメモリに結合されたプロセッサと、グラフィカルユーザインターフェース(GUI)とを備えることができ、メモリには、本方法を実行するための命令を含むコンピュータプログラムが記録されている。メモリはまた、データベースを記憶してもよい。メモリはそのような記憶装置に適合された任意のハードウェアであり、場合によっては、いくつかの物理的に別個の部分(例えば、プログラムのための部分、及び場合によってはデータ断片ベースのための部分)を備える。
【0026】
CADシステムとは、さらに、CATIAのような、モデル化オブジェクトのグラフィック表現に基づいてモデル化オブジェクトを少なくとも設計するように適合された任意のシステムを意味する。この場合、モデル化オブジェクトを定義するデータは、モデル化オブジェクトの表現を可能にするデータを含む。CADシステムは例えば、ある場合には、面又は表面を有するエッジ又は線を使用してCADモデル化オブジェクトの表現を提供することができる。線、エッジ、又は表面は様々な方法、例えば、不均一有理Bスプライン(NURBS)で表すことができる。具体的には、CADファイルは仕様を含み、そこから幾何学的形状を生成することができ、これにより表現を生成することができる。モデル化オブジェクトの仕様は、単一のCADファイル又は複数のCADファイルに格納することができる。CADシステム内のモデル化オブジェクトを表すファイルの典型的なサイズは、部品当たり1メガバイトの範囲内である。そして、モデル化オブジェクトは、典型的には何千もの部品のアセンブリであり得る。
【0027】
CADの文脈では、モデル化オブジェクトが典型的には例えば、部品又は部品のアセンブリ、又は場合によっては製品のアセンブリなどの製品を表す3Dモデル化オブジェクトとすることができる。「3Dモデリングされたオブジェクト」とは、その3D表現を可能にするデータによってモデリングされる任意のオブジェクトを意味する。3D表現は、全ての角度から部品を見ることを可能にする。例えば、3Dモデル化オブジェクトは3D表現される場合、その軸のいずれかの周り、又は表現が表示される画面内のいずれかの軸の周りで取り扱われ、回転され得る。これは特に、3Dモデル化されていない2Dアイコンを除外する。3D表現の表示は設計を容易にする(すなわち、設計者が統計的に彼らのタスクを達成する速度を増加させる)。これは、製品の設計が製造工程の一部であるため、産業界における製造工程を高速化する。
【0028】
メッシュ(及び、伸長によって、生成された構造化3Dモデル)は例えば、(例えば、機械的である)部品又は部品のアセンブリ(又は、同等に部品のアセンブリが本方法の観点からは部品自体として見ることができ、又は本方法はアセンブリの各部分に独立して適用することができるので、部品のアセンブリ)、又はより一般的には任意の剛体アセンブリ(例えば、可動機構)などのCADソフトウェアソリューション又はCADシステムを用いた仮想設計の完了後に、現実世界で製造される製品の幾何学的形状を表すことができる。また、メッシュは製品のスキャンに続いて現実世界で製造される製品の幾何学的形状を表すことができ、例えば、メッシュは、メッシュ編集を可能にするソフトウェアで実行される、計測精度スキャン、後続のメッシュ設計演算から得られる。また、メッシュは、工作機械データファイル、3Dプリンタファイル、計測装置データファイルから取り出した後の、現実世界で製造される製品の幾何学的形状を表すこともできる。メッシュはまた、専用のメッシュソフトウェアによって処理された、又は3D視覚化のための資産を生成することができるデジタルコンテンツ作成ツールで作成された点群の後に、現実世界で製造される製品の幾何学的形状を表すことができる。
【0029】
メッシュ(及び、伸長によって、生成された構造化3Dモデル)は、航空宇宙、建築、建築、消費財、ハイテク装置、産業機器、輸送、海洋、及び/又は沖合の石油/ガス生産又は輸送を含む、種々無制限の産業分野における製品を表すことができる。したがって、生成された構造化3Dモデルは陸上車両の一部(例えば、自動車及び軽トラック機器、レーシングカー、オートバイ、トラック及びモータ機器、トラック及びバス、列車を含む)、航空車両の一部(例えば、機体機器、航空宇宙機器、推進機器、防衛機器、航空機機器、宇宙機器を含む)、海上車両の一部(例えば、海軍機器、商用船、オフショア機器、ヨット及び作業船を含む)、一般機械部品(例えば、産業製造機械、重移動機械又は機器、設置機器、産業機器、製品、加工金属製品、タイヤ製造製品を含む)、電気機械又は電子部品(例えば、家庭用電化製品、セキュリティ及び/又は制御装置及び/又は計装製品、コンピュータ及び通信機器、半導体、医療デバイス及び機器を含む)、消費財(例えば、以下を含む)などの任意の機械部品であってもよい工業製品、家具、家庭用品、レジャー用品、ファッション用品、ハードグッズ小売業者の製品、ソフトグッズ小売業者の製品、包装(例えば、食品及び飲料及びタバコ、美容及びパーソナルケア、家庭用品包装を含む)を表してもよい。
【0030】
CADシステムは、履歴ベースであってもよい。この場合、モデル化オブジェクトは、幾何学的特徴の履歴を含むデータによってさらに定義される。モデル化オブジェクトは実際には標準的なモデリング特徴(例えば、押し出し、回転、切断、及び/又は円形)及び/又は標準的な表面特徴(例えば、掃引、ブレンド、ロフト、充填、変形、及び/又は平滑化)を使用して、物理的な人物(すなわち、設計者/ユーザ)によって設計されてもよい。このようなモデリング機能をサポートする多くのCADシステムは、履歴ベースのシステムである。これは、設計特徴の作成履歴が典型的には入出力リンクを介して前記幾何学的特徴を一緒にリンクする非循環データフローを介して保存されることを意味する。履歴ベースのモデリングパラダイムは、80年代の始まりから周知である。モデル化オブジェクトは履歴及びB-Rep(すなわち、境界表現)という2つの永続的なデータ表現によって記述される。B-Repは、履歴に定義された計算の結果である。モデル化オブジェクトが表現されるときにコンピュータのスクリーン上に表示される部品の形状はB-Rep(のテッセレーション)である。部品の履歴は設計意図である。基本的に、履歴は、モデル化オブジェクトが受けた演算に関する情報を収集する。B-repは複雑な部品を表示しやすくするために、履歴とともに保存される場合がある。設計意図に応じた部品の設計変更を可能にするため、B-repと共に履歴を保存することがある。
【0031】
PLMシステムとは、さらに、物理的に製造された製品(又は製造される製品)を表すモデル化オブジェクトの管理に適合された任意のシステムを意味する。したがって、PLMシステムでは、モデル化オブジェクトが物理的オブジェクトの製造に適したデータによって定義される。これらは、典型的には寸法値及び/又は公差値であってもよい。オブジェクトを正確に製造するためには、このような値を有することが実際に好ましい。
【0032】
CAMソリューションとは、さらに、製品の製造データを管理するように適合された任意のソリューション、ハードウェアのソフトウェアを意味する。製造データは一般に、製造する製品、製造工程、及び必要な資源に関するデータを含む。CAMソリューションは製品の製造処理全体を計画し、最適化するために使用される。例えば、CAMユーザに、製造処理の実現可能性、製造処理の継続時間、又は製造処理の特定のステップで使用することができる特定のロボットなどのリソースの数に関する情報を提供することができ、したがって、管理又は必要な投資に関する決定を可能にする。CAMは、CAD処理及び潜在的CAE処理の後の後続処理である。このようなCAMソリューションは、ダッソーシステムズによってDELMIA(登録商標)の商標で提供されている。
【0033】
CAEソリューションとは、さらに、モデル化オブジェクトの物理的挙動の分析に適合された任意のソリューション、ハードウェアのソフトウェアを意味する。よく知られ、広く使用されているCAE技法は有限要素法(FEM)であり、これは、典型的にはモデル化オブジェクトを、物理的挙動を計算し、式によってシミュレートすることができる要素に分割することを含む。このようなCAEソリューションは、ダッソーシステムズによって、SIMULIA(登録商標)の商標で提供されている。別の成長するCAE技術は、CADジオメトリデータなしで物理学の異なる分野からの複数の構成要素を構成する複雑なシステムのモデリング及び分析を伴う。CAEソリューションはシミュレーションを可能にし、したがって、製品の最適化、改善、及びバリデーションを製造することを可能にする。このようなCAEソリューションは、ダッソーシステムズによってDYMOLA(登録商標)の商標で提供されている。
【0034】
PDMは、製品データ管理を意味する。PDMソリューションとは、特定の製品に関連するすべてのタイプのデータを管理するように適合された任意のソリューション、ハードウェアのソフトウェアを意味する。PDMソリューションは、製品のライフサイクルに関与するすべての行為者(主にエンジニアだけでなく、プロジェクトマネージャー、ファイナンス担当者、販売担当者、及び購入者も含む)によって使用され得る。PDMソリューションは一般に、製品指向データベースに基づく。それは、行為者が彼らの製品に関する一貫性のあるデータを共有することを可能にし、したがって、行為者が異なるデータを使用することを防ぐ。このようなPDMソリューションは、ダッソーシステムズによってENOVIA(登録商標)という商標で提供されている。
【0035】
図2は、この方法を実行するためのシステムの一例を示す。本例のシステムはメモリ、例えば、ランダムアクセスメモリ1070に通信可能に結合された中央処理装置1010を含む。この例において、CPUとメモリが内部通信バス1000を介して通信する。クライアントコンピュータはさらに、バスに接続されたビデオランダムアクセスメモリ1100に関連付けられたグラフィカルプロセッシングユニット(GPU)1110を備えることができる。ビデオRAM1100は、当技術分野ではフレームバッファとしても知られている。大容量記憶装置の制御装置1020は、ハードドライブ1030などの大容量記憶装置へのアクセスを管理する。コンピュータプログラム命令及びデータを有形に具現化するのに適した大容量メモリデバイスは、例として、EPROM、EEPROM、及びフラッシュメモリデバイスなどの半導体メモリデバイス、内部ハードディスク及びリムーバブルディスクなどの磁気ディスク、光磁気ディスク、ならびにCD-ROMディスク1040を含む、すべての形態の不揮発性メモリを含む。前述のいずれも、特別に設計されたASIC(特定用途向け集積回路)によって補足されるか、又はその中に組み込まれてもよい。ネットワークアダプタ1050は、ネットワーク1060へのアクセスを管理する。クライアントコンピュータは、カーソル制御デバイス、キーボードなどの触覚デバイス1090も含むことができる。ユーザがディスプレイ1080上の任意の所望の位置にカーソルを選択的に位置決めすることを可能にするために、カーソル制御装置がクライアントコンピュータ内で使用される。さらに、カーソル制御装置はユーザが様々なコマンドを選択し、制御信号を入力することを可能にする。カーソル制御装置は、システムに制御信号を入力するための多数の信号発生装置を含む。典型的にはカーソル制御装置がマウスであってもよく、マウスのボタンは信号を生成するために使用される。代替的に、又は追加的に、クライアントコンピュータシステムは、センシティブパッド及び/又はセンシティブスクリーンを備えることができる。
【0036】
コンピュータプログラムはコンピュータによって実行可能な命令を含むことができ、命令は、上記装置に該方法を実行させるための手段を含む。プログラムは、システムのメモリを含む任意のデータ記憶媒体に記録可能であってもよい。プログラムは例えば、デジタル電子回路において、又はコンピュータハードウェア、ファームウェア、ソフトウェアにおいて、又はそれらの組み合わせにおいて実装されてもよい。プログラムは装置、例えば、プログラマブルプロセッサによる実行のための機械可読記憶デバイスに有形に具現化された製品として実装されてもよい。方法のステップは入力データ断片に対して動作し、出力を生成することによって、方法の機能を実行するための命令のプログラムを実行するプログラマブルプロセッサによって実行されてもよい。したがって、プロセッサはプログラム可能であり、データ断片記憶システム、少なくとも1つの入力デバイス、及び少なくとも1つの出力デバイスからデータ断片及び命令を受信し、それらにデータ断片及び命令を送信するように結合され得る。アプリケーションプログラムは、高レベルの手続き型又はオブジェクト指向プログラミング言語で、あるいは必要に応じてアセンブリ言語又は機械語で実装することができる。いずれの場合も、言語は、コンパイルされた言語又は解釈された言語であってもよい。プログラムはフルインストールプログラムであってもよいし、更新プログラムであってもよい。システム上にプログラムを適用すると、いずれにしても、この方法を実行するための命令が得られる。
【0037】
「メッシュから特徴木を抽出する」ことは、3Dモデル化オブジェクトを作成する処理の少なくとも一部である。したがって、この方法は、最初からメッシュを作成することを含むことができる。本方法は製造工程に含まれてもよく、製造工程は本方法を実行した後に、生成された構造化3Dモデルから新しい3Dモデル化オブジェクトを生成することを含んでもよい。新しい3Dモデル化オブジェクトは、物理的製品を表す。いずれの場合も、本方法の入力におけるメッシュ及び生成された構造化3Dモデルは、部品又は部品のアセンブリなどの製品である製造物を表すことができる。この方法は生のメッシュからモデル化オブジェクトの設計を可能にするので、この方法はまた、製品の製造を改善し、したがって、製造処理の生産性を増加させる。
【0038】
特徴木は、3次元(3D)立体モデルに対して実行された立体演算の履歴を含む階層構造である。各立体演算は、立体上の特徴として定義される。スケッチ(及び方向/長さ/角度パラメータ)から立体を生成する押出/回転演算も、特徴木の特徴である。演算は、追加演算又は削除演算などのブール演算である。ブール演算を適用するために使用される立体は、典型的には押出演算が適用されるスケッチから得られる。一例において、特徴木がCSG(Constructive solid geometry)特徴木である。CSGモデリングは、複雑なオブジェクトを生成するために単純なオブジェクトを結合するためのブール演算を使用することを含む立体モデリングで使用される周知の技法である。表現に使用される最も単純な立体オブジェクトは、直方体、シリンダ、プリズム、ピラミッド、球、円錐などの単純な形状を有するプリミティブと呼ばれる。
【0039】
CADの分野から知られているように、特徴木は、葉の幾何学的形状に適用される幾何学的演算の木配列を表すデータを含む編集可能なデータ構造である。特徴木構成の各リーフノードはそれぞれのリーフ幾何学形状を表し、ツリー構成の各非リーフノードは、その子ノードに適用される「特徴」とも呼ばれるそれぞれの幾何学演算を表す。したがって、幾何学的演算の木配列をリーフ幾何学的形状に適用することは、リーフ幾何学的形状から開始し、木配列に続く各非リーフノードの幾何学的演算を連続的に適用することになる。編集可能な特徴木で表される3D形状は、編集可能な特徴木のルートノードの結果に対応する。
【0040】
リーフの幾何学的形状は、どのようなタイプのものであってもよい。リーフの幾何学的形状は例えば、各々が、対応する3D立体のような対応する3D形状を含む(例えばからなる)ことができる。幾何学的演算は、任意のタイプであってもよい。例において、幾何学的演算がすべて同じタイプのものであり、例えば、すべての追加又は削除演算である。
【0041】
リーフの幾何学的形状又は幾何学的演算の編集は、現在のパラメータ値を有する少なくとも1つのパラメータの選択及び前記パラメータ値の変形例を含むなど、CADの分野から知られている任意の方法で、ユーザによって実行されてもよい。このような編集は、未加工のメッシュのような離散的な幾何学的表現の編集と比較して、人間工学的特性を提示している。特に、編集可能な特徴木は入力メッシュの離散的な幾何学的エンティティの数よりも5よりも高い因子(例えば、10よりも高い)だけ少ない数のリーフ幾何学的形状、及び/又は100よりも低い数のリーフ幾何学的形状(例えば、50よりも低い)を含むことができる。各リーフの幾何学的形状は20未満(例えば、10未満)の多数のパラメータによって定義されてもよい。したがって、編集可能な特徴木は、離散的な幾何学的表現と比較して、よりコンパクトで組織化された方法で3D形状を表す。また、CADの分野から知られているように、編集可能な特徴木の単一のパラメータに作用することは全体的な影響を与えることができ、一方、単一の幾何学的エンティティに作用する離散幾何学的表現の場合には局所的な影響のみを与える。例えば、本明細書の任意の編集可能な特徴木は多数のメッシュ三角形を移動/増加させるのとは対照的に、5未満(例えば、3未満)の多数のパラメータ値を修正することによって、3D形状の(例えば、湾曲した、例えば、円筒形の)部分又は全体をスケールアップするように構成されてもよい。さらに、編集可能な特徴木は、離散的な幾何学的表現よりもユーザにとって意味がある。
【0042】
図19に戻って、この方法の一例を説明する。S100において、メッシュが提供される。メッシュの特性は、
図1を参照して議論されてきた。メッシュは、3角形及び四角形を含む多角形表現を使用して、3D形状又は3D形状の少なくとも一部を定義する頂点、エッジ、及び面を備える。3D形状は立体物を表す。3D形状は航空宇宙、建築、建築、消費財、ハイテクデバイス、産業機器、輸送、海洋、及び/又は沖合の石油/ガス生産又は輸送を含むが、これらに限定されない、種々無制限の産業分野における製品を表す。
【0043】
提供されるメッシュの各面は法線を含む。面の法線は当技術分野で知られているように、面に垂直な方向である。例において、法線は頂点法線であってもよい。
【0044】
提供されるメッシュの各面は主曲率値を含む。面の所与の点における主曲率値は当該技術分野で知られているように、点における形状演算子の固有値である。主曲率値は、表面がその点で異なる方向に異なる量だけどのように曲がるかを測定する。面の最大曲率値及び最小曲率値は、面の主曲率値と呼ばれる。
【0045】
図6(K. Crane著「Discrete differential geometry: an applied introduction」から引用)は、基準(N,X1,X2)の原点に位置する表面の所与の点における曲率の一般化された表現である。軸Nは前記与えられた点における表面への法線を表し、X1及びX2は、この事例において、最小及び最大曲率が計算される方向である。
【0046】
例において、提供されるメッシュが多角形表現が類似の寸法ではなく、十分に平衡化されている場合、生のメッシュであってもよい。例えば、生のメッシュは、薄い三角形を含んでもよく、又は非多様体であってもよく、又は一定の垂直配向を有する可能性がある。生メッシュという用語は、法線及び主曲率値に関する情報が存在しないか又は部分的に存在する場合にも適用される。より一般的には、本方法が正しく振る舞い、3D立体の有効な表現であるメッシュ上に有用な結果(たとえ時には部分的であっても)を生成し、例えば、3D立体は自動交差を伴わずに、閉じた、配向可能な多様体表面を形成することができる。この方法はまた、閉じられていないメッシュを用いて興味深い結果を生成する。
図4は、多角形表現として三角形を有する生メッシュの例を示す。得られた生のメッシュはそれがT接合部を有するので、特にクリーンではない。すなわち、メッシュは、2つの多角形が別の多角形のエッジに沿って出会うスポットを含む。さらに、法線及び主曲率値に関する情報は入手できない。
【0047】
例において、この方法が提供されたメッシュを再メッシュ化することをさらに含むことができる。これは、メッシュの品質を改善することを可能にし、すなわち、面は同様の寸法であり、十分に平衡化され、例えば、薄い三角形は存在しない。多くの利用可能な方法が存在し、例えば、変分アプローチは、本方法のための良好に挙動するメッシュを生成する傾向があり得る。
図5は、
図4の生メッシュ上で実行された再メッシュ化動作の後に得られるメッシュの例を示す。
【0048】
さらに、生のメッシュを再メッシュ化することにより、主曲率値の評価が改善される。実際、曲率は例えばコタンジェント法のような手順を使用して、三角形メッシュのような離散的な3D表現上で評価することができ、これらの手順の大部分は面(典型的には三角形)が類似しており、十分に平衡化されているメッシュ上でより良好な結果を提供する傾向がある。
【0049】
実施例において、離散形状(再メッシュ化されたメッシュの面)上の主曲率値の評価が任意の既知の方法で実行される。正規は主曲率値の評価と同時に、又はその前又は後に評価されてもよい。
【0050】
図7及び
図8は、
図5のメッシュについて定義(計算)された、それぞれ最大の、最小の曲率値70をそれぞれ80示している。
【0051】
提供されたメッシュは体積の境界を正しく表し、したがって、その体積に関して一貫性のある向き情報を含むと仮定される。
【0052】
図19に戻って、提供されたメッシュの幾何学的及び隣接グラフが計算される(S110)。グラフは、提供されたメッシュの構造化3Dモデルの表現を提供する。グラフは提供されたメッシュの分析の結果であり、この分析の結果として以下を提供する。
・グラフの各ノードがメッシュの1つの領域を表し、領域のプリミティブタイプとパラメータを含む、ノードのセット。
・2つのノード間の各接続は、2つの接続されたノードによって表される2つの領域の表面間の交差である。
【0053】
メッシュの領域は、提供されたメッシュの集合面である。したがって、領域は、メッシュの境界が定められた表面を形成する。グラフの各ノードはプリミティブタイプに関連付けられている。プリミティブは、他の形状を構築することができるビルディングブロックである。プリミティブは一般に、3Dモデル化オブジェクトを構築するための3Dモデル化において使用される。例えば、2D多角形(例えば、正方形、長方形)は3D体積(例えば、正方形パッド又は長方形パッド)を形成するために押し出すことができるプリミティブである。プリミティブには平面、円柱、球体、角錐、円錐、四角形、罫線表面、トーラスがあるが、これらに限定されない。プリミティブのセットは、工業製品、例えばメッシュによって表されるものを記述することを可能にする。
【0054】
さらに、グラフの各ノードは、プリミティブのパラメータを含む。プリミティブのパラメータは、プリミティブをインスタンス化できるプリミティブの特性を決定する。例えば、当技術分野で知られているように、以下のとおりである。
・プリミティブ平面のパラメータは、平面の法線と平面上にある点である。
・プリミティブ球のパラメータは、中心と半径である。
・プリミティブシリンダのパラメータは、軸の方向、シリンダの高さ、円の中心及び半径である。
・プリミティブ円錐のパラメータは、軸方向、円錐の高さ、円錐ベースの中心及び半径である。
・プリミティブトーラスのパラメータは、方向ベクトル、中心、大円の半径、小円の半径である。
【0055】
したがって、各ノードは、「標準」幾何学的形状(プリミティブ)と、「標準」幾何学的形状をインスタンス化することができるパラメータとに関連付けられ、各パラメータはプリミティブをインスタンス化するために使用される1つ又は複数のパラメータ値を含む。単純化のために、「パラメータ」及び「パラメータ値」という用語は同義語である。
【0056】
グラフは、2つのノード間又はノードのペア間の接続も構成する。接続は2つの領域のそれぞれの表面間の交差を表し、それぞれは、2つの接続されたノードのうちの1つによって表される。2つの領域間の交差は、表面が2つの領域の交差である表面対表面交差(SSI)とも呼ばれる。2つの表面が交差するとき、結果は、孤立点のセット、曲線のセット、又はこれらの場合の任意の組合せとすることができる。
【0057】
領域と他の領域との交差は、領域を境界付ける。交差は、少なくとも1つの交差ループを形成する。
【0058】
「ループ」という語は、交差がそれ自体の中で閉曲線を形成すること、又は2つ以上の交差がそれ自体の中で閉曲線を形成することを意味する。したがって、領域に対する交差ループは領域と他の1つの領域、例えば、平面との交差の結果として、シリンダによって交差してもよく、又は、領域に対する交差ループが領域と2つ以上の領域、例えば、立方体の面が4つの面と交差する、との交差の結果としてもよい。
【0059】
領域はメッシュの面の集合であり、2つの領域間の交差は、交差を形成する領域の両方に属する面の相互接続エッジ(エッジの接続シーケンス)を含む。したがって、交差は2つの領域の面の共通エッジのポリラインであり、したがって、交差ループは、領域の表面を画定する2つ以上の領域の面の共通エッジを含むポリラインでもある。
【0060】
各ノードの接続は順序付けられ、前記各ノードの交差ループを表す交差の順序付けられたリストを形成する。したがって、所与の領域と交差する領域は、前記所与の領域のループ上の進行方向に従って定義され、ランク付けされる。ノードが2つ以上の交差ループで構成されている場合、順序付けられた接続リストがループごとに計算される。
【0061】
交差ループは当技術分野で公知のように、外部交差ループ又は内部交差ループとすることができる。したがって、外部及び内部交差ループは各ノードの外部及び内部境界、すなわち、提供されるメッシュの領域の境界を表す。一例において平坦化され、ある場所に投影され得る領域について、外部ループは他のループを含む領域である。
【0062】
表面とその隣接する表面との間の交差の凹部及び/又は凹部は接続のために、収集され、グラフに記憶される。これは、交差の各エッジについて実行することができる。代替的に、これは、交差を形成するエッジのセット(交差を形成するエッジによって生成されるポリライン)に対して実行することができ、グローバルな凹部及び/又は凹部が収集され、交差のために記憶される。グラフには、凸部又は凹部のみを記憶することができることを理解されたい。
【0063】
メッシュ解析は、提供されたメッシュの幾何学的及び隣接グラフを生成する。幾何学的及び隣接グラフはメッシュ(領域)上の表面の定義されたプリミティブタイプとそのパラメータに、表面間の隣接グラフ、各表面の内部及び外部の境界向きのループ、各表面の各ループの隣接表面、及び表面とその隣接表面間の対応する凹凸を加えたものを提供する。
【0064】
図20は、この立方体のメッシュを解析した後に得られるグラフから取り出すことができる隣接情報及び交差の指向ループの例である。既に述べたように、提供されたメッシュは体積の境界を正確に表し、したがって、その体積に関して一貫した向き情報を含む。メッシュは立方体の形状を有する。各平面は他の4つの順序付き垂直平面に隣接しており、各平面に対して、4つのエッジはすべて凸状である。グラフの分析を容易にするために、隣接する表面は、表面の物質側に対して巻回方向に秩序化される。
【0065】
次に、
図1~
図18を参照して、提供されたメッシュの幾何学的及び隣接グラフを計算するための例を説明する(S110)。
【0066】
図1に戻って、メッシュ全体にわたる主曲率値の分布が計算される(S20)。分布は主曲率値を離散化することによって計算され、分布は特定の値の発生回数をカウントすることによって作成される。分布の各曲率値とその対応する面との間のリンクが維持され、対応する面は、前記各曲率値が得られた(又は計算された)面である。
【0067】
分布の各エントリは、主曲率値
の間隔内の主曲率値の発生の計数を含む。主曲率値の間隔は、主曲率値の範囲とも呼ばれる。値のすべての間隔(すなわち、すべての範囲)は、メッシュの面のすべての主曲率値を含むことを理解されたい。例において、ノイズ低減のために分布上にガウス分布を適用することができる。実際には分布のヒストグラムのみを視覚化するために(例えば、
図9及び
図10)、主曲率値の間隔は同一であってもよく、そうでなければ、値の離散化及び分布が広がる値の範囲は2つの主曲率分布に対して同じになるように強制される。
【0068】
一例において、範囲の数が離散化のために固定され、ユーザによって選択され得る。主曲率値は、メッシュ全体にわたって累積される。
【0069】
別の例において範囲の数が各範囲の最大発生回数に従って適応されてもよく、実際、発生カウントの数はメッシュごとにロットを変えてもよい。結局、これらの正確な計数は主曲率値の興味深い範囲を定義するのに役立つので、他のものと比較して重要であるが、1つの孤立した計数はあまり重要ではない。範囲内の発生の数は、メッシュの面の数で除算できる。したがって、各範囲の発生の数はパーセンテージとして解釈できる。
【0070】
分布の計算は、当技術分野で知られているように行われる。
【0071】
例において、分布の計算が値の変動のいくつかを削除するために、結果として生じる分布にガウスカーネルが適用されることをさらに含むことができる。
【0072】
図9は、メッシュの面の主曲率値の分布の一例を示す図である。この例において、分布はヒストグラムで表される。ここで、主曲率値は-2.0と2.0との間であり、分布は40の値の範囲を含む。主曲率値の符号付き値は、分布を計算するために取られる。主曲率値は、
図9のヒストグラムにおいてより多くの範囲、例えば100の範囲で離散化されてもよい。この例において、曲率値が40の範囲で離散化されるように強制されている。
【0073】
再び
図1のS20を参照すると、各面の主曲率値は、最小曲率値と最大曲率値とを含むことができる。したがって、
図9を参照して説明したような絶対値を有する分布を計算する代わりに、計算は、離散化された曲率値の発生数をカウントすることによってメッシュ全体にわたる最小曲率値の第1の分布と、離散化された曲率値の発生数をカウントすることによってメッシュ全体にわたる最大曲率値の発生数によって最大曲率値を分類することによって最大曲率値の第2の分布との2つの分布のそれぞれを計算することを含むことができる。
【0074】
離散化された曲率値の発生回数をカウントすることによって分布が計算される一般的な場合を参照して論じられた例は、第1及び第2の分布が計算される例に適用されることを理解されたい。
【0075】
図10は同じメッシュについての2つの計算された分布の例の説明図であり、左側の分布はメッシュの面の最小曲率値について計算され、右側の分布はメッシュの面の最大曲率値について計算された。
【0076】
図1に戻ると、S30において、この方法は、計算された分布において、主曲率値の1つ又は複数の支配的範囲を定義することをさらに含む。支配的範囲は、他の範囲よりも多くの出現回数を表す範囲である。支配的範囲は、完全な分布にわたって支配的であり得る。あるいは、支配的範囲が局所的支配的であってもよく、局所支配的範囲と呼ばれる。局所支配的範囲は、分布上の所与の数の連続する範囲の中の範囲の発生数よりも大きい発生数を有する範囲である。
【0077】
2つの分布が計算される例において、支配的範囲は、2つの分布の各々について定義される。
【0078】
例において、主曲率値の支配的範囲の定義が分布の2つの連続する極小の間にある分布の極大の決定時に実行されてもよい。「極大」及び「極小」は数学的定義に従う極大であり、「連続極小」は、2つの極小の間にそれ以上の極小がないことを意味する。2つの極小値の間に含まれ、したがって極大値を含む範囲は、支配的範囲を形成する。したがって、2つの連続する局所最小値の間に含まれる離散化された曲率値を有する面は支配的範囲に属し、2つの連続する局所最小値に属する面は、支配的範囲に属さない。2つの連続する局所最小値に属する面はプリミティブのエッジに属する可能性が最も高く、又はプリミティブのエッジに近い可能性が最も高く、一方、定義された支配的範囲に属する面はプリミティブを形成する可能性が最も高い。
【0079】
ここで
図10を参照すると、極大値と2つの連続する極小値から主曲率値の支配的範囲を定義する例が示されている。濃い灰色で表される範囲は、局所的な最大値である。ここで、メッシュの面の最大曲率値の分布に対応する図の右側部分について説明する。極大値1200が定義されている。この極大は2つの極小1210、1212によって囲まれており、これらの極小は、1210と1212との間の範囲にそれ以上の極小が含まれないので、連続する極小である。矩形形状1220は、定義された主要範囲を形成する範囲をカバーする。
図10の右側には、さらに3つの支配的範囲が示されていることを理解されたい。ここで、メッシュの面の最小曲率値の分布に対応する、図の左側の部分について議論する。2つの連続する極大1230、1332が定義されている。それらは、連続する極小値である2つの極小値1240、1242によって囲まれている。興味深いことに、どの面もこの範囲によってカバーされる最小曲率値を有しないので、範囲1240は空のものである。この空の範囲1240は極小値であり、さらに、分布の最後の範囲であり、これらの理由のために、支配的範囲1250に属するものとして表される。範囲1240が2つの極大値の間に位置する場合、それは定義された支配的範囲に属するものとして表されないことを理解されたい。
【0080】
例では、分布上の1つ又は複数の支配的範囲の定義が反復せずに実行され、すなわち、すべての支配的範囲が行内の分布内で定義される。したがって、支配的範囲を定義するための計算コストは低い。例において2つの分布があり、定義は行内の両方の分布に対して同様に実行される。
【0081】
例において分布の2つの連続する極小の間にある分布の極大の決定時に実行される分布上の1つ又は複数の支配的範囲の定義が極大についての発生の数が所定の値に等しく、及び/又は所定の値を超える間、繰り返され、例えば、所定の値は1に等しい発生の数であってもよい。プリミティブのタイプの数(例えば、平面、円柱、刻線面など)は制限され、反復の数はプリミティブのタイプの数を超える必要はない。各繰り返しの前に、支配的範囲に属するものとして以前に定義された面は廃棄され、分布が再計算される。したがって、前者は分布の2つの連続する局所最小値を定義し、新しい分布に属する。代替的に、全ての支配的範囲は、一行に定義されてもよい。興味深いことに、前の局所最小値は新しい定義された支配的範囲に寄与することができ、これ、以前にプリミティブのエッジに属するか、又はそれに近い可能性を有すると考えられていた面が新たな支配的範囲の次の定義においてプリミティブの一部であることを意味する。新しい分布は、同じ数の範囲を含むことができる。各支配的範囲の定義は、個々の面が興味深いプリミティブに関連付けられ得る表面の一部で興味深い値の範囲を導出することを可能にする。実際、定義された支配的値の範囲は、各面が支配的プリミティブタイプの面であるか否かを決定することを可能にする。明らかに、この処理は第1のパスの間に廃棄された残りのファセット(すなわち、以前に定義された支配的範囲に属さないファセット)に対して繰り返され、他の値の分布、他のプリミティブタイプに関連付けられた面の定義などにつながる。例として、2つの分布(1つは最小曲率値用、もう1つは最大曲率値用)がある。この反復定義は例えば、同時並行して、両方の分布に対して同様に実行される。
【0082】
したがって、支配的範囲の決定は、プリミティブの表面のエッジに属する可能性があるか、又は近い可能性があるメッシュの第1の面のセットと、各セットが支配的プリミティブタイプの領域を形成する第2の面のセット(各支配的範囲についての面のセット)とを定義することを可能にする。
【0083】
本発明による方法は、前述のベニエール(Benieare)らのような公知の従来技術とは異なるアプローチを有することに注目する価値がある。既知の従来技術において、サブメッシュが各部分をどのように処理するかを定義又は知ることが可能な点に達するまで、反復的に処理される。逆に、この方法は、プリミティブタイプに関連する支配的範囲外の領域を考慮しないことによって、ディフェーチャに類似する何かを達成するときに早期に停止することができる。当技術分野で知られているように、CADモデルから本質的でない細部を削除することを意味する。
【0084】
図11は
図5からのメッシュの最大曲率をヒストグラムと共に示すスクリーンショットであり、デバッグウィンドウ110において、最小曲率値及び最大曲率値の分布を、構築された値の範囲と共に示す。
【0085】
図1に戻ると、メッシュの1つ又は複数の領域が、定義された各支配的範囲について計算される(S40)。したがって、各計算された領域は、対応する定義された支配的範囲に属する面を含む。したがって、メッシュの領域は、提供されたメッシュのセット面である。
【0086】
したがって、1つ又は複数の関心のある曲率値の範囲が定義されると、面は、それらが方法の1回の反復でこれらの支配的範囲の一部である場所に基づいて分類される。
図12は、
図5のメッシュ上の結果S40として得られた均一な曲率の領域のスクリーンショットである。領域122、123、124は、特定のプリミティブ表面タイプ120と一致する可能性が高い。領域125、127、128及び129は、別のプリミティブ表面タイプ(ここでは円筒)と一致する。これらの領域は全てロッド126のプリミティブ表面の一部であるが、本方法のこのステップにおいてそれらは分離された領域として見られる。また、
図12に示す領域の大部分は、例えば122-123と123-124との間で、それらの隣接領域との明確な交差を有していないことにも注意されたい。
【0087】
例において、計算された領域のうちの1つにまだ割り当てられていない面を集約するために、各計算された領域に領域成長が適用される。計算された領域にまだ割り当てられていない面は、定義された支配的範囲のうちの1つに以前に帰属されていない面である。領域成長は各領域上に連続的に、又は2つ以上若しくは全ての計算された領域上に同時に適用することができる。領域成長はメッシュの領域間の交差の品質を改善し、実際、領域成長は、計算された領域にまだ割り当てられていない全ての面を集約することを目的とする。これらの面は、典型的には支配的な領域に属すると定義されなかった面である。成長する領域は、互いに接触する領域を作り出すことに寄与する。
【0088】
例において領域成長(すなわち、各計算された領域に適用される)は面間の距離によって案内される。考慮すべき距離は、領域の面と割り当てられていない面との間の距離である。距離は例えば、任意の既知の方法を使用して計算されてもよい。例えば、ユークリッド距離。領域の三角形から割り当てられていない三角形への多数のジャンプは距離、例えば、表面上の距離の推定値として使用することができる。メッシュの面が(例えば、再メッシュ化のおかげで)十分に平衡化されている場合、ジャンプの数は測地線距離の近似値(非常に粗いものでさえも)であることに留意されたい。したがって、測地線距離又は何か類似のものを使用することができ、例えば、面中心間のユークリッド距離よりも優れている。
【0089】
例において、領域成長の距離が曲率値間の差によって重み付けされる(変調されると言うこともできる)。成長を導くために曲率値間の差を使用することは、他の領域と成長される領域のための関連する交差の数を最大化することを可能にする。さらに、曲率値で成長を案内することは、同じプリミティブ表面の一部である可能性がより高い領域において、より速く成長することを可能にする。
【0090】
例において、距離値が定数及び曲率値間の差によって線形に重み付けされる。これにより、領域成長の効率が向上する。
【0091】
領域成長のこれらの例において、スコアが割り当てられていない面について計算される。したがって、これらの例によれば、スコアは、面間の距離に基づいて、又は曲率値間の差によって重み付けされる距離に基づいて、又は定数によって線形的に重み付けされる距離及び曲率値間の差によって重み付けされる距離に基づいて、計算されてもよい。別のプリミティブに既に関連付けられているかもしれない未割り当ての面に到達すると、現在の拡張のための新しいスコアが、記録されたスコアと比較され、最良のスコアが勝つ。以前のスコアであった場合、このファセットを介した拡張は停止する。反対に、新しいスコアが勝った場合、このファセットに触れているすべてのファセット(1つを除いて、新しいスコアのために来ている)が以前よりも良好なスコアを有するという意味であり、したがって、同じ処理をこれらの近隣に広げ続ける、などである。すでに関連付けられている面が新しい領域に関連付けられると、関連付けられている面を除いて、このすでに関連付けられている面のすべてのネイバーが再び評価される。このメカニズムは、そのメカニズムが特定の目的に到達しようとせず、その目的に向かうヒューリスティックによって導かれないことを除いて、Dijkstra又はA*といくつかの類似性を有する。
【0092】
成長領域アルゴリズムの詳細な例を以下に説明する。成長する領域は、定数と曲率値の差によって直線的に重み付けされる距離によって案内される。
【0093】
原理は上述したものであるが、実施レベルではアルゴリズムは、実施を単純化するためのミラーであるように機能する。面は、ネイバーから来る値が何であるかをチェックする。
【0094】
この処理は、以下のように開始される。同じ第1のスコア(同じ任意の大きなスコア)を第1の組の面に割り当て、第1の組の面は、計算された領域のいずれにも属さない面を含む。さらに、計算された領域のうちの1つに属する各面に対して、同じ第2のスコアとしてゼロを割り当てる。最初のスコアが2番目のスコアより大きい。そうでなければ、処理を開始するために、領域内のすべての三角形がゼロコストで初期化され、それらがその一部である領域が、このゼロスコアを与える領域として記録される。領域の一部でない全ての面(例えば、三角形)には、無限に高いスコアが与えられ、「領域なし」領域がそのスコアを与える領域としてこれらの面に記録される。
【0095】
次に、第1の組の各面(まだ領域の一部ではなく、処理されなければならない面)がテストされる。つまり、領域に割り当てられていないすべての面は、処理される面のキューに入れられる。
【0096】
処理される各面(又はテストされる面)について、面のネイバーがチェックされて、それらを通過することができるスコアが確認される。面のネイバーは、エッジを共有する面である。したがって、面の各隣接領域について、面と隣接領域との間の距離と、面と隣接領域との間の主曲率値の差とに基づいて、第3のスコアが計算される。
【0097】
より良いスコアがない場合(すなわち、第3のスコアが第1のスコアよりも大きい場合)、処理はテストされた面について停止し、テストされた面は、既に処理された面のリストに入れられる。スコアが対応する領域も記録される。あるいは、スコアが対応する領域がテストされた面について計算されたスコアの中で最良のスコアが決定されたときに記録される。
【0098】
スコアが既に割り当てられたスコアに等しい場合、処理は停止する。テストされた面は、既に処理された面のリストに入れられる。スコアが対応する領域も記録される。あるいは、スコアが対応する領域がテストされた面について計算されたスコアの中で最良のスコアが決定されたときに記録される。
【0099】
より良いスコアがある場合(すなわち、第3のスコアが現在のスコアよりも小さい場合)、テストされた面は第1のセットから削除され(領域の一部ではなく、処理されなければならない面)、処理はより良いスコアを、テストされた面についてのそのスコアに対応する領域と共に記録し(すなわち、処理は新しい現在の面スコアになるより良いスコアを記録し)、テストされた面のすべての隣接する面(新しいスコアを与える面を除く)を、処理される面のキューに戻す。最終的に隣接する面がすでに処理済みの面のリストである場合、すでに処理済みの面のリストから削除される。
【0100】
そして、処理されるべき面のリストが空であるとき、第1のセット内の最初にテストされた面は、それらが有する最良の第3のスコアに関連付けられた領域と再グループ化される。
【0101】
この処理はダイクストラのように収束し、領域に割り当てられなかった各面が、その最良の「近接」スコア及び関連する領域を記録することを保証する。
【0102】
領域成長は、以下のように要約することができる。
【0103】
各「エッジ」三角形(領域に割り当てられていない)について任意に大きなスコアを初期化し、この時点でどの領域にも関連付けられていないことを指定する。
【0104】
0のスコアを有するプリミティブに既に関連付けられているすべての非「エッジ」三角形を初期化し、それらを既にその一部であるプリミティブに関連付ける。
処理する三角形の集合にすべての「エッジ」三角形を入れる
処理対象の三角形の集合が空でない場合:
その収集から三角形を取得する。
三角形がすでに処理済みのリストにある場合:
処理する三角形の収集の次の三角形の処理を続行する。
その三角形の各ネイバーについて:
次の式を使用して、その三角形の潜在的に新しいスコアを、あたかもそのネイバーから来たかのように計算する。新しいスコアは、面の現在の最良のスコアに対してチェックされる値である:
new_score = neighbor_score + 1 + constant_curvature_factor *(A + B)
ここで、constant_curvature_factorは一定の曲率係数であり、
Aは、選択された面の最大曲率値と隣接領域の面の最大曲率値との差の絶対値であり、
Bは、選択された面の最小曲率値と隣接領域の面の最小曲率値との差の絶対値である。
その新しいスコアがその三角形の現在のスコアよりも低い場合:
新しいスコアを設定する。
その三角形を、ネイバーが関連付けられている形状に関連付ける。
使用したネイバーを記録する。
その三角形スコア値が(特定のネイバーを通過することによって)改善された場合:
処理される三角形のリスト内の、改善されたスコアを有する特定の三角形を除くすべてのその三角形ネイバーを戻し、それらを既に処理されたリストから削除する。
その三角形をすでに処理済みのリストに追加する。
【0105】
アルゴリズムは、主曲率値の1つ又は複数の支配的範囲の定義(S30)の後に適用されることを思い出されたい。したがって、アルゴリズムは、入力において、各セットが支配的プリミティブタイプの領域を形成する1つ又は複数の第2の面のセット(各支配的範囲に対する面のセット)と、領域のエッジに属する可能性があるか又は近い可能性がある面を含む第1の面のセットとを有する。
【0106】
第2の組の面が空であるとき、すなわち、すべての面がメッシュの計算された領域の1つに関連付けられたとき、上述のテストは停止する。
図13は、領域成長を適用した後に得られた
図12のメッシュを表す。ここで、各領域が面の相互接続された縁部によって画定される縁部を有することに気付くことができ、したがって、領域の縁部は、領域の表面を画定するポリラインである。
【0107】
図14a(それぞれ
図15a)は、成長領域の前の領域を有するメッシュのスクリーンショットである。
図14b(それぞれ
図15b)は、領域成長を適用した後の
図14a(それぞれ
図15b)のメッシュのスクリーンショットである。
【0108】
再び
図1を参照すると、各計算された領域に対してプリミティブタイプが検出される(S50)。プリミティブは、他の形状を構築することができるビルディングブロックである。プリミティブは一般に、3Dモデル化オブジェクトを構築するための3Dモデル化において使用される。例えば、2D多角形(例えば、正方形、長方形)は3D体積(例えば、正方形パッド又は長方形パッド)を形成するために押し出すことができるプリミティブである。プリミティブは以下に限定されるものではないが、平面、円柱、球体、角錐、円錐、四角形、罫線表面、トーラスであることができる。プリミティブのセットは、工業製品、例えばメッシュによって表されるものを記述することを可能にする。
【0109】
プリミティブのタイプの検出(計算と言うこともできる)は、領域の面の曲率値に依存する。領域の面の曲率値を使用することによるプリミティブのタイプの検出は、当技術分野で知られているように実行される。
図16は、タイプ平面のプリミティブである領域の面の主曲率値の分布を示す図である。
図17は、タイプシリンダのプリミティブである領域の面の原理曲率値の分布を示す図である。
図16及び17はそれぞれのタイプのプリミティブのテンプレートであってもよく、領域の分布とテンプレートの比較により、領域のプリミティブを定義することができる。
【0110】
検出された各プリミティブについて、検出されたプリミティブのパラメータは、領域の表面(別名、その領域に関連付けられたメッシュの三角形)を使用してプリミティブタイプに基づいて計算され、パラメータに関する最小二乗最適化アルゴリズムが適用され得る。プリミティブのパラメータは、プリミティブをインスタンス化できるプリミティブの特性を決定する。例えば、当技術分野で以下が知られている。
・プリミティブ平面のパラメータは、平面の法線と平面上にある点である。
・プリミティブ球のパラメータは、中心と半径である。
・プリミティブシリンダのパラメータは、軸の方向、シリンダの高さ、底部円の中心及び半径である。
・プリミティブ円錐のパラメータは、軸方向、円錐の高さ、円錐ベースの中心及び半径である。
・プリミティブトーラスのパラメータは、方向ベクトル、中心、大円の半径、小円の半径である。
【0111】
プリミティブのパラメータの検出は、当技術分野で知られているように実行される。パラメータは、領域の表面を使用して、すなわちメッシュを直接形成して計算される。例において、パラメータの定義が最小二乗最適化を用いてパラメータを推定することによって実行される。パラメータの値はそれらからインスタンス化することができる正確な表面がせいぜい、この表面によって表されるメッシュの部分にくっつくように最適化される。各パラメータは、プリミティブをインスタンス化するために使用される1つ以上のパラメータ値で構成される。単純化のために、用語「パラメータ」及び「パラメータ値」は同義語である。
【0112】
実施例において、メッシュの領域の計算後、領域間の交差ループはメッシュの三角形の隣接性を使用して計算される。2つの領域間の交差は、表面が2つの領域の交差である表面対表面交差(SSI)とも呼ばれる。2つの表面が交差するとき、結果は、孤立点のセット、曲線のセット、又はこれらの場合の任意の組合せとすることができる。
【0113】
領域間の交差ループは、領域の表面の境界を形成する。「ループ」という語は、交差がそれ自体の中で閉曲線を形成すること、又は2つ以上の交差がそれ自体の中で閉曲線を形成することを意味する。したがって、領域に対する交差ループは、領域と他の1つの領域との交差(例えば、平面がシリンダと交差する)の結果であってもよい。あるいは、領域に対する交差ループは、領域と2つ以上の領域との交差(例えば、立方体の面が4つの面と交差する)の結果であってもよい。領域はメッシュの面の集合であり、2つの領域間の交差は、交差を形成する領域の両方に属する面の相互接続エッジ(エッジの接続シーケンス)を含む。したがって、交差は2つの領域の面の共通エッジのポリラインであり、したがって、交差ループは、領域の表面を画定する2つ以上の領域の面の共通エッジを含むポリラインでもある。
【0114】
実施例において、交差ループの計算が領域と他の領域との全ての交差を定義する際に、各領域について実行される。従って、交差ループは、領域と他の領域との全ての交差から生成される。交差ループの計算が行われると、当技術分野で知られているように、領域の面のエッジのポリラインが構築される。
【0115】
実施例において、交差ループの計算後、各交差ループについて、交差ループに属する領域の順序付けられたリストが収集される。そうでなければ、所与の領域と接触する領域は、前記所与の領域のループ上の進行方向に従って定義され、ランク付けされる。交差の順序付けされたリストは、隣接及び形状グラフのノードの交差ループを表す。領域が2つ以上の交差ループを含み、したがって、ノードがいくつかの交差を含む必要がある場合、それらは、他を含む第1のものと共にリストで提供される(シリンダの選択は任意である)。
【0116】
実施例において、交差ループの各エッジについての凹部、凸部、及び位置情報が収集される。凹部及び凹部の計算は、当技術分野で知られているように実行される。一例において、様々な領域が互いに接触すると、外部交差ループ及び内部交差ループが各領域について収集される。これらは、浮動小数点演算によって引き起こされる可能性のある数値問題に対処するために、述語を使用して各三角形について評価された同じ回転順序に関して収集される。このような収集は、Jonathan Richard Shewchuk、”Robust Adaptive Floating-Point Geometric Predicates”、in Symposiumon Computational Geometry 1996、pages 141-150に記載されている。交差を収集しながら、領域の面の各エッジに対する凹凸情報が計算され、記録され、ループ部分に関連する頂点も記録される。あるいは、交差ループを形成するエッジが頂点の代わりに記録され得る。交差ループの各エッジの凹部、凸部、及び位置情報は、エッジが関係する2つのノード間の接続に記憶することができる。
【0117】
実施例において、2つの領域間の交差を形成するエッジの凹部、凸部、及び位置が収集される。この凹部、凸部、及び位置は、各エッジの凹部、凸部、及び位置ではなく、むしろ、2つの領域間の交差を形成するエッジによって生成されるポリラインの全体的な凹部、凸部、及び位置が収集される。そして、2つの領域間の隣接/交差毎に凹部及び凸部を得ることができるように、これらを統合して交差に関連付ける。
【0118】
交差ループは当技術分野で公知のように、外部交差ループ又は内部交差ループとすることができる。したがって、外部及び内部交差ループは各ノードの外部及び内部境界、すなわち、提供されるメッシュの領域の境界を表す。一例において平坦化され、ある場所に投影され得る領域について、外部ループは他のループを含む領域である。
【0119】
内部及び外部交差ループの例は、オブジェクト180のメッシュについて
図18のピクチャ(スクリーンショット)上に表される。いくつかの領域(例えば、1800、1820、1810、1830、1840…)が計算されている。領域1800は、タイプ平面のプリミティブとして定義される。領域1800はタイプシリンダのプリミティブとして定義される領域18010と、4つの領域(この図では4つの領域のうちの2つの1830、1840しか見ることができない)との接点を有する。交差ループ1802は、領域1800と領域1810との間で計算されている。別の交差ループ1804が、領域1800と4つの領域との間で計算されている。より正確には、交差ループ1804が領域1800と4つの領域(例えば、1830、1840)との間の4つの交差を含む。交差ループ1802は領域1800を境界し、外部交差ループである。交差ループ1804によって境界付けされる表面は空であり(すなわち、交差ループ1804はメッシュの面を有しないか、又は領域1800の面が交差ループ1804によって境界付けされる区切られた表面内にない)、したがって、交差ループ1804は内部交差ループ交差である。ループ1802は、領域1810の外部交差ループでもある。領域1810と領域1820(シリンダプリミティブとして定義される)との間の交差ループ1822は領域1810の内部交差ループであり、領域1810の外部交差ループである。同様に、領域1820と領域1840との間の交差ループ1824(タイプ平面のプリミティブとして定義される)は領域1820の外部交差ループであり、領域1840の内部交差ループである。シリンダにはシリンダの反対側に等価ループがあるため、この選択は任意であることを理解すべきである。したがって、CSG木を構築するとき、いくつかの組み合わせが試みられ得る。
【0120】
交差の方向付けられたループを収集し、それらを内部又は外部ループとしてフラグ付けし、交差ごとの凹凸情報及び交差エッジの位置を維持することにより、例えば、完全な正確なB-Rep表現を構築することなく、正確な立体特徴木を生成するために、この情報を直接活用することが可能になる。この場合も、これは、メッシュ分析によって提供される情報が完全なB-Repを再構築することに失敗した場合に特に興味深い。したがって、本発明は、よりロバストである。得られた結果が元のメッシュの完全な詳細を反映しない場合であっても、それは、モデリング演算のための基礎として働くことができ、任意の用途に伸長することによって、従来の正確なCADモデルを作ることができる。例えば、ユーザはメッシュ結果から生成された構造化3次元(3D)モデルの一部を中間ステップとしてのみ使用し、そのパラメータを通じて任意の要素を編集することができる。
【0121】
図1に戻って、設けられたメッシュの幾何学的及び隣接グラフが構築される(S60)。グラフはステップS10~S50の出力の構造化表現を提供し、したがって、これらのステップで生成されたメッシュの構造化3Dモデルの表現を提供する。グラフは、ノードとノード間の接続で構成される。グラフの各ノードは、計算された領域のうちの1つを表し(S40)、この領域について定義されたプリミティブタイプ及びこの領域について定義されたパラメータに関連付けられる。2つのノード間の各接続は、ノードによって表される領域の各表面間の交差を表す。
【0122】
図18のスクリーンショットは、ステップS10~S50の出力を使用して生成されたオブジェクト180のメッシュの構造化3Dモデルの表現の表示の例を提供する。ノード「face_16」は領域1800を表し、領域1800(平面)のプリミティブタイプ及びプリミティブのパラメータに関連付けられる。領域1800はすでに論じたように、5つの領域に接触している。領域1810は、ノード「face_15」によって表され、4つの領域(例えば、1830、1840…)は、ノード「face_16」、「face_17」、「face_18」、「face_19」によって表される。5つの接続が表示されている。ノード「face_16」とノード「face_15」との間の接続の1つは交差1802を表し、交差ループ1804を形成する交差を表す、ノード「face_16」とノード「face_15」との間の接続の1つは交差ループ1804を表す(「face_17」、「face_18」、「face_19」のそれぞれについて)
【0123】
例えば、交差、交差ループを形成する領域の順序付けられたリスト、面の各エッジの凹凸情報、及び/又はループ部分に関連付けられた頂点など、以前に収集された後さらなる収集された情報が、幾何学的グラフ及び隣接グラフとともに記録される。例えば、ここで
図18を参照すると、交差ループ1804を形成する4つの領域の順序付けられたリストはノード「face_16」と共に記憶することができ、又はノード「face_16」とノード「face_15」、「face_17」、「face_18」、「face_19」との間の接続は、リストに従ってランク付けすることができる。
【0124】
これらの例において、メッシュの全表面が処理される場合の生成が示されている。表現が必ずしも完全である必要はなく、すなわち、生成がメッシュの一部のみをカバーすることができることに言及する価値がある。生成された構造化3Dモデルは、元のメッシュの全ての詳細を正確に表現しないにもかかわらず、依然として有用である。
【0125】
図19に戻って、S120及びS130において、グラフの各ノードについてスケッチが計算される。スケッチの計算は、グラフから定義された平面ループに依存する。ここで、ノードのスケッチの計算の一例を説明する。
【0126】
グラフの各ノードについて、ノードによって表される領域の定義されたプリミティブタイプ及びパラメータに基づいて、表面がインスタンス化される(S120)。これは、当技術分野で知られているように、例えばCADシステムによって実行される。
【0127】
次に、各インスタンス化された表面について、1つ又は複数の交差ループが計算される(S132)。計算は、ノードの各ループについて計算された接続の順序付けられたリストを含む、以前に計算された幾何学的及び隣接グラフから実行される(S110)。交差の順序付けされたリストは計算された交差を相互接続するための情報を提供し、したがって、交差ループを形成する。S132で計算される交差及び交差ループは、それらが推論されたメッシュの領域と必ずしも同一ではないプリミティブから開始して構築されるので、メッシュの分析(S10~S60)中に得られるものとは異なることが理解される:実際、グラフのプリミティブの大部分はメッシュの近似である。したがって、計算された交差及び交差ループ(S132)はメッシュの分析中に特定されたものとは異なる可能性がある。例えば、メッシュ内で特定された閉ループは、S132の結果としてそれ以上閉じられない。しかしながら、グラフは、各表面の各ループと、表面とその隣接する表面との間の対応する凸部とに対する隣接する表面に関する情報を提供するので、インスタンス化された表面の閉鎖されていない交差ループを閉じることが可能である。
【0128】
各インスタンス化された表面は、1つの外部交差ループを含む。さらに、インスタンス化された表面は、場合によっては1つ又は複数の内部交差ループを備えることができる。外部と内部の交差ループの計算も同様に実行される。
【0129】
円形スケッチの場合(すなわち、スケッチ平面はシリンダ、円錐、又は球である1つの隣接する表面のみを有する)、これはスケッチを生成するのに十分である。
【0130】
他のすべての場合において、いくつかのループが、インスタンス化された表面とその隣接するインスタンス化された表面との間の交差から計算されてもよい。
【0131】
これは、例えば、4つの面(220、221、222、223)と2つのシリンダ(224、225)との、インスタンス化された平面との交差を示す
図22に示されている。この例において、接続の順序付けられたリストが交差によって形成される1つの単一ループを定義するのに十分ではない。
図23は、
図22の状況から導き出すことができるすべてのソリューションを示す。これらのすべての可能性は、表面間の隣接性、各表面の各ループのための隣接表面、表面とその隣接表面との間の対応する凸部、及び各表面の内部及び外部境界向きループを提供するグラフから計算することができる。
【0132】
交差の相互接続のいくつかの組み合わせを定義することができる場合、メッシュ上で検出されたループに最も近いスケッチを生成するために、以下のステップを実行することができる。
【0133】
最初に、接続された曲線の端点のセットが計算される。端点は、順序リストにおいて連続する(インスタンス化された表面上の)2つの交差の間で計算されることを理解されたい。これらの端点の各々は3つの表面、すなわち、スケッチ平面と、スケッチ内の2つの接続された交差曲線を画定するのを助ける2つの隣接する表面との交差によって画定される。
【0134】
図22において、交差220は、グラフの順序付けられた交差のリストに従って交差224と交差する。交差220及び224は、2つの端点2200及び2210と相互接続することができる。2つの端点2220及び2230を有する曲線224及び221についても同様の状況が生じる。
【0135】
第2に、最良の解を定義するために、すなわち、メッシュ上で検出されたループに最も近いスケッチを生成するために、メッシュ頂点に最も近く、3つの表面に属する端点が選択される。このような選択は、3つの面に属するループの各点に対して行われる。
【0136】
図22に戻ると、端点2200及び2210は3つのインスタンス化された表面の同じ交差について得られ、端点2200は提供されたメッシュに最も近いものとして選択される。これは、
図22に関連するメッシュを示す
図24に示されている。明確にするためだけに、
図22の基準は
図24に報告されている。
【0137】
エンドポイントがテストされ、選択されると、交差の相互接続の最良の組み合わせが得られ、これは、メッシュ上で検出されたループに最も近いスケッチを生成するものである。
【0138】
例において、終点が試験され選択された後、交差曲線のどの円弧が使用されるかの選択が実行されてもよい(2つの平面間の交差線である場合を除く)。これは、円弧の中点を計算し、それをメッシュ上で見出される交差曲線のすべての内部点と比較することによって行われる。
【0139】
次に、外部交差ループと、場合によってはインスタンス化された表面の1つ又は複数の内部交差ループからそれぞれ1つ又は複数のスケッチとを使用して、インスタンス化された表面からスケッチが計算される(S134)。用語「スケッチ」は、2D平面の押出し時に3D体積を構築するために使用される2D平面を意味する。2D平面は相互接続された曲線のセットによって区切られる。ここで、相互接続された曲線はループを形成する計算された交差である。
図21は、スケッチの例を示す。
【0140】
S130の出力は、スケッチのセットである。
【0141】
図19に戻って、掃引
演算が各計算スケッチに適用される(S140)。各スケッチに対して掃引体積又は立体が生成される。
【0142】
例において、掃引演算は、掃引方向及び掃引長を計算することを含み得る。掃引方向及び掃引長さは、当技術分野で知られているように、3Dシーン内のスケッチの各点の変位を定義する。掃引方向及び掃引長は、外部交差ループに隣接する交差ループから計算されてもよい。スケッチが1つ以上の内部交差ループを含む場合、掃引方向及び掃引長は、スケッチの内部交差ループに隣接する交差ループから計算されてもよい。
【0143】
掃引方向と掃引長の計算例を論じた。
【0144】
一例において、計算がスケッチごとに、及びスケッチの交差ループごとに実行される。この例は、掃引方向及び掃引長の計算の原理を図示する、
図25と関連して議論される。
【0145】
最初に、1つ以上のスケッチ点が交差ループ上で定義される。スケッチ点は、保持された以前の端点である。したがって、スケッチ点は、スケッチの交差ループに隣接する交差ループに共通の点である。
図25上ではスケッチ点2240が曲線223及び220を接続し、各曲線はスケッチの交差ループに隣接ループを支持して押し出す。
【0146】
第2に、目標点が各スケッチ点に対して定義される。目標点は、スケッチの交差ループに隣接する交差ループに共通の点である。2つ以上の共通点(現在のスケッチ点以外)があってもよく、この場合、スケッチ点から最も近い点を選択することが可能であり、又はスケッチ点からさらに離れた点を選択することも可能であり、又はすべての可能な長さを計算することが可能である。
図25において、目標点2242は、曲線223及び220によって支持される2つの隣接する交差ループに共通の点である。1つのスケッチ点が1つのターゲット点に関連付けられることを理解されたい。
【0147】
第3に、各スケッチ点に対してベクトルが計算される。ベクトルはスケッチ点を目標点に結合する。ベクトルは方向及びノルムを有する。ベクトルの方向は掃引演算の方向であり、ベクトルのノルムは掃引長さである。
【0148】
従って、各スケッチ点の個々の変位は、ベクトルが各スケッチ点に対して計算されるとして、これらのステップの結果として得られる。1つのベクトルのみが計算される状況として、例えば、スケッチは、平面とシリンダとの間の交差の結果であったことが理解されるべきである。ループのスケッチ点のセットに対して1つのベクトルのみが計算されてもよいことが理解されるべきである。同様に、ベクトルが計算されるスケッチ点の数は、ループ上のスケッチ点の総数よりも少なくてもよい。
【0149】
一例において、2つ以上のベクトルが計算された状況について、グローバル掃引方向及びグローバル掃引長さを計算することができる。ここで、グローバルとは、同一の掃引方向及び掃引長さが交差の各々の点に適用されるという意味である。したがって、押出はより均一に画定される。この例において、ベクトルが同じ方向を有するかどうかを判定するために、ベクトルが比較される。そえば、これは、独特の押し出し方向が見出されたことを意味する。ベクトルの比較により、さらに、スケッチの現在テストされている交差ループに隣接する交差ループの表面がこの同じ方向に平行であるかどうかを判断することができる。これは、押出が表面を生成することを確実にする。これが該当し、2つの決定が累積されている場合、ベクトルの固有のグローバル方向に従って掃引演算が適用される。
【0150】
例においてグローバル掃引長は決定されない。したがって、各スケッチ点に適用される掃引長はそのベクトルに関連付けられたものである。
【0151】
実施例において、押出物の全体的な長さを計算するために、さらなる試験がベクトルに対して実行されてもよい。一例において、ベクトルのノルムの中の最小値が定義され、押出物の全体的な長さとして役立つ。別の例において、ベクトルのノルムの中の最大値が定義され、押出物の全体的な長さとして役立つ。さらなる例において、ベクトルのノルムの平均が計算され、押出物の全体的な長さとして役立つ。
【0152】
図26は、
図25のスケッチを押し出した結果得られる立体を示す。
【0153】
グローバル掃引方向及びグローバル掃引長の計算のさらなる例が、ここで議論される。この例において、計算がスケッチごとに、及びスケッチの各交差ループごとに実行される。この例は、掃引方向及び掃引長の計算の原理を図示する、
図27と関連して議論される。
【0154】
この例において、スケッチ点及び目標点の定義時に計算されたベクトルを比較し、スケッチの各交差ループに隣接する交差ループの表面がベクトルの同じ方向に平行であるかどうかを決定する。テストが失敗した場合、つまり、現在テストされているスケッチの交差ループに隣接する表面がこの同じ方向に平行でない場合、すべての隣接表面と一致する共通の回転軸(検出されたスケッチの現在テストされている交差ループに隣接する交差ループの表面)になる。
【0155】
共通の回転軸の検出は、スケッチの交差ループに隣接する交差ループの表面がシリンダ、円錐、球体、及び/又はトーラスの中で選択されたタイプのプリミティブに属するかどうかを決定することを含み得る。隣接する面がシリンダ、円錐、球体及び/又はトーラスなどのプリミティブの面であることが検証されている場合、1つはこれらの隣接する面が同じ回転軸で定義されていることをチェックする。この場合、さらに決定が行われる。スケッチの交差ループ(隣接面)に隣接する交差ループの面がタイプ平面のプリミティブに属している場合、隣接面が回転軸に直交していることをチェックする。これも当てはまる場合、検出された軸の周りでスケッチを回転させることによってスケッチから立体を生成するための条件が満たされる。次に、各スケッチ点及びその対応する目標点について、回転角度が推定される。この推定は、当技術分野で知られているように実行される。共通の回転軸と推定角度から、掃引演算を適用することができる。
【0156】
図27において、曲線220によって支持される隣接面がタイプシリンダのプリミティブからインスタンス化されている。この隣接面は、回転軸270と平行である。これは、インスタンス化された平面との交差曲線225を形成するトーラスの場合にも当てはまる。隣接平面223は、公転軸線270に垂直である。
【0157】
図28は、
図27のスケッチを押し出した結果得られる立体を示す。
【0158】
例において大域的回転角度は決定されないことがあり、従って、各スケッチ点に対して適用される回転角度はそのベクトルに関連付けられるものである。あるいは、ベクトルの回転角度のうち最小の値をグローバル回転角度としてもよい。別の例では、ベクトルのノルムの中の最大値が定義され、押出物の全体的な長さとして役立つ。さらなる例において、回転角度の平均が計算され、グローバル回転角度として働く。
【0159】
掃引方向と掃引長の計算例を論じた。これらの例は、外部ループ及び内部ループに適用することができる。掃引演算の計算は、交差ループごとに別々に独立して実行されてもよい。
【0160】
掃引演算のこれらの例は主に、共通の交差を共有するインスタンス化された表面間の幾何学的関係及び隣接関係の分析に依存する。掃引演算を計算する特定の例において、
図29に示すように、(例えば、異なる押出方向に対して)全ての可能な立体が生成される。この特定の例は、いくつかの掃引長さ又は回転角度が定義される場合に使用されてもよい。全ての可能な立体が生成された後、立体は例えば、入力メッシュの局所部分を有する各立体の類似性スコアを使用することによって、提供されたメッシュと比較される。メッシュに局所的に最も適合する、すなわち、メッシュまでの距離が最小である立体が維持される。
図29の例において、押出物292は削除され、押出物290は保持される。
【0161】
掃引演算の別の特定の例において、いくつかの押出しが同等の立体をもたらすことを検出する。同等の立体は、同一又はほぼ同一の幾何学的形状を有する立体である。例えば、直方体上に6つの異なるスケッチを有する6つの異なる押出成形物があるが、全てが同じ形状をもたらす。全ての可能な立体が生成される場合には、同等の立体を検出することができる。生成された立体の比較が、少なくとも1つの共通の交差を有するスケッチから得られた立体について行われる場合、同等の立体も検出され得る。同等の立体が同定された場合、それらのうちの1つのみが保持される。入力メッシュに局所的に最も適合する単一の立体が複数ある場合(例えば、立方体の場合)、及びそれらが同一であると判定される場合、特徴木全体に使用される異なるスケッチ平面のグローバル数を最小にする立体を選択する。これは、特徴木の拡張サイズを制限することに寄与する。
【0162】
さらに具体的な例において、入力メッシュ上で検出された平面上にスケッチを生成することができない場合がある。例えば、これは、インスタンス化された表面がどの平面にも隣接していない場合である。
図30は、メッシュがシリンダ310a、310bの形状を有するキャビティを備えるシリンダ300a、300bであるこのような状況の例を示す。キャビティはシリンダ300aに貫通孔を形成してもよいし、シリンダ300bに開放孔を形成してもよい。図の説明のために、キャビティはシリンダ310a、310bによって表されており、これらのシリンダはメッシュ内には存在しないことを理解されたい。キャビティはメッシュの幾何学的及び隣接グラフにおけるノードによって表されるが、キャビティのスケッチを生成するのに役立つことができる平面は提供されたメッシュから導出可能ではない。
【0163】
この状況に対処するために、これらのスケッチを生成するのに必要な1つ又は複数の追加の平面を作成することができる。検出は、グラフの各ノードのインスタンス化後に実行できる。
【0164】
生成される押出/回転が十分に大きいことを保証するために、インスタンス化された新しい平面をメッシュの境界の外部に配置することができる。新しい平面はインスタンス化された表面と隣接する表面との交差の新しい平面上の投影がメッシュ内に暗黙的に存在するプリミティブを表す(しかし、メッシュの面によっては表されない)ように、インスタンス化された表面に対して垂直に配向されてもよい。
【0165】
図30において、各シリンダ300a、300bについて、メッシュの境界の外部に追加の平面が追加されている(メッシュと追加された平面との間に交差はない)。より正確には、インスタンシエートされた表面のスケッチを生成する役割を果たす可能性のある、提供されたメッシュから平面を引き出すことができないシリンダの交差ループごとに、新しい平面が追加される。
図30において、2つの交差320a、322aがグラフから導出可能であるとして、シリンダ300aについて2つの平面が追加されている。シリンダ300bについても、キャビティが開いているときに交差が1つしかない場合でも、2つの平面が追加される。2つの平面を互いの前に追加することにより、メッシュのより複雑な幾何学的形状のカバレージを改善することができる。追加された平面はインスタンス化された表面310a、310bに垂直であり、これは、提供されたメッシュの幾何学的形状に近い有効な立体を得る機会を増加させる。
【0166】
新しい平面が配置されると、インスタンス化された表面と新しい平面との間の交差が計算される。交差は交差ループを形成してもよいし、形成しなくてもよい。後者の場合、交差はループを形成するために閉じられる。交差の閉鎖は、交差ループが既知のプリミティブの形状を有するように行われてもよい。
図30においてシリンダ300bのための2つの平面上の交差は閉じられておらず、この例において規則的な湾曲形状を保つために交差ループが閉じられている。
【0167】
次に、交差ループからスケッチが計算される。これは、既に説明したように実行される。
【0168】
スケッチ生成の例を説明した。しかしながら、スケッチを生成することができない状況がある。例えば、スケッチの現在テストされている交差ループに隣接する交差ループの表面がベクトルの同じ方向に平行でない場合、立体は生成できない。同様に、検出された軸の周りでスケッチを回転させることによってスケッチから立体を生成するための条件が満たされない場合、立体は生成されない。このような状況において、後の段階で設計者が手動で定義することができる汎用立体を計算することができる。
【0169】
図19に戻り、得られた立体間の追加又は削除演算の可能な組
合せの集合が計算される(S150)。各計算された組み合わせに対して、最終立体が得られる。ここで、追加及び削除演算はブールマン演算を参照する。追加演算とは、スケッチのために計算された立体が最終立体内の物質を表す一方、削除演算とは、スケッチのために計算された立体が物質の空の体積を表すことを意味する。
【0170】
例において、可能な組合せの集合が可能な組合せのすべてを含むことができる。これにより、全ての組み合わせが計算される。
【0171】
例において、グラフの凹凸情報が追加及び削除演算の組み合わせの数を減らすために使用される。さらに、凹凸情報の知識は、立体が計算されるスケッチの交差ループが内部交差ループであるか外部交差ループであるかの知識と共に使用される。これらの2つの情報は、スケッチ平面のどの側に体積物質が位置するかを決定することを可能にする。この方向を、以前に得られた押出方向(又は、この点に関してはスケッチ回転の方向)と比較することにより、立体が物質を添加するか削除するかを決定することができる。
【0172】
次に、
図31を参照して、立体が追加演算に寄与するか削除演算に寄与するかを決定するための規則を説明する。凸である外部交差ループを有する立体が生成される場合、生成された立体は物質を追加する、すなわち、生成された立体は、追加ブール演算に使用される。凹部である外部交差ループを有する立体が生成される場合、生成された立体は、削除ブール演算に使用される。内部交差ループが凹部である立体が生成される場合、生成された立体は、追加ブール演算に使用される。そして、コンベックスである内部交差ループを有する立体が生成される場合、生成された立体は、削除ブール演算に使用される。
【0173】
これらの規則の使用は、全ての組み合わせが計算される網羅的なソリューションと比較して、計算されるセットの組み合わせの数を大幅に減少させる。したがって、S150中に実行するための計算資源の使用を減少させることに寄与する。
【0174】
例において外部又は内部交差ループ(又は逆に、交差ループのグローバル凹凸)のグローバル凹凸は決定されなくてもよい。このような状況において、前述の規則は適用できない。交差ループの凹部又は凹部が決定不可能であるような状況において、追加及び削除の両方のブール演算が交差ループから生成された立体のために使用される。
【0175】
全てのスケッチがグローバル凹凸が決定され得るループから生成されるわけではないので、2つの立体、すなわち、削除されなければならない立体と、追加される立体とが計算される。これらは、
図29を参照して既に説明したように、異なる押出方向が決定された場合である。興味深いことに、入力メッシュとの比較は、2つの立体のうちの1つのみを保持することを可能にする。
【0176】
例において、グラフの分析が立体間の演算の順序を決定するために行われ、したがって、セットの組み合わせの数を減少させるために行われる。この分析は追加演算が連想的かつ可換的であるので、物質を追加する立体(すなわち、生成された立体は追加ブール演算に使用される)を任意の順序で追加することができるという仮定に依拠する。しかしながら、削除されなければならない立体が検出された場合(立体は削除ブール演算に使用される)、ブール演算の順序もはや任意ではなく、慎重に考慮されなければならない。グラフの分析では、特徴木内の削除演算の場所を指定できる、単純だが頻繁な状況を特定する。これは、すべての立体が立体の境界までしか生成されず、その体積を貫通しない、すなわち、(隣接グラフを分析するときに検出されたもの以外の)立体間の予期せぬ衝突の危険因子がないために可能である。
【0177】
演算の順序を決定するためのグラフの第1の分析が提示される。立体Bが削除演算で使用され、追加演算で使用される単一の生成された立体Aの面にのみ隣接する場合、立体Bの削除演算は立体Aの追加演算の直後に配置され、そうでない場合、追加演算及び削除演算は順序A~Bで実行される。
【0178】
次に、
図33を参照すると、中実332は追加演算に関連付けられ、中実330(三角形パッド)は削除演算に関連付けられる。立体330の面は、立体332に隣接する押出し成形物の削除から生じる。
【0179】
演算の順序を決定するためのグラフの第2の分析が提示される。立体Bが削除演算で使用され、追加演算で使用される2つ以上の生成された立体A及びCの面にのみ隣接する場合、立体Bの削除演算は立体A及びCの追加演算の後に実行され、そうでない場合、追加演算及び削除演算はA+C-Bの順序で実行される。
【0180】
ここで
図34を参照すると、立体340(三角形パッド)は削除演算に関連し、立体342及び344は追加演算に関連する。立体340の面は、立体342及び344の面に隣接している。したがって、立体340の面は、パッド342及び344に隣接する三角形パッドの押出成形物を削除することによって生じる。
【0181】
演算の順序を決定するためのグラフの第3の分析は、
図33及び
図34を参照して説明した前の例を基にして提示される。追加演算で使用される立体Dが削除演算で使用される単一の生成立体Bの面にのみ隣接し、追加演算で使用される単一の生成立体Aの面にのみ隣接するか、追加演算で使用される2つ以上の生成立体の面にのみ隣接する場合、立体Dの削除演算が立体Bに対して最初に実行され、その後、この最初の演算の結果が残りの立体から削除される。そうでなければ、追加及び削除演算は、A+C-(B-D)の順序で実行される。
【0182】
ここで
図35を参照すると、立体350(三角形パッド)は削除演算に関連し、立体352及び354は追加演算に関連する。立体350の面は、立体352及び354の面に隣接している。立体356は立体350から押出シリンダを削除した結果であり、その結果はパッド352及び354から削除される。
【0183】
図19に戻り、S160において、提供されたメッシュを有する各最終立体について類似性スコアが計算される。これは、メッシュと立体との間の差異を客観化(例えば、測定)することを可能にする、当該技術分野において公知の任意の技術を使用して行われる。S160の結果として、最終立体のランキング、すなわち、最も類似した最終立体を、それほど類似しない最終立体に与えることができる。
【0184】
次に、S170において、提供されたメッシュに最も類似する最終立体が類似性スコア、例えば、最高ランキングを有するものに基づいて定義される。これは、当技術分野で知られているように実行される。定義された最も類似した最終立体の追加又は削除演算の組み合わせは、メッシュの特徴木に対応する。これは、スケッチから計算された各立体が演算に関連付けられ、したがって、その掃引演算を用いて計算された各スケッチが、追加又は削除ブール演算に関連付けられた結合を形成することを意味する。一例において、特徴木が保持された演算の組合せによって提供される順序で特徴木のリーフを形成する(スケッチ、掃引演算、ブール演算)の対を含むことができる。組合わせは掃引演算のパラメータ、例えば、掃引演算のタイプ(押し出し、公転、不定)、押し出しの方向及び長さ値、公転軸及び公転角をさらに含んでもよい。
【0185】
例において、この方法が特徴木のグラフィカル表現を表示することを含むことができる。特徴木は、ユーザが編集可能であってもよい。特徴木の表現は、対応するリーフの幾何学的形状又は幾何学的動作の各々を表すグラフィカルアイテムの木配列を含んでもよい。この編集は、例えばグラフィカルインタラクションによりグラフィカルアイテムを選択することを含むことができる。本明細書では、グラフィカルインタラクションは、ディスプレイ上のグラフィカルアイテムの位置に対応する位置でピクセルをアクティブにするように触覚デバイスを動作させることを意味する。例えば、マウスカーソルは、表示されたグラフィックアイテムの上に配置されてもよく、又は表示されたグラフィックアイテムはタッチスクリーンを介して直接的に、又はタッチパッドを介して間接的にタッチされてもよい。この選択は例えばキーボードを介して、ダイアログ・ボックス等を開き、ユーザによって1つ以上のパラメータ値を入力することをトリガすることができる。
【0186】
例において、この方法が提供されたメッシュのグラフィック表現を表示するステップと、一方で、ユーザによって、メッシュから特徴木を抽出するための方法を開始し、その結果、抽出された(生成されたと言うこともできる)特徴木のグラフィック表現を、離散幾何学的表現のグラフィック表現と同時に表示するステップとを含むことができる。次に、ユーザは特徴木のエディションのために、メッシュのグラフィカル表現を隠すことができる。あるいは、本方法がメッシュのグラフィック表現と抽出された特徴木の両方を同時に表示し続けることができ、ユーザが特徴木の編集を実行すると、本方法はそれに応じてメッシュのグラフィック表現を更新(例えば、変更)することができる。これは、編集を実行するユーザに視覚的フィードバックを提供する。逆に、ユーザは例えば、メッシュを形成する1つ以上の要素(頂点、エッジ、面など)を変位させることによって、提供されたメッシュを修正し、特徴木を生成するための方法を実行することによって、特徴木を更新することができる。
【0187】
例において本方法が現実物体上の物理的測定値から決定された3Dメッシュ又は3D点群を入力として取得するように構成され、本方法は現実物体の3D形状を表す対応する編集可能な特徴木を決定することを可能にする。次いで、ユーザは編集可能な特徴木の編集を実行して、例えば、実際のオブジェクトに似ているがそれとは異なるデザインを作成することができる。代替及び追加の例において本方法が対応する編集可能な特徴木を持たない3Dモデル化オブジェクトの3Dメッシュを入力としてとるように構成され、遠隔コンピュータシステムから受信されるか、又は不揮発性メモリから取り出され、本方法は3D形状を表す対応する編集可能な特徴木を決定することを可能にする。次いで、ユーザは例えば、3Dメッシュに似ているがそれとは異なるデザインを作成するために、又は3Dメッシュによって形成されたデザインを完成させるために、編集可能な特徴木の編集を実行することができる。
【0188】
より人間工学的な方法で3D形状の編集を実行する可能性に加えて、又はその代わりに、特徴木の他は、3D形状マージ又は機械的シミュレーションなどの他の目的に役立つことができる。
【0189】
3D形状マージ方法は、コンピュータシステムにおいて、第1の3D形状を表す第1の特徴木を提供するステップと、第2の3D形状のメッシュを提供するステップと、第2の3D形状を表す第2の特徴木を取得するためにメッシュに対して方法を実行するステップと、第1の特徴木と第2の特徴木とをマージするステップとを含むことができる。マージは、任意のマージ技術に従って、及び/又は第1の3D形状と第2の3D形状との間の機械的アセンブリ又は機械的協働を表すために実行され得る。マージは例えば、第2の木を第1の木に接続することを含むことができる。3D形状マージ方法はマージされたツリーに幾何学的モデルを適用して、それによって表される3D形状のグラフィカル表現を取得し、かつ/又は前記グラフィカル表現をユーザに表示することをさらに含むことができる。
【0190】
特徴木に基づいて機械的シミュレーションを実行することができる。実際、特徴木は3D形状をコンパクトに(離散幾何学的表現と比較して)かつパラメータ化された方法で表現するので、本方法で得られた特徴上で機械的計算をより正確に実行することができる。特に、CSGから有限要素メッシュを計算することは、より容易かつ直接的である(論文”Finite-element mesh generation from constructive-solid-geometry models”, Edwin Boender, Willem F.Bronsvoort, Frits H.Post, in Computer-Aided Design, Volume 26, Issue 5, May 1994, Pages 379-392又は論文”Finite element mesh generation methods: a review and classification”, K Ho-Le, in 38 Computer-Aided Design, volume 20 number 1 January/February 1988参照)。また、CSGは表面の防水性を保証する。したがって、機械的シミュレーションは特徴木(例えば、CSG)及び/又はその1つ又は複数の変形例から1つ又は複数の有限要素メッシュを計算することと、次いで、各有限要素メッシュに基づいて有限要素解析を実行することとを含むことができる。また、CSGはパラメータ化されるので、シミュレーションの結果に応じてCSGを容易に最適化できる。したがって、1つ又は複数の変形例は、以前の各有限要素解析結果に基づいて編集可能特徴木(例えばCSG)を最適化するためのものであってもよい。