JP5421248B2 - 相互作用するオブジェクト集合をシミュレートするコンピュータ装置とその対応方法 - Google Patents

相互作用するオブジェクト集合をシミュレートするコンピュータ装置とその対応方法 Download PDF

Info

Publication number
JP5421248B2
JP5421248B2 JP2010512732A JP2010512732A JP5421248B2 JP 5421248 B2 JP5421248 B2 JP 5421248B2 JP 2010512732 A JP2010512732 A JP 2010512732A JP 2010512732 A JP2010512732 A JP 2010512732A JP 5421248 B2 JP5421248 B2 JP 5421248B2
Authority
JP
Japan
Prior art keywords
data
interaction
function
node
nodes
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.)
Active
Application number
JP2010512732A
Other languages
English (en)
Other versions
JP2010530581A (ja
Inventor
ルドン・ステファン
ロッシ・ロマン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institut National de Recherche en Informatique et en Automatique INRIA
Original Assignee
Institut National de Recherche en Informatique et en Automatique INRIA
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institut National de Recherche en Informatique et en Automatique INRIA filed Critical Institut National de Recherche en Informatique et en Automatique INRIA
Publication of JP2010530581A publication Critical patent/JP2010530581A/ja
Application granted granted Critical
Publication of JP5421248B2 publication Critical patent/JP5421248B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/23Design optimisation, verification or simulation using finite element methods [FEM] or finite difference methods [FDM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/36Circuit design at the analogue level
    • G06F30/367Design verification, e.g. using simulation, simulation program with integrated circuit emphasis [SPICE], direct methods or relaxation methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/08Probabilistic or stochastic CAD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/10Numerical modelling

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本発明は、相互作用するオブジェクト集合のシミュレーションに関する。
相互作用するオブジェクトのシミュレーションは、多数の多かれ少なかれ複雑な機械的体のシミュレーションから、例えばたんぱく質などの分子の挙動のシミュレーションに至る、巨大な分野である。
開発された第1のアプローチは、オブジェクトを組み立てる目的、すなわち、大域的な挙動を定義するためにそれらを共にグループ化する目的を有する。この種のアプローチは、比較的低い計算コストの上で有用である。
しかし、計算コストの削減は、グループ化されるオブジェクト間の相関に関係する種々の態様が、意図的に無視されるか、または最も簡単な表現まで縮小されることとなるため、シミュレーションの現実味を損なう。
他のアプローチは、相互作用するオブジェクトを多関節構造体として見ることを含む。多関節構造体は一般に、結合部によって共に接合される2つの構造体から構成される。2つの構造体は、それ自体多関節構造体などであってもよい。このアプローチは、高い性能レベルを保持しつつ、この種のオブジェクト集合の機械的挙動に忠実なモデルを製作することを可能にする。
「機械的」挙動なる用語を用いるのは、本来オブジェクトはそれらを接続する関節または結合部によって相互作用するためである。従って、オブジェクト集合をモデル化するためには、結合部をモデル化すればよい。
オブジェクト間の相互作用が更に複雑になるに従い、それらに関係する計算要件/コストが法外となるため、これらのアプローチは、かなり急速に効果がなくなってしまう。
本発明は、上記の状況を改善することを目指す。
この目的のために、本発明において、相互作用するオブジェクト集合をシミュレートするコンピュータ装置であって、オブジェクト集合の木表現を含んだメモリを有するコンピュータ装置を提案する。この木表現において、中間表現のそれぞれは、動的データ、幾何的データおよび相互作用データに関連付けられる。
本装置は、反復サイクルによって
−オブジェクトおよびオブジェクトの部分集合に関する相互作用データディストリビュータと、
−対象となる相互作用データおよび幾何的データの関数として、相互作用を受けるノードに関する木表現のスキャンによって、動的データを更新するための機構と、
−更新された動的データの関数として、相互作用の対象となるノードに関する木表現のスキャンによって、幾何的データを更新するための機構とを起動するシミュレーションコントローラを更に有する。
関節に独立であるノード間の相互作用を考慮するために、メモリは更に、ノードの少なくともいくつかに関連付けられる局所的な相互作用データを含み、相互作用データディストリビュータは、対象となる子ノードの局所的な相互作用データの関数として、相互作用する対象物の木表現のスキャンによって、ノードの相互作用データ項目を更新する相互作用更新機構を有する。
この種の装置は、計算時間を著しく増大することなく、関節以外の力を考慮しつつ、多関節構造体に関するモデル化を用いたアプローチを拡大する可能性を提供するため、特に有利であり、それにより、シミュレーションの有用性を増大する。
本発明はまた、オブジェクト集合の木表現を保持する相互作用するオブジェクト集合の挙動をシミュレートする方法に関する。その表現において、各中間ノードは、その子ノードからのデータに依存する動的データ、幾何的データおよび相互作用データに関連付けられる。
本発明は反復的に、以下のステップを含むサイクル、すなわち
a.オブジェクトの一部およびオブジェクトの部分集合にわたって相互作用データを分配するステップと、
b.相互作用の対象となるノードに関する木表現をスキャンし、関係する相互作用データおよび幾何的データの関数として、これらのノードの動的データを更新するステップと、
c.相互作用の対象となるノードの場合には、再び木表現をスキャンし、ステップb.において更新された動的データの関数として幾何データを更新するステップとを実行する。
更に詳細には、ステップa.は、
a1.相互作用の対象となるノードの相互作用データの更新によって、対象となる子ノードの局所的な相互作用データの関数として相互作用の対象となるノードに関する木表現をスキャンする予備スキャンを含む。
本発明のさらなる特徴および利点は、非限定的かつ例示的である実施例から導き出されるものであり、図面に基づき、以下の記載を読み進めることにより明らかとなる。
本発明におけるコンピュータ装置の概略図を示す。 図1における装置によって実行されるシミュレーションループの関数によるアプリケーションのブロック図を示す。 図2におけるシミュレーションループの第1の関数のブロック図を示す。 図3における関数のブロック図を示す。 図4の2つの関数を概略的に示す。 図4の2つの関数を概略的に示す。 図3の別の関数のブロック図を示す。 図2におけるシミュレーションループの第2の関数のブロック図を示す。 図2におけるシミュレーションループの第3の関数のブロック図を示す。 図2におけるシミュレーションループの第4の関数のブロック図を示す。 図2におけるシミュレーションループの第5の関数のブロック図を示す。
以下の図面および説明は、原則として限られた要素を記載する。従って、これらは本発明の理解を助けるために機能するだけでなく、いくつかの場合において、その定義にも寄与するであろう。
本記載は、著作者および/または著作権による保護に適格な要素を用いるものである。権利所有者は、正式書類に見られるように、本特許文書またはその説明のいかなる人物による同一の再現に対する異議はない。その他の点では、権利を全面的に保持する。
本発明はまた、製品として任意のコンピュータで読み込み可能な「媒体」(支持物)に提供される記載されたソフトウェア要素を包含する。「コンピュータで読み込み可能な媒体」なる表現は、磁気的、光学的および/または電子的データ記憶支持物のほか、アナログ信号またはデジタル信号などの伝送支持物またはキャリアも対象とする。
更に、詳細な説明は、本発明の範囲内で用いられる特定の数学的公式を提供する付録Aによって補足される。この付録は、明確化の目的で提供され、参照を容易にするものである。本付録は、説明の構成部分を形成するものであり、従って、本発明の理解を助けるための役割だけではなく、いくつかの場合において、その定義にも寄与するであろう。
多関節構造体の機械的シミュレーションに対する第1のアプローチは、Featherstoneによる論文“A divide−and−conquer articulated body algorithm for parallel o(log(n))calculation of rigid body dynamics.Part1:Basic Algorithm”,International Journal of Robotics Research18(9):867−875(以下、Featherstone’99と呼ぶ)において提案されている。
Featherstone’99は、再帰的に力の成分および位置のすべてを計算するために、二分木に多関節構造体を切り離すためのアルゴリズムについて記載する。多関節構造体とは、それ自体多関節構造体であってもよい2つの構造体を接続する関節または結合部を含む全体的なユニットを指す。
従って、多関節体の概念は、単に機械的な意味に制限されてはならない。関節の概念もまた、より広義の意味で理解されなければならない。たとえば、関節は、ゼロ(2つの部分集合の固定結合)と6(2つの部分集合の無制限の相対的移動)との間の自由度の変数を含んでもよい。
二分木は、関節型オブジェクトの最も基本的な要素を表し、それぞれが結合部またはノードに接続される葉ノードを含む。従って、二分木の各ノードはそれ自体、オブジェクトの部分集合を表示する多関節体である。
RedonおよびLinによる論文“An Efficient,Error−Bounded Approximation Algorithm for Simulating Quasi−Statics of Complex Linkages”,Proceedings of ACM Symposium on Solid and Physical Modeling,2005(以下、SPM’05と呼ぶ)は、結合部の加速度数的指標を定義することによって、このアプローチを達成する。
これらの数的指標は、葉のデータを認識することなく、純粋にこの結合部のデータから所与の結合部と関連付けられる多関節体の加速度を評価することを可能にする。従って、加速度数的指標が選択された閾値未満である多関節体の加速度を無効にすることによって、木を「固定」にすることを可能にする。従って、木を固定することは、確実に信頼性のあるシミュレーションを達成すると同時に、木のスキャンを削減されたノード数に制限することを可能にする。
Redon、GallopoおよびLinによる論文「Adaptative Dynamics of Articulated Bodies」,ACM Transactions on Graphics(SIGGRAPH 2005),24(3)(以下、SIGGRAPH’05と呼ぶ)において、シミュレーションの品質は、動的事例を処理することによっても、擬似静的事例のみを処理することによっても、また固定化を考慮する方法を追加することによっても改善され、具体的な現実性がない力の作成を回避する。
本明細書に記載される実施の形態は、これらの方法のすべてを活かし、いくつかの場合において、その拡張として実施されてもよいが、本発明のあらゆる他の実施の形態が予測され得る。
シミュレーションに関して、木の各ノードは、種々のデータと関連付けられる。データの3つの主要なタイプ、すなわち、相互作用データ、動的データおよび幾何的データは、区別され、以下に更に詳細に記載される。
相互作用データは、以下のように定義されてもよい。相互作用データは、所与のノードまたはこのノードによって表されるオブジェクトの部分集合において所与のオブジェクトに適用される力を表す。これらの力は、以下の2種類の力に分類されてもよい。
−関節を介したオブジェクトの相互作用にリンクされる応力、および
−所与のノードに加えられる可能性がある他の力のすべてを包含する局所的な力である。
ここに記載される実施例において、オブジェクトは、分子および原子であり、局所的な力は、一方では結合部に個別に加えられる外力を含み、他方では、静電力、ファンデルワールス力などの原子間力および分子間力のすべてを含む。
動的データは、多関節体の動力学的合成データ特性を表す。これらのデータは、オブジェクトの集合の位置および力のデータのすべてを必ずしも知る必要なく、結合部の加速度および速度の数的指標を計算することを可能にする。その用途は、以下に更に詳細に記載される。
幾何的データは、専ら互いにオブジェクトの相対位置に依存する多関節体の一連のデータ特性を表す。これらのデータは、特に、計算の大部分を局所的な参照点において実行することを可能にし、シミュレーションを更に容易にする。ここで再び、これらのデータについて以下に説明する。
ここに記載される実施の形態は、オブジェクトの擬似静的シミュレーションに適用する。これは、それらの速度がどの時点においてもゼロであると考えられることを意味する。
図1は、本発明による装置の概略図を示す。
装置2は、シミュレーションコントローラ4、シミュレーションブロック6およびメモリ8を有する。シミュレーションブロック6は、相互作用データディストリビュータ10、動的データ更新機構12および幾何的データ更新機構14を含む。
シミュレーション中、コントローラ4は、メモリ8に含まれるデータに基づいて、以下に記載されるシミュレーションループにより、シミュレーションブロック6を反復的に起動する。
装置2は、種々の形態をとってよい。本好ましい実施の形態は、市販のコンピュータ、たとえば、1GBのRAMメモリを有する1.7GHzのマイクロプロセッサと、オペレーティングシステムおよびプログラムコードを含むのに十分な大きさのハードディスクとを有するコンピュータで実行されることができる形態で、コントローラ4およびブロック6を作動するコンピュータプログラムである。
しかし、特殊なプリント回路(ドーターボード、ASICなど)または専用のプロセッサ(FPGA、マイクロチップなど)の形態の構成など、他の実施形態が可能である。
図2は、ブロック6によって作成されるシミュレーションループの動作の概略図を示す。このループにおいて、関数Upd_Int()20、Sprd_Int()22、Get_Dyn_Coeff()24、Upd_Dyn()26およびUpd_Geo()28が、連続的に呼び出される。
図2に示すループは、所与の動作ループにおけるシミュレーションの主要ステップを表す。これらのステップはそれぞれ、非関節性のオブジェクト間相互作用の更新、これらの相互作用のブロードキャスティング、動的シミュレーションパラメータの取得および更新、続いて、幾何的シミュレーションパラメータの更新である。
図2に示す異なるステップは、本発明を実装するプログラムにおける関数(functions)に対応するが、以下では、これらの関数自体が、多数のサブ関数を含み、当業者が選択し自由に実装する関数要素と見なされるべきであることが明らかとなろう。
関数の観点から、以下のように見なしてもよい。
*関数Upd_Int()20およびSprd_Int()22は、データディストリビュータ10の核を構成する、
*関数Get_Dyn_Coeff()24およびUpd_Dyn()26は、動的データ更新機構12の核を構成する、および
*関数Upd_Geo()28は、幾何的データ更新機構14の核を構成する。
図3は、図2における関数Upd_Int()20の考えられる実装を表す。この図から分かるように、関数Upd_Int()20は、3つのサブ関数Upd_BB()30、Upd_Int_L()32およびUpd_Int_Val()34を有する。
従来のアプローチにおいては、オブジェクトの部分集合が固定になるとすぐに、これがシミュレーションにおいて処理されるのを一時的に停止する。この種のシミュレーションにおいて考慮される力は、機械的性質を帯びているため、この部分集合は、これから生じる結果がなかったとしても、オブジェクトの別の部分集合に空間的にきわめて近くてもよい。
蛋白質または分子鎖の挙動をシミュレートしたい場合には、静電気またはファンデルワールス型の局所的な原子間力が、応力および外力に加えられる。
固定化された部分集合に関して別の部分集合と相互作用することが可能になるにあたり、「機械的な」シミュレーションはもはや十分ではない。従って、オブジェクト同士の相対的な位置にのみ左右されるこれらの新たな局所的な力を考慮するために、「脱固定化」が必要である。既存のアプローチでは、すべての利点を失うことなく、これを実現することは可能ではない。
関数Upd_Int()20は、これらの局所的な力を考慮することが可能である。これを行うために、この関数は、所与の分子状態から始まり、第1の期間において、どのオブジェクトが互いに相互作用しやすいかを判定することを可能にする。第2の期間において、この関数は、対応する局所的な力を計算し、順序付けされた方式でこれらのデータを統合する。
関数Upd_BB()30は、相互作用の検出を分子シミュレーションに対し適用したものである。原子間力は主に短距離であるため、この関数は、各オブジェクトの周囲の潜在的な相互作用のための空間を定義する。
更に正確に言えば、これらの空間は、オブジェクトまたはオブジェクトのグループの周囲の「有向空間」として定義される。ボックス自体は、シミュレーションの開始で二分木の各ノードに関して定義され、関数Upd_BB()30は、各ボックスに関する参照点の位置および向きの方向を更新することによって作動する。
文献において「有向バウンディングボックス(Oriented Bounding Box)」またはOBBとして知られている有向ボックスの原理は、Gottshalkらによる論文“Obbtree:a hierarchical structure for rapid interference detection”,ACM Translation of Graphics(SIGGRAPH 1996)に記載されている。
OBBは、包囲するオブジェクトの位置に専ら左右され、取り付けられるノードへの関係接続において表現されるため、ノードが固定化されるときには変化しない。従って、関数Upd_BB()30は、その位置が、先行するシミュレーションステップ中に変化したノードで専ら作動する。この関数は、選択的な方式で下から上に二分木を通過し、以下で説明するように、いわゆるアクティブノードのみを通過する。
更新されたOBBは、関数Upd_Int_L()32によって用いられる作業ベースを形成する。この関数、図4に示される実装は、上から下に、根RNから再帰的に二分木をスキャンする。
関数Upd_Int_L()は、各ノードに関して、2つの主要なリストInt_LおよびInt_L_Oldを維持する。各ノードで、リストInt_L(またはそれぞれ、Int_L_Old)は、現行ループ(またはそれぞれ、先行ループ)で局所的な力によって相互作用する所与のノードによって指定されるオブジェクトの部分集合に属するノードのペアを含む。
これらのリストは、先行ループの後のオブジェクトの位置によって変更された局所的な相互作用、すなわち、修正された局所的な相互作用を検出することを可能にする。
関数Upd_Int()は、現在のノードにおける活性試験3200から始まる。この試験は、現在のノードの加速度数的指標(または適切であれば、他の適切な数的指標)に関連し、これらの数的指標の値の関数として決定されるノードが実際にアクティブであるかどうかを指定するこれらの数的指標の計算の形態またはデータ項目の読み出しの形態(一般に「フラグ」と呼ばれる)において実行されてもよい。
ここに記載される実施例において、ノードは、その加速度数的指標の値がユーザによって選択された閾値より大きい場合には、すなわち、非固定化されると見なされる場合には、アクティブであると考えられる。ノードが固定されている場合には、このことは、ノードと関連付けられる多関節体の中の大域的な加速度が、シミュレーションの範囲内でゼロであると考えられることを意味する。
前述から分かるように、このことは、この構造体の加速度がゼロであると考えられるため、この構造体の中のオブジェクトの位置が変化しないことを意味する。従って、先行ループの相互作用のリストInt_LおよびInt_Old_Lは、このノードおよびすべてのこれらの子ノードに関して有効なままであり、関数が停止する(3202)。
ノードCがアクティブである場合には、先行ループのリストInt_L(C)は、上書き(3204)することによって現在のループではリストInt_Old_L(C)になり、リストInt_L(C)はゼロにリセットされる(3206)。
次に、ノードCの子ノードたちの間の考えられる相互作用のすべてを待ち行列に入れるために、ループが始動される。従って、2つの中間子ノードAおよびBは、3208で関数CH()によって復元され、それらのOBB、OBBAおよびOBBBが3210で復元される。
その結合(couple)(OBBA,OBBB)が次に、リストQにスタックされ(3212)、OBB間の潜在的相互作用用の記憶スタックとして機能する。記載したループは、その停止条件としてスタックQを空にすることを有し(3214)、関数Upd_Int_L(C)は、この条件が満たされるときに停止する(3216)。
ループは、リストQのスタックから取り出されることによって始まり、Qに導入される潜在的相互作用(OBBE、OBBF)の最後の結合を復元することを可能にする(3218)。このループの第1の相互作用が、ステップ3212の結合(OBBA、OBBB)によるものであるのは明らかである。
3220で、衝突したかどうかの立証を可能にするために、関数Upd_Pos()は、OBB、OBBEおよびOBBFの実世界における位置を更新する。この「実」位置の更新は、そのノードの関係において各OBBの相対的な位置を更新する関数Upd_OBB()30において達成される更新とは異なる。
実位置と相対位置との間の差は、更に効果的かつ統合した方式でアルゴリズムを実装することを可能にする。にもかかわらず、関数Upd_BB()30において直接的にOBBの実位置を更新することが可能である。
3222で、関数Coll()は、OBBEとOBBFが衝突状態にある、すなわち、有向ボックスが交差したかどうかを判定する。これが当てはまらない場合には、局所的な相互作用はなく、ループは3214で次の潜在的な相互作用をテストするためにリセットされる。
ノードEおよびFそれぞれと関連付けられるOBBEおよびOBBFが衝突状態にある場合には、4つの可能性がある。
a)EおよびFがいずれも木の葉であり、このことは、これらのオブジェクトが互いと相互作用することを意味し、関数が停止する、
b)Fが関節型オブジェクトであり、Eが葉であり、このことは、Fの子ノードとEに関連付けられるオブジェクトとの相互作用を判定し、次にFの子ノード同士の相互作用を判定するするためには、Fを探索せねばならないことを意味する、
c)Eが関節型オブジェクトであり、Fが葉であり、このことは、Eの子ノードとFに関連付けられるオブジェクトとの相互作用を判定し、次にEの子ノード同士の相互作用を判定するためにはEを探索しなければならないことを意味する、および
d)EおよびFがいずれも関節型オブジェクトであり、このことは、EとFそれぞれの
子ノードの間の相互作用を判定し、次にEおよびFの子ノード同士の相互作用を判定するためにEおよびFを探索しなければならないことを意味する。
そのためには、テスト3224は、OBBEに関して関数CH_OBB()を呼び出すことによって、Eが葉ノードであるかどうかを判定する。OBBを取り込み、その入力時ではノードではない点を除き、関数CH_OBB()は関数CH()と同様である。
Eが葉ノードである場合には、関数DP1()が3230で呼び出され、事例a)およびb)を管理する。関数DP1()の実装の実施例を図5に示す。この関数において、テスト3232は、OBBFに関して関数CH_OBB()を呼び出すことによって、Fが葉ノードであるかどうかを判定する。
Fが葉ノードである場合には、事例a)が適用され、リストInt_L(C)が、3234でペア(E,F)を受け取り、関数DP1()が3236で停止し、Upd_Int_L(C)のループが、3214でスタックQのテストから再開する。
Fが関節型オブジェクトである場合には、FAおよびFBは、Fの子であり、事例b)が適用される。EとFの子らの相互作用を判定するために、FAおよびFBのOBBが、3238で復元され、次に2つの潜在的相互作用(OBBE,OBBFA)が、3240でスタックされ、(OBBE,OBBFB)が3242でスタックQにスタックされる。
次に、3244でFに関してUpd_Int_L()を呼び出すことによって、Fの子同士の相互作用が判定される。この関数呼び出しは、リストUpd_Old_L(F)およびUpd_L(F)の更新を可能にする。最後に、関数DP1()は、3236で停止し、Upd_Int_L(C)のループが、3214でスタックQのテストから再開する。
Eが関節型オブジェクトである場合には、EAおよびEBは、その子である。次に、関数DP2()が3250で呼び出され、事例c)およびd)を管理する。関数DP2()の実装の例を図6に示す。
この関数において、テスト3252は、OBBFに関して関数CH_OBB()を呼び出すことによって、Fが葉ノードであるかどうかを判定する。
Fが葉ノードである場合には、事例c)が適用される。Eの子たちとFの相互作用を決定するために、EAおよびEBのOBBが、3254で復元され、次に2つの潜在的相互作用(OBBEA,OBBF)が、3256でスタックされ、(OBBEB,OBBF)が3258でスタックQにスタックされる。
次に、3260でEに関してUpd_Int_L()を呼び出すことによって、Eの子同士の相互作用が判定される。この関数呼び出しは、リストUpd_Old_L(E)およびUpd_L(E)の更新を可能にする。最後に、関数DP2()は、3262で停止し、Upd_Int_L(C)のループが、3214でスタックQのテストから再開する。
Fが関節型オブジェクトである場合には、FAおよびFBは、Fの子たちであり、事例d)が適用される。Eの子たちとFの子たちとの相互作用を判定するために、OBBEおよびOBBFに関して関数Max_Vol()が、3264で呼び出される。
関数Max_Vol()は、他のノードと関連付けられるノードの子たちの相互作用を探索するために、OBBEおよびOBBFのいずれがより大きな量を有するかを決定する。これは、Upd_Int_L()の性能を最適化することを可能にする。
結果として、3つのOBB、すなわち、OBBMA、OBBMBおよびOBBMinが得られる。従って、OBBEがOBBFより大きい場合には、OBBMAはOBBEAを含み、OBBMBはOBBEBを含み、OBBMinはOBBFを含む。逆の事例においては、OBBMAはOBBFAを含み、OBBMBはOBBFBを含み、OBBMinはOBBEを含む。
2つの潜在的相互作用(OBBMA,OBBMin)が、3266でスタックされ、(OBBMB,OBBMin)が3268でスタックQにスタックされる。次に、3270でEに関してUpd_Int_L()を呼び出すことによって、Eの子同士の相互作用が判定され、3272でFに関してUpd_Int_L()を呼び出すことによって、Fの子同士の相互作用が判定される。
これらの関数呼び出しは、リストUpd_Int_L(E)、Upd_L(E)、Upd_Old_L(F)およびUpd_L(F)を更新することを可能にする。最後に、関数DP2()は、3262で停止し、Upd_Int_L(C)のループが、3214でスタックQのテストから再開する。
暗に示されているように、関数Upd_Int()が、ノードCに適用され、その結果、2つの重なる再帰を有する。
第1の再帰は、ノードに関する深さレベルに関係なく、ノードCの子たちの間の潜在的相互作用結合のすべてを分析するために、スタックQのスタッキングおよびアンスタッキングに関する。
第2の再帰は、Cの子ノードに関する関数Upd_Int()の選択的呼び出しに関し、すべてのアクティブノードのリストUpd_Old_L()およびUpd_L()の更新を可能にする。
上記で分かるように、二分木における局所的な相互作用を決定することは主に、OBBの特性に基づいている。しかし、OBBは有益なツールを構成するが、相互作用予測表などの他のツールまたは特定の用途を踏まえて当業者が予想することができる他の適切なツールを用いてもよい。
リストUpd_Old_L()およびUpd_L()が、すべてのアクティブノードに関して更新されたとき、相互作用データは、関数Upd_Int_Val()34によって更新される準備ができる。
関数Upd_Int_Val()の1つの実装を図7に示す。この図から分かるように、この関数は、再帰ブロック700で始まる。ノードRNに関して関数Upd_Int_Val()を呼び出すことによって、ブロック700は、二分木において下降(descent)を実行する。
ブロック700は、上述したように、702で現在ノードCにおける活性テストから始まる。現在ノードが非アクティブである場合には、関数は704で終了する。現在ノードがアクティブである場合には、木における下降は、706で関数CH()によってこのノードの子たちAおよびBを得ることによって開始される。
次に、活性テストは、前述したように、708でCの左側の子Aで実行される。ノードAがアクティブである場合には、左側の降下が、Aに関してUpd_Int_Val()を呼び出すことによって、710で実行される。
次に、活性テストが、前述したように、712でCの右側の子Bで実行される。Aが非アクティブである場合には、テスト712が直接実行され、ノードCに関する左側の下降はない。
ノードBがアクティブである場合には、Bに関してUpd_Int_Val()を呼び出すことによって、右側の下降が714で実行される。これは次に、再帰下降ブロック700の終了であり、関数はその実際の処理部分によって続行される。Bが非アクティブである場合には、ノードCに関する右側の下降はなく、ブロック700が終了し、関数はその実際の処理部によって続行される。
一旦、ブロック700が反復され、再帰が実行されると、データの処理は、720でリストUpd(C)およびスタックQをリスタートすることによってノードCで開始する。
リストUpd(C)は、ブロック700によって実行された再帰呼び出し中に、Cの子たちにおいて更新されたデータから更新された相互作用データを徐々に上昇させるように機能する。
リストQは、現在ノードで更新されなければならない相互作用データのオブジェクトに関する記憶スタックとして機能する。従って、リストQは、722でUpd(A)、Upd(B)、Int_Old_L(C)およびInt_L(C)を受ける。なお、当業者においては、Int_Old_L(C)およびInt_L(C)は、ノードのペアを含むものでありノードではないが、動作722は互いに区別されたノードのみをQにスタッキングすることからなるということがわかるであろう。
従って、相互作用データを増大するためのループは、作業ノードRにおけるリストQのアンスタッキングと共に724で始まる。作業ノードRは、ブロック700の再帰のアンスタッキング中にそれに関連付けられるデータを上昇するために、726でリストUpd(C)に追加される。次に、RがAで指定されたオブジェクトの部分集合またはBで指定された部分集合のいずれに属しているかを判定するために、テスト728が実行される。
RがAで指定されたオブジェクトの部分集合に属している場合には、730で、相互作用データF(C,R)がF(A,R)の値によってリセットされる。そうでない場合には、732で、F(C,R)がF(B,R)の値によってリセットされる。最後に、734におけるQのテストは、Qのオブジェクトの相互作用データのすべてがリセットされたかどうかを表す。
Qが空である場合には、相互作用データのための更新ループは、736でリストInt_L_t(C)のアンスタッキングから始まる。リストInt_L_t(C)は、リストInt_L(C)の作業コピーであり、ループの更新のためだけに用いられる。リストInt_L_t(C)のアンスタッキングの結果は、作業ノードのペア(P,T)に格納される。
738で、相互作用データF(C,P)が、上述したループにおいてリセットされた値F(C,P)にPとTの相互作用の値F(P,T)を追加することによって更新される。F(P,T)の値は、関数F_Int()によって計算され、Pの参照点において、Tに関するPの原子間の相互作用の強度を与える。これと同様の動作が、Tの参照点の中で、上記のループでリセットされたF(C,T)の値にTとPの相互作用の値F(T,P)を追加することによって、Tに関して740で実行される。
関数F_Int()は、2つの原子/分子の間の静電気相互作用およびファンデルワース相互作用の公知の公式に基づいている。当然のことながら、他の公式を用いてもよい。F_Int()が呼び出された第1のノードと関連付けられる参照点における相互作用を計算するものであることを留意することが重要である。
次に、742で、テストは、Int_L_t(C)が完全にアンスタッキングされたかどうかを調べる。アンスタッキングされた場合には、744でUpd_Int_Val()の関連インスタンスが終了する。そうでない場合には、更新ループが736で再開する。一旦リストInt_L_t(C)が完全にアンスタッキングされると、相互作用データF(C,X)(但し、XはCから下降した葉ノードである)は、Cの子孫である他の葉ノードのすべてによって、ノードXによって行われたすべての相互作用を表す。
上記を踏まえると、関数Upd_Int_Val()は、根ノードによって呼び出されるが、下から上へのアプローチを有することは明白である。また、この関数は、Cの他の葉ノードによって、ノードCの各葉ノードによって行われるすべての相互作用を徐々に上昇させるように見える。
最後に、この関数はまた、その相互作用データがリストUpd()によって更新されるノードの追跡(trace)を保持する。従って、関数Upd_Int_Val()が終了するとき、根ノードRNは、一方ではその葉ノードの相互作用データのすべてを含むだけではなく、現在ループで更新された相互作用データのリストも含み、実際に展開された(evolved)ノードのみがアクセスされることを保証する。
一旦、関数Upd_Int_Val()が終了されると、関数Upd_Int()が終わる。図2に示されるように、関数Upd_Int()の後には、シミュレーションループにおいて、関数Sprd_Int()が続く。関数Sprd_Int()は、そのリストUpd(RN)が関数Upd_Int()によって修正された相互作用データのすべてを含むため、根ノードRNによって呼び出される。
この関数の実装の例を図8に示す。関数Sprd_Intは、入力ノードのリストUpd(C)におけるテスト802から始まるループである。このリストが空である場合には、関数は804で終了する。
リストUpd(C)が空でない場合には、要素Rが806でアンスタッキングされ、対応するノードの相互作用データF(R,R)が808で値F(C,R)に更新される。
次に、関数Set_Flg()が、810でRに関連付けられるデータFlg_bphを記録する。データFlg_bphの値は、動的係数b,pおよびηを更新する必要度を表す。関数Set_Flg()はまた、根ノードRNまでのノードRの祖先のすべてに関するデータFlg_bphも記録する。ループは次に、リストUpd(C)が空になるまで802で再開する。
関数Sprd_Int()が、種々の方法で実装されることができることに留意されたい。注目すべきことに、ここでは更新された相互作用データが、問題のノードに格納される。しかし、別の位置、たとえば、個別の表にこれらの相互作用を格納することが可能である。関数Set_Flg()に記録されるデータについても同様である。
またこの関数を実行せず、必要に応じて適切な方式でリストUpd(RN)の呼び出しで済ませることも可能であるが、これは、明確さの一定の欠如を生じ、相対的に管理の複雑さをもたらすことになる。
相互作用データが更新されると、シミュレーションループは、関数Get_Dyn_Coeff()によって拡張され、木のオブジェクトおよびノードの動的パラメータを決定することを可能にする。
関数Get_Dyn_Coeff()の実装の一例を図9に示す。関数Get_Dyn_Coeff()は、関数Upd_Int_Val()のように、下から上への伝搬関数である。この伝搬を得るために、テスト902は、ノードCに子ノードAおよびBがあるかどうかを調べる。
ノードCに子ノードがない場合には、テスト904は、データFlg_bph(C)が作動されるかどうかを調べる。これが当てはまる場合には、ノードCは、906で関数Coeff_bph()が呼び出される葉ノードであり、この関数はp(C)およびη(C)を0に設定し、更新された相互作用データF(C,C)からb(C)を計算する。ステップ906の後でまたはデータFlg_bph(C)が動作されない場合には、関数は908で終了する。
ノードCが子ノードを有する場合には、910および912でAおよびBに関して、関数Get_Coeff_Dyn()が再帰的に呼び出される。これは、下から上への二分木の必要なノードのスキャンを保証する。一旦すべての再帰呼び出しが起動され、必要な葉ノードのすべてが処理されると、木のリセットが実行され、ブロック920において再帰ループによるループを再帰する。
ブロック920において、第1のテスト922が、現在のノードCがアクティブであるかどうかを調べる。アクティブである場合には、Cの子たち、すなわちAおよびBの係数の値に関して、関数Coeff_phipsi()を呼び出すことによって、係数ΦCおよびΨCが、924で計算される。次に、Cの子たち、すなわちAおよびBの係数の値に関して、関数Coeff_bph()を呼び出すことによって、係数b(C)、p(C)およびη(C)が、926で計算される。最後に、関数は、928で終了する。
現在のノードCが非アクティブである場合には、930で、データFlg_bph(C)に関するテストが、実行される。テストが否定である場合には、関数は、928で直接的に終了する。このテストが肯定である場合、すなわち、データが係数b(C)、p(C)およびη(C)の更新が必要であると示す場合には、これらは、932で、Cの子たち、すなわちAおよびBの係数の値に関して、関数Coeff_bph()を呼び出すことによって計算される。最後に、関数は、928で終了する。
付録Aにおける公式(1)〜(13)は、これらの係数が、関数Coeff_phipsi()およびCoeff_bph()において確立されていることに基づいた計算の公式を与える。本記載の目的において、再帰的に決定されたこれらの係数が、多関節体の挙動を局所的に記述し、またシミュレーションの数的指標、加速度および位置の計算に関する基準として機能することを可能にすることを認識していればよい。さらなる情報に関しては、文献SPM’05およびSIGGRAPH’05が、正確な定義およびこれらの式の取得法を説明する。本出願人は、これらの文献をこの目的のために閲覧することを推奨する。
特に、係数b(C)、p(C)およびη(C)の計算は、ノードCの関節におけるアクティブな力のデータ項目を表す大きさQを直接的および間接的に伴ってもよいことに留意されたい。この大きさQは、たとえば、二面角に左右される結合を表すために用いられてもよい。ノードCと関連付けられる大きさQの計算が、Cの子たちAおよびBの相対位置にのみ左右される場合には、この大きさは、アクティブノードに関してのみ更新される。従って、この更新は、たとえば、関数Coeff_bph()によるb(C)、p(C)およびη(C)の計算の直前に実行されてもよい。
動的係数が更新されると、関数Upd_Dyn()は、これらの係数に基づいて動的データを更新する。関数Upd_Dyn()の実装の例を図10に示す。
図10に示される関数Upd_Dyn()は、上から下に二分木を通過する再帰関数である。
この関数は、以下に示されるように、アクティブノードの判定を最適化するために設定する優先度待ち行列を用いる。このため、現在のノードが根ノードRNである場合には、現在のノードのテスト1002が、加速度数的指標1003の計算を呼び出す。結果は、1006における停止条件として作用する終点εのための基礎として1004で機能する。
加速度数的指標の計算は、付録Aの公式21に記載される計算を行い、現在ノードの子ノードの加速度の平方和に対応する関数Tot_Acc()によって実行される。これは、アクティブノードおよび非アクティブノードを定義することを可能にする。
実際には、εmaxが、加速度数的指標に関して所望のシミュレーション精度を定義する。従って、ε<εmaxである場合には、これは、所望の正確さが達成されることを意味する。従って、ノードCの加速度qdd(C)は、計算されず、関数は1010で終了する。
他方、ε>εmaxである場合には、シミュレーションは、十分に正確であるものとは見なされない。1012で、テストは、ノードCが子を有するかどうかを決定する。子を有しない場合には、関数は1010で終了する。
関数Active_Flg(c)が次に、1014で呼び出される。関数Active_Flg()は、現在のシミュレーションループと関連付けられる時間マーカを含むデータ項目を記録する。ノードにおける活性テストにおいて用いられるのがこの時間マーカである。このために、所与のノードに関して、それと関連付けられる最適な時間マーカが、現在ループの時間マーカと比較される。一致する場合には、ノードはアクティブであると考えられる。同様の方法を、データFlg_bph(C)を起動するために用いることができる。
ノードCが子たちAおよびBを有する場合には、ノードCの加速度qdd(C)は、関数Q_Dotによって1016で計算される。関数Q_Dot()は、動的係数Φ(C)およびb(C)および力F(C)を用いる。関数Q_Dot()によって実行される計算は、付録Aの式22によって説明される。
力F(C)は、ノードCに適用される関節力のすべてを表す合成ベクトルである。根ノードRNに関し、特定の条件が、SPM’05の3.1.2節に記載されるように、ベクトルF(C)を決定することを可能にする。
論文SPM’05の3.1.1節に記載されるように、ベクトルF(C)は、2つの成分F(1,C)およびF(2,C)を有する。本発明の範囲内で、ノードのベクトルF(C)は、その子ノードF(A)およびF(B)のベクトルを計算するように機能する。
実際には、Cの2つの子たちAおよびBを考えると、力F(1,C)はF(1,A)に等しく、F(2,C)はF(2,B)に等しい。更に、以下に記載されるように、F(C)から始まって、成分F(2,A)およびF(1,B)もまた、得られてもよい。それゆえ、F(A)およびF(B)の成分は、F(C)から全体的に得られてもよい。
一旦ノードCの加速度が計算されると、関数Upd_Dyn()は、1018および1020で、付録Aの公式23に基づく関数Ch_F()によって、ベクトルF(2,A)およびF(1,B)の計算を続行する。
次に、ノードAおよびBの加速度数的指標が、1022および1024で計算され、ノードAおよびBは、1026で、Acc(A)およびAcc(B)の値の関数として、優先度待ち行列Q_prioに戻される。シミュレーションの精度を更新するために、1028で、加速度qdd(C)の平方の値がεから減算される。最後に、ノードRが、1030で待ち行列Q_prioからアンスタッキングされ、関数の再帰および木における下降を確実にするために、関数Upd_Dyn()が、1032でRに関して呼び出される。
待ち行列Q_prioは、最も重要であるノードを迅速に判定するために、加速度数的指標の値に基づいて、ノードを分類する。従って、ノードの加速度数的指標が、その子ノードたちの加速度の平方の和を表す場合には、関数は、εを最も迅速に減少させるノードにおいて段階的に下降し、従って、シミュレーションを加速させる。
この関数は同時に2つのタスクを実行することに留意されたい。実際には、ノードのアクティビティは、加速度数的指標の値に基づいている。一定のノードの加速度の計算をしないことおよびデータActive_Flg()を使用することは従って、追加計算コストを生じることなく、アクティビティを考慮する以降のループからそれらを除去することを可能にする。
これは、下から上に木をスキャンする関数がアクティブノードにおいてのみ再帰的に下降することによって始まるという事実によって特に可能となる。
それゆえ、上記の関数の集合は、アクティブノードを選択することによって、木の最小スキャンを確保し、ノードのいくつかのデータの選択的な更新を構成する。
また、シミュレーションの精度は、ここでは最大化速度エラーを表すパラメータεmaxによって保証されることに留意されたい。シミュレートされるノードの数の仕様(指定;specification)または他の数的指標などの他の手段を用いてもよい。
動的データの更新が完了すると、関数Upd_Geo()が、シミュレーションループを終了する。実際には、前述したように、ノードにおける相互作用データが、各ノードに特有の局所的な参照点に関して計算される。
実際には、導出することができるノードの加速度および位置もまた、相対的または固有である。シミュレーションの結果を表示することができるようにするため、および木の種々のスキャンにおいてデータを上に(または下に)送り返すことができるようにするために、ここまでで述べなかった通過マトリックスがここで必要とされる。
図4における関数Upd_Pos()におけるOBBの実際の位置を計算するため、または図7におけるステップ732および734において力F(C,R)を更新するために用いられるのが、これらの通過マトリックス(passage matrices)である。
これらのマトリックスを更新するために、関数Upd_Geo()は、1102でサブ関数Upd_Hyb_qdd()から始まる。関数Upd_Hyb_qdd()は、関数Upd_Dyn()で得られた固定化を考慮するために補正される動的係数を計算する。次に、ノードの加速度qdd(C)は、補正された動的係数によって再計算される。この関数によって実行される動作およびqdd(C)の計算におけるそれらの統合は、論文SIGGRAPH’05の4節および5節に記載されている。
本発明の好ましい実施形態に記載されているが、関数Upd_Hyb_qdd()は、すべての場合において絶対的に必要というわけではない。任意に、関数Upd_Geo()はこの関数を含まなくてもよく、1104で直接的に処理されてもよい。
関数Upd_Geo()は、1104で、関数Upd_qpos()で続行され、それらの加速度に基づいて、ノードの固有の位置を更新する。これは、付録Aの式14に対応する基本的な時間積分を表す簡単な計算である。たとえば、補助加速度の計算を用いて、ノードの固有の位置を更新するための他の方法が、用いられてもよい。
最後に、関数Upd_Geo()は、1106で、関数Upd_CT_Mat()で終了し、ノードの更新された固有の位置に基づいて、上述した内部マトリックスを更新する。これらのマトリックスおよびそれらの更新は、SPM’05の5節に更に詳細に記載されている。
上記において、相互作用データおよび幾何的データは主に、本質的に、すなわち、すべての事例において、問題のノードと関連付けられる局所的な参照点に関して計算される。
このことは、係数Φ(C)およびΨ(C)および局所的な相互作用力などオブジェクトの相対的位置にのみ左右されるデータを再計算する必要性がないことを意味する。従って、実世界の座標への移行は、ノードの実際の位置を計算するために必要とされるだけである。
他の実施形態において、実世界における座標のデータを毎回動作させることが可能であり、アクティブでないノードに関してのみ固有のデータを保持する。
本発明は二分木による表現に関して記載してきたが、他のタイプの木、たとえば、三分木またはn分木などを用いることができる。また、匹敵するスキャンコストでアクティブノードおよび非アクティブノードを弁別することを可能にするのであれば、他のタイプの表現を用いることも可能である。
上述した関数は、本発明を実行するための主要なステップを含む。これらは、本発明を実装するコンピュータプログラムを製作するための基礎として、当業者によって用いられてもよい。そのようなプログラムは、C++言語または当業者に周知である適切な任意の他のコンピュータ言語で設計されてもよい。
添付書類
Figure 0005421248
Figure 0005421248
Figure 0005421248

