JP2022075643A - セルのシュリンクラップ - Google Patents
セルのシュリンクラップ Download PDFInfo
- Publication number
- JP2022075643A JP2022075643A JP2021181197A JP2021181197A JP2022075643A JP 2022075643 A JP2022075643 A JP 2022075643A JP 2021181197 A JP2021181197 A JP 2021181197A JP 2021181197 A JP2021181197 A JP 2021181197A JP 2022075643 A JP2022075643 A JP 2022075643A
- Authority
- JP
- Japan
- Prior art keywords
- cells
- cell
- modeled object
- envelope
- grid
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/28—Design optimisation, verification or simulation using fluid dynamics, e.g. using Navier-Stokes equations or computational fluid dynamics [CFD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2113/00—Details relating to the application field
- G06F2113/08—Fluids
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/14—Force analysis or force optimisation, e.g. static or dynamic forces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
- G06F30/15—Vehicle, aircraft or watercraft design
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Computer Hardware Design (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Evolutionary Computation (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Fluid Mechanics (AREA)
- Algebra (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
Abstract
【課題】モデル化オブジェクトのエンベロープを設計するコンピュータ実装方法、コンピュータプログラム、コンピュータ可読記憶媒体及びプロセッサを備えるシステムを提供する。【解決手段】方法は、セルのグリッドに離散化されるモデル化オブジェクトを提供すること及び提供されたモデル化オブジェクトのエンベロープを計算することを含む。これにより、モデル化オブジェクトのエンベロープの設計に関して、改良された解決策がもたらされる。【選択図】図1
Description
本発明は、コンピュータプログラム及びシステムの分野、より具体的には、モデル化オブジェクトのエンベロープを設計するための方法、システム、及びプログラムに関する。
市場には、オブジェクトの設計、エンジニアリング、製造用に、多数のシステム及びプログラムが提供されている。CADは、コンピュータ支援設計(Computer-Aided Design)の頭字語であり、たとえば、オブジェクトを設計するためのソフトウェアソリューションに関する。CAEは、コンピュータ支援エンジニアリング(Computer-Aided Engineering)の頭字語であり、たとえば、将来の製品の物理的挙動をシミュレーションするためのソフトウェアソリューションに関する。CAMはコンピュータ支援製造(Computer-Aided Manufacturing)の頭字語であり、たとえば、製造プロセスや動作を定義するためのソフトウェアソリューションに関する。このようなコンピュータ支援設計システムでは、技術の効率の点でグラフィカルユーザーインターフェイスが重要な役割を果たす。これらの技術は、製品ライフサイクル管理(PLM)システム内に組み込まれ得る。PLMとは、企業が製品データを共有し、共通の処理を適用し、企業知識を活用して、拡張エンタープライズの概念にわたって、コンセプトから生涯にわたる製品の開発に役立てることを支援するビジネス戦略のことをいう。ダッソー・システムズが(CATIA、ENOVIA、DELMIAの商標のもと)提供するPLMソリューションでは、製品エンジニアリングの知識を編成するエンジニアリングハブと、製造エンジニアリングの知識を管理する製造ハブと、企業統合と、エンジニアリング及び製造ハブへの企業の接続とを可能にする企業ハブが提供される。これらを合わせたシステムは、製品定義、製造準備、生産、及びサービスの最適化を促進するダイナミックかつ知識ベースの製品作成及び意思決定サポートを可能にするために、製品、プロセス、リソースをリンクするオープンオブジェクトモデルを提供する。
こういった背景において、コンピュータグラフィックスの分野はますます有用な技術を提供する。現実世界のオブジェクトのモデルは、複雑なジオメトリーで表される。業界における設計プロセスの中にはエンベロープを必要とするものがいくつかあり、エンベロープとは、たとえば、モデル化オブジェクトの設計意図、つまり、現実世界でのオブジェクトの使用や目的に関する設計者の仕様を尊重しながら、モデル化オブジェクトのジオメトリー的特徴のディテールを単純化する元のモデルを囲むモデルである。したがって、モデル化オブジェクトの設計意図は、モデル化オブジェクトの主なジオメトリー及びトポロジー的特徴を特定する。主なジオメトリー的特徴は、凸状及び非凸状の領域、及び/又は、モデルに存在する穴又はギャップで構成されてもよい。設計プロセス中に、見えないジオメトリーを破棄するか、モデル化オブジェクトを単純化する必要があり得る。このようなモデルは、ユーザーには見えない(つまり、設計意図に関連しない)場合もあるが、それでもレンダリングされる数百万の要素で構成される複雑なジオメトリーを含み得る。非常に複雑なモデルでは、レンダリングがますます困難になる可能性もあり、たとえば、3Dモデルは、ユーザーには見えないジオメトリーや設計プロセスには不要な他の内部ジオメトリーを含む数億個の三角形を含み得る。したがって、レンダリングには、設計プロセス内でユーザーに人間工学的な影響を与える計算負荷が必要となり、たとえばフレームレートが低すぎてリアルタイムのインテラクションができないことが原因である。このような場合、見えないジオメトリーを手動で削除して、外部ジオメトリーのみを保持してもよい。しかし、見えないジオメトリーを手動で削除することは、複雑なモデルの場合、費用と時間のかかる手順である。さらに、外部ジオメトリーには、目前の設計タスクには不要なディテールが含まれている場合や、複雑すぎてリアルタイムのレンダリングが不可能な場合がある。
エンベロープは、主要なトポロジー的特徴を維持して設計意図を維持しながら、不要なジオメトリーを削除することにより、ジオメトリー的外観の複雑さを軽減することができる。これは、たとえば、拡張現実が関与するコンピュータシミュレーションの場合である。見えないジオメトリーがレンダリングされない場合でも、モデルが複雑すぎて業務用機械ではレンダリングできない場合がある。こういった背景では、インポスターのジオメトリーは、実際のモデルを表す三角形の数が少ないメッシュである。このインポスターのジオメトリー(置換モデルとも呼ばれる)を使用して、元のモデルの外観はインポスターのテクスチャに「ベイク処理」(コンピュータグラフィックスの分野でそれ自体が公知)される。別の例として、流体内の物体をシミュレーションする際には、主要なトポロジー的特徴のみの流体力学をシミュレーションする必要があり得る。モデルのエンベロープは主要なトポロジーは保持するが、シミュレーションの意図に影響を与えるパーツ内の小さなギャップ又は穴を閉じる。
エンベロープを取得するための技術はいくつか存在し、上記した適用のいくつかに使用できる。3Dグラフィックスという文脈では、ラップを使用して3Dモデルの見えない面を削除し、三角形の数を減らす。上記のラップは、ジャケッティングによって使用されてもよい。
以下のアプローチでは、ジャケッティングの技術、つまりモデルの面の可視性を判断する方法について説明する。
最初のアプローチは、さまざまなカメラビューからモデルをレンダリングすることである:このアプローチでは、3Dモデルは3D空間にあり、多数のカメラがモデルの周囲に配置される。カメラごとに、カメラから見た3Dモデルを表す画像がレンダリングされる。その画像でピクセルを作成する各面は見える面のままであるが、どのカメラからもピクセルを作成しなかった面は削除される。
しかし、最初のアプローチにはいくつかの欠点がある。1つ目の欠点は、画像の解像度によってラップのディテールが制限されることである:画像のディテールが少ないほど、ラップのディテールは少なくなる。2つ目の欠点は、ラップのディテールがカメラの数に依存することである。ただし、カメラの密度を高くして各カメラがキャプチャする各画像を解像しても、結果として、複雑なモデルでは計算時間がひどく長くなる。3つ目の欠点は、設計意図が維持される保証がないことである。実際に、非凸領域は適切にカバーされていないか、又は、別の(より近い)ビューからは見えていても面が削除される可能性がある。
2番目のアプローチは、周囲の球から「可視性光線」を放射することである。このアプローチは、さまざまなカメラビューからモデルをレンダリングする方法を拡張したものである。光源は(モデルを囲む)球上に配置され、モデルに向かって光線を放射する。光線が当たった面は見えたままであるが、光線が当たっていない面は削除される。
しかし、このアプローチにも欠点がある。
最初のアプローチと同様、ラップのディテールは光線の密度に依存する。ただし、光線の密度を高くしても、結果として、大規模な設計ではかなりの処理時間を要する。2つ目の欠点は、非凸領域が適切にカバーされていないために設計意図が保持されない可能性があり、そして、別の(より近い)ビューからは見えるにもかかわらず面が削除される可能性があることである。
シュリンクラップは、モデルを囲んだバウンディング球を縮小して変形するアプローチである。変形した球のジオメトリーはモデルに近づき、つまり、変形した球は元のモデルと交差しないが、オブジェクトまでの距離を短く保つ。ラップは通常、ラップの「硬さ」により小さな穴をカバーするが、より大きな開口部もカバーし得る。次に、光源がラップのメッシュ上に配置され、3Dモデルのメッシュに向かって放射される。
この3番目のアプローチの欠点をいくつか説明する。まず、囲っている球を変形するには、ラップメッシュの適応的な微調整と、元のジオメトリーとの交差テストが必要である。その結果、大規模な設計ではかなりの処理時間を要する。次に、このアプローチでは設計意図が維持されない。これは特に、設計意図に、変形した球によって尊重されない穴などのトポロジー的特徴が含まれている場合に当てはまる。たとえば、トポロジーの分野からそれ自体公知であるように、本方法ではドーナツ(続いた表面と穴を持っている)のラップを取得することはできない。実際に、ドーナツのラップは穴の領域でラップ自体に触れることとなる。最初の球は適応的に微調整されるだけでカットによって開かれていないため、複数の穴があるオブジェクトに対して同等のラップ形状を取得することは不可能である。トポロジーの分野でそれ自体公知であるように、継続して縮小及び変形されるすべてのジオメトリー的オブジェクトに同じ問題が当てはまる。特に、インポスターのジオメトリーの場合、不適切にカバーされた領域でのインポスターのテクスチャコンテンツは定義されないため、レンダリング時にインポスターのジオメトリーは異常を示す。
さらに、別の(より近い)ビューから見えていても面が削除され得るため、設計意図も保持されない場合がある。
局所凸包エンベロープとして知られるアプローチについて説明する。このアプローチでは、モデルは、3D設定でボクセルとも呼ばれる、サブボリュームを含むセルのグリッドに分割される。各サブボリュームごとに、凸包のジオメトリーが計算される。最後に、完全なモデルの続いている包表面を取得するために、すべての包ジオメトリーが統合される。
この第4のアプローチには、いくつかの欠点がある。グリッドのサブボリュームのサイズが、閉じられるべきギャップのサイズを決定し、それによって設計意図に影響を与える。サブボリュームのサイズがモデルのギャップよりも大幅に小さい場合(たとえば、2倍超えで小さい場合)、エンベロープは、モデル化オブジェクトの内部(つまり、見えない)ジオメトリーを含むギャップを介して内部ジオメトリーに入り、それによって不要なディテールをキャプチャする。大きすぎると、サブボリュームよりも小さいサイズのギャップはすべて無視され得、一部のジオメトリー的領域(非凸領域など)が適切にカバーされないため、エンベロープは多くのディテールを失ったり、一部のジオメトリー的領域又はトポロジー的特徴を正しくキャプチャしなかったりして、設計意図が保持されない。したがって、この設定では、ユーザーは事前にサブボリュームのサイズを指定する必要がある。さらに、制約が厳しすぎて実施できない場合、及び/又は、設計意図を維持するための適切な選択ができない場合があり、つまり、面が異なるビューから見えていても削除されたり、面が見えていないのに削除されていない場合がある。
上記のアプローチと同様の技術を使用して、ラップを生成するための既存のモデリングソフトウェアパッケージがあり、たとえば次が例として挙げられる:
・オートデスク社のMayaは、シュリンクラップによる方法と同様の方法を使用する。特に、より大きなギャップや穴を閉じることができるように、メッシュをリトポロジーするための手動操作が必要である。
・Blenderはシュリンクラップの方法のバージョンも使用するが、さらに別のオブジェクトを使用して、モデル化オブジェクトの表面に縮小することが可能である。ただし、シュリンクラップの方法と同様、縮小されたオブジェクトはモデルのトポロジーを尊重しない。したがって、ユーザーは、穴の周りのラップが正しいかどうかを手動で確認する必要がある。
・Houdiniは、モデルの点の凸包を作成する。局所凸包の方法の欠点は依然として残り、たとえば、サブボリュームのサイズによって、閉じられる穴のサイズが決定される。
・オートデスク社のMayaは、シュリンクラップによる方法と同様の方法を使用する。特に、より大きなギャップや穴を閉じることができるように、メッシュをリトポロジーするための手動操作が必要である。
・Blenderはシュリンクラップの方法のバージョンも使用するが、さらに別のオブジェクトを使用して、モデル化オブジェクトの表面に縮小することが可能である。ただし、シュリンクラップの方法と同様、縮小されたオブジェクトはモデルのトポロジーを尊重しない。したがって、ユーザーは、穴の周りのラップが正しいかどうかを手動で確認する必要がある。
・Houdiniは、モデルの点の凸包を作成する。局所凸包の方法の欠点は依然として残り、たとえば、サブボリュームのサイズによって、閉じられる穴のサイズが決定される。
こういった背景及び別の背景でも、モデル化オブジェクトのエンベロープを設計するための改良された方法が依然として必要である。
したがって、モデル化オブジェクトのエンベロープを設計するためのコンピュータ実装方法が提供される。本方法は以下を含む:
・セルのグリッドに離散化されるモデル化オブジェクトを提供し、それによって、モデル化オブジェクトと交差するセルの第1のセットと空のセルの第2のセットを含むグリッドを取得するステップと、
・モデル化オブジェクトに隣り合うN個のレイヤーを追加することであって、ここで、nは正の整数であり:
・・レイヤーごとに、
-第1のセットの交差したセルと隣接する第2のセットの空のセルを識別するステップ、及び
-第1のセットのセルのセットに、識別された第2のセットのセルを追加するステップを実行して、N-1個のレイヤーを追加するステップ、
・・N番目のレイヤーを、
-第1のセットの交差したセルと隣接する第2のセットの空のセルを識別し;
-識別された第2のセットの空のセルをセルの第3のセットに追加するステップと、を実行して、追加すること、
によって、前記モデル化オブジェクトに隣り合うN個のレイヤーを追加するステップと、
・第3のセットのセルの1つ以上の連続したセットを計算するステップと、
・離散化されたモデル化オブジェクトを囲む1つ以上の連続したセットを識別し、識別された前記1つ以上の連続したセットのセルのみを第3のセットに保持するステップと、
・追加されたN-1個のレイヤーごとに、
・・第1のセットのセルと隣接する第3のセットのセルを識別するステップ、及び
・・識別された第3のセットのセルを隣接セルとして持つ第1のセットのセルを第3のセットのセルに追加するステップ
を実行して、セルの第1のセットを削減(S50)するステップと、及び、
・第3のセットのセルから、提供されたモデル化オブジェクトのエンベロープを計算(S60)するステップ。
・セルのグリッドに離散化されるモデル化オブジェクトを提供し、それによって、モデル化オブジェクトと交差するセルの第1のセットと空のセルの第2のセットを含むグリッドを取得するステップと、
・モデル化オブジェクトに隣り合うN個のレイヤーを追加することであって、ここで、nは正の整数であり:
・・レイヤーごとに、
-第1のセットの交差したセルと隣接する第2のセットの空のセルを識別するステップ、及び
-第1のセットのセルのセットに、識別された第2のセットのセルを追加するステップを実行して、N-1個のレイヤーを追加するステップ、
・・N番目のレイヤーを、
-第1のセットの交差したセルと隣接する第2のセットの空のセルを識別し;
-識別された第2のセットの空のセルをセルの第3のセットに追加するステップと、を実行して、追加すること、
によって、前記モデル化オブジェクトに隣り合うN個のレイヤーを追加するステップと、
・第3のセットのセルの1つ以上の連続したセットを計算するステップと、
・離散化されたモデル化オブジェクトを囲む1つ以上の連続したセットを識別し、識別された前記1つ以上の連続したセットのセルのみを第3のセットに保持するステップと、
・追加されたN-1個のレイヤーごとに、
・・第1のセットのセルと隣接する第3のセットのセルを識別するステップ、及び
・・識別された第3のセットのセルを隣接セルとして持つ第1のセットのセルを第3のセットのセルに追加するステップ
を実行して、セルの第1のセットを削減(S50)するステップと、及び、
・第3のセットのセルから、提供されたモデル化オブジェクトのエンベロープを計算(S60)するステップ。
方法は、以下のうちの1つ以上をさらに含んでもよい、
-離散化されたモデル化オブジェクトを囲む1つ以上の連続したセットを識別するステップが、さらに以下を含む、
・決定された1つ以上の連続したセットが、他の決定された1つ以上の連続したセットによって囲まれているかどうかを決定するステップと、
・決定された1つ以上の連続したセットが、他の決定された1つ以上の連続したセットによって囲まれている場合、決定されたセルの連続したセットのセルを、セルの第4のセットに追加することにより、第3のセットのセルの囲まれた連続したセットのセルを削除するステップと、
-セルの第1のセットを削減することが、追加されたN-1個のレイヤーごとに、さらに以下を含む、
・第1のセットのセルと隣接する第4のセットのセルを識別するステップと、
・識別された第4のセットのセルを隣接セルとして持つ第1のセットのセルを第4のセットのセルに追加するステップと、
・識別された第4のセットのセル又は識別された第3のセットのセルを隣接セルとして有さない第1のセットの各セルに関しては、
・・当該セルを囲むセルを決定し、それによってセルの周辺域を形成するステップ、
・・セルの周辺域のいずれかのセルが第3のセット又は第2のセットのセルと交差する場合は、セルの第3のセットに当該セルを追加するステップ、又は、
・・セルの周辺域のどのセルも第3のセット又は第2のセットのセルと交差しない場合は、セルの第4のセットに当該セルを追加するステップ、
-当該セルを囲むセルを決定することは、以下を含む、
・第1のセットのセルから、複数の光線をトレースするステップと、
・光線が交差する、前記追加されたN-1個のレイヤーのセルを識別するステップと、
・識別された光線が交差するセルによって、セルの周辺域を形成するステップと、
-光線は、セルの第1のセットを削減するごとに減少する長さでトレースされ、ここで、光線の最初の長さはN個のセルの長さであるステップと、
-エンベロープを計算する前に、
・セルの第2又は第3のセットに属するセルのみを隣接セルに持つ第3のセットのセルを識別するステップ、及び
・識別されたセルをセルの第2のセットに追加するステップによって、
離散化されたモデル化オブジェクトを囲む第3のセットのセルの間引きを実行するステップと、
-エンベロープを計算する前に、
・離散化されたモデル化オブジェクトを囲む、第3のセットのセルの1つ以上の連続したセットを、
・・第3のセットのセルと隣接する第4のセットのセルを識別するステップ、及び
・・識別された第4のセットのセルを、セルの第3のセットに追加するステップ、
により入り込ませるステップと、
-第3のセットのセルから、提供されたモデル化オブジェクトのエンベロープを計算することが、さらに以下を含む、
・セルの第2のセットのセルを隣接セルに持つ第3のセットのセルを識別するステップと、
・識別された第3のセットのセルから、提供されたモデル化オブジェクトのエンベロープを計算するステップと、
-提供されるモデル化オブジェクトは2dジオメトリーであり、セルのグリッドは2dグリッドであり、隣接セルはx方向又はy方向のいずれかで座標の観点から隣接しているか、又は、提供されるモデル化オブジェクトは3dジオメトリーであり、セルのグリッドはボクセルのグリッドであり、隣接セルはx、y、又はz方向のいずれかで座標の観点から隣接している;
-識別された第3のセットのセルから、提供されたモデル化オブジェクトのエンベロープを計算するステップは、さらに以下を含む、
・提供されるモデル化オブジェクトが、2Dのベクター画像で表される2dジオメトリーであり、セルのグリッドが2dグリッドである場合、セルを2dの線のセットに変換することによってエンベロープを計算するステップ、又は、
・提供されるモデル化オブジェクトが、メッシュからなる3dジオメトリーであり、セルのグリッドがボクセルのグリッドである場合、識別されたセルを四辺形メッシュに変換することによってエンベロープを計算するステップ、
-提供されるモデル化オブジェクトが3dジオメトリーである場合、提供されるモデル化オブジェクトのエンベロープは、第2のセットのセルと隣り合う第3のセットの各セルの面を四角形メッシュに変換することによって計算される。
-離散化されたモデル化オブジェクトを囲む1つ以上の連続したセットを識別するステップが、さらに以下を含む、
・決定された1つ以上の連続したセットが、他の決定された1つ以上の連続したセットによって囲まれているかどうかを決定するステップと、
・決定された1つ以上の連続したセットが、他の決定された1つ以上の連続したセットによって囲まれている場合、決定されたセルの連続したセットのセルを、セルの第4のセットに追加することにより、第3のセットのセルの囲まれた連続したセットのセルを削除するステップと、
-セルの第1のセットを削減することが、追加されたN-1個のレイヤーごとに、さらに以下を含む、
・第1のセットのセルと隣接する第4のセットのセルを識別するステップと、
・識別された第4のセットのセルを隣接セルとして持つ第1のセットのセルを第4のセットのセルに追加するステップと、
・識別された第4のセットのセル又は識別された第3のセットのセルを隣接セルとして有さない第1のセットの各セルに関しては、
・・当該セルを囲むセルを決定し、それによってセルの周辺域を形成するステップ、
・・セルの周辺域のいずれかのセルが第3のセット又は第2のセットのセルと交差する場合は、セルの第3のセットに当該セルを追加するステップ、又は、
・・セルの周辺域のどのセルも第3のセット又は第2のセットのセルと交差しない場合は、セルの第4のセットに当該セルを追加するステップ、
-当該セルを囲むセルを決定することは、以下を含む、
・第1のセットのセルから、複数の光線をトレースするステップと、
・光線が交差する、前記追加されたN-1個のレイヤーのセルを識別するステップと、
・識別された光線が交差するセルによって、セルの周辺域を形成するステップと、
-光線は、セルの第1のセットを削減するごとに減少する長さでトレースされ、ここで、光線の最初の長さはN個のセルの長さであるステップと、
-エンベロープを計算する前に、
・セルの第2又は第3のセットに属するセルのみを隣接セルに持つ第3のセットのセルを識別するステップ、及び
・識別されたセルをセルの第2のセットに追加するステップによって、
離散化されたモデル化オブジェクトを囲む第3のセットのセルの間引きを実行するステップと、
-エンベロープを計算する前に、
・離散化されたモデル化オブジェクトを囲む、第3のセットのセルの1つ以上の連続したセットを、
・・第3のセットのセルと隣接する第4のセットのセルを識別するステップ、及び
・・識別された第4のセットのセルを、セルの第3のセットに追加するステップ、
により入り込ませるステップと、
-第3のセットのセルから、提供されたモデル化オブジェクトのエンベロープを計算することが、さらに以下を含む、
・セルの第2のセットのセルを隣接セルに持つ第3のセットのセルを識別するステップと、
・識別された第3のセットのセルから、提供されたモデル化オブジェクトのエンベロープを計算するステップと、
-提供されるモデル化オブジェクトは2dジオメトリーであり、セルのグリッドは2dグリッドであり、隣接セルはx方向又はy方向のいずれかで座標の観点から隣接しているか、又は、提供されるモデル化オブジェクトは3dジオメトリーであり、セルのグリッドはボクセルのグリッドであり、隣接セルはx、y、又はz方向のいずれかで座標の観点から隣接している;
-識別された第3のセットのセルから、提供されたモデル化オブジェクトのエンベロープを計算するステップは、さらに以下を含む、
・提供されるモデル化オブジェクトが、2Dのベクター画像で表される2dジオメトリーであり、セルのグリッドが2dグリッドである場合、セルを2dの線のセットに変換することによってエンベロープを計算するステップ、又は、
・提供されるモデル化オブジェクトが、メッシュからなる3dジオメトリーであり、セルのグリッドがボクセルのグリッドである場合、識別されたセルを四辺形メッシュに変換することによってエンベロープを計算するステップ、
-提供されるモデル化オブジェクトが3dジオメトリーである場合、提供されるモデル化オブジェクトのエンベロープは、第2のセットのセルと隣り合う第3のセットの各セルの面を四角形メッシュに変換することによって計算される。
さらに、セルのグリッドを格納するデータ構造が提供され、データ構造は、セルのグリッドを等しいサイズのサブグリッドに分割し、各サブグリッドは、本方法における、セルの第1、第2、第3及び第4のセットの少なくとも1つを示すポインタを含む。
さらに、当該方法を実行するための命令を含むコンピュータプログラムが提供される。
さらに、当該コンピュータプログラムを記録したコンピュータ可読記憶媒体が提供される。
さらに、当該コンピュータプログラムを記録したメモリと、グラフィカルユーザーインターフェイスに結合されたプロセッサを備えるシステムが提供される。
図1を参照すると、モデル化オブジェクトのエンベロープを設計するためのコンピュータ実装方法が提供される。本方法は、モデル化オブジェクトを提供するステップS10を含む。モデル化オブジェクトは、セルのグリッドに離散化され、それによって、モデル化オブジェクトと交差するセルの第1のセットと空のセルの第2のセットを含むグリッドを取得する。本方法は、セルのグリッドに離散化されるモデル化オブジェクトに隣り合うN個のレイヤーを追加するステップS20をさらに含む。Nは正の整数であり、追加されるレイヤーの数を表す。レイヤーは連続して追加されるため、N未満の順序付けられた正の整数であるp値が存在し、Nの数に達するまで対応するレイヤーが追加されたことを示す。たとえば、レイヤーが1つしか追加されない場合(N=1)、pの値は少なくともp=1となる。p=1の場合は第1のレイヤーが追加され、p=2の場合は第2のレイヤーが追加され、p=3の場合は第3のレイヤーが追加される、など、N番目のレイヤーはp=Nの場合に追加される。N個のレイヤーを追加するステップは、追加される第1のN-1個のレイヤーのうち、追加されたレイヤーごとに連続して、第1のセットの交差したセルと隣接する第2のセットの空のセルを識別し、第1のセットのセルのセットに、識別された第2のセットのセルを追加することを実行することを含む。N個のレイヤーを追加するステップは、さらに、N番目のレイヤーについて、第1のセットの交差したセルと隣接する第2のセットの空のセルを識別し、識別された第2のセットの空のセルをセルの第3のセットに追加することを実行することを含む。第3のセットのセルは、新しいカテゴリのセルであり、エンベロープの計算に使用されるセルのグリッドのセルを定義する。
本方法は、第3のセットのセルの1つ以上の連続したセットを計算するステップS30をさらに含む。したがって、本方法は、セルのグリッド内で隣り合っている(すなわち、互いに隣同士である)第3のセットのセルのセットを計算する。たとえば、線又は曲線が、前記連続したセットのうちの1つのセットにわたってグリッド内でトレースされてもよく、前記セットのすべてのセルと交差しつつその間で別のセットに属するセルを持たずに、トレースされてもよい。したがって、このステップにより、セルの第3のセットから計算された任意の候補エンベロープが、つながっている閉じた形状をもたらすことが保証される。
本方法はさらに、離散化されたモデル化オブジェクトを囲む1つ以上の連続したセットを識別し、識別された前記1つ以上の連続したセットのセルのみを第3のセットに保持するステップS40を含む。たとえば、バウンディングボリュームが、第3のセットの保持されたセルと交差するグリッド内でトレースされてもよく、それにより、候補エンベロープを構築する。
本方法は、セルの第1のセットを削減するステップS50をさらに含む。削減するステップは、追加されたN-1個のレイヤーごとに、第1のセットのセルと隣接する第3のセットのセルを識別し、識別された第3のセットのセルを隣接セルとして持つ第1のセットのセルを第3のセットのセルに追加することを実行することを含む。したがって、本方法は、離散化されたモデル化オブジェクトを囲んだ連続したセットを、追加されたレイヤーに拡張し、候補エンベロープをもたらす。
本方法はさらに、第3のセットのセルから、提供されるモデル化オブジェクトのエンベロープを計算するステップS60を含む。
本方法は、モデル化オブジェクトのエンベロープを設計するための改良された解決策を提供する。エンベロープは、セルのグリッドに離散化されたモデル化オブジェクトに基づいて設計されており、そのため、2つのカテゴリのセルが取得される:モデル化オブジェクトと交差するセルの第1のセットと空のセルの第2のセットである。モデル化オブジェクトの2つのカテゴリのセルにより、モデル化オブジェクトの物質を構成する部分の空間分布を識別することが可能となる。したがって、提供されたモデル化オブジェクトは単純化され、方法の次の操作は、前記2つのカテゴリのセルのセットに対して実行することができる。このような操作は、前記2つのカテゴリを示すポインタを利用する高度な並列実施に適している可能性があり、計算速度を向上させる効率的な実施を可能にする。したがって、エンベロープを計算する時間を大幅に短縮できるため、エンドユーザーにとって、人間工学的にさらに向上する。
さらに、本方法は、設計意図を維持しつつ、たとえばインタラクティブな設計プロセス設計に好ましい単純化されたジオメトリーを持つインプットモデルの、セルに基づいたエンベロープを決定する。モデルが小さなギャップを閉じ、ギャップが閉じられたモデル化オブジェクトを囲むセルの候補エンベロープからエンベロープが計算されるため、設計意図は維持される。グリッドの第1のセットのセルによって表されるモデル化オブジェクトの分布を拡張するレイヤーの追加により、ギャップは閉じられる。これは、モデル化オブジェクトの物質の加熱プロセスに相当する。グリッドに追加されたN個のレイヤーのサイズよりも小さいサイズのモデル化オブジェクトのギャップがカバーされる。言い換えれば、セルのグリッドのサイズとは無関係及び自動的に、N個のレイヤーを介して物質がモデル化オブジェクトのギャップに追加される。本方法で追加される最後のレイヤー(N番目のレイヤー)は、第3のセットのセルの1つ以上の連続したセットを形成するセルを含むレイヤーであり、よって、第3のセットのセルの連続したセットから1つ以上の候補エンベロープを定義する。1つ以上の連続したセットの識別により、モデル化オブジェクトの候補エンベロープを識別することが可能となる。次に、物質はモデル化オブジェクトのすべての方向に拡張されているので、追加された物質は削減するステップによって削除され、これは、追加された物質からなるセルの隣接セルが候補エンベロープのセルであることを識別することにより、実施される。この場合、追加された物質のセルは第3のセットのセルに追加され、それによって、候補エンベロープが、追加された物質がその前に占めていた範囲に拡張される。これは、セルの第1のセットの削減を介して実行されるモデル化オブジェクトの冷却に相当する。したがって、計算されたエンベロープは、モデル化オブジェクトの主なジオメトリー的特徴を示し、設計意図を維持し、ギャップの除去により簡略化されて表される。
本方法はコンピュータで実行される。つまり、方法のステップ(又は実質的にすべてのステップ)が、少なくとも1台のコンピュータ又は任意のシステムによって実行されることを意味する。したがって、方法のステップは、おそらく完全に自動で、又は半自動で、コンピュータによって実行される。例では、方法の少なくともいくつかのステップは、ユーザーとコンピュータのインテラクションを介して始動されてもよい。必要なユーザーとコンピュータのインテラクションのレベルは、予測される自動化のレベルに依存し、ユーザーの希望を実施する必要性とバランスが取れていてよい。例では、このレベルはユーザー定義及び/又は事前に定義されていてよい。
コンピュータ実装方法の典型的な例は、この目的に適合したシステムで方法を実行することである。システムは、メモリに結合したプロセッサを含み、及び、グラフィカルユーザーインターフェース(GUI)を含んでもよく、メモリは、方法を実行するための命令を含むコンピュータプログラムを記録している。メモリはデータベースを格納していてもよい。メモリは、そのような格納に適合したハードウェアであり、おそらく物理的に異なる部分をいくつか含む(たとえば、プログラム用に1つ、データベース用に1つ)。
モデル化オブジェクトは、通常、3Dのモデル化オブジェクト又は2Dのモデル化オブジェクトであってもよく、たとえば、部品又は部品のアセンブリ、あるいは製品のアセンブリといった、製品を表す。「3Dのモデル化オブジェクト」とは、3Dでの表現を可能にするデータによってモデル化されるオブジェクトを意味する。3Dでの表現により、3次元空間のすべての角度から部品を見ることが可能になる。たとえば、3Dのモデル化オブジェクトは、3Dで表現されている場合、そのいずれかの軸、又は、表示されている画面の任意の軸をもとに、処理及び回転されてもよい。3Dのモデル化オブジェクトは、ボクセルグリッド上で定義されるボクセルを介して、セルへの離散化を許可し得る。ボクセルとは、ボクセルグリッド内のボクセルの位置に対応する3次元座標(たとえば、x-y-z座標)によって識別され得る体積要素である。ボクセルは、たとえば、テクスチャ又はアノテーション/設定情報などの3Dのモデル化オブジェクトのさらなる情報を含んでもよい。「2Dのモデル化オブジェクト」とは、2次元空間でのオブジェクトの2Dでの表現を意味する。このような2Dでの表現は、2Dジオメトリーによって定義されてもよい。このような2Dジオメトリーは、ピクセル、つまり色の点の長方形グリッドを一般的に表すマトリックスデータ構造によって表されてもよい。2Dジオメトリーは、ベクター画像の観点でも表されてもよく、ベクター画像は、カルテシアン空間のベクトルとして定義され、つまり、モデル化オブジェクトの点を線と曲線で接続し、モデル化オブジェクトの形状を形成してもよい。
製品を表すモデル化オブジェクトはどれも、ジオメトリー的空間において対応するモデル化オブジェクトの分布を定義するトポロジー構造を持ち得る。モデルのトポロジー構造は、モデルのギャップ、穴、及び/又は空洞の数によって特徴付けられる。
モデル化オブジェクトは、たとえばデータベース内にデータによって定義される任意のオブジェクトである。ひいては、「モデル化オブジェクト」という表現は、データ自体を示す。システムの種類に応じて、モデル化オブジェクトはさまざまな種類のデータによって定義されてもよい。システムは、実際に、CADシステム、CAEシステム、CAMシステム、PDMシステム、及び/又はPLMシステムの任意の組み合わせであってもよい。これらの様々なシステムで、モデル化オブジェクトは対応するデータによって定義される。したがって、CADオブジェクト、PLMオブジェクト、PDMオブジェクト、CAEオブジェクト、CAMオブジェクト、CADデータ、PLMデータ、PDMデータ、CAMデータ、CAEデータが議論されてもよい。ただし、モデル化オブジェクトはこれらのシステムの任意の組み合わせに対応するデータによって定義され得るため、これらのシステムは他のシステムに対して排他的ではない。したがって、システムは、CAD及びPLMシステムの両方であってもよく、これは、以下で説明するそのようなシステムの定義から明らかとなる。
CADシステムという用語は、CATIAといった、モデル化オブジェクトのグラフィック表現に基づいて、少なくともモデル化オブジェクトを設計するために適合されたシステムをさらに意味する。この場合、モデル化オブジェクトを定義するデータは、モデル化オブジェクトの表現を可能にするデータを含む。CADシステムは、たとえば、エッジ又は線を使用し、特定の場合には面又は表面も用いた、CADモデル化オブジェクトを表現したものを提供してもよい。線、エッジ、又は表面は、さまざまな方法で表されてもよく、非一様有理Bスプライン(NURBS)が例として挙げられる。具体的には、CADファイルには仕様が含まれており、そこからジオメトリーが生成されてもよく、これにより、表現したものの生成が可能になる。モデル化オブジェクトの仕様は、単一のCADファイル又は複数のCADファイルに保存されてもよい。CADシステムでモデル化オブジェクトを表すファイルの一般的なサイズは、1部品ごとに1メガバイトの範囲である。また、モデル化オブジェクトは通常、数千の部品のアセンブリであってもよい。
本方法によって得られたエンベロープを含む、本明細書のモデル化オブジェクトはいずれも、現実世界で製造される製品のジオメトリー(3D又は2D)を表してもよく、(たとえば機械的)部品又は部品のアセンブリ(部品のアセンブリは、本方法の観点から部品自体と見なされ得る、又は、本方法はアセンブリの各部品に独立して適用され得るため、同等で部品のアセンブリ)、又は、より一般的には、任意の剛体のアセンブリ(たとえば、可動機構)が例として挙げられる。したがって、前記モデル化オブジェクトのいずれも、あらゆる機械部品であり得る工業製品を表してもよく、たとえば、陸上車両の部品(自動車及び軽トラック機器、レーシングカー、オートバイ、トラック及びモーター機器、トラック及びバス、列車などを含む)、航空車両の部品(たとえば機体機器、航空宇宙機器、推進機器、防衛製品、航空機器、宇宙機器などを含む)、海上車両の部品(たとえば海軍機器、商用船、沖合機器、ヨット及び作業船、船舶機器などを含む)、一般的な機械部品(たとえば産業用製造機械、重機用機械又は機器、設置機器、産業用機器製品、金属加工製品、タイヤ製造製品などを含む)、電気機械又は電子部品(たとえば家電機器、セキュリティ及び/又は制御及び/又は計測製品、コンピューティング及び通信機器、半導体、医療装置及び機器などを含む)、消費財(たとえば家具、家庭及び庭用製品、レジャー用品、ファッション製品、耐久消費財小売業者の製品、織物類小売業者の製品などを含む)、パッケージ(たとえば食品及び飲料及びタバコ、美容及びパーソナルケア、家庭用品の包装などを含む)である。前記モデル化オブジェクトのいずれかは、次に、CADシステム又はソフトウェアソリューションを介して、設計プロセスに組み込まれてもよい。CADソフトウェアソリューションを使用すると、航空宇宙、建築、建設、消費財、ハイテク機器、産業機器、輸送、海洋、及び/又は沖合の石油/ガス生産又は輸送など、果てのないさまざまな産業分野での製品の設計が可能になる。
図2は、CADシステムのGUIの例を示している。
GUI2100は、標準的なメニューバー2110、2120と、下部及びサイドツールバー2140、2150を持つ、典型的なCADのようなインターフェースであってもよい。そのようなメニュー及びツールバーは、ユーザーが選択可能なアイコンのセットを含み、各アイコンは、当技術分野で知られているように、1つ以上の操作又は機能に関連付けられている。これらのアイコンには、GUI2100に表示される3Dのモデル化オブジェクト2000の編集及び/又は作業に適合したソフトウェアツールと関連付けられているものもいくつかある。ソフトウェアツールは、ワークベンチにグループ化されてもよい。各ワークベンチは、ソフトウェアツールのサブセットを含む。特に、ワークベンチの1つに、モデル化された製品2000のジオメトリー的特徴を編集するのに適したエデションワークベンチがある。操作中、設計者は、たとえば、オブジェクト2000の一部を事前に選択し、動作を開始し得(たとえば、寸法、色などを変更する)、又は、適切なアイコンを選択してジオメトリー的な制約を編集してもよい。たとえば、一般的なCAD操作は、画面に表示される3Dのモデル化オブジェクトのパンチング又はフォールディングのモデリングである。GUIは、たとえば、表示された製品2000に関連するデータ2500を表示してもよい。図の例では、「機能ツリー」として表示されたデータ2500とそれを3Dで表現したもの2000は、ブレーキキャリパーとディスクを含むブレーキアセンブリに関連している。GUIは、たとえば、オブジェクトの3D配向を容易にする、編集される製品の動作のシミュレーションを始動する、又は、表示された製品2000の様々な属性をレンダリングするための、様々な種類のグラフィックツール2130、2070、2080をさらに示してもよい。カーソル2060は、ユーザーがグラフィックツールと相互に作用できるハプティックデバイスによって制御されてもよい。
図3は、システムの一例を示しており、システムは、クライアントコンピュータシステムであり、たとえば、ユーザーのワークステーションである。
この例のクライアントコンピュータは、内部通信BUS1000に接続された中央処理装置(CPU)1010と、同じくBUSに接続されたランダムアクセスメモリ(RAM)1070とを備える。クライアントコンピュータはさらに、BUSに接続されたビデオランダムアクセスメモリ1100と関連するグラフィックプロセッシングユニット(GPU)1110を備えている。ビデオRAM1100は、当技術分野ではフレームバッファとしても知られている。大容量記憶装置コントローラ1020は、ハードドライブ1030などの大容量記憶装置への訪問を管理する。コンピュータプログラムの命令及びデータを明確に具体化するのに適した大容量メモリデバイスにはあらゆる形態の不揮発性メモリが含まれ、例として、EPROM、EEPROM、及びフラッシュメモリデバイスなどの半導体メモリデバイス;内蔵ハードディスクやリムーバブルディスクなどの磁気ディスク;光磁気ディスク;及びCD-ROMディスク1040が挙げられる。前述したものはいずれも、特別に設計されたASIC(特定用途向け集積回路)によって補完又は組み込まれてもよい。ネットワークアダプタ1050は、ネットワーク1060への訪問を管理する。クライアントコンピュータはまた、カーソル制御デバイス、キーボードなどのようなハプティックデバイス1090を含んでもよい。カーソル制御デバイスは、ユーザーがディスプレイ1080上の任意の所望の位置にカーソルを選択的に配置することを可能にするために、クライアントコンピュータで使用される。さらに、カーソル制御装置により、ユーザーはさまざまなコマンドを選択し、制御信号を入力することが可能となる。カーソル制御装置は、システムに制御信号を入力するためのいくつかの信号生成装置を含む。通常、カーソル制御デバイスはマウスであってもよく、マウスのボタンは信号を生成するために使用される。代替的又は追加的に、クライアントコンピュータシステムは、感圧パッド、及び/又は感圧スクリーンを含んでもよい。
コンピュータプログラムは、コンピュータによって実行可能な命令を含んでもよく、命令は、上記のシステムに方法を実行させるための手段を含んでもよい。プログラムは、システムのメモリを含む任意のデータ記憶媒体に記録可能であってもよい。プログラムは、たとえば、デジタル電子回路、又はコンピュータハードウェア、ファームウェア、ソフトウェア、又はそれらの組み合わせで実施されてもよい。プログラムは、たとえば、プログラム可能なプロセッサによる実行のために機械可読記憶装置に有形に具体化された製品などの装置として実施されてもよい。方法のステップは、命令のプログラムを実行し、入力データを操作及び出力を生成して方法の機能を実行する、プログラム可能なプロセッサによって実行されてもよい。したがって、プロセッサは、プログラム可能であり、データ記憶システム、少なくとも1つの入力デバイス、及び少なくとも1つの出力デバイスからデータ及び命令を受信し、これらにデータ及び命令を送信するように、結合されてもよい。アプリケーションプログラムは、高レベルの手続き型プログラミング言語又はオブジェクト指向プログラミング言語で実施されてもよく、必要に応じてアセンブリ言語又は機械語で実施されてもよい。いずれの場合も、言語はコンパイル型又はインタプリタ型言語であってもよい。プログラムは、フルインストールプログラム又は更新プログラムであってもよい。システムにプログラムを適用すると、どのような場合でも、方法を実行するための指示が出される。
図1を再度参照し、モデル化オブジェクトのエンベロープを設計するためのコンピュータ実装方法の例のフローチャートをさらに説明する。
「モデル化オブジェクトのエンベロープ」という用語は、モデル化オブジェクトを囲む任意のジオメトリー的表現を意味する。より正確には、エンベロープは、モデル化オブジェクトと交差することなくモデルオブジェクトの外面をカバーする、ジオメトリー的表現である。したがって、ジオメトリー的空間では、エンベロープを構成する要素(メッシュの面、バウンディングボリュームの一部など)は、モデル化オブジェクトのジオメトリー的表現の外側の境界の補集合に属する。したがって、モデル化オブジェクトのエンベロープは、モデル化オブジェクトと同様の形状を有する。つまり、エンベロープは、同様の特徴、すなわち、モデル化オブジェクトが定義されるジオメトリー的空間内においてモデル化オブジェクトの形状を示すジオメトリー的又はトポロジー的特徴を維持する。言い換えると、エンベロープはモデル化オブジェクトの設計意図を維持し、本質的でないモデル化オブジェクトの構造要素を破棄する。したがって、「本質的でない」とは、モデル化オブジェクトの前記構造要素が、モデル化オブジェクトが表現すべき現実世界のオブジェクトの使用及び目的に関する設計者の仕様に含まれないことを意味する。たとえば、エンベロープは3Dのオブジェクトの外側の体積を囲む境界であってもよく、したがって、見えないジオメトリーはすべて破棄されてもよい。さらに別の例では、エンベロープは、2Dのジオメトリーの外側の領域を囲む境界であってもよい。このような境界のディテールレベルは、3Dオブジェクトの境界のディテールレベルとは異なる場合がある(たとえば、解像度が低い)。
モデル化オブジェクトが提供され(S10)、モデル化オブジェクトはセルのグリッドに離散化される。モデル化オブジェクトの離散化は、提供する前に実行されてもよく、すなわち、離散化されたモデル化オブジェクトが提供される。あるいは、モデル化オブジェクトは、方法を実行するシステムに提供された後に離散化されてもよい。モデル化オブジェクトを提供するということは、オブジェクトを定義するデータがシステムによって利用可能であることを意味する。「セルのグリッドに離散化」という用語は、3Dグリッドであれば3Dジオメトリー的要素(多面体など)又は2Dジオメトリー的要素(多辺形など)であり得るジオメトリー的要素によって「切り取られた」(又はテッセレーション処理された)モデル化オブジェクトの領域空間に関する。セルのグリッドは、通常、有限要素法、有限体積法、有限差分法で使用されるグリッドであってもよい。グリッドは正則グリッドであってもよく、つまり、グリッドのすべてのセルが合同であり、同じ形状とサイズを有する。当技術分野で公知のセルのグリッドの例を以下で提示する。特許請求の範囲で定義される方法はこれらの例に限定されず、いかなるセルのグリッドも使用できることを理解されたい。セルのグリッドは、ジオメトリー的要素が単位正方形(2Dジオメトリー的要素)又は単位立方体(3Dジオメトリー的要素)であるカルテシアン座標系グリッドであってもよい。セルのグリッドは、長方形(2Dジオメトリー的要素)又は直方体(3Dジオメトリー的要素であり、平行六面体とも呼ばれる)によるテッセレーションが行われた直線グリッドであってもよい。グリッドは、平行四辺形(2Dジオメトリー的要素)又は平行六面体(3Dジオメトリー的要素)によるテッセレーションが行われた傾斜グリッドであってもよい。グリッドは、セルが四角形(2Dジオメトリー的要素)又は六面体(3Dジオメトリー的要素)である、正則グリッドに類似した曲線グリッドであってもよい。このように、グリッドの各セルは、グリッドで区切られた面で構成される。離散座標系はグリッド上で決定することができ、グリッドの各セルは、グリッドの次元に沿った個別の座標によって識別される。2つのセルのうち、一方のセルの(グリッドの次元に沿った)座標の少なくとも1つがもう一方のセルの座標と前後する場合、2つのセルは隣接セルである。一方のセルの座標の1つだけがもう一方のセルの座標値と前後する場合、2つのセルは、直接的な隣接セルである。言い換えると、セルサイズで分けられた離散値を含む離散座標系では、ある特定のセルの直接的な隣接セルとは、その特定のセルまでの距離座標がそのセルサイズの分だけ異なるセルである。セルの周囲の周辺域は、座標系に従って定義されてもよい。周辺域のサイズは、グリッドの任意の座標のうちのサイズ値に従って設定されてもよい。したがって、セルの周囲の周辺域は、前記セルの座標との座標上の差が周辺域のサイズよりも小さい座標値を有するセルすべてによって決定されてもよい。
セルのグリッドの解像度は、離散化のディテールレベルを定義する。セルのグリッドの解像度とは、正則グリッドのセルのサイズのことである。たとえば、グリッドの解像度よりも小さいモデルのギャップは無視され得る。グリッドの解像度はユーザーが定義してもよいため、離散化のディテールレベルを制御し得る。グリッドの解像度は自動的に定義されてもよく、たとえば、モデル化オブジェクトの最小ギャップのサイズを考慮する。
セルのグリッドの要素は、同じカテゴリのグリッドのセルの集まりにグループ化されてもよい。提供するステップS10を再度参照すると、セルのグリッドは、モデル化オブジェクトと交差するセルの第1のセットと、空のセルの第2のセットとを含む。したがって、得られたセルのグリッドは、同じカテゴリのグリッドのセルの2つの集まりで構成される。セルのグリッドは、1つ以上のカテゴリのセルを含んでもよい。
「セルのセット」は、同じカテゴリのグリッドのセルの1つ以上の集まりを示す任意のデータ構造であってもよい。したがって、本方法は、セルの第1のセット、セルの第2のセット、又は本方法によって記述された他の任意のセルのセットのカテゴリに対してセット操作を実行する。セルのセットは空であってもよく、つまり、セットに属しているセルがないということであり、また、セルのセットは、1つ以上のセルを含んでもよい。
セルのセットに追加されるグリッドのセルは、セルのグリッドで識別され、識別されると、セルのセットに追加される。
セルの第1のセットの要素は、モデル化オブジェクトと交差するセル、つまり、空間上でモデル化オブジェクトとジオメトリー的に交差するグリッドの体積である。たとえば、セルとモデル化オブジェクトとの間の交差は、モデル化オブジェクトの少なくとも1つの点とセルの面の少なくとも1つの点との交差からなり得る。離散化によって得られた空のセルの第2のセットは、セルの第1のセットの(セットの理論的な意味で)補集合に属するグリッドのセルで構成される。したがって、2つのセットの和集合に属するセルは、提供するステップS10を介して取得されたグリッドのすべてのセルである。
提供するステップが実行されると、モデル化オブジェクトに隣り合うN個のレイヤーのセルが追加される。前述のとおり、Nは正の整数であり、追加されるレイヤーの数を表す。2つのサブステップが実行される。1つ目のサブステップはN-1個のレイヤーの追加に関するもので、2つ目のサブステップは最後のレイヤーであるN番目のレイヤーの追加に関するものである。N番目のレイヤーの追加は、N-1個のレイヤーが追加されてから実行される。
N-1個のレイヤーの追加(たとえば、p=1の場合は第1のレイヤーが追加され、p=2の場合は第2のレイヤー、p=3の場合は第3のレイヤー・・・)は、レイヤーが連続して追加される反復プロセスとして考えることができ、各レイヤーに対して以下を実行する:
-第1のセットの交差したセルと隣接する第2のセットの空のセルを識別し;そして、
-第1のセットのセルのセットに、識別された第2のセットのセルを追加する。
-第1のセットの交差したセルと隣接する第2のセットの空のセルを識別し;そして、
-第1のセットのセルのセットに、識別された第2のセットのセルを追加する。
識別された隣接セルは、グリッド上で識別された座標の観点からの隣接セルとして理解される。したがって、本方法によって、離散化オブジェクトのセルを囲む空のセルが第1のセットの新しいセルと関連付けられたことになる。本方法は連続して実行されるため、これはモデル化オブジェクトに物質を追加することに相当する。
したがって、ステップS20で追加されたN-1個のレイヤーは、モデル化オブジェクトをカバーする。特に、N-1個のレイヤーは、モデル化オブジェクトの小さなサイズのギャップをカバーし、ユーザーの設計意図を維持しつつ不要なディテールを削除できる。実際、グリッドに追加されたN-1個のレイヤーは、「ギャップサイズ」、つまりギャップを構成する連続したセルの数が追加されたN-1個のレイヤー未満である場合、セルのグリッドに存在するギャップ(空のセルとして表される)を融合し得る。したがって、レイヤーの数によって、エンベロープが不要なディテールを破棄する範囲が決まる。例では、ユーザーは、追加されたレイヤーが、決定したギャップサイズをカバーするように数値Nを設定すし、したがって、そのギャップサイズよりも小さいサイズのギャップをカバーすることにより、モデル化オブジェクトの複雑さを軽減し、ギャップ内のディテールは保持する必要もなく、設計意図内のディテールはギャップサイズによって設定される。たとえば、ユーザーは、N=(「ギャップサイズ」/2)+1として数値Nをギャップサイズに応じて設定することにより、本方法がどのようにギャップを閉じるかを設定してもよい。数値Nは、自動的にギャップサイズを決定することによっても設定されてもよい。さらに、本方法は、離散化されたモデルオブジェクトから連続して追加されるため、モデル化オブジェクトの非凸領域を保持する。
N-1個のレイヤーが追加されると、追加するステップS20の第2のサブステップが実行され、つまり、第1のセットの交差したセルと隣接する第2のセットの空のセルを識別し、識別された第2のセットの空のセルをセルの第3のセットに追加することで、N番目のレイヤー(最後のレイヤー)が追加される。したがって、N番目のレイヤーは、前のレイヤーが追加されたのと同じ原理に従って、グリッドの空のセルを識別することによって追加される。ただし、識別された空のセルは、第1及び第2のセットとは異なり、セルの第3のセットに追加される。N番目のレイヤーは、次のように実行することで追加される:
-第1のセットの交差したセルと隣接する第2のセットの空のセルを識別し;
-識別された第2のセットの空のセルをセルの第3のセットに追加する。
-第1のセットの交差したセルと隣接する第2のセットの空のセルを識別し;
-識別された第2のセットの空のセルをセルの第3のセットに追加する。
本方法は、次に、第3のセットのセルの1つ以上の連続したセットを計算するステップS30を実行する。「連続したセット」とは、グリッド内の隣り合うセルを含む任意のセットを意味し、つまり、セルの要素が、グリッド内の隣接セルの連続的なつながりを定義する。
次に、本方法は、離散化されたモデル化オブジェクトを囲む1つ以上の連続したセットを識別する(S40)。「囲む」とは、連続したセットを構成する隣接セルのつながりが、その内部に第1のセットのセルを有する閉じた離散形状を形成することを意味し;ここで、第1のセットのセルは、モデル化オブジェクトと交差するセル及びステップS20で追加された物質を含む。閉じた形状は、離散境界法を介して決定されてもよく、第1のセットのセルが離散境界の内部に属していることを確認する。「保持する」とは、離散化されたモデル化オブジェクトを囲む連続したセットを形成しない第3のセットのセルが第3のセットから削除されることを意味する。
次いで、本方法は、セルの第1のセットを削減するステップS50を実行する。ステップS20で実行されるレイヤーの追加は、モデル化オブジェクトへの物質の追加に相当する。同様の比喩としては、これまでの方法でモデル化オブジェクトが「加熱」されたため、モデル化オブジェクトは物質のレイヤーが追加されて「拡張」されたということになる。したがって、本方法のステップS50は、離散モデル化オブジェクトを「冷却」することに相当し、追加されたN-1個のレイヤーごとに、以下を実行する:
-第1のセットのセルと隣接する第3のセットのセルを識別し;
-識別された第3のセットのセルを隣接セルとして持つ第1のセットのセルを第3のセットのセルに追加する。
-第1のセットのセルと隣接する第3のセットのセルを識別し;
-識別された第3のセットのセルを隣接セルとして持つ第1のセットのセルを第3のセットのセルに追加する。
1つ以上の連続したセットを構成するセルのみが保持されるため、本方法では、離散化されたモデル化オブジェクトを囲む1つ以上の連続したセットに、追加された物質を構成するセルが連続的に追加される。
次に、本方法は、第3のセットに属する、グリッドの残りのセルをもとに、モデル化オブジェクトのエンベロープを計算する(S60)。構造上、第3のセットのセルは、離散化されたモデル化オブジェクトを囲む。特に、本方法では、ステップS20で追加したN-1個のレイヤーでカバーされた、元のモデルのギャップを開かないエンベロープが取得される。したがって、本方法は、設計意図、つまり、モデル化オブジェクトの使用及び目的を維持するモデル化オブジェクトの主なジオメトリー的及びトポロジー的特徴を維持しながら、ディテール(つまり、追加されたN-1個のレイヤーによってカバーされるギャップ)を削除するエンベロープを計算する。そのようなエンベロープは、設計プロセス中にレビューのステップとして、又は、レビューもしくはプレゼンテーション用に設計プロセスの後に使用されてもよく、単純化されたエンベロープのジオメトリーのおかげでフレームレートが改良されるため、プロセスは非常にインタラクティブである。実際に、エンベロープは、N未満のサイズのモデルのギャップをカバーするレイヤー追加のおかげで、レンダリングするディテールの量がモデル化オブジェクトよりも少なく(たとえば内部ジオメトリーの削除や外部のディテールの減少など)、これにより、ユーザーにとって、設計プロセスが人間工学的に向上する。
例では、離散化されたモデル化オブジェクトを囲む1つ以上の連続したセットを識別するステップS40は、決定された1つ以上の連続したセットが、他の決定された1つ以上の連続したセットによって囲まれているかどうかを決定することをさらに含む。したがって、ステップS40は、連続したセットをそれぞれ構成するセルが他の連続したセットのセルによって境界付けられているかどうか、すなわち、連続したセットそれぞれのセルが、他の囲んでいる連続したセットの離散境界の内部に属するかどうかを決定する。したがって、本方法は、他の連続したセットによって囲まれていない最も外側の連続したセットを識別し得、すなわち、前記セットを囲む第3のセットのセルの離散形状は、あり得ない。内側の連続したセットは、最も外側の連続したセットで囲まれた連続したセットのいずれかである。したがって、最も外側の連続したセットは、モデル化オブジェクトを閉じた形状で囲む候補エンベロープを定義し得る。閉じた形状は閉じたトポロジーを持っているので、候補エンベロープは滑らかなエンベロープを提供するのに役立ち得る。
1つ以上の連続したセットが他の1つ以上の連続したセットによって囲まれる場合、囲まれている連続したセットのセルは、第3のセットのセルから取り除かれ、セルの第4のセットに追加される。したがって、本方法は、ステップS20でモデル化オブジェクトに追加され、モデル化オブジェクトの内部に拡張した物質を識別し得る。本方法は、モデル化オブジェクトの内部ジオメトリーと、ステップS20でN-1個のレイヤーによってカバーされたギャップから残った可能性のある内部ジオメトリーを識別する。これは、構造上、セルの第4のセットに追加された連続したセットは、追加された物質を表すセルと第2のセットの空のセルの間に必ずあり、前記連続したセットは、最も外側の連続したセットによっても囲まれている、という事実のためである。
例では、ステップS40で計算されたセルの第4のセットに属する連続したセットのセットは、モデル化オブジェクトの精密な冷却を可能にする。冷却は、最も外側の連続したセットと、内部のジオメトリーを識別する内側の連続したセットから定められ得るからである。この例に従うと第1のセットのセルを削減するステップS50は、追加されたN-1個のレイヤーごとに、以下のことを含む:
-第1のセットのセルと隣接する第3のセットのセルを識別し;
-識別された第3のセットのセルを隣接セルとして持つ第1のセットのセルを第3のセットのセルに追加する;
そして、さらに、以下のことを含む:
-第1のセットのセルと隣接する第4のセットのセルを識別すること;
-識別された第4のセットのセルを隣接セルとして持つ第1のセットのセルを第4のセットのセルに追加すること;
したがって、本方法は、レイヤーの各セルの削減すべき隣接セルを確認する。この条件を満たさない第1のセットの他のセルは、必然的に第1のセットのセルのみに囲まれている。この状況を処理するために、ステップS50はさらに以下を実行する。
-識別された第4のセットのセル又は識別された第3のセットのセルを隣接セルとして有さない第1のセットの各セルに関しては:
・・当該セルを囲むセルを決定し、それによってセルの周辺域を形成する;
・・セルの周辺域のいずれかのセルが第3のセット又は第2のセットのセルと交差する場合は、セルの第3のセットに当該セルを追加する;又は、
・・セルの周辺域のどのセルも第3のセット又は第2のセットのセルと交差しない場合は、セルの第4のセットに当該セルを追加する。
-第1のセットのセルと隣接する第3のセットのセルを識別し;
-識別された第3のセットのセルを隣接セルとして持つ第1のセットのセルを第3のセットのセルに追加する;
そして、さらに、以下のことを含む:
-第1のセットのセルと隣接する第4のセットのセルを識別すること;
-識別された第4のセットのセルを隣接セルとして持つ第1のセットのセルを第4のセットのセルに追加すること;
したがって、本方法は、レイヤーの各セルの削減すべき隣接セルを確認する。この条件を満たさない第1のセットの他のセルは、必然的に第1のセットのセルのみに囲まれている。この状況を処理するために、ステップS50はさらに以下を実行する。
-識別された第4のセットのセル又は識別された第3のセットのセルを隣接セルとして有さない第1のセットの各セルに関しては:
・・当該セルを囲むセルを決定し、それによってセルの周辺域を形成する;
・・セルの周辺域のいずれかのセルが第3のセット又は第2のセットのセルと交差する場合は、セルの第3のセットに当該セルを追加する;又は、
・・セルの周辺域のどのセルも第3のセット又は第2のセットのセルと交差しない場合は、セルの第4のセットに当該セルを追加する。
したがって、本方法は、追加された物質に囲まれた第1のセットの各セルの周囲の周辺域を定義する。セルの周囲の周辺域は、前記セルの座標との座標上の差が周辺域のサイズよりも小さい座標値を有するセルを決定することで定めることができる。したがって、本方法は、定義された周辺域を使用して、周辺域が第3のセット又は第4のセットのセルと交差するかどうかを確認することによって、セルが第3のセット又は第4のセットに追加されるかどうかを決定する。したがって、本方法は、外側の連続したセット及び内側の連続したセットに対して、レイヤーの第1のセットを削減する。これにより、モデル化オブジェクトに関して、設計意図を維持しつつも複雑さが軽減したエンベロープを計算することが可能になる。実際、外側の連続したセット及び内側の連続したセットに対して第1のレイヤーのセットを削減することによって、本方法では、追加されたN-1個のレイヤーによってカバーされたギャップは開かない。したがって、エンベロープは設計意図を維持しつつも、モデル化オブジェクトに関する複雑さはさらに軽減されたエンベロープとなる。その結果、レンダリングする必要のあるジオメトリーが少なくなり、設計プロセスは人間工学的にさらに向上する。
例では、周辺域の形成は、第1のセットのセルから始まる複数の光線をトレースし、追加されたレイヤーのセルで光線が交差するセルを識別することによって実行され得る。追加されたレイヤーとは、前記第1のセットのセルを含む、ステップS20で追加されたN個のレイヤーのうちの1つである。光線がトレースされるセルは、前記追加されたレイヤーに属する。光線は任意の方向で計算されてもよいが、光線が交差し、光線が放射されたセルのレイヤーに属するセルのみが、周辺域の形成に考慮される。つまり、N-1個のレイヤーの一部ではないセルに当たるとトレースされる光線は停止し、光線は追加されたレイヤーのセルのみを通過する。「トレース」とは、本方法で、モデル化オブジェクトのジオメトリー的空間の線の線表現の1つ以上の値を計算することを意味し、線は、第1のセットのセルと交差する空間内の点から開始し、サイズと方向を含む。1つ以上の線表現はそれぞれ、開始点から開始して任意のサイズで、任意の方向、たとえば、複数の独立した方向にトレースされてもよい。任意の開始点、たとえば、セルの中点に対応するジオメトリー的空間の点などが定義されてもよい。次に、本方法では、光線が交差する識別されたセルによって、セルの周辺域が形成される。交差は、最初に光線を離散化し、光線の離散化によって交差したセルを確認することで、座標の観点から確認され得る。次に、本方法は、光線が交差する識別されたセルによって、セルの周辺域を形成し得る。特に、本方法では、点から始まるすべての可能な光線をトレースする必要がない場合がある。実際、現在処理されているレイヤーの一部ではないセルに当たった場合(つまり、光線が交差した場合)、トレースは停止し得る。そして、本方法では、光線が交差するセルが第3のセットのセル又は第4のセットのセルである場合、そのセルは、セルの第3のセットに追加され、そうでない場合は、セルは、セルの第4のセットに追加される。
例では、セットの周辺域を形成することは、追加された各レイヤーに対して削減するステップS50が実行される際に周辺域サイズを適応させて変更することを含んでもよい。たとえば、ステップS50は、最初にサイズNの周辺域サイズlを設定し、前記サイズの光線をトレースしてセルの周辺域を形成し得る。ステップS50は、p=N-1に対応するレイヤーpにおいて、周辺域サイズl=Nで開始し得る。本方法は、トレースされる光線の長さを、それぞれに応じて減少させる(たとえば、p=N-2の場合はl=N-1など)ことで、追加された各レイヤーp=N-1、p=N-2に対して継続され得る。周辺域の適応計算を改良し得る他の種類の減少が実施されてもよい。たとえば、本方法は、疑似アニーリング法を使ってセルの周辺域を適応的に修正してもよい。
例では、本方法は、エンベロープを計算する前に、離散化されたモデル化オブジェクトを囲む第3のセットのセルの間引きを実行することをさらに含む。間引きは、以下によって実行される:セルの第2又は第3のセットに属するセルのみを隣接セルに持つ第3のセットのセルを識別し、識別されたセルをセルの第2のセットに追加する。したがって、本方法は、空のスペースの隣にあるエンベロープのセルのみを保持し、つまり、エンベロープが、モデル化オブジェクトを囲む最も外側のセルのみで構成される包であることを保証する。したがって、本方法は、離散化されたモデル化オブジェクトを包む複数のレイヤーを持たないようにし、それによってモデル化オブジェクトをレンダリングするときの計算負荷を軽減する。したがって、本方法は、より容易にレンダリングされ得るより詳細なエンベロープを生成し、それにより、設計を人間工学的にさらに改良できる。
本方法ではさらに、候補エンベロープを、追加された物質がカバーする内部空間に押し込むことによって、削減するステップS50の後及び計算するステップS60の前に、候補エンベロープのディテールをさらに解決することが可能になり得る。例では、本方法は、離散化されたモデル化オブジェクトを囲む、第3のセットのセルの1つ以上の連続したセットを入り込ませることで、候補エンベロープを押し込む。これは次ように実行される:
-第3のセットのセルと隣接する第4のセットのセルを識別し;そして、
-識別された第4のセットのセルを、セルの第3のセットに追加する。
-第3のセットのセルと隣接する第4のセットのセルを識別し;そして、
-識別された第4のセットのセルを、セルの第3のセットに追加する。
つまり、本方法は、最初に、ギャップをカバーする候補エンベロープのセルを識別する。実際に、削減するステップS50により、第3のセットの隣接セルを有する第4のセットのセルは、必然的に、カバーされたギャップの内部にあるセルである。次に、本方法は、エンベロープを、カバーされたギャップの内部に押し込む。したがって、本方法は、候補エンベロープの単一の閉じた形状を失うことなく、ギャップのディテールを比較的多く示す、より精密なエンベロープを出力する。
本方法はさらに、第3のセットの残ったセルから、提供されたモデル化オブジェクトのエンベロープを計算し得る。本方法は、計算されたエンベロープが、モデル化オブジェクトとエンベロープの望ましくない交差といった異常を含まないことを保証し得る。例では、提供されたモデル化オブジェクトのエンベロープを、識別された第3のセットのセルから計算することは、さらに:セルの第2のセットのセル、すなわち空のセルを隣接セルに持つ第3のセットのセルを識別すること;そして、認識された第3のセットのセルから、提供されたモデル化オブジェクトのエンベロープを計算することを含む。したがって、本方法は、エンベロープが第1のセットのセルと交差しないことを保証し、モデル化オブジェクトの設計意図を維持する。
本方法は、2Dのモデル化オブジェクト又は3Dのモデル化オブジェクトのエンベロープを計算するのに適用されてもよい。実際には、本方法は、セルのグリッドへの離散化を認める当技術分野で公知の任意の方法に適用されてもよい。たとえば、提供されるモデル化オブジェクトは2dジオメトリーであってもよく、セルのグリッドは2dグリッドであってもよく、ここで、隣接セルはx又はy方向のいずれかで座標的に隣接する。したがって、本方法は、カルテシアン空間におけるセルのグリッドの座標の計算を関与させることで、実施されてもよい。他の例では、提供されるモデル化オブジェクトは3dジオメトリーであってもよく、セルのグリッドはボクセルのグリッドであってもよく、ここで、隣接セルはx、y又はz方向のいずれかで座標的に隣接する。したがって、本方法は、ユークリッド空間におけるセルのグリッドの隣接セルの計算を実行することで、実施されてもよい。
このように、本方法は、入力されたモデル化オブジェクトに従ってエンベロープを出力することができる。計算されたエンベロープは、3Dメッシュ表現からなるラップ、又は2D空間では境界づける外周であってもよい。たとえば、提供されたモデル化オブジェクトが、ビットマップで表される2dジオメトリーであり、セルのグリッドが2dグリッドである場合、セルを2dの線のセットに変換することによってエンベロープを計算してもよい。3Dのモデル化オブジェクトの場合も同様に、提供されたモデル化オブジェクトが、メッシュからなる3dジオメトリーであり、セルのグリッドがボクセルのグリッドである場合、識別されたセルを四角形メッシュに変換することによってエンベロープを計算してもよい。
例では、提供されたモデル化オブジェクトが3dジオメトリーである場合、提供されたモデル化オブジェクトのエンベロープは、第2のセットのセルと隣り合う第3のセットの各セルの面を四角形メッシュに変換することによって計算されてもよい。したがって、本方法では、入力された3Dジオメトリーを球のようなトポロジーでラップし、モデルのギャップをカバーし、非凸領域を適切にキャプチャする単一のエンベロープメッシュが生成される。入り込ませるステップを実行すると、ラップメッシュはエンベロープで覆われたギャップの内部に押し込まれるため、結果として得られるラップは非常に正確であり得る。エンベロープは、モデル化オブジェクトのテクスチャをベイク処理することにより、インポスターのジオメトリーを作成するために使用されてもよい。特に、本方法では、インポスターのテクスチャコンテンツに関して未定義の領域がないようにエンベロープが作成され得るため、明確に定義されたテクスチャを有するインポスターのジオメトリーを取得することが可能になる。
ここで、セルのグリッドを格納するデータ構造の例について説明する。セルのグリッドは、離散化されたモデル化オブジェクトを表す。データ構造は、同じサイズのサブグリッドに分割されたセルのグリッドを格納する。サブグリッドはすべて一緒にグリッド全体をカバーし、各サブグリッドはグリッドの部分を一意的にカバーし、重なることはない。データ構造は、各サブグリッドについて、本明細書で前述した、セルの第1、第2、第3及び第4のセットのうちの少なくとも1つを示すポインタを1つ以上さらに含む。
例では、セルの第1、第2、第3及び第4のセットは、同じサブグリッドのボクセルのみを参照するいくつかに分割されてもよい。これにより、サブグリッドをアドレス指定するメモリ使用量が減少する。これを例示すると、サブボリュームの各次元(x、y、z)に32個のボクセルを含む(3Dグリッドの)サブボリュームは、3Dグリッドのサブボリュームあたり合計32768個のボクセルになる。ボリューム全体を(x、y、z)座標でアドレス指定するには、32ビットの整数を3つ(座標ごとに1つ)、又は、シリアル化されたインデックス(すなわち、(z*(幅*長さ)+y*幅+x))だと64ビットの整数を使用し得る。したがって、セルの第1、第2、第3、及び第4のセットが分割されていると、サブボリュームのセルの各セットに列挙されたセルを示すサブボリュームのポインタのコード化は、所与のサイズを超えることはない。
すでに説明したように、本方法は、セルをセルのセットの1つに割り当てるときに、隣接セルの状態に依存(又は使用)する。したがって、セルのセットは、各セルの(x、y、z)ベクトルによってセルを参照でき、セルの(x、y、z)ベクトルは、サブボリュームの(x、y、z)次元を使用してセル座標を表す。
例では、グリッドは、グリッドの(x、y、z)次元ごとに32セルの同じサイズのサブセルに分割され、前の例と同様、サブボリュームあたり合計32768個のボクセルになる。サブグリッドのセルの(x、y、z)位置は、15ビットにエンコードされ得、15ビットは、ポインタが完全なサブグリッドをアドレス指定するのに十分な大きさである。一例では、15ビットのコード化は次のように使用されてもよい。サブグリッドの各座標の範囲が0~31([0;31]とも記す)と理解し、座標ごとに5ビットを取っておく。これによって、セルを参照するために、16ビットの整数3つではなく、単一の16ビット整数を使用し得る。したがって、さらに多くのメモリが節約される。
次に、サブグリッドのデータ構造の実施例について説明する。この例では、サブグリッドは、サブボリュームの(x、y、z)次元ごとに32個のボクセルのサブボリュームである。structという宣言によって、SubVolume(サブボリューム)という名前のメモリブロックの変数のリストを定義する。いくつかの変数が列挙され、ポインターを使用してアクセスできる。
struct SubVolume {
int8_t *voxelStatesPtr;//32768個のボクセルが不均一なボクセル状態の場合は8192バイトへ示す64ビットのポインタ
int8_t homegeneousState;//サブボリュームが均一状態の場合は1バイト
};//=>サブボリュームあたり72バイト
int32_t volumeDim[3];//各x、y、z方向のボクセルの数
std::vector<SubVolume> semiSparseVoxelGrid;
struct SubVolume {
int8_t *voxelStatesPtr;//32768個のボクセルが不均一なボクセル状態の場合は8192バイトへ示す64ビットのポインタ
int8_t homegeneousState;//サブボリュームが均一状態の場合は1バイト
};//=>サブボリュームあたり72バイト
int32_t volumeDim[3];//各x、y、z方向のボクセルの数
std::vector<SubVolume> semiSparseVoxelGrid;
データ構造は、均一のサブボリューム用に9バイトを有する。均一のサブボリュームは、同じセルのセットに属するセル(ボクセル)のみを有する。したがって、ボクセルはすべて同じセルのセットに属しているため、ボクセルにメモリは割り当てられない。不均一なサブボリュームの場合、追加の8192バイトが動的に割り当てられ、各バイトは同じセルのセットのボクセル4つをコード化する。不均一なサブボリュームは、2つ以上のセルのセットに属するセル(ボクセル)を有する。
加熱ステップ中にさらに多くのレイヤーが追加されると、まばらに充填していた以前のサブボリュームがいっぱいになり、それらの一部が最終的に均一となって9バイトのみが必要となるため、新しいデータ構造はメモリ効率が大幅に向上する。
データ構造は、従来のまばらなボクセル表現よりも少なくとも10倍メモリ効率が高くなる。最もメモリ効率の高いまばらなボクセルボリュームは、63ビットでコード化された(x、y、z)ベクトルの64ビット整数とボクセル状態に関する1バイト(つまり、ボクセルの4つのセットのうち、ボクセルが属する1つを識別するための1バイト)のキーを有するマップであり、占有するボクセルごとに9バイトになる。これは、1023個のボクセルが、32768個のボクセル状態を含む1つの不均一なサブボリュームと同じ量のメモリを必要とすることを意味する。たとえば、図33に表す自動車のエンベロープを参照すると、3億2100万個のジオメトリー的ボクセルを表すためだけに、従来のデータ構造では24GBのメモリを必要とする。さらに、特定のボクセル状態にアクセスするときに多くの時間が費やされる。マップを使用するということは、ボクセルの状態にアクセスするたびにキーを検索することを意味する。最良のシナリオでは、これは定数時間で発生するが、追加のメモリ使用量がある(std::mapの計算量はO(log(n)であり、std::unordered_mapの計算量はO(1)であるが、内部ハッシュテーブル用にさらにメモリを要する)。本発明のデータ構造は、そのジオメトリーに対して8192バイトの289945個の不均一なサブボリュームを占有し、これは、約2.2GBのメモリであり、各ボクセル状態へのアクセスには定数時間(O(1))がかかる。
上記した例の組み合わせを図4~8を参照して議論する。この組み合わせは、上記した例の他の組み合わせを排除するものではないことを理解されたい。図4~8は、3Dのモデル化オブジェクトと3Dグリッドに関連しているが、大幅な構造変更を加えることなくとも2Dのモデル化オブジェクトと2Dグリッドに適用できる。
図4は、図1を参照して説明した方法のステップS10~S60を示している。以下の説明では、状態という用語は、グリッドのセルが属するセルのセットを指すために使用される。各セットを識別する4つの状態は次のとおりである。
・セルの第1のセットを識別するSTATE_MATTER(物質の状態)。
・セルの第2のセットを識別するSTATE_VOID(空の状態)。
・セルの第3のセットを識別するSTATE_WRAP(ラップの状態)。
・セルの第4のセットを識別するSTATE_INTERIOR(内部の状態)。
・セルの第1のセットを識別するSTATE_MATTER(物質の状態)。
・セルの第2のセットを識別するSTATE_VOID(空の状態)。
・セルの第3のセットを識別するSTATE_WRAP(ラップの状態)。
・セルの第4のセットを識別するSTATE_INTERIOR(内部の状態)。
図4に示されるように、ステップS10は、セルのグリッドの初期化S210及び離散化ステップS220を含む。この例は3Dのモデル化オブジェクトで構成されているため、セルのグリッドはボクセルのグリッドであってもよい。ステップS210において、ユーザーは、最初にセルのグリッドを定義し、完全なモデル化オブジェクトのセルグリッドの次元を黙示的に定義するパラメータ、「セルサイズ」を指定する。ユーザーは、セルサイズのパラメーターに加え、セルのグリッドの次元を指定してもよい。あるいは、ユーザーは、「セルサイズ」のパラメーターを自動的に設定して、セルのグリッドの次元のみを指定して定義してもよい。ステップS210で、グリッド内のセルはすべてSTATE_VOIDで初期化され、したがって、すべてのセルは空である。
ステップ220において、モデル化オブジェクトのジオメトリーと交差するグリッドの各セルの状態をSTATE_MATTERに設定し、モデル化オブジェクトを離散化する。
S210及びS220の結果として、グリッドの各セルは、セルの第2のセットに対応するSTATE_VOIDと、セルの第1のセットに対応するSTATE_MATTERの中から選択される1つの状態に関連付けられる。
次に、ステップS20でN個のレイヤーがモデル化オブジェクトに追加される。隣り合うレイヤーの連続的な追加は、モデル化オブジェクトの物質がその物質の温度上昇により膨張する加熱プロセスをシミュレーションしている。連続的な追加は、離散化されたモデル化オブジェクトのセルから始まる。隣り合うレイヤーの連続的な追加は、N個のレイヤーが追加されると停止する。2つの連続するレイヤーは隣り合っており、N-p番目のレイヤーの各セルは、2Dジオメトリー的要素である共通エッジ又は3Dジオメトリー的要素である共通面を、N-(p+1)番目のレイヤーの少なくとも1つのジオメトリー的要素と共有する。追加されたレイヤーの数NはN=(「ギャップサイズ」/2)+1として設定されるので、ユーザーは、エンベロープによって閉じられるべきギャップの範囲を決定するパラメータ、「ギャップサイズ」を事前に指定してもよい。モデル化オブジェクトのギャップが追加されたレイヤーによって閉じられた場合、物質は「溶けて」おり、削減ステップ中に引き離されることはない。
引き続き図4に示されるように、加熱プロセスをシミュレーションしている、モデル化オブジェクトに隣り合うN個のレイヤーを追加するステップS20は、ステップS230で連続してN-1個の隣り合う物質のレイヤーを追加し、続いてステップS240でラップセルからなるN番目のレイヤーを追加することを含む。ステップS230では、STATE_MATTERの状態を有する各セルに、対応する隣り合ったセルのレイヤー(x、y(又はz)方向のいずれかで隣り合う)を追加することにより、モデル化オブジェクトに物質(つまり、STATE_MATTERの状態のセル)が追加される。x、y方向は2Dグリッドの方向であり、x、y、z方向は3Dグリッドの方向である。ステップS230は、N-1回連続して実行される。
図5は、ステップS230をさらに詳細に説明する。物質の状態を有する各セルについて、その隣接セルがそれぞれ空のセルであるかどうかを判別する。もしいいえの場合、隣接セルの状態は変更されない(つまり、隣接セルの状態はSTATE_VOIDのままである)。はいの場合、隣接セルの状態は状態STATE_MATTERに変更される。
S230をN-1回実行したあと、ステップS240では、ステップS240と同じ原理に従ってN番目のレイヤーを追加する。STATE_MATTERを有する各セルについて、その隣接セルがそれぞれ空のセルであるかどうかを判別する。もしいいえの場合、隣接セルの状態は変更されない(つまり、隣接セルの状態はSTATE_MATTERのままである)。はいの場合、隣接セルの状態はSTATE_WRAPの状態に変更される。STATE_WRAPの状態を持つセルは、入力された3Dジオメトリーを包む将来のエンベロープの最初の見積りを形成するセルである。物質はモデル化オブジェクトの内部(実際には任意の方向)に拡張されているため、他の形成されたエンベロープで囲まれたエンベロープを形成するセルが存在する可能性もある。
これに対処するために、ステップS30及びS40が次に実行される。基本的に、ステップS30は最初に候補エンベロープを決定し、次のステップS40では他の候補エンベロープに囲まれている候補エンベロープを削除し、それによってモデル化オブジェクトの外側エンベロープのみが残される。
図4は、ステップS30をさらに詳細に説明し、STATE_WRAPの状態を有する連続したセルのセットを決定する(S250)。ステップS30は、要素がグリッド内の隣り合っているセルであるセットを決定し、すなわち、そのセットの要素は、共通のエッジ(2Dグリッドの場合)又は面(3Dグリッドの場合)を共有する。連続したセルのセットは、候補エンベロープと見なされ得る。物質はすべての方向に拡張されているので、STATE_WRAPの状態を持つセルは、他の決定された連続したセットによって囲まれている連続したセルのセットを含む、1つ以上の連続したセルのセットを形成する。
次に、図4はステップS40の詳細を示す。連続したセルの外側のセットによって囲まれた連続したセルのセットは、STATE_WRAPの状態を有する連続したセルの各セットに対してステップS260を実行することによって除去される。ステップS260は、そのセットが、STATE_WRAPの状態を有する他の連続したセルのセットによって囲まれているかどうかを決定する。連続したセットのセルによって形成される多辺形を構築して2Dグリッド上で多辺形の境界検出を実行する、又は同様に、3Dグリッド上に多面体を構築する、又は任意の同様の方法によって、決定は実行されてよい。セットが他の連続したセットに囲まれていると判断された場合、そのセットのセルの状態はSTATE_INTERIORに設定される。
次に、図4はステップS40の詳細を示す。連続したセルの外側のセットによって囲まれた連続したセルのセットは、STATE_WRAPの状態を有する連続したセルの各セットに対してステップS260を実行することによって除去される。ステップS260は、そのセットが、STATE_WRAPの状態を有する他の連続したセルのセットによって囲まれているかどうかを決定する。連続したセットのセルによって形成される多辺形を構築して2Dグリッド上で多辺形の境界検出を実行する、又は同様に、3Dグリッド上に多面体を構築する、又は任意の同様の方法によって、決定は実行されてよい。セットが他の連続したセットに囲まれていると判断された場合、そのセットのセルの状態はSTATE_INTERIORに設定される。
ステップS40はSTATE_WRAPの状態を有する連続したセルのセットそれぞれに対してステップS260を実行するため、連続したセルの最も外側のセットのみが残され、それによって候補エンベロープを形成する。各候補エンベロープはトポロジー的に閉じている。
次に、ステップS50が実行され、図4に詳述される。追加された物質のN-1個のレイヤーの連続的な削減は、その前に拡張されたモデル化オブジェクトが今度は収縮される冷却プロセスをシミュレーションする。ステップS50は、N-1番目の追加されたレイヤーから始まり、ステップS270は、削除するべき対応したiレイヤーに対して実行され、ここで、iは、i=N-1から始まってi=0に達するまで連続的に減少する正の整数である(すなわち、i=N-2、i=N-3など)。図4に示されるように、ステップS50は、除去するべき対応したi番目のレイヤーごとに実行されるプロセスS270を実施する。プロセスS270は、図6に詳述されている。レイヤーを削減するプロセス270は、除去するべき対応したレイヤー内の各セルの周辺域の状態を確認することによって実行される。最初に、削除すべき対応したレイヤーの各セルについて、各隣接セル(現在のレイヤーの一部ではない)を確認する。そのような隣接セルがSTATE_WRAPの場合、処理されたセルの状態はSTATE_WRAPとして設定される。そのような隣接セルがSTATE_INTERIORの場合、処理されたセルの状態はSTATE_INTERIORに設定される。それ以外の場合だと、セルは、STATE_MATTERの状態のセル又は削除すべき対応したレイヤーのセルのいずれかで囲まれているはずである。その場合、処理されたセルから光線が全方向に照射される。削除すべき対応したレイヤーの一部ではないセルに当たると、光線のトレースは停止する。光線がSTATE_VOID又はSTATE_WRAPを持つセルに当たる(つまり交差する)場合、処理されたセルはSTATE_WRAPに設定される。それ以外の場合は、STATE_INTERIORに設定される。このテストは、加熱ステップで溶けたギャップを開かないために必要である。
削減するステップの終わりに、ステップS40で決定された連続したセットの最も外側のセットのセルを含む、STATE_WRAPを有するセルの複数のレイヤーが存在し得る。図4は、ステップS50の後及びステップS60のエンベロープの計算の前に実行される、入り込ませるプロセスとそれに続く間引きプロセスを説明し、これにより、エンベロープを薄くし、エンベロープを計算する前にいくつかのディテールを解決することができる。このプロセスを以下に説明する。
図4に示されるように、ステップS270の後に、「入り込みの深さ」と呼ばれるパラメータPが取得される。パラメータPは正の整数でなければならない。数値Pは、実行される反復の数を設定する。したがって、ステップS280は、P回実行され、0から始まってP前の正の整数に達するまで連続的に増加するインデックスiで繰り返され得る(すなわち、i=0、i=1、i=2など)。ステップS280は、入り込ませるプロセスとそれに続く間引きプロセスからなり、図7及び図8で説明されている。入り込ませるプロセスは任意のプロセスであり、間引きプロセスは独立して実施されてもよい。しかしながら、この例では、プロセスS280は、最初に入り込ませるプロセスを実行し、続いてステップS281の間引きプロセスを実行する。
S280の入り込ませるプロセスは、図7に詳述されている。ステップS280は、本質的に、STATE_WRAPの状態を有するセルを、パラメータPを介してSTATE_INTERIORの状態を有するセルによって構成される「内部空間」に「押し込む」ことである。したがって、ステップS280によって、候補エンベロープのディテールのいくつかを解決することが可能になる。図7に示されるように、ステップS280は、STATE_WRAPの状態を有する各セルの各隣接セルを検証する。隣接セルの状態がSTATE_INTERIORの場合、隣接セルはSTATE_WRAPに設定される。それ以外の場合、隣接セルの状態は変更されない。次に、ステップS281が実行される。
ステップS281の間引きプロセスが図8に記載されている。間引きプロセスは、基本的に、STATE_WRAPの状態のセルの二重(又は複数)レイヤーを破棄する。STATE_WRAPの状態を持つセルのレイヤー内のセルごとに、セルがSTATE_WRAP又はSTATE_VOIDの状態の隣接セルのみを有するかどうかを確認し、もしそうである場合は、セルの状態をSTATE_VOIDに追加し、そうでない場合は状態を変更しない。
次に、ステップS60が実行される。図4は、プロセスS290によって記述されたエンベロープの抽出を実行するステップS60の詳細を示す。
本方法は、STATE_WRAPの状態を持つ残りの各セルに、セルの各サイド(たとえば、2Dグリッドであればセルのエッジ、又は、3Dグリッドであればボクセルの面)を検証し、隣接するセルの状態がSTATE_VOIDを有するセルであるかどうかを検証する。もしそうである場合、セルは計算される最終エンベロープに追加される。これは、STATE_WRAPの状態を持つすべての残りのセルに対して実行される。これにより、ラップメッシュがどのSTATE_MATTERのセルとも交差しないことが保証される。次に、ステップS60は、追加されたセルをエンベロープ、たとえば、四辺形メッシュに変換する。
図9~14は、2Dグリッドでの2Dのモデル化オブジェクトのエンベロープを計算するためのステップを示しており、エンベロープの計算の前に間引きが実行される。グリッドは「ギャップサイズ」=1で初期化されており、追加されたレイヤー(加熱ステップ)の数Nは2に設定されているため、削減ステップの数はN-1=1になる。図9は、セルのグリッドに離散化された初期2Dモデルとともに、ステップS10を示している。図9は、第1のセットのセルが黒色C90で示され、空のセルの第2のセルのセルが白色C91で示されている。図10~11は、ステップS20に従って追加された2つのレイヤーp=1及びp=2を示している。第1のセットのセルの追加されたレイヤーは黒で表示され、モデル化オブジェクトからすべての方向に追加された物質を示す。したがって、図10は、追加されたレイヤーp=1を示す。図11は、その後に追加されたレイヤーp=2を示す。したがって、p=2=Nで追加されたレイヤーのセルは、第3のセットのセルである。図12は、ステップS30及びS40で決定された連続したセットを示し、連続したセットは、濃い灰色C92で示されている。図13は、削減ステップS50を示し、濃い灰色のセルは、ステップS50によって達成される「冷却」プロセスを示す。図14は、間引きステップを実行した後、外側の濃い灰色のスケールが削除されたことを示す。ステップS60は画像には示されていない。
離散化されたモデル化オブジェクトを囲む1つ以上の連続したセット(STATE_WRAP状態を持ち、濃い灰色で表されるセル)が、他の連続したセットを囲んでいないことがわかる。図15~32は、1つ以上の連続したセットが、他の決定された1つ以上の連続したセットによって囲まれている場合を示している。
さらに、図15~32に示される例は、入り込ませるステップを含むエンベロープの計算を示しており、削減ステップS50の各反復後、入り込ませるプロセスの実行前に、間引きプロセスが続く。この例では、グリッドはギャップサイズ=2で初期化されており、加熱ステップの数はN=5、アニーリングステップの数はN-1=4、入り込みパラメータはP=2である。この例では、前の例と同じ色の黒色C90、白色C91、濃い灰色C92を使用してセルの異なるセットを示す。さらに、内部セル(つまり、セルの第4のセットのセル)は淡い灰色のC93で識別される。図15は、ステップS10を示しており、初期モデルがボクセルグリッドに離散化されている。図16~20は、ステップS20による黒色セル(追加された物質)のレイヤーの連続的な追加を示している。図21は、ステップS30によって決定された、セルの第3のセットの連続したセットを濃い灰色で示している。図22は、識別された、モデル化オブジェクトを囲む連続したセルのセットを示し、外側の連続したセットは濃い灰色のままで、囲まれた連続したセットを薄い灰色で追加している。図23~30は、削減ステップS50の各ステップを示しており、削減ステップS50の各反復の後に、間引きプロセスが続く。図23は、削減の最初の反復を示しており、物質がどのように1つのレイヤーによって冷却されるかを示している。したがって、濃い灰色のセルの二重レイヤーが存在する。図24は、削減ステップS50の最初の反復後に適用された間引きプロセスを示しており、最も外側のレイヤーのセルが空のセルとして設定されている。これは、セルの第2又は第3のセット(つまり、空のセル又は他の暗い灰色のセル)に属するセットのみを隣接セルに持つ、濃い灰色のセル(第3のセットのセル)を識別する間引きによるものである。最も外側のレイヤーのセルは、まさにこの条件を満たすセルである。同じプロセスが図25~30で繰り返される。図29はさらに、モデル内の光線の放射を実行する削減ステップを示している。右下では、削減によってモデルの内部セルが残されている。さらに、左モデルの右上角に存在するギャップは、図30の間引き後、開かれていない。図31及び32は、入り込みパラメータP=2が与えられた場合の入り込ませるプロセスの入り込ませるステップq=1及びq=2を示している。両方の図とも、濃い灰色のレイヤーがギャップの内部空間に押し込まれていることを示す。得られるエンベロープは、球のようなトポロジーを維持しながら、比較的より詳細である。
図33~35は、本方法に従って計算された車両のモデルのエンベロープの例を示している。この例では、本方法はボクセルサイズが6mmのボクセルグリッドを使用する。結果のエンベロープを図33に示する。エンベロープは約110万個のボクセルで構成されており、モーターの内部ジオメトリーなどは含まれていない。ボクセルサイズを変更すると、モデルの解像度と記憶装置のニーズが変わる。0.5mmのボクセルサイズだと、離散化モデルで1500億を超えるボクセルになり、得られるエンベロープ(図示せず)は約45億のボクセルで構成される。0.33mmのボクセルサイズだと、約6000億のボクセルの体積を必要とし、160億のボクセルからなるエンベロープになる。本方法とデータ構造によって、現在の商用コンピュータで本方法を実施することが可能である。0.33mmのボクセルサイズのグリッドに基づくエンベロープは、64GBのRAMを搭載したコンピュータで計算し、0.5mmのボクセルサイズのグリッドに基づいて計算されたエンベロープは、32GBのRAMを搭載したラップトップで計算した。
本実施で使用されるデータ構造と比較すると、従来の構造では、離散化された車両の3億2100万個のジオメトリー的ボクセルを格納するために約24GBのメモリが必要である。これは、特定のボクセル状態にアクセスするときに費やされる時間に加えて、である。特定のボクセル状態へのアクセス、及び/又は、ボクセル状態での操作の実行に費やされる時間には、重要な計算リソースが必要になり得る。実際に、std::mapなどのマップを使用するような操作は、ボクセルの状態にアクセスするたびにキーを検索する必要があることを意味する。最良のシナリオでは、これは一定時間で発生するが、追加のメモリ使用量が発生する。たとえば、操作std::mapの計算量はO(log(n)であり、操作std::unordered_mapの計算量はO(1)であるが、内部ハッシュテーブル用にさらにメモリを要する。対照的に、提供されるデータ構造は、ジオメトリーに対して8192バイトの289945個の不均一なサブボリュームを占有し、これは、約2.2GBのメモリであり、各ボクセル状態へのアクセスには定数時間(O(1))がかかる。したがって、データ記憶装置のニーズが大幅に削減され、アクセス時間が大幅に改良される。
方法のステップS20で追加されたレイヤーがモーターのジオメトリーにアクセスするギャップを閉じるようにギャップサイズを設定することにより、モーターのジオメトリーといった、目に見えないジオメトリーが方法によって破棄される。図34は、設定されたギャップサイズによるエンベロープによって閉じられたギャップの比較を示している。左側では、R340で示される大きな開口部が、大きなギャップサイズを選択することにより、エンベロープによって閉じられたことを示す。対照的に、右側では、パラメータは小さなギャップのみを閉じるように選択されたため、エンベロープは開口部R341を通過し、モーターのジオメトリーも覆っている(図示せず)。図35は、図33のエンベロープのズームされた領域を示している。エンベロープがミラーやそのハンドルなどの非凸領域のディテールをどのように尊重しているかを示す。
図36~38は、自転車の3Dモデルから計算されたエンベロープの例を示す。図36は左側に元のモデルを示し、右側にエンベロープが示されている。右側の元のモデルは約130万個の三角形で構成されているが、計算されたエンベロープは約32000個の三角形で構成される単一のメッシュである。図36はさらに、本方法によって計算されたエンベロープが、自転車の設計意図を尊重しつつ、十分に正確で単純化されたモデルを提供していることを示す。実際、このモデルは、尊重するべき複数の穴を含むオブジェクトの極端な例と見なすことができ、穴は、車輪を形成する光線によって設定された空のスペースで構成される。左側のエンベロープは、自転車の車輪の各光線を個別に包む単一のエンベロープである。図37は、両方のモデルの車輪のズームされた領域を示し、車輪の各光線がエンベロープのメッシュでどのように表されるかを示している。図38は、エンベロープから生成されたインポスターのジオメトリーを示し、元のモデルのテクスチャが適用されている。特に、インポスターのジオメトリーは元のモデルよりも粗いジオメトリーではあるが、適用されたテクスチャは、テクスチャの異常なしに、自転車の個々の光線をカバーする。
Claims (15)
- モデル化オブジェクトのエンベロープを設計するためのコンピュータ実装方法であって、
・セルのグリッドに離散化されるモデル化オブジェクトを提供し、それによって、モデル化オブジェクトと交差するセルの第1のセットと空のセルの第2のセットを含むグリッドを取得するステップ(S10)と、
・モデル化オブジェクトに隣り合うN個のレイヤーを追加するステップ(S20)であって、ここで、nは正の整数であり、
・・レイヤーごとに:
-第1のセットの交差したセルと隣接する第2のセットの空のセルを識別するステップ、及び
-第1のセットのセルのセットに、識別された第2のセットのセルを追加するステップ;
を実行して、N-1個のレイヤーを追加し、
・・N番目のレイヤーを:
-第1のセットの交差したセルと隣接する第2のセットの空のセルを識別するステップ、及び
-識別された第2のセットの空のセルを、セルの第3のセットに追加するステップ;
を実行して、追加すること、
によって、前記モデル化オブジェクトに隣り合うN個のレイヤーを追加するステップ(S20)と、
・第3のセットのセルの1つ以上の連続したセットを計算するステップ(S30)と、
・離散化されたモデル化オブジェクトを囲む1つ以上の連続したセットを識別し、識別された前記1つ以上の連続したセットのセルのみを第3のセットに保持するステップ(S40)と、
・追加されたN-1個のレイヤーごとに:
・・第1のセットのセルと隣接する第3のセットのセルを識別するステップ、及び
・・識別された第3のセットのセルを隣接セルとして持つ第1のセットのセルを第3のセットのセルに追加するステップ
を実行して、セルの第1のセットを削減するステップ(S50)と、
・第3のセットのセルから、提供されたモデル化オブジェクトのエンベロープを計算するステップ(S60)と
を含む、コンピュータ実装方法。 - 前記離散化されたモデル化オブジェクトを囲む1つ以上の連続したセットを識別するステップが、さらに:
・決定された1つ以上の連続したセットが、他の決定された1つ以上の連続したセットによって囲まれているかどうかを決定するステップと、
・決定された1つ以上の連続したセットが、他の決定された1つ以上の連続したセットによって囲まれている場合、決定されたセルの連続したセットのセルを、セルの第4のセットに追加することにより、第3のセットのセルの囲まれている連続したセットのセルを削除するステップと
を含む、請求項1に記載のコンピュータ実装方法。 - 前記セルの第1のセットを削減するステップが、追加されたN-1個のレイヤーごとに、
・第1のセットのセルと隣接する第4のセットのセルを識別するステップと、
・識別された第4のセットのセルを隣接セルとして持つ第1のセットのセルを第4のセットのセルに追加するステップと、
・識別された第4のセットのセル又は識別された第3のセットのセルを隣接セルとして有さない第1のセットの各セルに関しては、
・・前記セルを囲むセルを決定し、それによってセルの周辺域を形成するステップと、
・・セルの周辺域のいずれかのセルが第3のセット又は第2のセットのセルと交差する場合は、セルの第3のセットに前記セルを追加するステップ、又は、
・・セルの周辺域のどのセルも第3のセット又は第2のセットのセルと交差しない場合は、セルの第4のセットに前記セルを追加するステップ
をさらに含む
請求項2に記載のコンピュータ実装方法。 - 前記セルを囲むセルを決定するステップが、
・第1のセットのセルから、複数の光線をトレースするステップと、
・光線が交差する、前記追加されたN-1個のレイヤーのセルを識別するステップと、
・識別された光線が交差するセルによって、セルの周辺域を形成するステップと
を含む、請求項3に記載のコンピュータ実装方法。 - 前記光線は、セルの第1のセットを削減するごとに減少する長さでトレースされ、光線の最初の長さはN個のセルの長さである
請求項4に記載のコンピュータ実装方法。 - エンベロープを計算する前に、離散化されたモデル化オブジェクトを囲む第3のセットのセルの間引きを実行することであって:
・セルの第2又は第3のセットに属するセルのみを隣接セルに持つ第3のセットのセルを識別し;
・識別されたセルをセルの第2のセットに追加することで、
前記第3のセットのセルの間引きを実行することをさらに含む
請求項1~5のいずれか一項に記載のコンピュータ実装方法。 - エンベロープを計算する前に:
・離散化されたモデル化オブジェクトを囲む、第3のセットのセルの1つ以上の連続したセットを:
・・第3のセットのセルと隣接する第4のセットのセルを識別するステップ、及び
・・識別された第4のセットのセルを、セルの第3のセットに追加するステップ
により入り込ませるステップと、をさらに含む
請求項1~6のいずれか一項に記載のコンピュータ実装方法。 - 第3のセットのセルから、提供されたモデル化オブジェクトのエンベロープを計算することが:
・セルの第2のセットのセルを隣接セルに持つ第3のセットのセルを識別するステップと、
・識別された第3のセットのセルから、提供されたモデル化オブジェクトのエンベロープを計算するステップと
をさらに含む、請求項1~7のいずれか一項に記載のコンピュータ実装方法。 - ・前記提供されるモデル化オブジェクトが2dジオメトリーであり、セルのグリッドは2dグリッドであり、隣接セルはx又はy方向のいずれかで座標的に隣接し;又は、
・前記提供されるモデル化オブジェクトが3dジオメトリーであり、セルのグリッドはボクセルのグリッドであり、隣接セルはx、y又はz方向のいずれかで座標的に隣接する
請求項1~8のいずれか一項に記載のコンピュータ実装方法。 - 識別された第3のセットのセルから、提供されたモデル化オブジェクトのエンベロープを計算するステップが:
・提供されるモデル化オブジェクトが、2Dのベクター画像で表される2dジオメトリーであり、セルのグリッドが2dグリッドである場合、セルを2dの線のセットに変換することによってエンベロープを計算するステップ;又は、
・提供されるモデル化オブジェクトが、メッシュからなる3dジオメトリーであり、セルのグリッドがボクセルのグリッドである場合、識別されたセルを四辺形メッシュに変換することによってエンベロープを計算するステップ;
をさらに含む、請求項9に記載のコンピュータ実装方法。 - 提供されるモデル化オブジェクトが3dジオメトリーである場合、提供されるモデル化オブジェクトのエンベロープは、第2のセットのセルと隣り合う第3のセットの各セルの面を四角形メッシュに変換することによって計算される
請求項10に記載のコンピュータ実装方法。 - セルのグリッドを格納するデータ構造であって、前記データ構造は、セルのグリッドを等しいサイズのサブグリッドに分割し、各サブグリッドは、請求項2と組み合わせた請求項3~11のいずれか一項に記載の方法のセルの第1、第2、第3及び第4のセットの少なくとも1つを示すポインタを含む
データ構造。 - 請求項1~11のいずれか一項に記載の方法を実行するための命令を含むコンピュータプログラム。
- 請求項13に記載のコンピュータプログラムを記録したコンピュータ可読記憶媒体。
- 請求項13に記載のコンピュータプログラムを記録したメモリと、グラフィカルユーザーインターフェイスに結合されたプロセッサを備えるシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP20306338 | 2020-11-05 | ||
EP20306338.3A EP3995984A1 (en) | 2020-11-05 | 2020-11-05 | Cell shrink wrap |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022075643A true JP2022075643A (ja) | 2022-05-18 |
Family
ID=73598021
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021181197A Pending JP2022075643A (ja) | 2020-11-05 | 2021-11-05 | セルのシュリンクラップ |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220138359A1 (ja) |
EP (1) | EP3995984A1 (ja) |
JP (1) | JP2022075643A (ja) |
CN (1) | CN114444406A (ja) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100512760B1 (ko) * | 2003-12-23 | 2005-09-07 | 한국전자통신연구원 | 경계셀 축소 방식을 이용하여 3차원 측정점들로부터 3차원메쉬를 생성하는 방법 |
US9922453B1 (en) * | 2013-05-03 | 2018-03-20 | Msc.Software Corporation | Shrink wrap generation systems and methods |
-
2020
- 2020-11-05 EP EP20306338.3A patent/EP3995984A1/en active Pending
-
2021
- 2021-11-05 US US17/520,441 patent/US20220138359A1/en active Pending
- 2021-11-05 CN CN202111306019.5A patent/CN114444406A/zh active Pending
- 2021-11-05 JP JP2021181197A patent/JP2022075643A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
EP3995984A1 (en) | 2022-05-11 |
CN114444406A (zh) | 2022-05-06 |
US20220138359A1 (en) | 2022-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7235478B2 (ja) | 3d部品の付加製造 | |
US11256832B2 (en) | Replica selection | |
JP7327943B2 (ja) | フライス作業によって製造可能な部品の設計 | |
CN105761303B (zh) | 在3d建模组件上创建包围盒 | |
JP7248420B2 (ja) | 格子構造を含む3dパーツの3d有限要素メッシュの設計 | |
JP6356378B2 (ja) | 幾何学的三次元モデルオブジェクトを設計する方法 | |
JP7049807B2 (ja) | パラメトリックビュー関数に基づくデータベースの照会 | |
JP7436143B2 (ja) | 格子構造を含む3d部品の3d有限要素メッシュの設計 | |
US10108752B2 (en) | Engraving a 2D image on a subdivision surface | |
CA2776638C (en) | Designing a three-dimensional modeled assembly of objects in a three-dimensional scene | |
JP6721333B2 (ja) | オブジェクトのセットの視点の選択 | |
JP2020115340A (ja) | 弱型定義を用いるモデリング | |
US9483585B2 (en) | Designing a staggered pattern of objects in a computer-aided design system | |
JP2022075643A (ja) | セルのシュリンクラップ | |
JP2020115341A (ja) | 弱型定義を用いるフレキシブルモデリング | |
JP2023160791A (ja) | 画像からの3d再構成 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20211207 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20230925 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20230925 |