JP2019149153A - リアルタイムアプリケーションにおける複数の接続されたボディのシミュレーション - Google Patents

リアルタイムアプリケーションにおける複数の接続されたボディのシミュレーション Download PDF

Info

Publication number
JP2019149153A
JP2019149153A JP2019018431A JP2019018431A JP2019149153A JP 2019149153 A JP2019149153 A JP 2019149153A JP 2019018431 A JP2019018431 A JP 2019018431A JP 2019018431 A JP2019018431 A JP 2019018431A JP 2019149153 A JP2019149153 A JP 2019149153A
Authority
JP
Japan
Prior art keywords
time step
current time
state
parameter
code
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.)
Granted
Application number
JP2019018431A
Other languages
English (en)
Other versions
JP6832967B2 (ja
Inventor
リン スニーセン ガリィ
Linn Snethen Gary
リン スニーセン ガリィ
ハーシャ カランギ スレ
Harsha Kalangi Sree
ハーシャ カランギ スレ
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.)
Square Enix Ltd
Original Assignee
Square Enix Ltd
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 Square Enix Ltd filed Critical Square Enix Ltd
Publication of JP2019149153A publication Critical patent/JP2019149153A/ja
Application granted granted Critical
Publication of JP6832967B2 publication Critical patent/JP6832967B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/20Input arrangements for video game devices
    • A63F13/21Input arrangements for video game devices characterised by their sensors, purposes or types
    • A63F13/211Input arrangements for video game devices characterised by their sensors, purposes or types using inertial sensors, e.g. accelerometers or gyroscopes
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/55Controlling game characters or game objects based on the game progress
    • A63F13/56Computing the motion of game characters with respect to other game characters, game objects or elements of the game scene, e.g. for simulating the behaviour of a group of virtual soldiers or for path finding
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01LMEASURING FORCE, STRESS, TORQUE, WORK, MECHANICAL POWER, MECHANICAL EFFICIENCY, OR FLUID PRESSURE
    • G01L5/00Apparatus for, or methods of, measuring force, work, mechanical power, or torque, specially adapted for specific purposes
    • G01L5/04Apparatus for, or methods of, measuring force, work, mechanical power, or torque, specially adapted for specific purposes for measuring tension in flexible members, e.g. ropes, cables, wires, threads, belts or bands
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/40Processing input control signals of video game devices, e.g. signals generated by the player or derived from the environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Processing Or Creating Images (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】リアルタイムビデオアプリケーションで使用するための、コード上で接続された三つ以上のボディの動きをシミュレーションする方法を提供する。【解決手段】方法は、コードで接続されたボディの位置、速度、方向を、反復することなく単一パスで決定する。与えられたタイムステップ及び該タイムステップでのボディ状態に関して、接続されたボディについてのヤコビ行例を演算する。コードの張力を該ヤコビ行例に基づいて演算する。該張力から、次のタイムステップでのボディの状態を求める。【選択図】図5

Description

本発明は、物理システムのシミュレーションに関わり、特に、リアルタイムゲームアプリケーションにおける接続されたボディの動きをモデリングすることに関する。
コンピュータシミュレーションは、数学モデルを用いて物理システムの挙動を再現することができる。コンピュータシミュレーションは物理学(計算物理学)、天体物理学、気候学、化学及び生物学、経済における人間のシステム、心理学、社会科学及び技術において、多数の自然システムの数学モデルに関する有効なツールとなった。物理システムのシミュレーションは、計算の集中したものとなっている。特に、これらのシミュレーションのいくつかは正確で合理的な結果を得るために反復ループを用いた計算を行っている。ループ及び関連するパラメータの増加は、シミュレーションを行う上で必要なリソース及び/又は時間を増加させている。
従来こうした反復ループを使用したシミュレーションの一つに、コードで接続された3個以上のボディのシミュレーションがある。合理的で正確なシミュレーション結果を得るために、結果が収束するまで、接続されたボディのグループから、異なる二つのボディのセットをシミュレーションする、マルチボディシミュレーションが反復的におこなわれる。しかしながら、こうした従来のアプローチは、演算的に非効率であり、演算リソースと時間を消費し、リアルタイムなアプリケーションには向かないものである。
実施例は、コード上の3個以上のボディの動きを、接続されたボディについてのヤコビ行例を決定し、最新のヤコビ行例に基づいて、現在のタイムステップにおけるコードに作用する張力を決定し、現在のタイムステップに引き続く次のタイムステップについてボディのアップデートされた状態を決定することで、シミュレートすることに関する。ヤコビ行例は、制約パラメータ及び現在のタイムステップのボディの状態に基づく。制約パラメータは、コードで接続された3個以上のボディの物理的特性を示すものである。
一つ以上の実施例で、張力は、ヤコビ行例と共に、現在のタイムステップでの外力パラメータ又は外部衝撃パラメータに基づくものである。外力パラメータは、現在のタイムステップにおいて接続されたボディに作用する外力を表す。外部衝撃パラメータは、現在のタイムステップにおいて接続されたボディに作用する外部衝撃を表す。ボディのアップデートされた状態は、現在のタイムステップで決定された張力に基づいている。
一つ以上の実施例では、現在のタイムステップでのボディ状態はヤコビ行例が決定される前に受け取る。現在のタイムステップでのボディ状態は、ボディの位置、線速度、角速度、質量、方向及び慣性テンソルの内、少なくとも一つを含む。
一つ以上の実施例では、次のタイムステップでのボディとコードの表示は、ディスプレイ装置に表示される。
一つ以上の実施例では、次のタイムステップは、現在のタイムステップでアップデートされ、ステップはアップデートされた現在のタイムステップで置き換えられ、引き続くタイムステップでのボディ状態が得られる。
一つ以上の実施例では、制約パラメータは、以下のうち、少なくとも一つを含む。(1)コードにより接続されたボディの数、(2)各ボディ間の距離、(3)各ボディがコードに沿ってスライド可能かどうか。一つ以上の実施例では、制約パラメータは、コードの質量、コードの柔軟性、コードの剛性のうち、少なくとも一つを含む。
図1は、1実施例に基づいた、ゲーム環境を生成し、表示するように構成されたコンピュータ装置のブロック図である。
図2は、1実施例に基づいた、図1のコンピュータ装置のメモリにおけるソフトウェアモジュールのブロック図の一例である。
図3は、1実施例に基づいた、コードで接続されたボディの概念図である。
図4は、1実施例に基づいた、図3のn−ボディ制約モジュールのモジュールを示すブロック図である。
図5は、1実施例に基づいた、接続されたボディの動きをシミュレーションする方法を示すフローチャートである。
図は、本発明の実施例を開示する、図示する目的のみのものである。
以下の実施例の記述では、より深い理解のために特定の詳細な事項が述べられるが、実施例は、これらの特定の詳細な事項にとらわれるものではない。また、不要で煩雑な記述を避けるために、周知の事項はその詳細を述べていない。
実施例は、リアルタイムビデオアプリケーションで使用する、コードで繋がった3個以上のボディの動きをシミュレートすることに関する。コードで接続されたボディの位置、速度及び方向のようなボディ状態は、繰り返すことの無い単一パスで決定される。与えられたタイムステップ及び該タイムステップ内でのボディ状態に関して、接続されたボディに関するヤコビ行例を演算する。コードの張力はヤコビ行例により演算することができる。得られた張力から次のタイムステップに関するボディの状態を得ることができる。
他の利点の中では、実施例は、コードで接続された三つ以上のボディのシミュレーションを正確に、またシミュレーションにおける演算リソース(例えば、プロセッササイクル又はメモリ空間)を増加させることなく効率的に行うことが可能となる。接続されたボディについて、ヤコビ行例を決定し演算することで、コードの張力の繰り返し処理を行うことなく、単一の処理過程で演算することが出来る。
図面に基づいて実施例を説明するが、同一又は機能的に類似した素子には同様の参照番号が付される。また数字で、図面中の各参照数字の最も左側の数字は、当該参照数字が最初に使用された図面に対応している。
図1は、実施例に基づいて、ゲーム環境を生成し表示する演算装置100のブロック図である。ここでのゲーム環境とは、物理環境をエミュレーションすることを含む。ゲーム環境内のオブジェクトは、それらが物理環境内にあたかもあるように動作するようにモデル化される。ある実施例では、ゲーム環境内のオブジェクトは、人間又は生物キャラクタを含む。更に、ゲーム環境は、ビデオゲーム内でプレイ可能な環境である。例えば、ユーザはゲーム環境内のオブジェクトと交流するキャラクタを制御する。
図1では、中央処理ユニット(CPU)102、グラフィック処理ユニット(GPU)104、メモリ106、ディスプレイコントローラ108、ユーザインターフェース110及びサウンドコントローラ112が示されている。これらのモジュール102から112はバス120を介して相互接続される。演算装置100の他の実施例では、これと異なる又は図1に示した以外の他の構成があることもある。
演算装置100は、パーソナルコンピュータ(PC)、ビデオゲームコンソール、タブレットPC、スマートフォン、又はそれらの装置で取られるアクションを特定する(シーケンシャルな、又その他の)指令を実行することの出来る何らかのマシンであれば良い。演算装置100は、スタンドアロン又は他のマシンに接続する接続(例えば、ネットワーク化された)装置として動作することが出来る。更に、ここでは単一の装置だけが示されているが、ここで「装置」とは、個別に又は協働して指令を実行し、ここで述べる方法論を実行することの出来る何らかの集積された装置も当然含まれるものである。
メモリ106は、ここで述べる一つ以上の方法論又は機能を実現する指示(例えば、ソフトウェア)を格納する装置可読媒体である。例えば、メモリ106は、CPU102による実行されると、CPU102が、図5を参照して詳細に以下に述べられる方法500を実行するように構成される指令を格納することができる。指令は、また、演算装置100によって実行中の処理装置102、104内(例えば、処理装置のキャッシュメモリ内)に、少なくとも一部又は全部が存在しうる。
「装置可読媒体」という言葉は、指令を格納することの出来る単一媒体又は複数媒体(例えば、集中又は分散データベース又は、関連するキャッシュ及びサーバ)を含んだものである。「装置可読媒体」という言葉は、また、装置で実行される指令を格納することが出来、該装置にここで開示される方法論を実行させる全ての媒体を含むものと解釈される。「装置可読媒体」という言葉は、個体メモリ、光学メディア及び磁気メディアの形のデータ収納場所を含むが、これに限定されるものではない。
CPU102は、メモリ106に格納された指令を実行するように構成された処理回路である。CPU102は、何らかの種類の命令セットアーキテクチャ(ISAs)を用いる汎用又は組み込みプロセッサとすることが出来る。図1では、単一のCPUが設けられているが、演算装置100は、マルチCPU102で構成することも出来る。マルチ処理システムでは、各CPU102は、同じISAを実行するが、これに限定されるものではない。
GPU104はグラフィック画像を効率よく処理するために特別に設計された処理回路である。GPU104は、表示すべきオブジェクトをCPU102からの指令に基づいてフレームバッファ(例えば、全体フレームについてのピクセルデータを含むもの)内にレンダーすることが出来る。GPU104は、グラフィックソフトウェアを実行して、グラフィック処理の一部又は全部を行う一つ以上のグラフィックプロセッサを有することができる。
ディスプレイコントローラ108は、GPU104からのグラフィックデータを用いてビデオ信号を生成する回路である。例えば、ディスプレイコントローラ108は、表示装置(例えば、液晶ディスプレイ(LCD)及びプロジェクター)を駆動する。こうして、ゲーム環境はディスプレイコントローラ108を介して画像又はビデオシーケンスとして表示され得る。
サウンドコントローラ112は、演算装置100から又は演算装置100への入力又は出力オーディオ信号を供給する回路である。ゲーム環境の目的のために、サウンドコントローラ112は、該ゲーム環境内での動作やオブジェクトに伴ったオーディオ信号を提供することが出来る。
ユーザインターフェース110は、ハードウェア、ソフトウェア、ファームウェア又はそれらの組み合わせであり、ユーザに演算装置100との対話を可能とする。ユーザインターフェース110は、英数字入力装置(例えば、キーボード)及びカーソル制御装置(例えば、マウス、トラックボール、ジョイスティック、モーションセンサー又は他のポインティング装置)を含むものである。例えば、ユーザは、キーボードとマウスを用いて、演算装置100により生成されたゲーム環境内でキャラクタのアクションを制御する。
演算装置100は、ここで機能的に述べるコンピュータプログラムモジュールを実行する。ここで、「モジュール」とは、コンピュータプログラム指令及び/又は特定の機能を得るために用いられるロジックを意味する。モジュールは、ハードウェア、ファームウェア及び/又はソフトウェアで実行される。ある実施例では、実行可能なコンピュータプログラム指令からなるプログラムモジュールは、メモリ106にロードされ、CPU102又はGPU104で実行される。例えば、ここで述べる方法のプログラム指令はメモリ106へロードされ、CPU102及びGPU104で実行される。
図2に、本発明による、演算装置100のメモリ106内の、ソフトウェアモジュールのブロック図を示す。メモリ200は、他のモジュールの他に、ゲームシステム210,物理システム220,アニメーションシステム230,サウンドモジュール240,グラフィックレンダリングモジュール250及びオペレーティングシステム(OS)260を格納する。物理システム220,アニメーションシステム230,サウンドモジュール240及びグラフィックレンダリングモジュール250は集合的にゲームエンジンを形成する。メモリ200は、図2に示さない、他のモジュールを含むことが出来る。
ゲームシステム210は、オペレーション212A〜212N(集合的に、「オペレーション212」と称する)を実行してゲーム環境を生成する。特に、ゲームシステム210は、これらのオペレーションを実行することで、多様なオブジェクトをインスタンス化し、ゲーム環境内のオブジェクト間の作用をシミュレートする。オペレーション212は、演算オペレーションに関わり、それはあるイベント(例えば、ゲーム内で生じるユーザの作用、時間経過及びトリガー)に基づいた多様なパラメータ(例えば、オブジェクトやユーザステータス)における結果としての変化を演算する、演算オペレーションに関わるものである。いくつかのオペレーションは、環境内の一つ以上のオブジェクト及び/又は該オブジェクトに関わる一つ以上のアクションと関連している。オペレーションの例としては、岩を射出するカタパルト、キャラクタの走り、液体の流れ、矢の飛翔、ドアの開放等を含むものである。いくつかのオペレーション212は相対的に単純なレスポンス(例えば、ドアの開放)であり、また他のものは、物理システム220によるシミュレーションが必要となることもある(例えば、具体的な物体の動き)。オペレーション212を実行する際には、ゲームシステム210は、アプリケーションプログラムインターフェース(APIs)を介してゲームエンジンのコンポーネント(例えば、物理システム220)と通信する。これらのオペレーション212の少なくとも一つは、コードで繋がった三つ以上のボディをシミュレートすることを含むものである。これら繋がったボディの状態は、該ボディに加わる力又は衝撃により変化する。
物理システム220は、ゲーム環境内のオブジェクトにおける力学をモデル化し、シミュレートする。ゲームシステム210内でオペレーション212が開始されると、物理システム220はアクションがオペレーション212に関連したオブジェクトにどのように影響するかをモデル化する。例えば物理システム220は、岩が丘を転がり落ちるようにモデル化する。該アクション及びオブジェクトによって、他のオブジェクト及びアクションが該オブジェクト及びアクションに関連しうる。例えば、投げた岩が他のオブジェクトをひっくり返すかもしれない。このことは、該オブジェクトが岩と当たった際に、新たなオペレーション212のトリガーとなる。
このため、物理システム220は、他のモジュールの他に、n−ボディ制約モジュール222,2−ボディ制約モジュール224及び衝突システム226を有する。物理システム220は、多様な特定のシミュレーションタスクを行うための他のモジュールも、また含むものである。
2−ボディ制約モジュール224は、コードで互いに影響し合う二つのオブジェクトをエミュレートするために使用される。例えば、2−ボディ制約モジュール224は、振り子をモデル化することができる。2−ボディ制約モジュール224は、コード上で互いに影響し合う三つ以上のボディを、各シミュレーションタイムステップで、接続されたボディのグループ内で、二つのボディの異なるセットの相互作用を相互的にモデリングすることで、シミュレートすることが出来る。シミュレーションタイムステップ毎に反復モデリングするために、2−ボディ制約モジュールで三つ以上のボディをシミュレートする場合、n−ボディ制約モジュール222よりも演算リソース及び時間がより多くかかる。
n−ボディ制約モジュール222は、一つのシミュレーションタイムステップにつき一つの処理パスを使用するコードによって接続された三つ以上のボディの動きをモデル化し、シミュレートする。n−ボディ制約モジュール222は、ボディ又はコードが外力又は衝撃を受けると、シミュレーションタイムステップ毎にボディの状態を決定する。ボディの状態には、各ボディの、位置、線速度、角速度、質量、慣性テンソル及び方向を含む。また、n−ボディ制約モジュール222は、空間内で一つ以上のボディを固定して、ボディをコードに沿ってスライドさせる等の、多様な制約のものとで、シミュレーションを行うことが出来る。n−ボディ制約モジュール222については、図4を参照しながら、更に説明する。
衝突システム226は、ゲーム環境内でのオブジェクトの衝突をシミュレートする。衝突システム226は、n−ボディ制約モジュール222によってモデル化されたボディをシミュレートすることができる。例えば、衝突システム226は、コードで制約された複数のボディへ岩が当たる際の衝突力学を決定することができる。
ゲームシステム210のいくつかのオペレーション212は、物理システム220内の一つ以上のモジュールを呼び出すことができる。例えば、オペレーション212は、一列にスライドしながら互いに衝突する三個以上のオブジェクトを扱うとき、オペレーション212は、n−ボディ制約モジュール222及び衝突システム226を使用して、n−ボディの衝突前後の動きをシミュレートする。このオペレーション212は、単一のシミュレーションタイムステップについて、n−ボディ制約モジュール222と衝突システム226の間で反復的な処理を行う。
アニメーションシステム230は、ゲームシステム210からのオペレーション212に基づいて、オブジェクト又はゲーム環境の運動学的なアニメーションを実行するモジュールである。例えば、オペレーション212がロボットアームが動いていることを特定すると、アニメーションシステム230は該アームの動きの運動をアニメート(アニメ化)する。
アニメーションシステム230は、ポーズ特性モジュール232,クロスシステム233のようないくつかの特別なモジュールを有し、特別なアニメーションタスクを実行する。ポーズ特性モジュール232は、ゲーム環境内でのキャラクタの外見や動きをアニメートする。クロスシステム233は、ゲーム環境内での衣服の動きをアニメートする。ここでクロスとは、キャラクタが着るものやオブジェクトに装着されたものを含む。ポーズ特性モジュール222及びクロスシステム233は(他のアニメーションモジュール内で)、布と相互作用する接続されたボディのような、ゲーム環境内のオブジェクト間の相互作用をアニメートする。
サウンドモジュール240は、ゲーム環境内で生じるアクションに対応する音を生成する。アニメーションシステム230からのアニメーションデータはサウンドモジュール240へ送られ、サウンドモジュール240は音を生成することが可能となる。
グラフィックレンダリングモジュール250は、アニメーションシステム230からのグラフィックを表現して、ゲーム環境の画像を生成する。例えば、グラフィックレンダリングモジュール250は、アニメーションシステム230からシーンファイルを受け取る。グラフィックレンダリングモジュール250は、グラフィックデータをGPU104に送り、ディスプレイコントローラ108を介してディスプレイ装置にイメージを表示する。
オペレーティングシステム(OS)260は、コンピュータハードウェア及びソフトウェアモジュールを管理する。特にOS260は、プログラムとコンピュータハードウェア間の介在物として作用する。例えば、OS260は、ユーザインターフェース110からの入力を認識してディスプレイコントローラ108に出力する等の基本的なタスクを行う。
図3は、本発明の実施例による、ボディBからBがコード302により接続された概念的な図である。接続されたボディの数は三つ以上である(即ち、n≧3)。各ボディは、B(1≦i≦n)で示す。各ボディは、ゲーム環境内のどのようなオブジェクトでもよく、コード302は、ロープや紐など、ボディ同士を接続するどのような材料でもよい。図3では、端部ボディB及びBが空間内に固定されたものとして示されているが、一方、又は両方のボディB及びBが動くことも出来る。
コード302の張力は、(1)式で求めることが出来る。
Figure 2019149153

ここで、λはコード302の張力であり、Jはヤコビ行例であり、Vは速度行例であり、tはタイムステップ、Mは質量行例である。Vは、各ボディについて、線速度ν、角速度ωとして、例えば、(2)式で表すことが出来る。
Figure 2019149153
Mは各ボディの質量M及び各ボディの慣性テンソルIを含んだ疎行列であり、例えば、3ボディは、(3)式で表すことができる。
Figure 2019149153
このように、各ボディは、他のボディと同じか異なる質量を持ちうる。
接続されたボディBからBについてのヤコビ行例を決定するために、正規化された方向ベクトルを(4)式で求めることができる。
Figure 2019149153
ここで、Pijは、位置ベクトルであり、はボディを区別するための添え字であり、は、コード302が位置するボディ上の位置を特定する添え字である。例えば、=1の時、(4)式は、(5)式のように表される。
Figure 2019149153
n個のボディでは、(n−1)個の正規化方向ベクトルがある。
n個のボディが長さL(例えば、図3にあるように)のコード302で接続されていると、全長は、ボディの位置を用いて以下のように計算することが出来る。
Figure 2019149153
微分すると、(6)式は、
Figure 2019149153
となる。
ここで、Vij=v+ωxrijであり、rijはi番目のボディの中央から位置Pijに向いた位置ベクトル(例えば、図3のベクトルr41及びr42参照)である。その結果、式(7)は、以下のようになる。
Figure 2019149153
線速度と角速度を分離すると、式は以下のようになる。
Figure 2019149153
ここで、Rijは、rijの反転された外積の歪対称行列である。
Figure 2019149153
こうしてn個のボディのヤコビ行例は以下のようになる。
Figure 2019149153

ここで、1<m<n
例えば、3個の接続されたボディ(n=3)の場合、ヤコビ行例は、以下のようになる。
Figure 2019149153

従って、(1)式によれば、コード302の張力は、質量行列Mと速度行例Vが既知であって、ヤコビ行例Jが、n個のボディの線形成分d、d、…、dn−1及び角度成分
Figure 2019149153
を演算することで決定されれば、計算することが出来る。
モデル化された物理システムにより、追加的な制約をヤコビ行例に含むことができる。追加的な制約には、例えば、コードの柔軟性、コードの剛性、コード上の固定ボディ、コードに沿ったスライド可能なボディ、空間に固定されたコード上のボディ又は点の数、及びコードの体積などがある。例えば、
Figure 2019149153

は、6個の連結されたボディのセット上での制約で有り、ここで、Bは、コード上に拘束され、LはBからBのコードの長さであり、L2は、BからBのコードの長さである。
図4は、本発明による図3のn個のボディの制約モジュール222をモデル化したブロック図である。図2で述べたように、接続されたボディの初期状態及びボディに作用する衝撃及び/又は力に基づいて、n−ボディ制約モジュール222は、上述した式(1)から(12)を参照してシミュレーションすることで、ボディの状態をアップデートする。n−ボディ制約モジュール222は、他のモジュールの中でも、初期化モジュール408及びアップデートモジュール410を含む。更に、n−ボディ制約モジュール222は、ゲームシステム210から制約パラメータ402及び外力404を受け取り、出力406を生成する。他の実施例では、n−ボディ制約モジュール222は、図4に示した以外の異なる及び/又は他のモジュールを有する。
受け取った制約パラメータ402及び外力404(又は衝撃)を用いて、初期化モジュール408はアップデートモジュール410で使用する変数に初期値を決定して割り当て、ボディのアップデートされた状態を決定する。初期化モジュール408はまた、ボディの初期状態を受け取る(図4には不図示)。他の実施例では、初期化モジュール408は、アップデートモジュール410からボディの状態を受け取る。図3を参照して述べたように、ボディの状態は、速度行例V、位置ベクトルPij、正規化方向ベクトルd、質量行列M及び慣性テンソルIの値を取り得る。
制約パラメータ402には接続されたボディの物理的特性が含まれる。制約パラメータ402は、例えば、以下に示すパラメータの内の一つ以上である。コードで接続されたボディの数、コードの長さ、コード上の各ボディ間の距離、各ボディがコード上で固定又はスライド可能か、コードの柔軟性、コードの構成など。例えば、図3で述べたように、制約パラメータ402は、n及びLに関する値を示す。一般的に、これらのパラメータは時間的に不変であるが、時間的に可変なパラメータもまた使用することが出来る。時間的に可変なパラメータとしては、例えば、ボディがコードに固定されていない時、コードが変わった場合の各ボディ間の距離などである。
外力404は、接続されたボディが受ける衝撃(即ち、運動量の伝達)又は力を含む。例えば、ボディが重力で一定の下方への力を受けているところに、ある時間ステップで、キャラクタがボディと衝突して、いくつかのボディが衝撃を受けるような場合である。外力404は、各シミュレーションタイムステップで時間的に可変である。力は、例えば、風や水及び重力からのものが含まれる。衝撃は、例えば、オブジェクトとの衝突又は相互作用である。ある場合には、外力404は、速度行例Vの値に影響をあたえる。
初期化モジュール408から割り当てられた値を用いて、アップデートモジュール410はボディ状態をアップデートする。特に、アップデートモジュール410は入力402,404で表される物理システムに関するヤコビ行例を決定し、式(1)を満足するコードの張力を決定する。ある実施例では、コード302の張力は、瞬間的なものである。コードの張力を用いることで、ボディの状態は計算され、アップデートされる。
出力406はボディのアップデートされた状態を示す。出力406はメモリ106中の多くのシステム又はモジュールで使用される。例えば、出力406はアニメーションシステム230へ送られ、ボディ及びコードの動きは、ゲーム環境でアニメーションされる。また、出力406は衝突システム226へ送られ、接続されたボディ間又は他のオブジェクト間の衝突が生じるか否かが決定される。
図5は、一実施例に基づいた、接続されたボディの動きをシミュレーションする方法を示すフローチャートである。n−ボディ制約モジュールはコードによって接続されたn個のボディのセットに関する制約パラメータを受け取る(502)。制約パラメータは、ボディの動きなどのボディの物理特性を示すものである。これらは、コードによって接続されたボディの数、コードの長さ、コード上の各ボディの距離、各ボディはコードに沿ってスライド可能か又は固定か、コードの柔軟性及びコードの剛性などである。
n−ボディ制約モジュールは現在のタイムステップについてのボディの状態を受け取る(504)。ボディの状態は、少なくとも、各ボディの位置、線速度、角速度、質量、慣性テンソル及び方向のうち一つである。現在のタイムステップは、ゲーム環境内で可変の別個の時間である。接続されたボディの動きをモデル化するためには、ボディ状態を次のタイムステップのためにアップデートする必要がある。
n−ボディ制約モジュールは、現在のタイムステップでの外力パラメータ又は外部衝撃パラメータを受け取る(506)。外力パラメータは接続されたボディへ作用する外力を示す(例えば、風)。外部衝撃パラメータは接続されたボディへ作用する外部衝撃を示す。
n−ボディ制約モジュールはヤコビ行例を決定する(508)。ヤコビ行例は、前に受け取った制約パラメータと現在のタイムステップでのボディ状態に基づいて、決定される。他の実施例では、ヤコビ行例の値は、各タイムステップでアップデートされる。
n−ボディ制約モジュールは、現在のタイムステップでのコードの張力を決定する(510)。張力は外力パラメータ、外部衝撃パラメータ及びヤコビ行例に基づいている。別の実施例では、コードの張力は、衝撃による。また、ある実施例では、張力は、式(1)を満足することで決定される。
n−ボディ制約モジュールは、現在のタイムステップに引き続く次のタイムステップについてボディ状態をアップデートする(512)。ボディのアップデート状態は、現在のタイムステップで決定された張力に基づいている。
ある実施例では、次のタイムステップでのボディとコードの表現は、ディスプレイ装置の上に表示される。また、ある実施例では、次のタイムステップが現在のタイムステップに対してアップデートされ、「506の外力パラメータの受け取り」から「次のタイムステップについてボディ状態をアップデートする512」が繰り返される。またある実施例では、こうした繰り返しは、リアルタイムで行われる。
図5に示したステップは、異なる順序で実行されることもあり、例えばステップ506はステップ512の後に行うことが出来る、更に、この方法は、図5に示したものとは、異なるステップで構成したり、追加的なステップを加えたり又はより少ないステップで構成したりすることもできる。説明した実施例は、ゲームシステムを参照して主に行ったが、コードで接続されたn個のボディのシミュレーションは、エンジニアリングソフトウェア、教育ソフトウェア、航空及び宇宙訓練ソフトウェア又は外科シミュレーションソフトウェアなどの他のアプリケーションに応用が可能である。また、実施例は、分子動力学、タンパク質フォールディング等の研究部門への適用も可能である。
ここでは特定の実施例及び応用例が述べられたが、本発明はここで開示された構成や構造に限られることなく、ここで開示された処理、方法の詳細及び装置における多様な変形、応用は、本発明の精神及び範囲を離れない限り、当業者にとって自明である。

Claims (20)

  1. 接続されたボディの動きをシミュレーションする方法であって、該方法は、
    (a)コードで接続された三つ以上のボディの物理的特性に関連した制約を表す制約パラメータを受け取る;
    (b)現在のタイムステップでのボディの位置、線速度、角速度、質量、慣性テンソル、及び方向のうち、少なくとも一つを含むボディの状態を受け取る;
    (c)外力パラメータ又は外部衝撃パラメータを受け取る、前記外力パラメータは、現在のタイムステップにおいて、接続されたボディに作用する外力を表し、外部衝撃パラメータは、現在のタイムステップにおいて、接続されたボディに作用する外部衝撃を表す;
    (d)現在のタイムステップでのボディ状態と制約パラメータに基づいて、前記接続されたボディについてのヤコビ行例を決定する;
    (e)現在のタイムステップでの外力パラメータ又は外部衝撃パラメータと前記ヤコビ行例に基づいて、現在のタイムステップでの前記コードに作用する張力を決定する;
    (f)決定された現在のタイムステップでの張力に基づいて、前記現在のタイムステップに引き続く次のタイムステップでの前記ボディの状態をアップデートする;
    ことからなることを特徴とする方法。
  2. 請求項1記載の方法において、該方法は、更に、
    (g)前記アップデートされた状態に基づき、次のタイムステップでの前記コード及びボディの表示を、ディスプレイ装置に表示する;
    ことを含む。
  3. 請求項1記載の方法において、該方法は、更に、
    (g)現在のタイムステップとして、次のタイムステップをアップデートし、
    ステップ(c)から(f)を該アップデートされた現在のタイムステップで繰り返す、
    ことを特徴とする。
  4. 請求項1記載の方法において、前記制約パラメータは、(1)前記コードで接続されたボディの数、(2)各ボディ間の距離、及び(3)各ボディは前記コードに沿ってスライド可能か否か、の内少なくとも一つを含む。
  5. 請求項1記載の方法において、前記制約パラメータは、前記コードの質量、該コードの柔軟性及び該コードの剛性のうち、少なくとも一つを含む。
  6. 請求項1記載の方法において、各ステップ(c)から(f)は、記現在のタイムステップの間、一度実行される。
  7. 請求項1記載の方法において、該方法は、更に、
    (g)次のタイムステップについてのボディのアップデートされた状態が少なくとも一つの追加的な制約を満足するか否かを決定し;
    (h)次のタイムステップについてのボディのアップデートされた状態が前記少なくとも一つの追加的な制約を満足しないと決定された場合に、現在のタイムステップでの前記ボディの状態を変えて、(e)と(f)を反復する、
    ことを特徴とする。
  8. 請求項1記載の方法において、前記外力パラメータ又は外部衝撃パラメータのうち少なくとも一つは、入力装置を介してユーザから受け取った入力に基づいて決定され、(c)と(f)をリアルタイムで実行する、ことを特徴とする。
  9. 請求項1記載の方法において、前記現在のタイムステップにおいて、前記コードに作用する張力は衝撃である、ことを特徴とする。
  10. 処理装置により実行された際に、該プロセッサに以下の処理を行わせる指示が格納されたコンピュータ可読記録媒体であって、該指示は、
    (a)コードで接続された三つ以上のボディの物理的特性に関連した制約を表す制約パラメータを受け取る;
    (b)現在のタイムステップでのボディの位置、線速度、角速度、質量、慣性テンソル、及び方向のうち、少なくとも一つを含むボディの状態を受け取る;
    (c)外力パラメータ又は外部衝撃パラメータを受け取る、前記外力パラメータは、現在のタイムステップにおいて、接続されたボディに作用する外力を表し、外部衝撃パラメータは、現在のタイムステップにおいて、接続されたボディに作用する外部衝撃を表す;
    (d)現在のタイムステップでのボディ状態と制約パラメータに基づいて、前記接続されたボディについてのヤコビ行例を決定する;
    (e)現在のタイムステップでの外力パラメータ又は外部衝撃パラメータと前記ヤコビ行例に基づいて、現在のタイムステップでの前記コードに作用する張力を決定する;
    (f)決定された現在のタイムステップでの張力に基づいて、前記現在のタイムステップに引き続く次のタイムステップでの前記ボディの状態をアップデートする;
    ことから構成されることを特徴とする。
  11. 請求項10記載のコンピュータ可読記録媒体であって、前記指示は、更に、
    (g)前記アップデートされた状態に基づき、次のタイムステップでの前記コード及びボディの表示を、ディスプレイ装置に表示する;
    ことを含む。
  12. 請求項10記載のコンピュータ可読記録媒体であって、前記指示は、更に、
    (g)現在のタイムステップとして次のタイムステップをアップデートし、
    ステップ(c)から(f)を該アップデートされた現在のタイムステップで繰り返す、
    ことを含む。
  13. 請求項10記載のコンピュータ可読記録媒体であって、前記制約パラメータは、(1)前記コードで接続されたボディの数、(2)各ボディ間の距離、及び(3)各ボディは前記コードに沿ってスライド可能か否か、の内少なくとも一つを含む。
  14. 請求項10記載のコンピュータ可読記録媒体であって、前記指示は、更に、
    (g)次のタイムステップについてのボディのアップデートされた状態が少なくとも一つの追加的な制約を満足するか否かを決定し;
    (h)次のタイムステップについてのボディのアップデートされた状態が前記少なくとも一つの追加的な制約を満足しないと決定された場合に、現在のタイムステップでの前記ボディの状態を変えて、(e)と(f)を反復する、
    ことを含む。
  15. 請求項10記載のコンピュータ可読記録媒体であって、前記外力パラメータ又は外部衝撃パラメータのうち少なくとも一つは、入力装置を介してユーザから受け取った入力に基づいて決定され、(c)と(f)をリアルタイムで実行する指示を含む、ことを特徴とする。
  16. 以下の手順で生成されるビデオシーケンスを少なくとも部分的に有するビデオシーケンスであって、該手順は、
    (a)コードで接続された三つ以上のボディの物理的特性に関連した制約を表す制約パラメータを受け取る;
    (b)現在のタイムステップでのボディの位置、線速度、角速度、質量、慣性テンソル、及び方向のうち、少なくとも一つを含むボディの状態を受け取る;
    (c)外力パラメータ又は外部衝撃パラメータを受け取る、前記外力パラメータは、現在のタイムステップにおいて、接続されたボディに作用する外力を表し、外部衝撃パラメータは、現在のタイムステップにおいて、接続されたボディに作用する外部衝撃を表す;
    (d)現在のタイムステップでのボディ状態と制約パラメータに基づいて、前記接続されたボディについてのヤコビ行例を決定する;
    (e)現在のタイムステップでの外力パラメータ又は外部衝撃パラメータと前記ヤコビ行例に基づいて、現在のタイムステップでの前記コードに作用する張力を決定する;
    (f)決定された現在のタイムステップでの張力に基づいて、前記現在のタイムステップに引き続く次のタイムステップでの前記ボディの状態をアップデートする;
    ことからなることを特徴とする。
  17. 請求項16記載のビデオシーケンスであって、前記手順は、更に、
    (g)前記アップデートされた状態に基づき、次のタイムステップでの前記コード及びボディの表示を、ディスプレイ装置に表示する;
    ことを含む。
  18. 請求項16記載のビデオシーケンスであって、前記手順は、更に、
    (g)現在のタイムステップとして次のタイムステップをアップデートし、
    ステップ(c)から(f)を該アップデートされた現在のタイムステップで繰り返す、
    ことを特徴とする。
  19. 請求項16記載のビデオシーケンスであって、前記制約パラメータは、(1)前記コードで接続されたボディの数、(2)各ボディ間の距離、及び(3)各ボディは前記コードに沿ってスライド可能か否か、の内少なくとも一つを含む。
  20. 請求項16記載のビデオシーケンスであって、前記手順は、更に、
    (g)次のタイムステップについてのボディのアップデートされた状態が少なくとも一つの追加的な制約を満足するか否かを決定し;
    (h)次のタイムステップについてのボディのアップデートされた状態が前記少なくとも一つの追加的な制約を満足しないと決定された場合に、現在のタイムステップでの前記ボディの状態を変えて、(e)と(f)を反復する、
    ことを特徴とする。
JP2019018431A 2018-02-27 2019-02-05 リアルタイムアプリケーションにおける複数の接続されたボディのシミュレーション Active JP6832967B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/907,127 2018-02-27
US15/907,127 US10864434B2 (en) 2018-02-27 2018-02-27 Simulation of multiple connected bodies for real-time application

Publications (2)

Publication Number Publication Date
JP2019149153A true JP2019149153A (ja) 2019-09-05
JP6832967B2 JP6832967B2 (ja) 2021-02-24

Family

ID=67685392

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019018431A Active JP6832967B2 (ja) 2018-02-27 2019-02-05 リアルタイムアプリケーションにおける複数の接続されたボディのシミュレーション

Country Status (2)

Country Link
US (1) US10864434B2 (ja)
JP (1) JP6832967B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112973126B (zh) * 2021-02-02 2022-11-29 深圳市瑞立视多媒体科技有限公司 绳索两端连接可交互物体的控制方法、装置和计算机设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003339673A (ja) * 2002-05-29 2003-12-02 Japan Science & Technology Corp 身体力学計算方法、身体力学計算プログラム及びそれを記録した記録媒体、身体力学モデル及びそのモデルデータを記憶した記録媒体
JP2007164291A (ja) * 2005-12-09 2007-06-28 Sony Corp 効果音生成装置及び効果音生成方法、並びにコンピュータ・プログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003339673A (ja) * 2002-05-29 2003-12-02 Japan Science & Technology Corp 身体力学計算方法、身体力学計算プログラム及びそれを記録した記録媒体、身体力学モデル及びそのモデルデータを記憶した記録媒体
JP2007164291A (ja) * 2005-12-09 2007-06-28 Sony Corp 効果音生成装置及び効果音生成方法、並びにコンピュータ・プログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
長谷川昌一 外2名: "動作行動開発のための物理エンジンSpringhead", 日本ロボット学会誌, vol. 第30巻 第9号, JPN6020039492, November 2012 (2012-11-01), JP, pages 19 - 26, ISSN: 0004368171 *

Also Published As

Publication number Publication date
US10864434B2 (en) 2020-12-15
US20190262698A1 (en) 2019-08-29
JP6832967B2 (ja) 2021-02-24

Similar Documents

Publication Publication Date Title
EP3939010B1 (en) Reinforcement learning to train a character using disparate target animation data
US11113860B2 (en) Particle-based inverse kinematic rendering system
US10297066B2 (en) Animating a virtual object in a virtual world
CN107067451B (zh) 动画中动态骨骼的实现方法和装置
US10460498B2 (en) Constraint evaluation in directed acyclic graphs
Hämäläinen et al. Online motion synthesis using sequential monte carlo
US20100033488A1 (en) Example-Based Motion Detail Enrichment in Real-Time
JP4988862B2 (ja) リアルタイム・クロース・シミュレーションシステム及び方法
JP4425890B2 (ja) シミュレーション装置、シミュレーション方法、ならびに、プログラム
CN103426196B (zh) 一种流体环境下的关节动画建模方法
CA3182690A1 (en) Method and system for real-time simulation of elastic body
JP6832967B2 (ja) リアルタイムアプリケーションにおける複数の接続されたボディのシミュレーション
Wang et al. Adjustable Constrained Soft‐Tissue Dynamics
Kry et al. Inverse kinodynamics: Editing and constraining kinematic approximations of dynamic motion
US9070220B2 (en) Method of simulating clothing using long range attachments
Tagawa et al. Adaptive and embedded deformation model: An approach to haptic interaction with complex inhomogeneous elastic objects
Gu et al. Constraint solving order in position based dynamics
Dickinson Learning game physics with Bullet Physics and OpenGL
Huaming et al. Real-time physically cloth simulation with CUDA
Wei A Framework for Automatic Physics Model Generation and Real-time Simulation of Permanent Deformable Objects
JPH11288211A (ja) 実時間運動シミュレーション表示装置及びプログラムを記録した機械読み取り可能な記録媒体
Greway Localized motion control of dynamically simulated elastic models
Mahal The application of three-dimensional mass-spring structures in the real-time simulation of sheet materials for computer generated imagery
Walker et al. Physically-based analytical modelling of deformable haptic environments
McCarthy Artificial Intelligence Interacting with a Physically Simulated World Inside a Computer Game Environment

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190829

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201012

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201019

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201216

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: 20210113

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210202

R150 Certificate of patent or registration of utility model

Ref document number: 6832967

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250