Claims (10)

  1. 相互作用するオブジェクト集合をシミュレートするコンピュータ装置であって、
    −前記オブジェクト集合の木表現を含むように適合され、前記木表現は、オブジェクトを表す葉ノードと、子ノードの間の関節を表す中間ノードとよりなるノードを含み、各中間ノードが、その子ノードのデータに左右される動的データ、幾何的データおよび相互作用データに関連付けられ、前記相互作用データは、前記子ノードによって表されるオブジェクトに与えられる力を表すメモリ(8)と、
    −シミュレーションコントローラ(4)であって、反復サイクルにおいて
    +オブジェクトおよびオブジェクトの部分集合に関する相互作用データのディストリビュータ(10)と、
    +問題の相互作用データおよび幾何的データの関数として、相互作用を受けるノードに関する前記木表現のスキャンによって、前記動的データを更新するための機構(12)と、
    +前記更新された動的データの関数として、前記相互作用の対象となるノードに関する木表現のスキャンによって、前記幾何的データを更新するための機構(14)とを起動するシミュレーションコントローラ(4)を有するコンピュータ装置において、
    −前記メモリ(8)はまた、前記中間ノードの少なくともいくつかと関連付けられる局所的な相互作用データを有し、1つの中間ノードと関連付けられる局所的な相互作用データは、前記子ノードによりあらわされる他のオブジェクトによって前記子ノードにより表されるオブジェクトに与えられる力であって、前記関節を介して行われる前記オブジェクトと前記他のオブジェクトとの間での相互作用による束縛力以外の力を表し、
    −前記相互作用データディストリビュータ(10)は、問題の子ノードの局所的な相互作用データの関数として、中間ノードの相互作用データ項目を更新するために、前記相互作用の対象となるノードに関する木表現のスキャンによる相互作用更新機構(20)を有することを特徴とする、コンピュータ装置。
  2. 請求項1に記載の装置であって、
    −前記局所的な相互作用データは、局所的に相互作用するノードを表す結合を含む相互作用リストを有し、
    −前記相互作用更新機構は、
    +前記相互作用リストのデータを更新する関数(32)と、
    +前記更新された相互作用リストのデータの少なくとも一部に基づいて、前記相互作用データを更新する関数(34)と、
    を含むことを特徴とする装置。
  3. 請求項2に記載の装置であって、
    −前記メモリは、局所的な相互作用データに関連付けられる前記ノードの少なくともいくつかに関して、関連ノードの周囲の相互作用空間を表す有向ボックスデータを含み、
    −前記相互作用データを更新するための機構は、有向ボックスデータを更新するための関数(30)を有し、前記相互作用リストを更新するための関数は、前記更新された有向ボックスデータの少なくとも一部に基づいて動作することを特徴とする装置。
  4. 請求項1に記載の装置であって、
    −前記メモリは、前記ノードの少なくともいくつかに関して、動的係数データを含むことと、
    −前記動的データを更新するための機構(12)は、
    +前記動的係数データを更新する関数(26)と、
    +前記更新された動的係数データに基づいて、前記動的係数を更新する関数(28)と、
    を含むことを特徴とする装置。
  5. 請求項1に記載の装置であって、
    前記メモリは、前記ノードの少なくともいくつかに関して、活性マーカ(Activity_Flg())を表すデータを有し、
    −前記動的データを更新するための機構(12)は、前記処理するノードの活性マーカ(Activity_Flg())を更新することもでき、
    −前記相互作用データを更新するための機構、動的データを更新するための機構および、幾何的データを更新するための機構の中から選択される少なくとも1つの前記機構が、前記木表現をスキャンするように設計され、アクティブだと印されない前記ノードを無視することを特徴とする装置。
  6. オブジェクト集合の木表現が保持される、相互作用する前記オブジェクト集合の挙動をシミュレートする方法であって、
    前記木表現は、オブジェクトを表す葉ノードと、子ノードの間の関節を表す中間ノードとよりなるノードを含み、各中間ノードが、その子ノードからのデータに左右される動的データ、幾何的データおよび相互作用データと関連付けられ、前記相互作用データは、前記子ノードによって表されるオブジェクトに与えられる力を表し、
    a.前記オブジェクトの一部およびオブジェクトの部分集合にわたって前記相互作用データをシミュレーションブロックによって分配するステップと、
    b.相互作用の対象となるノードに関する木表現を前記シミュレーションブロックによってスキャンし、問題の前記相互作用データおよび幾何的データの関数として、これらのノードの動的データを更新するステップと、
    c.相互作用の対象となるノードの場合には、再び前記木表現を前記シミュレーションブロックによってスキャンし、前記ステップb.において更新された前記動的データの関数として前記幾何データを更新するステップとを有するサイクルが反復される方法において、
    前記ステップa.は、
    a1.問題の子ノードの局所的な相互作用データの関数として、中間ノードの前記相互作用データの更新によって、前記相互作用の対象となるノードに関する木表現の予備スキャンを行い1つの中間ノードと関連付けられる局所的な相互作用データは、前記子ノードによりあらわされる他のオブジェクトによって前記子ノードにより表されるオブジェクトに与えられる力であって、前記関節を介して行われる前記オブジェクトと前記他のオブジェクトとの間での相互作用による束縛力以外の力を表すことを特徴とする方法。
  7. 請求項6に記載のシミュレートの方法であって、
    前記ステップa1.は、
    a1a.局所的な相互作用データを形成する相互作用リストであって、各々の相互作用リストが局所的に相互作用するノードの結合を含む相互作用リストの更新と、
    a1b.前記更新された相互作用リストの関数とした、相互作用データの更新と、
    行うことを特徴とするシミュレートの方法。
  8. 請求項7に記載のシミュレートの方法であって、
    前記ステップa1a.は、
    a1a1.前記ノードの少なくとも一部と関連付けられ、関連ノードの周囲の相互作用空間を表す有向ボックスデータの更新と、
    a1a2.前記更新された有向ボックスデータの関数とした、相互作用リストの更新と、
    行うことを含むことを特徴とするシミュレートの方法。
  9. 請求項6に記載の方法であって、
    前記ステップa、bおよびcの少なくとも1つは、前記木表現をスキャンし、前記ノードの前記少なくとも一部と関連付けられる活性マーカの関数として、前記ノードの少なくとも一部を無視すること含むことを特徴とする方法。
  10. プログラムコード部分/手段/命令を含むコンピュータプログラムであって、前記コンピュータプログラムをコンピュータ上で実行するときに、請求項6に基づく処理のステップを実行するコンピュータプログラム。

JP2010512732A 2007-06-20 2008-06-13 相互作用するオブジェクト集合をシミュレートするコンピュータ装置とその対応方法 Active JP5421248B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR0704414 2007-06-20
FR0704414A FR2917866B1 (fr) 2007-06-20 2007-06-20 Dispositif informatique pour la simulation d'un ensemble d'objets en interaction et procede correspondant
PCT/FR2008/000825 WO2009007550A2 (fr) 2007-06-20 2008-06-13 Dispositif informatique pour la simulation d'un ensemble d'objets en interaction et procédé correspondant

Publications (2)

Publication Number Publication Date
JP2010530581A JP2010530581A (ja) 2010-09-09
JP5421248B2 true JP5421248B2 (ja) 2014-02-19

Family

ID=39145372

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010512732A Active JP5421248B2 (ja) 2007-06-20 2008-06-13 相互作用するオブジェクト集合をシミュレートするコンピュータ装置とその対応方法

Country Status (8)

Country Link
US (1) US8489370B2 (ja)
EP (1) EP2158553A2 (ja)
JP (1) JP5421248B2 (ja)
KR (1) KR101496368B1 (ja)
CN (1) CN101779203B (ja)
BR (1) BRPI0813385A2 (ja)
FR (1) FR2917866B1 (ja)
WO (1) WO2009007550A2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101009424B1 (ko) * 2010-07-01 2011-01-19 주식회사 큐에이엔씨 Gui 소프트웨어 테스트 자동화 방법 및 자동화 장치
JP2012081568A (ja) * 2010-10-14 2012-04-26 Sony Corp ロボットの制御装置及び制御方法、並びにコンピューター・プログラム
US9631885B2 (en) 2011-01-13 2017-04-25 J. Allen Enterprises, Inc. Rifle stock assembly for different barreled receivers
FR2991081A1 (fr) 2012-05-25 2013-11-29 Inst Nat Rech Inf Automat Procede de simulation d'un ensemble d'elements, programme d'ordinateur associe
FR2995109A1 (fr) * 2012-09-06 2014-03-07 Inst Nat Rech Inf Automat Procede de simulation d'un ensemble d'elements, programme d'ordinateur associe
CN105005668B (zh) * 2015-07-30 2017-11-03 浪潮软件集团有限公司 一种模拟微观元素间交互的方法和装置
CN114692600B (zh) * 2019-02-19 2023-04-18 洛林·G·克雷默三世 使用子例程图谱进行形式语言处理的方法和系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003058907A (ja) * 2001-08-09 2003-02-28 Univ Tokyo 木構造リンク系のポーズ及び動作を生成する方法
JP4101677B2 (ja) 2003-02-26 2008-06-18 三菱電機株式会社 動作シミュレーション装置
JP2006285474A (ja) 2005-03-31 2006-10-19 Fujitsu Ltd 並列計算機及びその制御方法
JP4682791B2 (ja) * 2005-10-12 2011-05-11 ソニー株式会社 操作空間物理量算出装置及び操作空間物理量算出方法、並びにコンピュータ・プログラム
GB0602689D0 (en) * 2006-02-10 2006-03-22 Univ Edinburgh Controlling the motion of virtual objects in a virtual space

Also Published As

Publication number Publication date
CN101779203A (zh) 2010-07-14
EP2158553A2 (fr) 2010-03-03
FR2917866B1 (fr) 2009-09-04
US20100179795A1 (en) 2010-07-15
KR20100050460A (ko) 2010-05-13
WO2009007550A3 (fr) 2009-02-26
CN101779203B (zh) 2016-08-24
JP2010530581A (ja) 2010-09-09
KR101496368B1 (ko) 2015-02-26
FR2917866A1 (fr) 2008-12-26
US8489370B2 (en) 2013-07-16
WO2009007550A2 (fr) 2009-01-15
BRPI0813385A2 (pt) 2014-12-30

Similar Documents

Publication Publication Date Title
JP5421248B2 (ja) 相互作用するオブジェクト集合をシミュレートするコンピュータ装置とその対応方法
CN114603564B (zh) 机械臂导航避障方法、系统、计算机设备及存储介质
CN101675458B (zh) 积木构件模型的组装说明的自动生成
EP1178413A2 (en) Method and system for supporting user in analyzing performance of object, using generalized and specialized models on computer
CN110033519A (zh) 基于隐式函数的三维建模方法、装置、系统及存储介质
JP2018022476A (ja) モフォロジー基準によるデータベースの照会
Cardot et al. Persistent naming based on graph transformation rules to reevaluate parametric specification
CN102177518A (zh) 实现有限元模型的方法和设备
JP2000030085A (ja) 3次元モデルの最適化装置および方法
Schmitke et al. Using graph theory and symbolic computing to generate efficient models for multi-body vehicle dynamics
Callejo et al. A hybrid direct‐automatic differentiation method for the computation of independent sensitivities in multibody systems
Morency Automatic generation of real-time simulation code for vehicle dynamics using linear graph theory and symbolic computing
Na et al. Body optimization for front loading design process
Roh et al. Improvement of ship design practice using a 3D CAD model of a hull structure
KR101310276B1 (ko) 연결체 강체의 동역학 시뮬레이션 방법 및 시스템
Morin et al. A force-feedback algorithm for adaptive articulated-body dynamics simulation
Rahman et al. Linear static response of suspension arm based on artificial neural network technique
JP3766857B2 (ja) 3次元モデルの開発支援システム
JP2001051977A (ja) 数値最適化構造解析システム
JP3626896B2 (ja) データ変換方法およびデータ変換プログラムを記録した記録媒体
JP3402600B2 (ja) 三次元形状生成装置
Shum et al. Physically-based character control in low dimensional space
Garcia Physically-based animation of plant motions
JP2022084092A (ja) 軌道計画装置、軌道計画方法、及び軌道計画プログラム
CN116521809A (zh) 一种车道线真值获取方法及系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110519

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130430

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130723

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130730

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130827

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130903

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130918

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131112

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131121

R150 Certificate of patent or registration of utility model

Ref document number: 5421248

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250