JP5629704B2 - Physics simulation on graphics processor - Google Patents
Physics simulation on graphics processor Download PDFInfo
- Publication number
- JP5629704B2 JP5629704B2 JP2012028708A JP2012028708A JP5629704B2 JP 5629704 B2 JP5629704 B2 JP 5629704B2 JP 2012028708 A JP2012028708 A JP 2012028708A JP 2012028708 A JP2012028708 A JP 2012028708A JP 5629704 B2 JP5629704 B2 JP 5629704B2
- Authority
- JP
- Japan
- Prior art keywords
- gpu
- simulation
- data
- mesh
- scene
- 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
Links
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
-
- 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
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/20—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterised by details of the game platform
- A63F2300/203—Image generating hardware
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
- A63F2300/64—Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
- A63F2300/64—Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car
- A63F2300/643—Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car by determining the impact between objects, e.g. collision detection
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- Evolutionary Computation (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
- Controls And Circuits For Display Device (AREA)
- Complex Calculations (AREA)
Description
本発明は、概してグラフィックス処理装置に向けられ、より具体的には、グラフィックスプロセッサを用いてゲームの物理シミュレーションを行うことに向けられる。 The present invention is generally directed to a graphics processing device, and more specifically to performing a physical simulation of a game using a graphics processor.
コンピュータ系上で作動しているビデオゲームなどのアプリケーションは、物理シミュレーションおよびグラフィックスレンダリングの両方を必要とし得る。例えば、図1は、ビデオゲームのシーンにおいて描かれる1つ以上のキャラクターの運動を演算し、そして表示するための、典型的なパイプラインのブロック図100を図示する。ステップ110において、物理シミュレーションが行われることによって、そのシーンに描かれる1つ以上のキャラクターの運動を決定する。次いでステップ120において、物理シミュレーションの結果が、エンドユーザーによって視覚化されるために図形として描写される。 Applications such as video games running on computer systems may require both physics simulation and graphics rendering. For example, FIG. 1 illustrates a block diagram 100 of an exemplary pipeline for computing and displaying the motion of one or more characters drawn in a video game scene. In step 110, a physical simulation is performed to determine the motion of one or more characters drawn in the scene. Then, in step 120, the result of the physics simulation is rendered as a graphic for visualization by the end user.
概して、ステップ110の物理シミュレーションは、中央処理装置(CPU)上、またはコンピュータ系の専用デバイス上で実行される、物理エンジンによって行われる。次いで、ステップ120のグラフィックスレンダリングが、グラフィックスプロセッシングユニット(GPU)によって行われる。しかし、最終的には、物理エンジンによってもたらされた結果は、ビデオゲーム(または、より一般的には、アプリケーション)のグラフィックスを修正するために用いられ、故に、何らかの形式において、GPUに伝えられることとなる。物理エンジンからの結果は、レンダリングのためにGPUに伝えられなくてはならないので、待ち時間および帯域幅の問題が起こり得る。さらに、一般的なプロセッシングユニットのように、CPUは、GPUの並列処理能力を有さない。 In general, the physics simulation of step 110 is performed by a physics engine that runs on a central processing unit (CPU) or a dedicated device of the computer system. The graphics rendering of step 120 is then performed by a graphics processing unit (GPU). Eventually, however, the results provided by the physics engine will be used to modify the graphics of the video game (or more generally the application) and thus in some form communicate to the GPU. Will be. Since results from the physics engine must be communicated to the GPU for rendering, latency and bandwidth problems can occur. Furthermore, unlike a general processing unit, the CPU does not have the parallel processing capability of the GPU.
上述の事項をふまえると、必要なものは、1つ以上のGPU上で物理シミュレーションを行う方法、コンピュータプログラム製品および系である。 In view of the above, what is needed is a method, computer program product, and system for performing physical simulation on one or more GPUs.
本発明の実施形態は、方法、コンピュータプログラム製品、およびシステムを含み得、GPU上で利用可能な並行処理能力を利用することによって、一般的なCPU上で実行される物理シミュレーションと比較して、より速いフレーム速度を可能にする。さらに、そのような方法、コンピュータプログラム製品、およびシステムは、物理シミュレーションの実行において、インプリシットな積分技術を利用することによって、エクスプリシットな積分技術において必要な、相対的に小さな時間ステップを防止する。さらに、手続上の力およびトルクは、GPU上で実行するシェーダープログラムとして表され得る。加えて、GPUベースの物理シミュレーターは、通常はコンピュータシステムで物理シミュレーションを実行する、従来型のソフトウェアダイナミクスソルバーを自動的に置換することが可能であり得る。本発明の実施形態は、1つ以上のGPU上で物理シミュレーションを行うための、方法、コンピュータプログラム製品、およびシステムを提供することによって、上記に識別されたニーズを満たす。1つ以上のGPU上で物理シミュレーションを行うための、そのような方法、コンピュータプログラム製品、およびシステムは、GPU上で利用可能な並行処理能力を利用することによって、通常のCPU上で実行される物理シミュレーションと比較してより速いフレーム速度を可能にする。さらに、そのような方法、コンピュータプログラム製品、およびシステムは、実施形態においてインプリシットな積分技術を利用することによって、物理シミュレーションを行い、これによって、エクスプリシットな積分技術において必要な、相対的に小さな時間ステップを防止する。さらに、本発明の実施形態に従うと、手続き上の力および/またはトルクは、GPU上で実行するシェーダープログラムとして表すことが可能である。加えて、本発明の実施形態に従ったGPUベースの物理シミュレーターは、通常はコンピュータシステム上で物理シミュレーションを実行する、従来型のソフトウェアダイナミクスソルバーを自動的に置換するために用いられ得る。 Embodiments of the present invention can include methods, computer program products, and systems, by utilizing the parallel processing capabilities available on the GPU, as compared to physical simulations executed on a general CPU, Allows for faster frame rates. In addition, such methods, computer program products, and systems prevent the relatively small time steps required in explicit integration techniques by utilizing implicit integration techniques in performing physical simulations. To do. Further, procedural forces and torques can be represented as shader programs executing on the GPU. In addition, GPU-based physics simulators may be able to automatically replace conventional software dynamics solvers, which typically perform physics simulations on computer systems. Embodiments of the present invention meet the needs identified above by providing methods, computer program products, and systems for performing physical simulations on one or more GPUs. Such methods, computer program products, and systems for performing physics simulations on one or more GPUs are executed on a regular CPU by utilizing the parallel processing capabilities available on the GPU. Allows higher frame rates compared to physics simulations. In addition, such methods, computer program products, and systems perform physical simulations by utilizing implicit integration techniques in the embodiments, thereby providing the relative required of explicit integration techniques. Prevent small time steps. Further, according to embodiments of the present invention, procedural forces and / or torques can be represented as shader programs executing on the GPU. In addition, GPU-based physics simulators according to embodiments of the present invention can be used to automatically replace conventional software dynamics solvers that typically perform physics simulations on computer systems.
本発明の実施形態に従うと、少なくとも1つのGPU上で物理シミュレーションを行うための方法が提供される。該方法は、以下のステップを含む。まず、少なくとも1つのメッシュに関連した物理属性を表すデータは、複数のビデオメモリアレイに格納されることによって、シーンに描写される少なくとも1つのメッシュの運動を支配する線形方程式系を設定する。ついで、少なくとも1つのピクセルプロセッサを用いて複数のビデオメモリアレイにおけるデータに演算が行われることによって、時刻に対する線形方程式系を解く。ここで、時刻に対する線形方程式系に対する解を表す修正済みデータは、複数のビデオデータメモリに格納される。 According to an embodiment of the invention, a method is provided for performing a physical simulation on at least one GPU. The method includes the following steps. First, data representing physical attributes associated with at least one mesh is stored in a plurality of video memory arrays to establish a system of linear equations that govern the motion of at least one mesh depicted in the scene. Next, a linear equation system with respect to time is solved by performing operations on data in a plurality of video memory arrays using at least one pixel processor. Here, the corrected data representing the solution to the linear equation system with respect to time is stored in a plurality of video data memories.
本発明の別の実施形態に従うと、コンピュータプログラム製品が提供され、該コンピュータプログラム製品は、制御ロジックを中に格納し、少なくとも1つのGPUに物理シミュレーションを行わせる、コンピュータ使用可能媒体を備える。該制御ロジックは、コンピュータ読取可能な第1および第2のプログラムコードを含む。コンピュータ読取可能第1プログラムコードは、少なくとも1つのGPUに、複数のビデオデータアレイに、少なくとも1つのメッシュに関連した物理属性を表すデータを格納することによって、シーンに描写される少なくとも1つのメッシュの運動を支配する、線形方程式系を設定する。コンピュータ読取可能第2プログラムコードは、少なくとも1つのGPUに、複数のビデオメモリアレイにおけるデータに演算を行わせることによって、時刻に対する線形方程式系を解く。ここで、時刻に対する線形方程式系に対する解を表す修正済みデータは、複数のビデオデータメモリに格納される。 In accordance with another embodiment of the present invention, a computer program product is provided, the computer program product comprising a computer usable medium having control logic stored therein and causing at least one GPU to perform a physical simulation. The control logic includes computer readable first and second program code. The first computer readable program code stores data representing physical attributes associated with at least one mesh in at least one GPU, in a plurality of video data arrays, and thereby for at least one mesh depicted in the scene. Set up a linear equation system that governs motion. The second computer readable program code solves a system of linear equations for time by causing at least one GPU to perform operations on data in a plurality of video memory arrays. Here, the corrected data representing the solution to the linear equation system with respect to time is stored in a plurality of video data memories.
本発明のさらなる実施形態に従うと、物理シミュレーションを行うためのシステムが提供される。該システムは、複数のビデオメモリアレイを格納するメモリと、該メモリに結合された少なくとも1つのピクセルプロセッサとを含む。複数のビデオメモリアレイは、少なくとも1つのメッシュに関連した物理パラメータを表すデータを格納することによって、シーンに描写される少なくとも1つのメッシュの運動を支配する線形方程式系を設定する。少なくとも1つのピクセルプロセッサは、複数のビデオメモリアレイにおけるデータに演算を行うことによって、時刻に対する線形方程式系を解き、その結果として、時刻に対する線形方程式系に対する解を表す修正済みデータをもたらす。 According to a further embodiment of the invention, a system for performing physics simulations is provided. The system includes a memory that stores a plurality of video memory arrays and at least one pixel processor coupled to the memory. The plurality of video memory arrays sets up a linear equation system that governs the motion of at least one mesh depicted in the scene by storing data representing physical parameters associated with the at least one mesh. At least one pixel processor solves the linear equation system for time by performing operations on data in the plurality of video memory arrays, resulting in modified data representing a solution for the linear equation system for time.
本発明のさらなる機能および有用性、ならびに本発明のさまざまな実施形態の構造および動作は、添付の図面を参照しながら、以下に詳述される。本発明は、本明細書に記述された特定の実施形態に限定されるものではないことに留意されたい。そのような実施形態は、例示目的のためだけに、本明細書において提示される。追加的な実施形態は、本明細書に含まれる教示を基に、当業者に明確である。 Further features and utilities of the present invention, as well as the structure and operation of various embodiments of the present invention, are described in detail below with reference to the accompanying drawings. It should be noted that the present invention is not limited to the specific embodiments described herein. Such embodiments are presented herein for illustrative purposes only. Additional embodiments will be apparent to those skilled in the art based on the teachings contained herein.
添付の図面は、本明細書において具体化され、明細書の一部を構成し、本発明を例示し、本記述とともに、本発明の原理を説明するためにさらに役立ち、当業者が本発明を作成および利用することを可能にする。
例えば、本発明は、以下を提供する。
(項目1)
少なくとも1つのグラフィックスプロセッサユニット(GPU)上で物理シミュレーションを行う方法であって、該方法は、
少なくとも1つのメッシュに関連した物理パラメータを複数のメモリアレイにマッピングすることによって、シーンに描写された該少なくとも1つのメッシュの運動を支配する線形方程式系を設定することと、
少なくとも1つのピクセルプロセッサを用いて該複数のメモリアレイ中のデータに演算を行うことによって、ある時刻に対する線形方程式系を解くことと
を包含し、
該時刻に対する線形方程式系の該解を表す変更されたデータは、該複数のメモリアレイに格納される、方法。
(項目2)
上記複数のメモリアレイ中の上記変更されたデータに基づいて、上記時刻に対する上記シーンにおいて描写される、上記1つ以上のメッシュの運動を更新することをさらに含む、項目1に記載の方法。
(項目3)
上記時刻に対する上記少なくとも1つのメッシュを含む、少なくとも1つの衝突を識別することと、
(i)上記複数のメモリアレイ中の上記変更されたデータ、および(ii)該識別された少なくとも1つの衝突、に基づいて、上記時刻に対する上記シーン中に描写される上記少なくとも1つのメッシュの運動を更新することと
をさらに含む、項目1に記載の方法。
(項目4)
上記ピクセルプロセッサを用いて上記変更されたデータに演算を行うことによって、次の時刻に対する線形方程式系を解くことをさらに含み、該次の時刻に対する線形方程式系に対する解を表す変更されたデータは、上記複数のメモリアレイに格納される、項目1に記載の方法。
(項目5)
上記複数のメモリアレイ中の上記さらなる変更されたデータに基づいて、上記次の時刻に対する上記シーン中に描写される少なくとも1つのメッシュの運動を更新することをさらに含む、項目4に記載の方法。
(項目6)
上記次の時刻に対する上記少なくとも1つのメッシュを含む、少なくとも1つの衝突を識別することと、
(i)上記複数のメモリアレイ中の上記変更されたデータ、および(ii)該識別された少なくとも1つの衝突、に基づいて、上記次の時刻に対する上記シーン中に描写される上記少なくとも1つのメッシュの運動を更新することと
をさらに含む、項目4に記載の方法。
(項目7)
演算を行うことは、
少なくとも1つのピクセルプロセッサを用いて上記複数のメモリアレイ中のデータに演算を行うことによって、インプリシットに上記線形方程式系を積分することによって、ある時刻に対する該線形方程式系を解くことを含み、
上記時刻に対する該線形方程式系の該解を表す変更されたデータは、該複数のメモリアレイに格納される、項目1に記載の方法。
(項目8)
上記格納することは、
複数のメモリアレイにデータを格納することによって、線形方程式系を設定することを含み、該線形方程式系は、
によって与えられ、シーンにおいて描写される少なくとも1つのメッシュの運動を支配し、ここで、
であり、Iは、恒等行列であり、Mは該少なくとも1つのメッシュの質量の直交行列であり、
は、t k 時における該少なくとも1つのメッシュの幾何学的状態を表すベクトルであり、
は、t k 時における該少なくとも1つのメッシュ中の各点の速度を表すベクトルであり、
は、t k 時における該少なくとも1つのメッシュの各点上のネット力を表すベクトルである、項目1に記載の方法。
(項目9)
上記方法は、マッピングに先立って、さらに、
ソフトウェアダイナミクスソルバーからシーンを捕捉し、該シーン中に描写される少なくとも1つのメッシュに付けられた属性およびフィールドを、上記複数のメモリアレイにマッピングされる物理パラメータに変換することと、
該ソフトウェアダイナミクスソルバーのシーングラフにシミュレーション結果をインポートすることと
をさらに含み、
該シミュレーション結果は、上記少なくとも1つのピクセルプロセッサによって演算された上記時刻に対する上記線形方程式系に対する解に対応する、項目1に記載の方法。
(項目10)
上記少なくとも1つのGPUで実行するシェーダーとして、該シーンにおいて描写される該メッシュ上に作用する力を表すことをさらに含む、項目1に記載の方法。
(項目11)
制御ロジックを中に格納しているコンピュータ使用可能媒体を備え、少なくとも1つのグラフィックスプロセッサユニット(GPU)に物理シミュレーションを行わせるコンピュータプログラム製品であって、該制御ロジックは、
コンピュータ読取可能第1プログラムコードであって、該コードは、該少なくとも1つのGPUに、少なくとも1つのメッシュに関連した物理パラメータを複数のメモリアレイにマッピングさせることによって、シーンに描写された該少なくとも1つのメッシュの運動を支配する線形方程式系を設定する、コンピュータ読取可能第1プログラムコードと、
コンピュータ読取可能第2プログラムコードであって、該コードは、該少なくとも1つのGPUに、該複数のメモリアレイ中のデータに演算を行わせることによって、ある時刻の線形方程式系を解く、コンピュータ読取可能第2プログラムコードと
を備え、
該時刻に対する線形方程式系に対する解を表す変更されたデータは、該複数のメモリアレイに格納される、コンピュータプログラム製品。
(項目12)
コンピュータ読取可能第3プログラムコードであって、該コードは、上記複数のメモリアレイ中の上記変更されたデータに基づいて、上記少なくとも1つのGPUに、上記時刻に対する上記シーン中に描写される上記少なくとも1つのメッシュの運動を更新させる、コンピュータ読取可能第3プログラムコードをさらに備える、項目11に記載のコンピュータプログラム製品。
(項目13)
コンピュータ読取可能第3プログラムコードであって、該コードは、上記少なくとも1つのGPUに、上記時刻の上記少なくとも1つのメッシュを含む少なくとも1つの衝突を識別させる、コンピュータ読取可能第3プログラムコードと、
コンピュータ読取可能第4プログラムコードであって、該コードは、(i)上記複数のメモリアレイ中の上記変更されたデータ、および(ii)該識別された少なくとも1つの衝突、に基づいて、該少なくとも1つのGPUに、該時刻に対する該シーン中に描写される該少なくとも1つのメッシュの運動を更新させる、コンピュータ読取可能第4プログラムコードとをさらに備える、項目11に記載のコンピュータプログラム製品。
(項目14)
コンピュータ読取可能第3プログラムコードであって、該コードは、上記少なくとも1つのGPUに、上記変更されたデータに演算を行わせることによって、次の時刻に対する線形方程式系を解く、コンピュータ読取可能第3プログラムコードをさらに含み、
該次の時刻に対する該線形方程式系に対する解を表すさらなる変更されたデータは、上記複数のメモリアレイに格納される、項目11に記載のコンピュータプログラム製品。
(項目15)
コンピュータ読取可能第4プログラムコードであって、該コードは、上記複数のメモリアレイ中の上記さらなる変更されたデータに基づいて、上記少なくとも1つのGPUに、上記次の時刻に対する上記シーン中に描写される上記少なくとも1つのメッシュの運動を更新させる、コンピュータ読取可能第4プログラムコードをさらに備える、項目14に記載のコンピュータプログラム製品。
(項目16)
コンピュータ読取可能第4プログラムコードであって、該コードは、上記少なくとも1つのGPUに、上記次の時刻に対する上記少なくとも1つのメッシュを含む少なくとも1つの衝突を識別させる、コンピュータ読取可能第4プログラムコードと、
コンピュータ読取可能第5プログラムコードであって、該コードは、(i)上記複数のメモリアレイ中の上記さらなる変更されたデータ、および(ii)該コンピュータ読取可能第4プログラムコードによって識別された該少なくとも1つの衝突、に基づいて、該少なくとも1つのGPUに、該次の時刻に対する該シーン中に描写される該少なくとも1つのメッシュの運動を更新させる、コンピュータ読取可能第5プログラムコードと
をさらに備えている、項目14に記載のコンピュータプログラム製品。
(項目17)
上記コンピュータ読取可能第2プログラムコードは、
コードであって、上記少なくとも1つのGPUに、上記複数のメモリアレイ中の上記データに演算を行わせることによって、インプリシットに上記線形方程式系を積分することによって、ある時刻に対する該線形方程式系を解くコードを含み、
該時刻に対する線形方程式系に対する解を表す変更されたデータは、該複数のメモリアレイに格納される、項目11に記載のコンピュータプログラム製品。
(項目18)
上記コンピュータ読取可能第1プログラムコードは、
コードであって、上記少なくとも1つのGPUに、複数のメモリアレイにデータを格納させることによって、線形方程式系を設定する、コードを備え、該線形方程式系は、
によって与えられ、シーンにおいて描写される上記少なくとも1つのメッシュの運動を支配し、ここで、
であり、ここで、Iは、恒等行列であり、Mは上記少なくとも1つのメッシュの質量の直交行列であり、
は、t k 時における該少なくとも1つのメッシュの幾何学的状態を表すベクトルであり、
は、t k 時における該少なくとも1つのメッシュ中の各点の速度を表すベクトルであり、
は、t k 時における該少なくとも1つのメッシュ中の各点上のネット力を表すベクトルである、項目11に記載のコンピュータプログラム製品。
(項目19)
コンピュータ読取可能第3プログラムコードであって、該コードは、上記少なくとも1つのGPUに、ソフトウェアダイナミクスソルバーからシーンを捕捉させ、該シーン中に描写される少なくとも1つのメッシュに付けられた属性およびフィールドを、上記複数のメモリアレイにマッピングされる上記物理パラメータに変換する、コンピュータ読取可能第3プログラムコードと、
コンピュータ読取可能第4プログラムコードであって、該コードは、該少なくとも1つのGPUに、該ソフトウェアダイナミクスソルバーのシーングラフにシミュレーション結果をインポートさせる、コンピュータ読取可能第4プログラムコードと
をさらに備え、
該シミュレーション結果は、上記時刻に対する上記線形方程式系に対する解に対応する、項目11に記載のコンピュータプログラム製品。
(項目20)
上記少なくとも1つのGPUに、上記シーンにおいて描写される上記メッシュに作用する力をシミュレーションさせるコンピュータ読取可能第3プログラムコードをさらに備える、項目11に記載のコンピュータプログラム製品。
(項目21)
物理シミュレーションを行うためのシステムであって、該システムは、
メモリであって、少なくとも1つのメッシュに関連した物理パラメータを表すデータを格納する複数のメモリアレイを含み、シーンにおいて描写される該少なくとも1つのメッシュの運動を支配する線形方程式系を設定するための、メモリと、
該複数のメモリアレイにおける該データに演算を行うことによってある時刻に対する該線形方程式系を解く、該メモリに結合された少なくとも1つのピクセルプロセッサと
を備え、
該時刻に対する該線形方程式系の該解を表す変更されたデータは、該複数のメモリアレイに格納される、システム。
(項目22)
レンダリングエンジンであって、上記複数のメモリアレイにおける上記変更されたデータに基づいて、上記時刻に対する上記シーンにおいて描写される上記少なくとも1つのメッシュの描写を更新する、レンダリングエンジンをさらに備える、項目21に記載のシステム。
(項目23)
上記ピクセルプロセッサは、上記時刻に対する上記少なくとも1つのメッシュを含む少なくとも1つの衝突を識別し、該システムは、
レンダリングエンジンであって、(i)上記複数のメモリアレイにおける上記変更されたデータ、および(ii)該時刻において識別された該少なくとも1つの衝突に基づいて、該時刻に対する上記シーンにおいて描写される上記少なくとも1つのメッシュの描写を更新する、レンダリングエンジンをさらに備える、項目21に記載のシステム。
(項目24)
上記ピクセルプロセッサは、上記変更されたデータに演算を行うことによって、次の時刻に対する線形方程式系を解き、該次の時刻に対する該線形方程式系に対する解を表すさらなる変更されたデータは、上記複数のメモリアレイに格納される、項目21に記載のシステム。
(項目25)
レンダリングエンジンであって、上記複数のメモリアレイにおける上記さらなる修正済みのデータに基づいて、上記次の時刻に対する上記シーンにおいて描写される上記少なくとも1つのメッシュの描写を更新する、レンダリングエンジンをさらに備える、項目24に記載のシステム。
(項目26)
上記ピクセルプロセッサは、上記次の時刻に対する上記少なくとも1つのメッシュを含む少なくとも1つの衝突を識別し、該システムは、
レンダリングエンジンであって、(i)上記複数のメモリアレイにおける上記変更されたデータ、および(ii)該次の時刻において識別された該少なくとも1つの衝突に基づいて、該次の時刻に対する上記シーンにおいて描写される上記少なくとも1つのメッシュの描写を更新する、レンダリングエンジンをさらに備える、項目24に記載のシステム。
(項目27)
上記ピクセルプロセッサは、上記複数のメモリアレイにおける上記データに演算を行うことによって、上記線形方程式系をインプリシットに積分することによってある時刻に対する該線形方程式系を解き、該時刻に対する該線形方程式系に対する該解を表す変更されたデータは、該複数のメモリアレイに格納される、項目21に記載のシステム。
(項目28)
上記線形方程式系は、
によって与えられ、ここで
であり、Iは、恒等行列であり、Mは上記少なくとも1つのメッシュの質量の直交行列であり、
は、t k 時における該少なくとも1つのメッシュの幾何学的状態を表すベクトルであり、
は、t k 時における該少なくとも1つのメッシュ中の各点の速度を表すベクトルであり、
は、t k 時における該少なくとも1つのメッシュ中の各点上のネット力を表すベクトルである、項目21に記載のシステム。
(項目29)
シーンエクスポーターであって、ソフトウェアダイナミクスソルバーからシーンを捕捉し、該シーンにおいて描写される少なくとも1つのメッシュに付けられた属性およびフィールドを、上記複数のメモリアレイにおいて格納される上記物理パラメータに変換する、シーンエクスポーターと、
シーンインポーターであって、該ソフトウェアダイナミクスソルバーのシーングラフにシミュレーション結果をインポートする、シーンインポーターと
をさらに備え、
該シミュレーション結果は、上記少なくとも1つのピクセルプロセッサによって演算された上記時刻に対する上記線形方程式系に対する上記解に対応する、項目21に記載のシステム。
(項目30)
少なくとも1つのGPU上で、上記シーンにおいて描写される上記メッシュに作用する力を表すために実行するシェーダーをさらに備える、項目21に記載のシステム。
(項目31)
少なくとも1つのグラフィックスプロセッサユニット(GPU)上で物理シミュレーションを行うための方法であって、該方法は、
該少なくとも1つのGPUにシミュレーション定義データを送信することと、
該転送されたシミュレーション定義に応答する該少なくとも1つのGPUからのシミュレーション結果を受け取ることと
を包含する、方法。
(項目32)
上記少なくとも1つのGPUにシミュレーション定義データを転送することは、該少なくとも1つのGPUに、シーンデータ、シミュレーションデータ、アクターデータ、ジョイントデータ、およびフィードバックデータのうちの少なくとも1つを送信することを含む、項目31に記載の方法。
(項目33)
上記送信は、上記少なくとも1つのGPUに、マークアップ言語フォーマットのシミュレーション定義データを送信することを含む、項目31に記載の方法。
(項目34)
少なくとも1つのグラフィックスプロセッサユニット(GPU)上で物理シミュレーションを行うための方法であって、該方法は、
シミュレーション定義データをアプリケーションプログラミングインタフェース(API)コマンドに変換することと、
該変換されたシミュレーション定義データに応答して、該少なくとも1つのGPU上で物理シミュレーションを行うことによって、シミュレーション結果データを生成することと
を包含する、方法。
(項目35)
上記変換することは、上記シミュレーション定義データからシーンデータ構造を生成することを含む、項目34に記載の方法。
(項目36)
上記物理シミュレーションを行うことは、
上記シミュレーション定義データに対応する線形方程式系を設定することと、
該線形方程式系を解くことと、
該線形方程式系に対する解に基づいて衝突を検出することと
を含む、項目34に記載の方法。
(項目37)
物理シミュレーションを行うための、コンピュータベースの方法であって、該方法は、
ソフトウェアダイナミクスソルバーデータを、少なくとも1つのグラフィクスプロセッサユニット(GPU)に対するシミュレーション定義データに変換することと、
該変換されたデータに応答して、該少なくとも1つのGPU上で物理シミュレーションを行うことによって、シミュレーション結果データを生成することと
を包含する、方法。
(項目38)
上記シミュレーション結果データをアプリケーションに送信することをさらに含む、項目37に記載の方法。
(項目39)
上記送信することは、上記シミュレーション結果データを上記ソフトウェアダイナミクスソルバーのフォーマットに変換することを含む、項目38に記載の方法。
(項目40)
追加的なソフトウェアダイナミクスソルバーデータに応答して、ソフトウェアダイナミクスソルバーに基づく別の物理シミュレーションを行うことをさらに含む、項目37に記載の方法。
(項目41)
少なくとも1つのグラフィクスプロセッサユニット(GPU)を生成するための命令を含む、コンピュータ読取可能媒体であって、該命令は、実行されるときには、該少なくとも1つのGPUを作成するように適合され、該少なくとも1つのGPUは、
少なくとも1つのメッシュに関連した物理パラメータを複数のメモリアレイにマッピングすることによって、シーンに描写された該少なくとも1つのメッシュの運動を支配する線形方程式系を設定し、
少なくとも1つのピクセルプロセッサを用いて該複数のメモリアレイ中のデータに演算を行うことによって、ある時刻に対する線形方程式系を解く
ように適合され、該時刻に対する該線形方程式系に対する解を表す変更されたデータは、該複数のメモリアレイに格納される、コンピュータ読取可能媒体。
(項目42)
少なくとも1つのグラフィクスプロセッサユニット(GPU)を生成するための命令を含む、コンピュータ読取可能媒体であって、該命令は、実行されるときには、該少なくとも1つのGPUを作成するように適合され、該少なくとも1つのGPUは、
該少なくとも1つのGPUにシミュレーション定義データを送信し、
該送信されたシミュレーション定義データに応答する該少なくとも1つのGPUからのシミュレーション結果を受け取る
ように適合される、コンピュータ読取可能媒体。
(項目43)
少なくとも1つのグラフィクスプロセッサユニット(GPU)を生成するための命令を含む、コンピュータ読取可能媒体であって、該命令は、実行されるときには、該少なくとも1つのGPUを作成するように適合され、該少なくとも1つのGPUは、
ソフトウェアダイナミクスソルバーデータを、該少なくとも1つのGPUに対するシミュレーション定義データに変換し、
該変換されたデータに応答して、該少なくとも1つのGPU上で物理シミュレーションを行うことによって、シミュレーション結果データを生成する
ように適合される、コンピュータ読取可能媒体。
The accompanying drawings are embodied in and constitute a part of this specification, illustrate the invention, and together with the description, serve to explain the principles of the invention and enable those skilled in the art to understand the invention. Allows you to create and use.
For example, the present invention provides the following.
(Item 1)
A method of performing a physical simulation on at least one graphics processor unit (GPU), the method comprising:
Setting a system of linear equations governing the motion of the at least one mesh depicted in the scene by mapping physical parameters associated with the at least one mesh to a plurality of memory arrays;
Solving a system of linear equations for a time by performing operations on data in the plurality of memory arrays using at least one pixel processor;
Including
The modified data representing the solution of the system of linear equations for the time is stored in the plurality of memory arrays.
(Item 2)
The method of claim 1, further comprising updating the motion of the one or more meshes depicted in the scene relative to the time based on the changed data in the plurality of memory arrays.
(Item 3)
Identifying at least one collision comprising the at least one mesh for the time;
The motion of the at least one mesh depicted in the scene relative to the time based on (i) the modified data in the plurality of memory arrays, and (ii) the identified at least one collision. And to update
The method according to Item 1, further comprising:
(Item 4)
Solving the linear equation system for the next time by performing operations on the changed data using the pixel processor, the modified data representing a solution for the linear equation system for the next time is: The method of item 1, stored in the plurality of memory arrays.
(Item 5)
5. The method of item 4, further comprising updating at least one mesh motion depicted in the scene for the next time based on the further modified data in the plurality of memory arrays.
(Item 6)
Identifying at least one collision comprising the at least one mesh for the next time;
The at least one mesh depicted in the scene for the next time based on (i) the modified data in the plurality of memory arrays, and (ii) the identified at least one collision. With renewing exercise
The method according to Item 4, further comprising:
(Item 7)
Performing an operation
Solving the system of linear equations for a time by implicitly integrating the system of linear equations by performing operations on data in the plurality of memory arrays using at least one pixel processor;
The method of item 1, wherein the modified data representing the solution of the system of linear equations for the time is stored in the plurality of memory arrays.
(Item 8)
The above storage is
Including setting up a linear equation system by storing data in a plurality of memory arrays, the linear equation system comprising:
Dominates the motion of at least one mesh given by and depicted in the scene, where
I is an identity matrix, M is an orthogonal matrix of the mass of the at least one mesh,
Is a vector representing the geometric state of the at least one mesh at t k ;
Is a vector representing the velocity of each point in the at least one mesh at t k ;
The method according to item 1, wherein is a vector representing a net force on each point of the at least one mesh at t k .
(Item 9)
Prior to mapping, the method further includes
Capturing a scene from a software dynamics solver and converting attributes and fields attached to at least one mesh depicted in the scene into physical parameters mapped to the plurality of memory arrays;
Importing simulation results into the scene graph of the software dynamics solver;
Further including
The method of item 1, wherein the simulation result corresponds to a solution for the system of linear equations for the time calculated by the at least one pixel processor.
(Item 10)
The method of claim 1, further comprising representing a force acting on the mesh depicted in the scene as a shader executing on the at least one GPU.
(Item 11)
A computer program product comprising a computer usable medium having stored therein control logic and causing at least one graphics processor unit (GPU) to perform a physical simulation, the control logic comprising:
First computer readable program code, the code being mapped into a plurality of memory arrays by causing the at least one GPU to map physical parameters associated with at least one mesh to a plurality of memory arrays. First computer readable program code for setting a system of linear equations governing the motion of two meshes;
Computer readable second program code, the computer readable code for solving a system of linear equations at a time by causing the at least one GPU to perform operations on data in the plurality of memory arrays Second program code and
With
A computer program product, wherein modified data representing a solution to a system of linear equations for the time is stored in the plurality of memory arrays.
(Item 12)
Computer readable third program code, wherein the code is based on the modified data in the plurality of memory arrays, the at least one GPU having the at least one depicted in the scene for the time Item 12. The computer program product of item 11, further comprising computer readable third program code for updating the motion of one mesh.
(Item 13)
Computer readable third program code, the computer readable third program code for causing the at least one GPU to identify at least one collision including the at least one mesh at the time;
Computer readable fourth program code, the code based on (i) the modified data in the plurality of memory arrays and (ii) the identified at least one collision. Item 12. The computer program product of item 11, further comprising computer readable fourth program code that causes one GPU to update the motion of the at least one mesh depicted in the scene relative to the time.
(Item 14)
Computer readable third program code, which causes the at least one GPU to perform an operation on the changed data to solve a linear equation system for a next time; Further including program code,
12. The computer program product of item 11, wherein further modified data representing a solution to the linear equation system for the next time is stored in the plurality of memory arrays.
(Item 15)
Computer readable fourth program code, wherein the code is depicted in the scene for the next time on the at least one GPU based on the further modified data in the plurality of memory arrays. 15. The computer program product of item 14, further comprising computer readable fourth program code that causes the movement of the at least one mesh to be updated.
(Item 16)
Computer readable fourth program code, the computer readable fourth program code for causing the at least one GPU to identify at least one collision including the at least one mesh for the next time; ,
Computer-readable fifth program code, the code comprising: (i) the further modified data in the plurality of memory arrays; and (ii) the at least the computer-readable fourth program code identified Computer-readable fifth program code that, based on one collision, causes the at least one GPU to update the movement of the at least one mesh depicted in the scene relative to the next time;
The computer program product of item 14, further comprising:
(Item 17)
The computer readable second program code is:
Code to cause the at least one GPU to perform operations on the data in the plurality of memory arrays, thereby implicitly integrating the system of linear equations to Including the code to solve,
12. The computer program product of item 11, wherein modified data representing a solution to a system of linear equations for the time is stored in the plurality of memory arrays.
(Item 18)
The computer readable first program code is:
Code comprising: setting a linear equation system by causing the at least one GPU to store data in a plurality of memory arrays, the linear equation system comprising:
Governs the motion of the at least one mesh given by and depicted in the scene, where
Where I is an identity matrix, M is an orthogonal matrix of the mass of the at least one mesh,
Is a vector representing the geometric state of the at least one mesh at t k ;
Is a vector representing the velocity of each point in the at least one mesh at t k ;
Item 12. The computer program product of item 11, wherein is a vector representing a net force on each point in the at least one mesh at time t k .
(Item 19)
Computer readable third program code, which causes the at least one GPU to capture a scene from a software dynamics solver, and includes attributes and fields attached to the at least one mesh depicted in the scene; A third computer readable program code for converting to the physical parameter mapped to the plurality of memory arrays;
Computer readable fourth program code, the computer readable fourth program code for causing the at least one GPU to import simulation results into a scene graph of the software dynamics solver;
Further comprising
12. The computer program product according to item 11, wherein the simulation result corresponds to a solution to the linear equation system with respect to the time.
(Item 20)
Item 12. The computer program product of item 11, further comprising computer readable third program code that causes the at least one GPU to simulate forces acting on the mesh depicted in the scene.
(Item 21)
A system for performing a physical simulation, the system comprising:
A memory, comprising a plurality of memory arrays storing data representing physical parameters associated with at least one mesh, for setting up a system of linear equations governing the motion of the at least one mesh depicted in the scene , Memory,
At least one pixel processor coupled to the memory for solving the system of linear equations for a time by performing operations on the data in the plurality of memory arrays;
With
The modified data representing the solution of the linear equation system for the time is stored in the plurality of memory arrays.
(Item 22)
Item 21. The rendering engine further comprising a rendering engine that updates a depiction of the at least one mesh depicted in the scene relative to the time based on the changed data in the plurality of memory arrays. The system described.
(Item 23)
The pixel processor identifies at least one collision comprising the at least one mesh for the time;
A rendering engine comprising: (i) the modified data in the plurality of memory arrays; and (ii) the at least one collision identified at the time and depicted in the scene for the time 24. The system of item 21, further comprising a rendering engine that updates the representation of at least one mesh.
(Item 24)
The pixel processor operates on the modified data to solve a linear equation system for a next time, and further modified data representing a solution for the linear equation system for the next time includes the plurality of data The system of item 21, stored in a memory array.
(Item 25)
A rendering engine, further comprising a rendering engine that updates a depiction of the at least one mesh depicted in the scene for the next time based on the further modified data in the plurality of memory arrays. 25. The system according to item 24.
(Item 26)
The pixel processor identifies at least one collision comprising the at least one mesh for the next time;
A rendering engine in the scene for the next time based on (i) the modified data in the plurality of memory arrays, and (ii) the at least one collision identified at the next time 25. The system of item 24, further comprising a rendering engine that updates the rendering of the at least one mesh being rendered.
(Item 27)
The pixel processor solves the linear equation system for a time by implicitly integrating the linear equation system by performing an operation on the data in the plurality of memory arrays, and for the linear equation system for the time. 22. The system of item 21, wherein the modified data representing the solution is stored in the plurality of memory arrays.
(Item 28)
The system of linear equations is
Where given by
I is an identity matrix, M is an orthogonal matrix of the masses of the at least one mesh,
Is a vector representing the geometric state of the at least one mesh at t k ;
Is a vector representing the velocity of each point in the at least one mesh at t k ;
The system of item 21, wherein is a vector representing the net force on each point in the at least one mesh at time t k .
(Item 29)
A scene exporter that captures a scene from a software dynamics solver and converts attributes and fields attached to at least one mesh depicted in the scene into the physical parameters stored in the plurality of memory arrays , With scene exporter,
A scene importer that imports simulation results into the scene graph of the software dynamics solver;
Further comprising
22. The system of item 21, wherein the simulation result corresponds to the solution to the linear equation system for the time calculated by the at least one pixel processor.
(Item 30)
22. The system of item 21, further comprising a shader that executes to represent the force acting on the mesh depicted in the scene on at least one GPU.
(Item 31)
A method for performing a physical simulation on at least one graphics processor unit (GPU), the method comprising:
Sending simulation definition data to the at least one GPU;
Receiving simulation results from the at least one GPU in response to the transferred simulation definition;
Including the method.
(Item 32)
Transferring simulation definition data to the at least one GPU includes transmitting at least one of scene data, simulation data, actor data, joint data, and feedback data to the at least one GPU; 32. A method according to item 31.
(Item 33)
32. A method according to item 31, wherein the transmission includes transmitting simulation definition data in a markup language format to the at least one GPU.
(Item 34)
A method for performing a physical simulation on at least one graphics processor unit (GPU), the method comprising:
Converting simulation definition data into application programming interface (API) commands;
Generating simulation result data by performing a physical simulation on the at least one GPU in response to the converted simulation definition data;
Including the method.
(Item 35)
35. A method according to item 34, wherein the converting includes generating a scene data structure from the simulation definition data.
(Item 36)
Performing the above physical simulation
Setting a linear equation system corresponding to the simulation definition data;
Solving the system of linear equations;
Detecting a collision based on a solution to the system of linear equations;
35. A method according to item 34, comprising:
(Item 37)
A computer-based method for performing a physics simulation, the method comprising:
Converting software dynamics solver data into simulation definition data for at least one graphics processor unit (GPU);
Generating simulation result data by performing a physical simulation on the at least one GPU in response to the transformed data;
Including the method.
(Item 38)
38. A method according to item 37, further comprising transmitting the simulation result data to an application.
(Item 39)
39. A method according to item 38, wherein the transmitting includes converting the simulation result data into a format of the software dynamics solver.
(Item 40)
38. The method of item 37, further comprising performing another physics simulation based on the software dynamics solver in response to the additional software dynamics solver data.
(Item 41)
A computer readable medium comprising instructions for generating at least one graphics processor unit (GPU), wherein the instructions, when executed, are adapted to create the at least one GPU, the at least one One GPU is
Setting a system of linear equations governing the motion of the at least one mesh depicted in the scene by mapping physical parameters associated with the at least one mesh to a plurality of memory arrays;
Solve a system of linear equations for a time by operating on data in the plurality of memory arrays using at least one pixel processor
A modified computer-readable medium wherein modified data representing solutions for the system of linear equations for the time is stored in the plurality of memory arrays.
(Item 42)
A computer readable medium comprising instructions for generating at least one graphics processor unit (GPU), wherein the instructions, when executed, are adapted to create the at least one GPU, the at least one One GPU is
Sending simulation definition data to the at least one GPU;
Receive simulation results from the at least one GPU in response to the transmitted simulation definition data
A computer readable medium adapted to
(Item 43)
A computer readable medium comprising instructions for generating at least one graphics processor unit (GPU), wherein the instructions, when executed, are adapted to create the at least one GPU, the at least one One GPU is
Converting software dynamics solver data into simulation definition data for the at least one GPU;
In response to the transformed data, simulation result data is generated by performing a physical simulation on the at least one GPU.
A computer readable medium adapted to
本発明の機能および有用性は、図面と共に取り入れられるとき、以下に述べられた詳細な記述から、より明確となる。該図面において、同様の参照文字は、一貫して対応する要素を識別する。図面において、同様の参照番号は、概して同一で、機能的に類似した、かつ/または構造的に類似した要素を示す。要素が最初に現れる図面は、対応する参照番号において、最も左側の桁によって示される。 The functionality and utility of the present invention will become more apparent from the detailed description set forth below when taken in conjunction with the drawings. In the drawings, like reference characters consistently identify corresponding elements. In the drawings, like reference numbers generally indicate identical, functionally similar, and / or structurally similar elements. The drawing in which an element first appears is indicated by the leftmost digit (s) in the corresponding reference number.
I.1つ以上のGPU上での物理シミュレーションのあらまし
A.1つ以上のGPU上で物理シミュレーションを行うための例示的なワークフロー
B.物理シミュレーションを実行する例示的なGPU
II.例示的な物理シミュレーションインターフェース
A.例示的な物理シミュレーションソフトウェアインターフェース(FYSI)
B.例示的な物理シーン記述言語(FYSL)
C.ポイントメッシュ関連の物理パラメータが受信され得る例示的な方法
III.1つ以上のGPU上での物理シミュレーションを行うための例示的な方法
A.方法の概観
B.クロスシミュレーションのための例示的な物理的モデル
C.GPU上でクロスをシミュレートするための例示的な実装
D.FYSLで書き込まれている例示的なコード
IV.例示的なコンピュータ実装
V.結び
I.1つ以上のGPU上での物理シミュレーションのあらまし
本発明の実施形態は、1つ以上のGPU上で物理シミュレーションを行うための方法、コンピュータプログラム製品、および系に向けられる。そのような物理シミュレーションは、例えば、(ビデオゲームなどの)アプリケーションのゲーム演算を行うために用いられ得る。本発明の実施形態に従って1つ以上のGPU上で物理シミュレーションを行うために、メッシュに関連した物理パラメータが、直接的にビデオメモリにマップされる。メッシュは、固体のオブジェクト、容量、流体、またはクロス(cloth)などのあらゆる物理的なオブジェクトを表し得る。ここで詳細に提示されるものは、1つ以上のGPU上でクロスの物理シミュレーションを行う、例示的な方法である。メッシュがビデオメモリにマッピングされた後に、GPUの少なくとも1つのピクセルプロセッサが、コンパイル済みシェーダープログラムを用いてビデオメモリ中のデータに演算を行う。GPUで直接的に物理シミュレーションを行うことは、CPU上で行われる典型的な物理シミュレーションに関連する待ち時間および帯域幅の問題を減少させ得る。
I. Overview of physics simulation on one or more GPUs Exemplary workflow for performing physics simulations on one or more GPUs Exemplary GPU to perform physics simulation
II. Exemplary Physical Simulation Interface A. Exemplary physics simulation software interface (FYSI)
B. Exemplary physical scene description language (FYSL)
C. Exemplary Method by which Point Mesh-Related Physical Parameters may be Received III. Exemplary Method for Performing Physical Simulations on One or More GPUs A. Method Overview B. C. Exemplary physical model for cross simulation D. Exemplary implementation for simulating cloth on a GPU Example code written in FYSL IV. Exemplary Computer Implementation V. Conclusion I. Overview of physics simulation on one or more GPUs Embodiments of the present invention are directed to methods, computer program products, and systems for performing physics simulation on one or more GPUs. Such a physics simulation can be used, for example, to perform game calculations for an application (such as a video game). In order to perform physics simulations on one or more GPUs according to embodiments of the present invention, the physical parameters associated with the mesh are mapped directly into video memory. A mesh may represent any physical object such as a solid object, a volume, a fluid, or a cloth. Presented in detail here is an exemplary method for performing cross physics simulations on one or more GPUs. After the mesh is mapped to video memory, at least one pixel processor of the GPU operates on the data in the video memory using a compiled shader program. Performing physical simulations directly on the GPU may reduce latency and bandwidth problems associated with typical physical simulations performed on a CPU.
明細書を通じて、1つ以上のGPU上で物理シミュレーションを行うための方法、コンピュータプログラム製品、および系は、例示的な物理シミュレーションソフトウェアインターフェース(FYSIと呼ばれる)および物理シーン記述言語(FYSLと呼ばれる)の点から記述される。しかし、本発明は、FYSIおよびFYSLに限定されるものではない。本記述に基づいて、1つ以上のGPU上で物理シミュレーションを行うための方法、コンピュータプログラム製品、および系が、他の種類の物理シミュレーションソフトウェアインタフェースおよび他の種類の物理シーン記述言語を用いて実装され得ることを、当業者は理解されたい。 Throughout the specification, methods, computer program products, and systems for performing physics simulations on one or more GPUs include an exemplary physics simulation software interface (referred to as FYSI) and a physical scene description language (referred to as FYSL). Described from the point. However, the present invention is not limited to FYSI and FYSL. Based on this description, methods, computer program products, and systems for performing physical simulations on one or more GPUs are implemented using other types of physical simulation software interfaces and other types of physical scene description languages. Those skilled in the art will appreciate that this can be done.
明細書中の「一実施形態」、「一つの実施形態」、「例示的な実施形態」などへの参照は、記述される実施形態が、特定の機能、構造または特性を含み得ることを示すが、全ての実施形態が、必ずしも特定の機能、構造または特性を含み得るとは限らないことに留意されたい。さらに、そのような表現は、必ずしも同一の実施形態を参照するものではない。また、1つの実施形態に関連して特定の機能、構造または特性が記述されるときには、明記されていようとなかろうと、そのような機能、構造または特性を他の実施形態に関連させて作用させることは、当業者の知識の範囲内であることが提示される。 References to “one embodiment”, “one embodiment”, “exemplary embodiment”, etc. in the specification indicate that the described embodiments can include specific functions, structures, or characteristics. It should be noted, however, that all embodiments may not necessarily include specific functions, structures or characteristics. Moreover, such phrases are not necessarily referring to the same embodiment. Also, when a particular function, structure, or characteristic is described in connection with one embodiment, that function, structure, or characteristic acts in relation to the other embodiment, whether explicitly stated or not. Is presented to be within the knowledge of a person skilled in the art.
以下に詳述されるものは、1つ以上のGPU上において物理シミュレーションをマッピングするための、本発明の実施形態である。第II章において、このマッピングを行うための例示的なインターフェースが記述される。第III章は、1つ以上のGPU上において物理シミュレーションをおこなうための例示的な方法を提示し、GPU上でクロスをシミュレーションするための例示的な方法についての詳しい実装を含む。第IV章においては、1つ以上のGPU上で物理シミュレーションを実装するための例示的なコンピュータ系が記述される。しかし、本発明の実施形態を詳述する前に、1つ以上のGPU上で物理シミュレーションを行う例示的なワークフロー、および物理シミュレーションを実装するための例示的なGPUのあらましを記述することが有用である。 Described in detail below are embodiments of the present invention for mapping physical simulations on one or more GPUs. In Section II, an exemplary interface for performing this mapping is described. Section III presents an exemplary method for performing physics simulations on one or more GPUs and includes a detailed implementation of an exemplary method for simulating cloth on a GPU. In Section IV, an exemplary computer system for implementing physics simulations on one or more GPUs is described. However, before elaborating embodiments of the present invention, it is useful to describe an exemplary workflow for performing physical simulations on one or more GPUs and an overview of exemplary GPUs for implementing physical simulations It is.
A.1つ以上のGPU上で物理シミュレーションを行うための例示的なワークフロー
図2は、GPU上で物理シミュレーションを行うための例示的なワークフローのブロック図200を図示する。ブロック図200は、様々なソフトウェア要素、例えばアプリケーション210、物理シミュレーションソフトウェアインターフェース212、アプリケーションプログラミングインターフェース214、およびドライバ216を含み、それらは、力トコンピュータ系上で実行され、GPU218、(オプション)GPU220、および/または複数のGPU(不図示)などのグラフィックスハードウェア要素と相互作用することによって、物理的現象をシミュレーションし、ディスプレイ222への出力のためのフレームをレンダリングする。ブロック図200の個々の要素が、ここにより詳細に記述される。
A. Exemplary Workflow for Performing Physical Simulation on One or More GPUs FIG. 2 illustrates a block diagram 200 of an exemplary workflow for performing physical simulation on a GPU. The block diagram 200 includes various software elements, such as an application 210, a physics simulation software interface 212, an application programming interface 214, and a driver 216, which are executed on a power computer system, such as a GPU 218, (optional) GPU 220, By interacting with graphics hardware elements such as and / or multiple GPUs (not shown), physical phenomena are simulated and frames for output to display 222 are rendered. Individual elements of block diagram 200 will now be described in greater detail.
図2に示されるように、ブロック図200は、アプリケーション210を含む。アプリケーション210は、エンドユーザーアプリケーションであり、ビデオゲームアプリケーションなどのグラフィックス処理能力を必要とする。アプリケーション210は、物理シミュレーションソフトウェアインターフェース212を呼び出す。実施形態において、物理シミュレーションソフトウェアインターフェース212は、ATI Technologies Incによって開発されたFYSIと呼ばれるインターフェースである。FYSIが、ここにより詳細に記述される。しかし、上述のように、本発明は、FYSIに限定されるものではない。当業者に明確であるように、本発明の真意および範囲から逸脱することなく、他の物理シミュレーションソフトウェアインターフェースをも用いられ得る。物理シミュレーションソフトウェアインターフェース212は、物理シミュレーションが行われる、簡単で拡張性のある抽象マシーン(SEAM)を作成する。 As shown in FIG. 2, the block diagram 200 includes an application 210. Application 210 is an end user application and requires graphics processing capabilities such as a video game application. The application 210 calls the physics simulation software interface 212. In the embodiment, the physics simulation software interface 212 is an interface called FYSI developed by ATI Technologies Inc. FYSI is described in more detail here. However, as described above, the present invention is not limited to FYSI. Other physics simulation software interfaces can also be used without departing from the spirit and scope of the present invention, as will be apparent to those skilled in the art. The physics simulation software interface 212 creates a simple and extensible abstract machine (SEAM) on which physics simulation is performed.
物理シミュレーションソフトウェアインターフェース212は、API212と通信する。いくつかのAPIは、グラフィックス処理関連における使用のために入手可能である。APIは、アプリケーション210などのアプリケーションソフトウェアと該アプリケーションソフトウェアが作動するグラフィックスハードウェアとの間での媒介物として開発された。新たなチップセットおよび全く新しいハードウェア技術が勢いを増しながら現れる中で、アプリケーションの開発者にとって、最新のハードウェアの機能を考慮に入れたり、利用することは、困難なことである。また、それぞれのハードウェアの予見可能なセットのために特別にアプリケーションを書き込むことは、ますます困難になりつつある。APIは、アプリケーションがあまりにもハードウェアに特有のものであらねばないことを防止する。該アプリケーションは、ハードウェアに直接的に行うのではなく、標準化されたフォーマットでグラフィックスデータおよびコマンドを、APIに出力することが可能である。物理シミュレーションソフトウェアインターフェース212が、直接的にAPI214と通信するため、利用可能なAPIを修正する必要がない。利用可能なAPIの例としては、DirectX(R)またはOpenGL(R)を含む。API210は、グラフィックスアプリケーションをランさせる利用可能なAPIのうちのいずれのものでもあり得る。当業者に認識されるように、本発明の代替的な実施形態は、物理シミュレーションソフトウェアインターフェース212をAPI214中に集約し、故に単一のソフトウェアインターフェースを用いてアプリケーション210を作動させることが可能であり得る。そのような実施形態において、次いでドライバ216が修正されることによって、API214を備える物理シミュレーションソフトウェアインターフェース212の局面を組み込む単一のインターフェースに応じ得る。 The physics simulation software interface 212 communicates with the API 212. Several APIs are available for use in the graphics processing context. The API was developed as an intermediary between application software such as application 210 and the graphics hardware on which the application software operates. As new chipsets and entirely new hardware technologies emerge with increasing momentum, it is difficult for application developers to take into account and take advantage of the latest hardware features. Also, writing applications specifically for each foreseeable set of hardware is becoming increasingly difficult. The API prevents the application from being too hardware specific. The application can output graphics data and commands to the API in a standardized format rather than directly to the hardware. Since the physics simulation software interface 212 communicates directly with the API 214, there is no need to modify the available API. Examples of available APIs include DirectX (R) or OpenGL (R). The API 210 can be any of the available APIs that run a graphics application. As will be appreciated by those skilled in the art, alternative embodiments of the present invention may aggregate the physics simulation software interface 212 into the API 214 and thus operate the application 210 using a single software interface. obtain. In such embodiments, driver 216 may then be modified to respond to a single interface that incorporates aspects of physics simulation software interface 212 with API 214.
API210は、ドライバ216と通信する。ドライバ216は、通常はグラフィックスハードウェアの製造者によって書き込まれ、APIから受信した標準コードを、グラフィックスハードウェアによって理解されるネイティブのフォーマットに翻訳する。ドライバ216はまた、グラフィックスハードウェアへのパフォーマンス設定を指示するための入力を受け取る。そのような入力は、ユーザー、アプリケーションまたはプロセスによって提供され得る。例えば、ユーザーは、グラフィカルユーザーインターフェース(GUI)などのユーザーインターフェース(UI)を用いて入力を提供し得、該グラフィカルユーザーインターフェースは、ドライバ216と共にユーザーに供給される。 API 210 communicates with driver 216. The driver 216 is typically written by the graphics hardware manufacturer and translates standard code received from the API into a native format understood by the graphics hardware. Driver 216 also receives input to direct performance settings to the graphics hardware. Such input may be provided by a user, application or process. For example, a user may provide input using a user interface (UI) such as a graphical user interface (GUI), which is provided to the user along with a driver 216.
ドライバ216は、第1のGPU218および/または第2のGPU220と通信する。第1のGPU218および第2のGPU220は、グラフィックスチップであり、それぞれが、シェーダーならびに物理シミュレーションおよびグラフィックスレンダリングを行う他の関連ハードウェアを含む。一実施形態において、物理シミュレーションおよびグラフィックスレンダリングは、第1のGPU218などの単一のGPU上で行われる。代替的な実施形態において、物理シミュレーションは第1のGPU218などの1つのGPU(またはコア)において実行され、グラフィックスは、第2のGPU210などの別のGPU(またはコア)においてレンダリングされる。さらなる実施形態において、物理シミュレーションおよびグラフィックスレンダリングは、複数のGPUによって行われる。物理シミュレーションの後に、レンダリングされたグラフィックは、表示ユニット222に送られ、表示される。GPU218およびGPU220は、それぞれ次の章に記述されるように実装され得る。 The driver 216 communicates with the first GPU 218 and / or the second GPU 220. The first GPU 218 and the second GPU 220 are graphics chips, each including a shader and other related hardware that performs physics simulation and graphics rendering. In one embodiment, physics simulation and graphics rendering are performed on a single GPU, such as the first GPU 218. In an alternative embodiment, the physics simulation is performed on one GPU (or core), such as the first GPU 218, and the graphics are rendered on another GPU (or core), such as the second GPU 210. In further embodiments, physics simulation and graphics rendering are performed by multiple GPUs. After the physics simulation, the rendered graphic is sent to the display unit 222 for display. GPU 218 and GPU 220 may each be implemented as described in the next section.
B.物理シミュレーションを実行するための例示的なGPU
本発明の実施形態に従ったGPUのアーキテクチャーは、単一命令多数データ(SIMD)技術を使用可能にし、その結果として、データレベル並列処理をもたらす。そのようなGPUは、プロセッサと、テクスチャ(またはビデオメモリ)を含む。プロセッサは、テクスチャ内のデータに基づきオペレーションを行う。該オペレーションの結果は、レンダーターゲット(ビデオメモリの一部)に書き込まれる。レンダーターゲットは、テクスチャまたは後続演算として再割り当てされ得る。テクスチャは、メモリの1D−、2D−、3D−アレイなどのように、メモリのアレイに配列される。シェーダーは、プロセッサがテクスチャ内のデータに基づき特定の演算を行うために書き込まれた、小さなプログラムまたは一組の命令である。
B. Exemplary GPU for performing physics simulations
The GPU architecture according to embodiments of the present invention enables single instruction multiple data (SIMD) technology, resulting in data level parallelism. Such GPUs include a processor and texture (or video memory). The processor performs an operation based on the data in the texture. The result of the operation is written to the render target (part of the video memory). Render targets can be reassigned as textures or subsequent operations. Textures are arranged in an array of memory, such as a 1D-, 2D-, 3D-array, etc. of memory. A shader is a small program or set of instructions written for a processor to perform a specific operation based on data in a texture.
図3は、ブロック図300を図示し、本発明の実施形態に従った、1つ以上のGPU上で物理シミュレーションを実行するための例示的なピクセルプロセッサを説明する。ブロック図300に含まれるものは、6つのテクスチャ310a−310f、8つの定数ストレージレジスタ308a−308h、および1つのピクセルプロセッサ306である。メモリアレイ(1D−、2D−、3D−メモリアレイなど)のテクスチャ座標302は、テクスチャ310に書き込まれ得る。対照的に、定数データ値は、定数ストレージレジスタ308に記憶される。ピクセルプロセッサ306は、テクスチャ310内および/または定数ストレージレジスタ308内のデータに基づきオペレーションを行う。これらのオペレーションを行った後に、ピクセルプロセッサ306は、テクスチャ310にデータを書き込み得、かつ/または、出力314を生成し得る。ピクセルプロセッサ306によって行われるオペレーションは、CPUアッセンブリ言語命令に似た命令によって特定される。 FIG. 3 illustrates a block diagram 300 illustrating an exemplary pixel processor for performing physics simulations on one or more GPUs in accordance with an embodiment of the present invention. Included in the block diagram 300 are six textures 310a-310f, eight constant storage registers 308a-308h, and one pixel processor 306. Texture coordinates 302 of a memory array (1D-, 2D-, 3D-memory array, etc.) may be written to the texture 310. In contrast, constant data values are stored in constant storage register 308. Pixel processor 306 performs operations based on data in texture 310 and / or constant storage register 308. After performing these operations, pixel processor 306 may write data to texture 310 and / or generate output 314. The operations performed by pixel processor 306 are specified by instructions similar to CPU assembly language instructions.
ここで、GPU頂点プロセッサにおいてメッシュが表現される、例示的な方法について記述する。メッシュは、1対の1次元リスト、すなわち頂点バッファおよびインデックスバッファから成る。図15Aに例示されるように、頂点バッファは、頂点位置を保持する。図15Aに示される実施形態は、7つの頂点位置を例示している。図15Aは、例示目的のみに用いられ、限定的に用いられるものではない。当業者に明確なように、異なる数の頂点位置が、頂点バッファに記憶され得る。図15Bに例示されるように、インデックスバッファは、面のインデックスを記憶する。図15Bは、例示目的のみに用いられ、限定のために用いられるものではない。当業者に明確なように、異なる数の面のインデックスが、インデックスバッファ記憶され得る。面は、三角形を表し、該面は、頂点バッファに点を載せる。例えば、インデックスバッファに記憶された面は、3つの頂点を含み得、0、1および2と分類される。これら分類された頂点のそれぞれは、頂点バッファの別個の位置を指し示す。 We now describe an exemplary method by which a mesh is represented in a GPU vertex processor. The mesh consists of a pair of one-dimensional lists, a vertex buffer and an index buffer. As illustrated in FIG. 15A, the vertex buffer holds vertex positions. The embodiment shown in FIG. 15A illustrates seven vertex positions. FIG. 15A is used for illustrative purposes only and is not intended to be limiting. As will be apparent to those skilled in the art, different numbers of vertex positions may be stored in the vertex buffer. As illustrated in FIG. 15B, the index buffer stores the index of the surface. FIG. 15B is used for illustrative purposes only and is not intended to be limiting. As will be apparent to those skilled in the art, different numbers of surface indices may be stored in the index buffer. A surface represents a triangle, and the surface places a point in the vertex buffer. For example, a face stored in the index buffer may contain three vertices and is classified as 0, 1 and 2. Each of these classified vertices points to a separate location in the vertex buffer.
ここで、メッシュがビデオメモリにマッピングされる例示的な方法について記述する。この例示的な方法は、例示目的のみに提示され、限定のためではない。メッシュをビデオメモリにマッピングするための他の方法は、本明細書に含まれる記載を基にして、当業者に明確となる。頂点およびインデックスのリストはそれぞれ、ビデオメモリにおける最適化されたN次元のアレイにマッピングされることにより、ピクセルエンジン並列処理がより良く利用される。最適化されたN次元のアレイは、該最適化されたN次元のアレイが、物理シミュレーションを行うために用いられるGPUの最大アドレス指定能力に適合するようになっている。頂点バッファは、n×mの要素のアレイ上にマッピングを行い、インデックスバッファは、l×kグリッド上にマッピングを行う。ビデオメモリ内のそれぞれの要素(例えばピクセル)は、4成分ベクターから成る。はじめの3つの成分は、位置のx、yおよびz成分を表し、4つ目の成分は、境界タグ(以下に記述される)である。 Now, an exemplary method by which the mesh is mapped to video memory will be described. This exemplary method is presented for illustrative purposes only and not for limitation. Other methods for mapping the mesh to video memory will be apparent to those skilled in the art based on the description contained herein. Each list of vertices and indices is mapped to an optimized N-dimensional array in video memory to better utilize pixel engine parallelism. An optimized N-dimensional array is such that the optimized N-dimensional array matches the maximum addressability of the GPU used to perform the physical simulation. The vertex buffer maps onto an array of n × m elements, and the index buffer maps onto an l × k grid. Each element (eg, pixel) in the video memory consists of a four component vector. The first three components represent the x, y, and z components of the position, and the fourth component is a boundary tag (described below).
一実施形態において、頂点およびインデックスのリストは、それぞれ、図14Aおよび図14Bに示されるように、それぞれがビデオメモリにおける最適化された2次元アレイ上にマッピングされる。本実施形態において、頂点バッファは、3×3成分のアレイ上にマッピングを行い、インデックスバッファは、3×2グリッド上にマッピングを行う。 In one embodiment, the list of vertices and indices are each mapped onto an optimized two-dimensional array in video memory, as shown in FIGS. 14A and 14B, respectively. In this embodiment, the vertex buffer maps on a 3 × 3 component array, and the index buffer maps on a 3 × 2 grid.
1つのシーンにおける複数のメッシュの場合には、全メッシュが、本発明の実施形態に従った、1つの2次元複合メッシュに一体化される。複合メッシュは、それぞれのサブメッシュに固有の識別子(「id」)をタグ付けすることによって、サブメッシュ境界をビデオメモリに記録する。該idは、それぞれのグリッド要素の第4の構成要素として記録される。メッシュの複合は、ビデオメモリへの小型サイズメッシュのダウンロードに関連したオーバーヘッドを緩和し、かつ、テクスチャ使用の総数によるハードウェアリソースのプレッシャーを軽減する。 In the case of multiple meshes in one scene, all the meshes are integrated into one two-dimensional composite mesh according to an embodiment of the present invention. The composite mesh records sub-mesh boundaries in video memory by tagging each sub-mesh with a unique identifier (“id”). The id is recorded as the fourth component of each grid element. Mesh compositing alleviates the overhead associated with downloading small size meshes to video memory, and reduces hardware resource pressure due to the total number of texture usage.
II.例示的な物理シミュレーションインターフェース
図2に関して上述されたように、物理シミュレーションソフトウェアインターフェース212は、アプリケーション210が、GPU218、GPU220および/または複数のGPU上で物理シミュレーションを行うことを可能にする。この章では、例示的な物理シミュレーションインターフェースが記述される。まず、FYSIと呼ばれる、例示的な物理シミュレーションソフトウェアインターフェースが記述される。続いて、FYSIにおいて具現化される象徴的なコンセプトを表現するための、FYSLと呼ばれる例示的なシーン記述言語が記述される。最後に、FYSIを用いて1つ以上のGPU上で物理シミュレーションを行い、それにより、従来のソフトウェアダイナミックソルバーを回避するための、物理パラメータと属性をFYSLに変換する例示的な方法が記述される。しかし、認識されたいのは、これらの実施形態は、例示的目的のみに提示され、限定のためではないということである。本明細書に含まれる記述を基に、当業者は、1つ以上のGPU上で物理シミュレーションを行うための、他の種類の物理シミュレーションソフトウェアインターフェースの実装方法を理解することとなる。
II. Exemplary Physics Simulation Interface As described above with respect to FIG. 2, physics simulation software interface 212 allows application 210 to perform physics simulations on GPU 218, GPU 220, and / or multiple GPUs. In this section, an exemplary physics simulation interface is described. First, an exemplary physics simulation software interface called FYSI is described. Subsequently, an exemplary scene description language called FYSL for describing a symbolic concept embodied in FYSI is described. Finally, an exemplary method is described that performs physical simulation on one or more GPUs using FYSI, thereby converting physical parameters and attributes to FYSL to avoid traditional software dynamic solvers. . However, it should be appreciated that these embodiments are presented for illustrative purposes only and not for limitation. Based on the description contained herein, one of ordinary skill in the art will understand how to implement other types of physical simulation software interfaces for performing physical simulations on one or more GPUs.
A.例示的な物理シミュレーションソフトウェアインターフェース(FYSI)
FYSI−例示的な物理シミュレーションソフトウェアインターフェース系は、従来のCPUベースのシミュレーション関連の演算をGPU上でマッピングするための伝達手段である。FYSIを用いることによって、ゲーム物理において一般に経験されるものよりも、より高いインタラクション速度が達成され得る。FYSIは、グラフィックスハードウェア上に衝突の検知および解消をマッピングする従来の閉鎖クエリモダリティからはずれたものである。代替的に、FYSIは、ますます増えつつあるハードウェアでのプログラミングが可能なシェーディング力を強化する、グローバルシミュレーション解決法を提案する。
A. Exemplary physics simulation software interface (FYSI)
FYSI-an exemplary physics simulation software interface system is a vehicle for mapping conventional CPU-based simulation related operations on the GPU. By using FYSI, a higher interaction speed can be achieved than is commonly experienced in game physics. FYSI is a departure from the traditional closed query modality that maps collision detection and resolution on graphics hardware. Alternatively, FYSI proposes a global simulation solution that enhances the power of shading that can be programmed with an increasing number of hardware.
図4は、拡張グラフィックスパイプラインのブロック図400を図示し、これによって、物理シミュレーションステージ410が視覚レンダリングステージ420をフィードスル。物理シミュレーションステージ410は、物理記述象徴概念を取り入れる。該記述は、シミュレーションおよびシーンの両方の定義を提供する。シーンは、アクター(actor)から成り、それぞれのアクターは、それ自身の一組の形状、ダイナミクス、および物質の特性を有する。該形状は、参加中のアクターの幾何学的な性質を確立させ、ダイナミクスは、物理的な挙動を構成し、物質は、物質関係の特性を備え付けさせる。加えて、該シーンは、随意的にジョイント(joint)を宣言し、これによって1対のアクターの運動の制約を導入する。シミュレーションの工程は、反復的で別々の一律のステップ、すなわち時間様式によって開始される。物理記述象徴概念は、FYSLと呼ばれる言語の形式をとり、これは、物理シーン記述言語の略である。FYSLは、プラットフォームから独立しており、拡張性があり、かつコンストラクトを提供することによって、必要に応じて複数のGPUに渡ってシミュレーションタスクを分割する。 FIG. 4 illustrates a block diagram 400 of the enhanced graphics pipeline whereby the physics simulation stage 410 feeds through the visual rendering stage 420. The physics simulation stage 410 incorporates a physical description symbolic concept. The description provides definitions for both simulation and scene. A scene consists of actors, each actor having its own set of shapes, dynamics, and material properties. The shape establishes the geometrical nature of the participating actors, the dynamics constitutes the physical behavior, and the substance has substance-related properties. In addition, the scene optionally declares a joint, thereby introducing a pair of actor motion constraints. The process of simulation is started by an iterative and separate uniform step, ie time pattern. The physical description symbol concept takes the form of a language called FYSL, which is an abbreviation for physical scene description language. FYSL is platform independent, scalable, and provides constructs to divide simulation tasks across multiple GPUs as needed.
レンダリングブロック420において、物理ブロック410からのシミュレーション結果は、視覚化のためにレンダリングされる。一般的には、いくつかの物理シミュレーションのステップが、レンダリングフレーム毎に行われる。故に、シミュレーションおよび視覚レンダリングの両方のタスクの累積のフレーム速度が、ユーザーに対する最終的なインタラクティブ速度を決定する。FYSIは、物理シミュレーション要件を提供するためのソフトウェア開発環境である。まず、FYSL入力象徴概念は、解析され、内部シーンデータ構造の集合に変換される。次いでシミュレーションは、GPUにおいて開始される。シミュレーション結果は、共有テクスチャを用いて視覚レンダリングスレッドに直接的に進まされるか、または、随意的にプログラマーによって読み返されるように利用可能である。最後に、FYSIは、拡張性を容易にするために、グラフィックスハードウェアインターフェースの頂部に演算象徴概念層(CAL)ラッパー(wrapper)を実装する。一実施形態において、FYSIは、マイクロソフトDirectX(R)(バージョン9.0および10.0)とインターフェースで接続するが、当業者は、FYSIがOpenGL(R)または他のいくつかのAPIとインターフェースで接続し得ることを認識されたい。 In the rendering block 420, the simulation results from the physical block 410 are rendered for visualization. In general, several physics simulation steps are performed for each rendering frame. Thus, the cumulative frame rate of both simulation and visual rendering tasks determines the final interactive rate for the user. FYSI is a software development environment for providing physical simulation requirements. First, the FYSL input symbolic concept is analyzed and converted into a set of internal scene data structures. The simulation is then started on the GPU. The simulation results can be advanced directly to the visual rendering thread using the shared texture, or optionally available to be read back by the programmer. Finally, FYSI implements a computational symbol concept layer (CAL) wrapper on top of the graphics hardware interface to facilitate extensibility. In one embodiment, FYSI interfaces with Microsoft DirectX® (versions 9.0 and 10.0), but those skilled in the art will know that FYSI interfaces with OpenGL® or some other API. Recognize that you can connect.
ゲームにおける物理シミュレーションフィールドは、幾分幅広いものであり、大量の域におけるトピックを範囲に入れる。それらの中には、剛体、クロス、流体、および、一般的には変形可能体のシミュレーションが含まれる。物理シミュレーションの種類は、シミュレーションステージから視覚レンダリングステージ上に移されたデータのフォーマットを示す。剛体の場合には、FYSIは、視覚スレッド変換データに進み、該データは、最近のシミュレーションセッションに入力されたオブジェクトの増分的状態変化を表す。クロスのモデルは、摂動を加えられた元の粒子の位置に戻り、流体または変形可能な体については、結果的にシミュレートされた形状は、初期の形状とはほとんど関連性のないものとなっている。通常、物理シミュレーションの工程は、CPUバウンドであり、物理シミュレーションの工程から視覚レンダリングスレッド上への帯域幅要件は、相対的に限定的である。 The physics simulation field in the game is rather broad and covers a large number of topics. Among these are simulations of rigid bodies, cloths, fluids, and generally deformable bodies. The type of physics simulation indicates the format of the data transferred from the simulation stage onto the visual rendering stage. In the rigid case, FYSI goes to visual thread transformation data, which represents the incremental state change of the object entered in the most recent simulation session. The cloth model returns to the original perturbed particle position, and for fluids or deformable bodies, the resulting simulated shape is irrelevant to the initial shape. ing. Typically, the physics simulation process is CPU bound and the bandwidth requirements from the physics simulation process onto the visual rendering thread are relatively limited.
図5に示されるように、比較的に高いレベルにおいて、包括パイプライン500が形成され、前述の物理シミュレーション局面のほとんどに適用され得る。パイプライン500は、系セットアップステージ510、ソルバーステージ520、および衝突ステージ530を含む。系セットアップステージ510において、入力は、初期シーン記述、または該シーンの増分的な状態の更新のいずれかである。系セットアップステージ510の役割は、物理モデルの統合を行い、方式A*x=bの線形系に到達することである。ここで、Aは行列、xは未知数、bは既知のベクトルである。 As shown in FIG. 5, at a relatively high level, the generic pipeline 500 is formed and can be applied to most of the aforementioned physical simulation aspects. Pipeline 500 includes a system setup stage 510, a solver stage 520, and a collision stage 530. In the system setup stage 510, the input is either an initial scene description or an incremental state update of the scene. The role of the system setup stage 510 is to integrate the physical models and arrive at a linear system of scheme A * x = b. Here, A is a matrix, x is an unknown number, and b is a known vector.
ソルバーステージ520において、線形系は解かれ、描写されるシーンの状態は、該線形系に対する解に基づいて更新される。線形系は、関連する当業者に利用可能な数値技術を用いることによって解かれる。一実施形態において、線形系は、以下に詳細に記述される修正共役勾配方法、およびDavid BaraffおよびAndrew Witkinによる「Large Steps in Cloth Simulation」、Computer Graphics Proceedings、pp43−54(1998年7月19〜24日)(以降「Baraff引例」と呼ぶ)を用いて解決され、本明細書においてその全体を参照として援用する。 In the solver stage 520, the linear system is solved and the scene state to be depicted is updated based on the solution for the linear system. Linear systems are solved by using numerical techniques available to the relevant artisan. In one embodiment, the linear system is a modified conjugate gradient method described in detail below, and “Large Steps in Cloth Simulation” by David Baraff and Andrew Witkin, Computer Graphics Processings, pp 43-54 (July 19-1998, 24th) (hereinafter referred to as “Baraff reference”), which is incorporated herein by reference in its entirety.
衝突ステージ530において、更新されたモデルは、可能性のある衝突のために試験される。算定された接触の結果として、シーンの状態がさらに修正される。衝突検出が、対の点が交差するか否かをチェックすることによって行われる。衝突検出技術は、当業者に周知である。例えば、Baraff引例の50ページを参照されたい。 In the collision stage 530, the updated model is tested for possible collisions. As a result of the calculated contact, the scene state is further modified. Collision detection is performed by checking whether the pair of points intersect. Collision detection techniques are well known to those skilled in the art. See, for example, page 50 of the Baraff reference.
物理パイプライン500は、そのステージ全体を、シミュレーションステージのそれぞれのために繰り返し実行される。一般的に、シーンの中のアクターは、個別に、またはグループベースのいずれかにおいて考慮される。剛体の場合におけるなどの個別のアクターは、パイプライン500の系セットアップステージ510およびソルバーステージ520を通過し、衝突ステージ530のみを行う。クロス、流体および変形可能なエンティティーは、一般的に、明確な相互作用モデルを有するアクターの集合と考えられる。故に、ほとんどの場合において、それらはパイプライン500の全てのステージを実行するように意図される。クロスが物理パイプライン500を通過する例が、第III章に記述される。 The physical pipeline 500 repeats its entire stage for each of the simulation stages. In general, actors in a scene are considered either individually or on a group basis. Individual actors, such as in the case of a rigid body, pass through the system setup stage 510 and solver stage 520 of the pipeline 500 and perform only the collision stage 530. Cloth, fluid and deformable entities are generally considered a collection of actors with a well-defined interaction model. Thus, in most cases, they are intended to execute all stages of the pipeline 500. An example of a cross passing through the physical pipeline 500 is described in Section III.
B.例示的な物理シーン記述言語(FYSL)
FYSI物理シミュレーションインターフェースライブラリへの入力象徴概念は、FYSLと呼ばれるカスタム化シーン記述フォーマットにおいて表される。FYSLは、XMLフォーマットにおいて表され、シーン、シミュレーション、アクター、ジョイント、およびフィードバックの5つのセクションから成る。これらのFYSLセクションのそれぞれは、スキーマタグおよび随意的価値割当を含む。スキーマタグおよび随意的価値割当は、以下に記述される。FYSLプログラムの見本は、この小節の終わりに提供される。
B. Exemplary physical scene description language (FYSL)
The input symbolic concept to the FYSI physics simulation interface library is represented in a customized scene description format called FYSL. FYSL is expressed in XML format and consists of five sections: scene, simulation, actors, joints, and feedback. Each of these FYSL sections includes a schema tag and an optional value assignment. Schema tags and optional value assignments are described below. A sample of the FYSL program is provided at the end of this measure.
FYSLの最初のセクションは、シーンである。このセクションにおいて、描写されるシーンが定義される。例示的なグローバルシーンタグは、表1に提示される。 The first section of FYSL is a scene. In this section, the scene to be depicted is defined. Exemplary global scene tags are presented in Table 1.
加えて、全てのシーンのアクターに同じように作用している力を表すグローバルフィールドが、シミュレーション定義に随意的に加えられ得る。本実施形態において、FYSLは、ドラッグフィールド、方向性フィールド、および手続きフィールドの、3種類の力フィールドタグを提供する。ドラッグフィールドは、3つのスカラー値(それぞれの次元に1つ)から成るベクトルであり、該ベクトルは、アクターの線形速度に基づいた制動力を及ぼす。方向性フィールドは、シミュレーションを通して一定な単一成分の力であり、該力は、ベクトルによって特定された方向において作用する。例示的な方向性フィールドは、重力である。手続きフィールドは、時間および空間の両方において変化し得る、より入り組んだフィールドを表す。手続きフィールドに取り付けられたストリングは、GPU上で実行されるシェーダープログラムのコードにさらに翻訳される、機能である。 In addition, a global field representing the forces acting on all scene actors in the same way can optionally be added to the simulation definition. In this embodiment, FYSL provides three types of force field tags: a drag field, a direction field, and a procedure field. The drag field is a vector of three scalar values (one for each dimension) that exerts a braking force based on the actor's linear velocity. The directional field is a constant, single component force throughout the simulation that acts in the direction specified by the vector. An exemplary directional field is gravity. A procedural field represents a more complex field that can vary in both time and space. The string attached to the procedure field is a function that is further translated into the code of the shader program that runs on the GPU.
例示的なシミュレーションタグは、表2に示されており、例示的なフィールドタグは、表3に示される。 Exemplary simulation tags are shown in Table 2, and exemplary field tags are shown in Table 3.
記述されたFYSL実施形態において支持される形状の定義は、ボックス(軸に対して整列または配向されている)、球、メッシュ、および四面体を含む。アクター形状は、ローカルの基準座標系において定義される。体積を境界付けるボックスおよび球は、1対の中心および半径として表される(中心および半径は、それぞれベクトルまたはスカラーのいずれかである)。メッシュおよび四面体は、頂点位置(四面体については、頂点の数は4に固定されている)および1組の面のインデックス(四面体についてはインプリシット)の集合の形態をとる。メッシュに関しては、面はエクスプリシットであり、一方で、四面体に関しては、面はインプリシットである。形状は、ワールド(world)座標空間へのローカルの座標系の変換を特定する行列と関連している(以下の論述を参照されたい)。表6から表10は、形状に特有のタグを例示する。 The definition of shapes supported in the described FYSL embodiment includes boxes (aligned or oriented with respect to the axis), spheres, meshes, and tetrahedra. The actor shape is defined in the local reference coordinate system. The box and sphere bounding the volume are represented as a pair of centers and radii (the center and radius are either vectors or scalars, respectively). The mesh and tetrahedron take the form of a set of vertex positions (for tetrahedrons the number of vertices is fixed at 4) and a set of face indices (implicit for tetrahedrons). For mesh, the face is explicit, while for tetrahedron, the face is implicit. The shape is associated with a matrix that identifies the transformation of the local coordinate system into the world coordinate space (see discussion below). Tables 6 to 10 illustrate tags specific to the shape.
シミュレーションは、ワールド座標空間において行われる。形状の変換は、平行移動および回転の成分の連結であり、アクターに線形および角の運動のそれぞれを適用する効果によるものである。結果的な行列は、ローカルからワールドの座標空間へと、形状を変換する。変換行列は、視覚レンダリング工程のためにFYSIクライアントによって用いられる。 The simulation is performed in the world coordinate space. Shape transformation is the concatenation of translation and rotation components and is due to the effect of applying linear and angular motion to the actor, respectively. The resulting matrix transforms the shape from local to world coordinate space. The transformation matrix is used by the FYSI client for the visual rendering process.
FYSLボックスの形状は、FYSI内部において、軸に対して整列した(AABB)または方向性を有した(OBB)、いずれかの演算経路を取り得る。該選択は、どちらかと言えば動的であり、シミュレーションのステップによって変わり得る。例えば、接触応答に基づき得る。一般的には、衝突検出のためのAABB経路は、OBB経路に比べてより効率的である。 The shape of the FYSL box can take either an arithmetic path aligned with the axis (AABB) or directional (OBB) within the FYSI. The selection is rather dynamic and can vary depending on the simulation step. For example, it can be based on a touch response. In general, the AABB path for collision detection is more efficient than the OBB path.
動的属性は、線形、角、および物質の種類の任意の組み合わせであり得る。動的属性は、質量、速度、エクスプリシットな質量中心の位置、配向、および及ばされる力を含む、運動学的特性を定義する。加えて、動的特性は、復元および摩擦などの、接触応答物質属性を提供する。線形、角および物質の種類のための動的タグは、表11、表12、および表13にそれぞれ提供される。 The dynamic attribute can be any combination of linear, angular, and material types. Dynamic attributes define kinematic properties, including mass, velocity, position of the explicit center of mass, orientation, and force exerted. In addition, dynamic properties provide touch responsive material attributes such as restoration and friction. Dynamic tags for linear, corner and material types are provided in Table 11, Table 12, and Table 13, respectively.
FYSLトルクは、それが存在するときには、あらゆるボックスまたはメッシュの形状の頂点に適用される。また、トルクは粒子ベースのアクターの場合にも有意義であり、ここでは、それぞれの粒子が、ゼロ半径の球として定義される。トルクは、アクター(または粒子の場合は親アクター)の質量中心に対する位置に依存する。該トルクは、結果として起こるアクターの角運動に影響する。FYSLトルクは、粒子ベースのアクター(例えば、空間的な範囲を有さない無形のアクター)に対して有意義である。該トルクは、トップレベルアクターの実質的な質量中心に対する位置に依存する。トルクは、粒子の角運動に影響する。 The FYSL torque is applied to the vertices of any box or mesh shape when it is present. Torque is also significant in the case of particle-based actors, where each particle is defined as a zero radius sphere. Torque depends on the position of the actor (or parent actor in the case of particles) relative to the center of mass. The torque affects the resulting actor's angular motion. FYSL torque is meaningful for particle-based actors (eg, intangible actors that do not have a spatial extent). The torque depends on the position of the top level actor relative to the substantial center of mass. Torque affects the angular motion of the particles.
アクターに対する配向は、行と列が単位長さの、直交行列であることが求められる。 The orientation with respect to the actor is required to be an orthogonal matrix in which rows and columns are unit length.
オメガ動的特性は、ラジアンにおける角度のベクトルである。任意の軸に対する正の角度は、軸を中心に反時計回りの回転をもたらし、負の角度は、軸を中心に時計回りの回転をもたらす。 The omega dynamic characteristic is a vector of angles in radians. A positive angle with respect to any axis results in a counterclockwise rotation about the axis, and a negative angle results in a clockwise rotation about the axis.
メッシュのインデックスおよび四面体の面のインデックスは、ゼロベースであり、それぞれは、反時計回りで三角形を表す。 The mesh index and tetrahedral face index are zero-based, each representing a triangle counterclockwise.
アクターのグリッド展開は、GPUに固有のデータパラレルアーキテクチャを利用する。グリッドはまた、物理的に割り当てられたGPUから読み返される最終的な画像の解像度を提供し、該物理的に割り当てられたGPUは、視覚的レンダリングを行うCPUまたはピアGPU上にシミュレーション結果を移動させる。1Dグリッドは、GPU上では非常に非効率的であり、通常は用いられることはない。通常は、アクターは、2Dグリッド上に分配される。3Dグリッドが用いられるのは、例えば、2Dグリッドのアドレス指定能力がGPUの限界を超えた場合である。グリッドの次元は、2のべき乗である必要はない。最後に、アクターの数は、グリッドセルの数に必ずしも一致する必要はないかもしれない(例えば、後者は、階層におけるアクターの数と等しいかそれ以上でなくてはならない)。結果として、2Dグリッドが、完全に場所を占有されていない最後の行を有し得、3Dグリッドの最後のスライスは、完全に占有されていないかもしれない。FYSIは、全ての生じたスライバをダミーアクターで埋める。 The actor grid deployment utilizes a data parallel architecture unique to the GPU. The grid also provides the resolution of the final image read back from the physically assigned GPU, which moves the simulation results on the CPU or peer GPU that performs the visual rendering Let 1D grids are very inefficient on GPUs and are not normally used. Normally, actors are distributed on a 2D grid. The 3D grid is used, for example, when the addressability of the 2D grid exceeds the GPU limit. The dimension of the grid need not be a power of two. Finally, the number of actors may not necessarily match the number of grid cells (eg, the latter must be equal to or greater than the number of actors in the hierarchy). As a result, the 2D grid may have a last row that is not fully occupied, and the last slice of the 3D grid may not be fully occupied. FYSI fills all generated slivers with dummy actors.
アクターは、階層的に作られ得、それぞれの階層レベルにおけるアクターの集合は、グローバルな属性を共有し得る。グリッドは、各レベルにおいて、アクターの集合に付属させられることが求められる。より高い階層レベルでの形状は、より粗い幾何学的表現となると想定される。これは、トップ−ダウンシミュレーションを開始することと連動し、早期の衝突検出が除かれることは、全体的な工程の効率を向上させる。また、アクターの動的特性は、各階層レベルにおいて固有のものにすることができ、その結果、順応性のある物理的特性を実行する自由を提供する。ジョイント(後に記述)は、制約条件をシミュレーションするためにアクターの群に随意的に適用され得る。例えば、ジョイントは、クロスのシミュレーションにおいて用いられ、このことは以下の第III章に詳述される。 Actors can be created hierarchically, and the set of actors at each hierarchical level can share global attributes. A grid is required to be attached to a set of actors at each level. A shape at a higher hierarchy level is assumed to be a coarser geometric representation. This works in conjunction with starting a top-down simulation, and the removal of early collision detection improves the overall process efficiency. In addition, the dynamic characteristics of an actor can be unique at each hierarchical level, thus providing the freedom to perform adaptive physical characteristics. Joints (described later) can optionally be applied to groups of actors to simulate constraints. For example, joints are used in cloth simulations, as detailed in Section III below.
FYSLの第4のセクションは、ジョイントである。ジョイントは、1対のアクターの間の相互作用の制約を定義する。ジョイントは、本質的にアクターの動作を制限する。ジョイントは、共通のパラメータおよび/またはその種類に基づく固有のパラメータを有し得る。共通のパラメータには、ジョイントの種類、および1対のアクターのメンバーそれぞれに対するハンドルを含む。ジョイントは、FYSL記述フォーマットにおいてアクターと同一のタグレベルにある。従って、ジョイントは、トップのシーンレベルおよび任意のアクター階層の両方において定義され得る。例示的なジョイントタグは、表14、表15、および表16に提供される。 The fourth section of FYSL is a joint. A joint defines an interaction constraint between a pair of actors. Joints inherently limit actor movement. Joints may have common parameters and / or unique parameters based on their type. Common parameters include joint types and handles for each member of a pair of actors. The joint is at the same tag level as the actor in the FYSL description format. Thus, joints can be defined both at the top scene level and at any actor hierarchy. Exemplary joint tags are provided in Table 14, Table 15, and Table 16.
ソフトウェアダイナミクスソルバー(California州、San RafaelのAutodesk(R)所有、Maya(R)Dynamicsなど)は、CPUによって実行される物理シミュレーションを行うために存在する。本発明の実施形態に従うと、プラグインが用いられることによって、そのようなソフトウェアダイナミクスソルバーを迂回し、これによって、本明細書に記述されるようにGPU上で物理シミュレーションを行う。本実施形態において、プラグインは、シーンを捕捉し、該シーンに描写されるアクターに関連する属性およびフィールドをFYSLに変換する。その結果、物理シミュレーションが、FYSIを用いてGPU上で行われ得る。別の実施形態において、ユーザーは、物理シミュレーションが、GPUによって行われるか、またはソフトウェアダイナミクスソルバーによって行われるかを選択してよい。さらなる実施形態において、GPUの有効性および/または所定の機能に対するソフトウェアサポートなど、所定の基準に基づいて、GPUまたはソフトウェアダイナミクスソルバーが自動的に選択され、物理シミュレーションが行われる。例えば、GPUは、剛体およびクロスの物理シミュレーションを行うために用いられ得るが、ソフトウェアダイナミクスソルバーは、流体の物理シミュレーションを行うために用いられ得る。物理シミュレーションをGPUまたはソフトウェアダイナミクスソルバーによって行うことによって、より速いフレーム速度が達成され得る。特定のソフトウェアダイナミクスソルバー(すなわち、Maya(R)Dynamics)を迂回するための例示的なプラグインが、本章に記述されるが、まず、Maya(R)Dynamicsのあらましが提供される。
Maya(R)Dynamicsは、現実世界の物理的特性をシミュレーションすることによって運動を生成する、一種の技術である。Maya(R)におけるダイナミクスは、多様であり力強く、また、モデリング、アニメーションおよびレンダリングに一致した重要性レベルのツールセットを所有する。一般的に、Maya(R)Dynamicsのコンセプトは、キーフレームを用いないシミュレーションベースのアニメーションを含意する。Maya(R)Dynamicsのファミリーには、剛体および軟体、粒子系、クロス、流体および髪メンバーを含む。Maya(R)Dynamicsは、物理的原理に基づく、視覚的に強い印象を与える効果を作成するために、ゲームにおいて用いられる。 Maya (R) Dynamics is a type of technology that generates motion by simulating real-world physical properties. The dynamics in Maya (R) are diverse and powerful, and possess a tool set of importance levels consistent with modeling, animation and rendering. In general, the Maya (R) Dynamics concept implies simulation-based animation that does not use keyframes. The Maya (R) Dynamics family includes rigid and soft bodies, particle systems, cloths, fluids and hair members. Maya (R) Dynamics is used in games to create visually appealing effects based on physical principles.
図6は、ブロック図を図示しており、ここでは、GPUを利用することによって、Maya(R)Dynamicsなどのソフトウェアダイナミクスソルバーと比較して頑強性を妥協することなく、より高いシミュレーション速度を達成する、例示的なワークフロー600を図示している。該ワークフローは、大部分がMaya(R)Dynamicsへのプラグインによって制御されている。そのようなプラグインには、シーンエクスポーター(exporter)、GPU DynamicsシミュレーターFYSI、およびシーンインポーター(importer)が含まれる。 FIG. 6 illustrates a block diagram where GPUs are used to achieve higher simulation speeds without compromising robustness compared to software dynamics solvers such as Maya (R) Dynamics. An exemplary workflow 600 is illustrated. The workflow is largely controlled by plug-ins to Maya (R) Dynamics. Such plug-ins include scene exporters, GPU Dynamics simulator FYSI, and scene importers.
ワークフロー600は、ステップ610から始まり、ここでは、シーンエクスポーターが、アーティストによってシーンオブジェクトに添付された属性およびフィールドを受け取る。属性には、初期速度、スピン、配向、および物質の摩擦を含む。フィールドは、運動に影響し、ドラッグ、重力または手続き上定義されたものを含む力を表し、運動は、GPUシェーダープログラムにおいて表される。ユーザーは、GPUベースのシミュレーションを開始するために、全てのシーンオブジェクトまたはそのサブセットのいずれかを選択する。エクスポーターは、オブジェクトの幾何学的形状および動的特性を、GPU向けの物理シミュレーションフォーマットに変換する。GPU向きの物理シミュレーションフォーマットは、一実施形態においては、FYSLである。 The workflow 600 begins at step 610, where a scene exporter receives attributes and fields attached to a scene object by an artist. Attributes include initial velocity, spin, orientation, and material friction. Fields affect movement and represent forces including drag, gravity or procedurally defined, and movement is represented in a GPU shader program. The user selects either all scene objects or a subset thereof to initiate a GPU-based simulation. The exporter converts the object's geometry and dynamic properties into a physics simulation format for the GPU. The GPU-oriented physics simulation format is FYSL in one embodiment.
ステップ620において、物理シミュレーションは、FYSLを用いてGPU上で行われる。一旦適切なFYSIプラグインが現れると、GPUベースのシミュレーターが、シームレスにソフトウェアダイナミクスソルバーノード(例えばMaya(R)Dynamics(R)統合ソルバー)に取って代わる。GPUシミュレーターは、多数の別個のフレームにおいて、再帰的にシミュレーションを実行させる。シミュレーション中に、現在のシーン状態が解決され、FYSL動的アクターのそれぞれの対の中での衝突検出が調べられる。衝突する対は、さらに処理されることにより、関連するアクターの運動に影響するであろう、接触応答を起こす。FYSI GPU援助の物理シミュレーションは、主に頂点プロセッサよりもより高い度合いの同時処理を活用するピクセルエンジンを利用する。GPU上での物理シミュレーションは、グリッドベースであり、ここでは、通信バリヤーは、格子セルに渡ってほとんどまたは全くない。関係する演算カーネルは、大部分において、高い算数効力特性を有し、従って、同等のCPU実装と比較して、改良スピードアップをデモンストレーションするための好ましい候補である。このシミュレーション工程は、効率を向上させるために単一または多数のGPUを活用し、ソフトウェアダイナミクスソルバーとやりとりしているアーティストには、全てがトランスペアレントである。FYSIは、エクスポーターが送ったものと、同一のFYSL表現フォーマットにとなる。FYSI結果は、完全なシミュレーションセッションのために内部的にキャッシュされ、Maya(R)Dynamicsにおいて再使用されるために完全に公開される。 In step 620, the physical simulation is performed on the GPU using FYSL. Once the appropriate FYSI plug-in appears, the GPU-based simulator seamlessly replaces the software dynamics solver node (eg, Maya (R) Dynamics (R) integration solver). The GPU simulator recursively executes simulations in a number of separate frames. During simulation, the current scene state is resolved and collision detection within each pair of FYSL dynamic actors is examined. The colliding pair is further processed to cause a touch response that will affect the motion of the associated actor. FYSI GPU-assisted physics simulations primarily utilize a pixel engine that exploits a higher degree of concurrency than a vertex processor. Physical simulations on the GPU are grid based, where there is little or no communication barrier across the grid cells. The arithmetic kernels involved have, for the most part, high arithmetic effectiveness properties and are therefore preferred candidates for demonstrating improved speedups compared to equivalent CPU implementations. This simulation process utilizes a single or multiple GPUs to improve efficiency, and is all transparent to artists interacting with the software dynamics solver. FYSI is in the same FYSL expression format as that sent by the exporter. FYSI results are cached internally for a complete simulation session and fully published for reuse in Maya (R) Dynamics.
ステップ630において、フレーム毎のシミュレーター結果は、Maya(R)Dynamicsのシーングラフにインポートによって戻される。ステップ630の間、幾何学的形状および変換データのみが重要である。FYSIは、シミュレーションステップ毎に、形状の位置的更新および変換の更新の両方を提供する。変換データは、入信してくるシーンの位置および配向に関連する。剛体の場合には、Maya(R)Dynamicsからの変換シーングラフのノードを更新することで十分である。変形する物体(クロスおよび流体など)に対しては、Maya(R)Dynamicsによって提供されるシーンプリミティブのノードにおいて、更新は、全てのメッシュ頂点またはインデックスについて行われる。 In step 630, the frame-by-frame simulator results are imported back into the Maya (R) Dynamics scene graph. During step 630, only the geometry and transformation data are important. FYSI provides both shape positional updates and transformation updates for each simulation step. The transformation data relates to the position and orientation of the incoming scene. In the case of rigid bodies, it is sufficient to update the nodes of the transformation scene graph from Maya (R) Dynamics. For deforming objects (such as cloths and fluids), updates are made for all mesh vertices or indices in the scene primitive nodes provided by Maya (R) Dynamics.
ステップ640において、シミュレーション結果は、視覚化ためにレンダリングされる。GPUまたはソフトウェアベースのレンダラーが呼び出されることによって、シミュレーション効果を視覚化する。一実施形態において、視覚レンダリングタスクを実行するためのGPUは、物理シミュレーションを行うGPUから物理的に離れている。これは、この場合においても、より高いレベルにおいて並列処理を容易にするためである。 In step 640, the simulation results are rendered for visualization. The simulation effect is visualized by calling a GPU or software-based renderer. In one embodiment, the GPU for performing the visual rendering task is physically separate from the GPU performing the physical simulation. This is also in this case to facilitate parallel processing at a higher level.
ステップ650において、レンダリングされた結果は、シーンにおいて再生される。 In step 650, the rendered result is played back in the scene.
III.1つ以上のGPU上での物理シミュレーションを行うための例示的方法
A.方法の概観
ここに、FYSIおよびFYSLを用いた、1つ以上のGPU上での物理シミュレーションを行うための例示的方法を記述する。図7は、ブロック図を図示し、本発明の実施形態に従って、1つ以上のGPU上でゲーム物理シミュレーションを行うための例示的な方法700を例示している。方法700は、ステップ710から始まり、ここでは、メッシュに関連した物理パラメータが、ビデオメモリにマッピングされることによって、シーンに図示されたメッシュの運動を決定する線形方程式系をセットアップする。ビデオメモリは、図3に関連して上述された、テクスチャ310を含み得る。当業者に明らかなように、メッシュは、個体のオブジェクト、体積、流体、クロス、または他の種類の物理的オブジェクトなどの、あらゆる種類の物理的なオブジェクトを表し得る。
III. Exemplary Method for Performing Physical Simulations on One or More GPUs A. Method Overview Here, an exemplary method for performing physical simulation on one or more GPUs using FYSI and FYSL is described. FIG. 7 illustrates a block diagram and illustrates an exemplary method 700 for performing game physics simulations on one or more GPUs, in accordance with an embodiment of the present invention. The method 700 begins at step 710, where physical parameters associated with a mesh are mapped into video memory to set up a linear equation system that determines the motion of the mesh illustrated in the scene. The video memory may include a texture 310, described above with respect to FIG. As will be apparent to those skilled in the art, a mesh may represent any type of physical object, such as an individual object, volume, fluid, cloth, or other type of physical object.
ステップ720において、少なくとも1つのピクセルプロセッサを用いて、演算が、ビデオメモリにおけるデータに基づいて行われることによって、その時刻の線形方程式系を解く。その時刻の線形方程式系への解を表す修正済みデータは、次いでビデオメモリに記憶される。一実施形態において、修正済みデータは、テクスチャ310に記憶され、次いで別のシェーダーが該修正済みデータに対応するグラフィックスをレンダリングする。本実施形態においては、単一のGPUが物理シミュレーションおよびグラフィックスのレンダリングを行う。別の実施形態においては、修正済みデータが、第1のGPUの出力として提供され、次いで第2のGPUのテクスチャに書き込まれる。本実施形態においては、第1のGPUが、物理シミュレーションを行い、第2のGPUがグラフィックスのレンダリングを行う。代替的に、第1のGPUは、第2のGPU(例えば第1のGPUのビデオメモリあるいは系メモリ)にアクセス可能なメモリの領域に修正済みデータを書き込み得る。 In step 720, using at least one pixel processor, an operation is performed based on the data in the video memory to solve the system of linear equations at that time. The modified data representing the solution to the system of linear equations at that time is then stored in video memory. In one embodiment, the modified data is stored in texture 310 and another shader then renders the graphics corresponding to the modified data. In this embodiment, a single GPU performs physical simulation and graphics rendering. In another embodiment, the modified data is provided as the output of the first GPU and then written to the texture of the second GPU. In the present embodiment, the first GPU performs physical simulation, and the second GPU performs graphics rendering. Alternatively, the first GPU may write the modified data to an area of memory accessible to the second GPU (eg, video memory or system memory of the first GPU).
方法700は、あらゆる種類の物理的オブジェクトをシミュレーションするために実装され得る。以下に提供されるものは、1つ以上のGPUにクロスをシミュレーションするための例示的な実装である。この例示的実装は、例示目的のみに提供され、限定の目的に提供されるものではない。本明細書に含まれる記載に基づいて、当業者は、GPU上で他の種類の物理的オブジェクトのシミュレーションを行う方法を理解することとなる。 The method 700 may be implemented to simulate any kind of physical object. Provided below is an exemplary implementation for simulating a cloth on one or more GPUs. This exemplary implementation is provided for illustrative purposes only, and not for purposes of limitation. Based on the description contained herein, one skilled in the art will understand how to simulate other types of physical objects on the GPU.
ここで、1つ以上のGPUでクロスをシミュレーションするためのインプリシットな技術を記述する。まず、クロスの物理モデル、および離散時間にそのモデルをシミュレーションする2つのアプローチが提示される。第2に、インプリシットな離散時間シミュレーションの3ステップ工程が記述される。第3に、この3ステップ工程をGPUにマッピングする方法が提示される。 Here, an implicit technique for simulating a cross with one or more GPUs is described. First, a cross physical model and two approaches to simulating the model in discrete time are presented. Second, a three-step process of implicit discrete time simulation is described. Third, a method for mapping this three-step process to a GPU is presented.
(クロスシミュレーションのための例示的物理モデル)
クロスは、内在する粒子系によってシミュレーションされ得る。そのような内在型粒子系は、内部的な伸張力および減衰力を受ける、点質量のアレイとして表され得る。これら力は、近傍の点の相対的変位および速度に依存する。そのような点質量のアレイは、本明細書において点メッシュと参照される。図8は、例示的な点メッシュを図示する。
(Example physical model for cross simulation)
The cloth can be simulated by the underlying particle system. Such endogenous particle systems can be represented as an array of point masses that undergo internal stretching and damping forces. These forces depend on the relative displacement and velocity of nearby points. Such an array of point masses is referred to herein as a point mesh. FIG. 8 illustrates an exemplary point mesh.
点メッシュ800を考慮すると、以下の、点メッシュ800に関連した物理パラメータが定義され得る。 Considering the point mesh 800, the following physical parameters associated with the point mesh 800 may be defined.
ニュートンの第2の法則(すなわち、F=ma)は、点メッシュ800に対して以下のように書かれ得る。 Newton's second law (ie, F = ma) can be written for a point mesh 800 as follows:
方程式2が一連のコンピュータの工程(例えば、GPUにおける少なくとも1つのピクセルプロセッサによって行われる工程)によって解かれるためには、方程式2は、離散時間型問題に変換されなくてはならない。時間離散型問題においては、系の次の状態が、その以前の状態によって与えられる。具体的には、時刻tk In order for Equation 2 to be solved by a series of computer steps (eg, steps performed by at least one pixel processor in the GPU), Equation 2 must be converted to a discrete-time problem. In time-discrete problems, the next state of the system is given by its previous state. Specifically, time t k
エクスプリシットな方法は、導関数の前進投射を用い、以前の状態の直接的外挿から次の時間のステップにおける状態を演算する。例えば、一次オイラー前進差分は、以下のように近似する。 The explicit method uses forward projection of derivatives and computes the state at the next time step from the direct extrapolation of the previous state. For example, the primary Euler forward difference is approximated as follows:
エクスプリシットな積分スキームに対する主な欠点は、数値安定度である。一般的に、前進近似を保つために、方程式3の関数a(t)は、 The main drawback to explicit integration schemes is numerical stability. In general, to maintain a forward approximation, the function a (t) in Equation 3 is
インプリシットな方法は、第2種類目の時間離散型積分技術を担う。インプリシットな方法は、外挿された結果から、幾分かの「可逆性」を表す方程式の系からの次の時間ステップにおける状態を演繹する。言い換えると、将来の状態の後退導関数が、以前の状態に対して同時に検証される。例えば、一次オイラー前進差分は、以下のように近似する。 The implicit method is responsible for the second type of time-discrete integration technique. The implicit method deduces the state at the next time step from the system of equations representing some “reversibility” from the extrapolated result. In other words, the backward derivative of the future state is simultaneously verified against the previous state. For example, the primary Euler forward difference is approximated as follows:
点メッシュ800に適用されることによって、系の支配方程式(すなわち、方程式2)は、3nの未知数 By being applied to the point mesh 800, the governing equation of the system (ie, equation 2) becomes 3n unknowns
方程式4に表されるエクスプリシットな積分法か、方程式5に表されるインプリシットな積分法のいずれかにおいて、ネットの内力のベクトル The net internal force vector in either the explicit integration expressed in Equation 4 or the implicit integration expressed in Equation 5.
インプリシットな積分技術は、複雑性がないという訳ではない。特に、インプリシットな積分技術は、 Implicit integration techniques are not without complexity. In particular, the implicit integration technique is
ヤコブ行列は、以下の形式を有する。 The Jacob matrix has the following form:
方程式8は、 Equation 8 is
図5を参照して述べたように、FYSIを用いてGPU上で物理シミュレーションを行うことは、以下の3つのステップを含む。すなわち、(i)系セットアップステップ、(ii)ソルバーステップ、および(iii)衝突ステップ、である。 As described with reference to FIG. 5, performing physical simulation on the GPU using FYSI includes the following three steps. That is, (i) system setup step, (ii) solver step, and (iii) collision step.
系セットアップステップは、 The system setup step is
矩形の点メッシュ800に対する線形の二つ1組の力モデルが用いられる。点メッシュ800に対する線形の二つ1組の力モデルにおいて、i点とj点との間の稜は、ジョイントと呼ばれており、結合したばねと減衰材を表す。ij=jiの場合には、2つのジョイントは、相補的であり、その場合には、等しいが相反する力(すなわち、ニュートンの第3の法則)が頂点であるiおよびjに適用され、それぞれは A linear pair of force models for a rectangular point mesh 800 is used. In the linear pair of force models for point mesh 800, the ridge between points i and j is called a joint and represents a combined spring and damping material. If ij = ji, the two joints are complementary, in which case equal but conflicting forces (ie Newton's third law) are applied to the vertices i and j, respectively Is
ジョイント毎の力はその頂点のみに依存しているので、 Since the force for each joint depends only on its vertices,
点メッシュ800の運動を支配する線形方程式系が、「合致した」系を表すためには、行列Aは、(i)疎であり、かつ(ii)対称的でなくてはならない。(i)項に関しては、Aは、疎である。なぜならば、Aは、ヤコブ行列 In order for the system of linear equations governing the motion of the point mesh 800 to represent a “matched” system, the matrix A must be (i) sparse and (ii) symmetric. For term (i), A is sparse. Because A is a Jacob matrix
故に、方程式10が当てはまる場合には、Aは、疎かつ対称的であり、従って、線形方程式系は、効率的に解くことができる。 Thus, if equation 10 is true, A is sparse and symmetric, and thus the system of linear equations can be solved efficiently.
図8を参照すると、点メッシュ800における点の間のジョイント力は、(i)引っ張りジョイント806、(ii)せん断ジョイント804、および(iii)曲げジョイント802の、3つの種類に分類され得る。隣接するノード間に定義され、引っ張りジョイント806は、最も強い内力をモデル化する。引っ張りジョイント806は、領域における面内変化に抵抗する。対角線上のノード間に定義され、せん断ジョイント804は、2番目に強力である内力をモデル化する。せん断ジョイント804は、クロスが角で引っ張られたときに内方向に狭くなる傾向に抵抗する。最後に、交互のノード間に定義され、曲げジョイント802は、最も弱い内力をモデル化する。曲げジョイント802は、折りたたみに対して抵抗する。 Referring to FIG. 8, joint forces between points in point mesh 800 can be classified into three types: (i) tensile joint 806, (ii) shear joint 804, and (iii) bending joint 802. Defined between adjacent nodes, the tension joint 806 models the strongest internal force. The tension joint 806 resists in-plane changes in the region. Defined between diagonal nodes, shear joint 804 models the second strongest internal force. The shear joint 804 resists the tendency to narrow inward when the cloth is pulled at a corner. Finally, defined between alternating nodes, the bending joint 802 models the weakest internal force. The bending joint 802 resists folding.
より多くの現実的な定義がなされているが、上に提示された、対式ジョイント力毎モデルは、前述のBaraff引例と、Kwang−Jin ChoiおよびHyeong−Seok Ko(「Stable but Responsive Cloth」、In
ACM Transactions on Graphics、SIGGRAPH 2002、pp.604−11(2002))によって教示された対に関するジョイント力のモデルとの混合によって影響され、本明細書においてその全体を参照として援用する。本明細書に開示のモデルに従うと、全てのジョイントは、同一の関数によってモデル化されるが、ジョイントの種類(すなわち、引っ張り、せん断、および曲げ)は、剛性ks、減衰kd、および自然長Lに対する異なる値によって、グローバルにパラメータで表され得る。ジョイント毎に、ばね(ksおよびLによってパラメータで表される)の作用および減衰(kdによってパラメーターで表される)は、線形に独立しており、別個のものと考慮してよい。
Although more realistic definitions have been made, the pairwise joint force-by-force model presented above is based on the aforementioned Baraff reference and Kwang-Jin Choi and Hyong-Seok Ko (“Stable but Responsive Cloth”, In
ACM Transactions on Graphics, SIGGRAPH 2002, pp. 604-11 (2002)), which is influenced by mixing with the model of joint force for the pair taught by, and is hereby incorporated by reference in its entirety. According to the model disclosed herein, all joints are modeled by the same function, but the type of joint (ie, tensile, shear, and bend) depends on stiffness k s , damping k d , and natural Different values for the length L can be globally represented by parameters. For each joint, the action and damping (parameterized by k d ) of the spring (parameterized by k s and L) are linearly independent and may be considered separate.
一般的に、ばね力または減衰力のいずれかに対するジョイント力 Generally, joint force against either spring force or damping force
最も単純化された理想の線形移動ばね The most simplified ideal linear moving spring
本明細書において記述されたクロスのシミュレーションに対するモデルにおいて、理想的な線形移動ダンパーは、ジョイントの方向 In the model for the cloth simulation described herein, the ideal linear displacement damper is the joint direction.
外力の応答および効果を解くためのいくつかのアプローチが公知であり、それらには、縮小された座標(reduced coordinates)を用いるアプローチ、ペナルティ法、および/または言語乗算器を含む。例えば、前述のBaraff引例を参照されたい。Barraff引例において議論される別のアプローチは、モデル化された点メッシュにおける所定の点の質量に拘束を与える。上述のように、対角質量行列 Several approaches are known for solving external force responses and effects, including approaches using reduced coordinates, penalty methods, and / or language multipliers. For example, see the Baraff reference above. Another approach, discussed in the Barraff reference, constrains the mass of a given point in the modeled point mesh. As mentioned above, the diagonal mass matrix
Baraff引例において開発されたアプローチは、線形系の対称に対して、かかわりを有し、結果的に、効率的な可解性を有する。これらの問題は、修正共役勾配(「修正CG」)法を用いることによって解決され得、該法は、質量ベースの拘束を実施するためのフィルタリング演算を導入する。別のアプローチは、質量ベースの拘束および修正CG法の両方を用い、これは、Kwang−Jin ChoiおよびHyeong−Seok Ko(「Stable but Responsive Cloth」、In ACM Transactions on Graphics、SIGGRAPH 2002、pp.604−11(2002))に記述されており、本明細書においてその全体を参照として援用する。 The approach developed in the Baraff reference has implications for the symmetry of linear systems and consequently has efficient solvability. These problems can be solved by using a modified conjugate gradient (“modified CG”) method, which introduces a filtering operation to implement mass-based constraints. Another approach uses both mass-based constraints and modified CG methods, which include Kwang-Jin Choi and Hyong-Seok Ko (“Stable but Responsive Cloth”, In ACM Transactions on Graphics, SIGGRAPH 60.2). -11 (2002)), which is incorporated herein by reference in its entirety.
B.GPU上でクロスをシミュレーションするための例示的な実装
インプリシットにクロスをシミュレーションするためのモデルを記述したが、ここで、GPU上での各離散時間ステップに対してクロスのシミュレーションを実装するための、3ステップの方法が記述される。図9は、本発明の実施形態に従った、GPU上でクロスのシミュレーションを実装するための、例示的な流れ図を描写する。言い換えると、図9は、図4を参照して上述された物理シミュレーションブロック410の、特定の実装に関する高レベルな描写である。図9において、大きな円は、テクスチャまたはビデオメモリの配列を表し、図3を参照して上述された、テクスチャ310に類似し得る。テクスチャへのデータの特定のマッピングは、以下の通りである。(i)円902(Mと分類される)は、点メッシュ800における各点の質量に関連したデータを含む、テクスチャを表す。(ii)円904(Pと分類される)は、点メッシュ800における各点の位置に関するデータを含むテクスチャを表す。(iii)円906(Vと分類される)は、点メッシュ800における各点の速度に関するデータを含むテクスチャを表す。(iv)円908(Fと分類される)は、点メッシュ800における各点に作用するネット力に関するデータを含むテクスチャを表す。そして、(v)円912(Jと分類される)は、ヤコビアン行列に関するデータを含むテクスチャを表す。影つきの円910は、カーネル演算(1つ以上のGPUによって行われる数学的演算など)を表す。
B. Exemplary Implementation for Simulating Cross on GPU We have described a model for simulating cloth implicitly, where we now implement a simulation of cross for each discrete time step on the GPU. A three-step method is described. FIG. 9 depicts an exemplary flow chart for implementing cross simulation on a GPU according to an embodiment of the present invention. In other words, FIG. 9 is a high level depiction of a particular implementation of the physics simulation block 410 described above with reference to FIG. In FIG. 9, the large circle represents an array of textures or video memory and may be similar to the texture 310 described above with reference to FIG. The specific mapping of data to texture is as follows: (I) A circle 902 (classified as M) represents a texture that includes data related to the mass of each point in the point mesh 800. (Ii) A circle 904 (classified as P) represents a texture containing data regarding the position of each point in the point mesh 800. (Iii) A circle 906 (classified as V) represents a texture containing data regarding the speed of each point in the point mesh 800. (Iv) A circle 908 (classified as F) represents a texture containing data relating to the net force acting on each point in the point mesh 800. (V) Circle 912 (classified as J) represents a texture including data relating to a Jacobian matrix. Shaded circles 910 represent kernel operations (such as mathematical operations performed by one or more GPUs).
GPU上でクロスのシミュレーションを実装するための第1のステップには、図9に示されるように、点メッシュの運動を支配する線形方程式系を設定するために、点メッシュに関連した物理パラメータのテクスチャ(すなわち、ビデオメモリ)へのマッピングが含まれる。インプリシットな積分技術を適用することによって、上述されたことは、点メッシュの運動を支配する線形方程式系は、 The first step for implementing the cloth simulation on the GPU is to set the physical parameters associated with the point mesh to set up a system of linear equations governing the motion of the point mesh, as shown in FIG. A mapping to a texture (ie video memory) is included. By applying an implicit integration technique, what has been described above is that the system of linear equations governing the motion of the point mesh is
GPU上でクロスのシミュレーションを実装するための第2のステップには、図9に示されるように、位置および速度の更新済みの値 The second step for implementing cross simulation on the GPU includes updated values of position and velocity, as shown in FIG.
GPU上でクロスのシミュレーションを実装するための最終ステップには、図9に示されるように、衝突検出が含まれる。カーネル演算910cは、テクスチャ902a、904b、906bおよび908bからの入力に基づいて、衝突が起こるか否かを決定する。カーネル演算910cの結果は、テクスチャ902b、904c、906cおよび908cに書き込まれる。これらの結果が書き込まれた後に、衝突応答ステップが、この時間ステップに対して完了する。 The final step for implementing cross simulation on the GPU includes collision detection, as shown in FIG. Kernel operation 910c determines whether a collision occurs based on inputs from textures 902a, 904b, 906b, and 908b. The result of kernel operation 910c is written into textures 902b, 904c, 906c and 908c. After these results are written, the collision response step is completed for this time step.
ここで、GPU上でクロスのシミュレーションを実装するためのステップのそれぞれが、より詳細に記述される。 Here, each of the steps for implementing a cross simulation on the GPU is described in more detail.
i.ステップ1:システムセットアップ
GPU実装の設計上の大きな難問は、コンパクトであり、かつ単一命令多重データ(SIMD)パラレル化を容易にする、系方程式のテクスチャ表現の開発である。本発明の1つの実施形態は、検討中の矩形点メッシュから直接的に得られた構造を有する、17の持続性テクスチャを利用する。しかし、本発明は、17のテクスチャに限定はされない。本発明の精神および範囲から逸脱することなく、異なる数のテクスチャを用いてGPU上に物理シミュレーションを行う方法を、当業者は理解することとなる。
i. Step 1: System Setup A major design challenge for GPU implementations is the development of texture representations of system equations that are compact and facilitate single instruction multiple data (SIMD) parallelization. One embodiment of the present invention utilizes 17 persistent textures with structures derived directly from the rectangular point mesh under consideration. However, the present invention is not limited to 17 textures. Those skilled in the art will understand how to perform a physical simulation on a GPU using a different number of textures without departing from the spirit and scope of the present invention.
本明細書に記述された、クロスをシミュレーションするために用いられるテクスチャは、点メッシュ800に対応する、「rows」の高さおよび「cols」の幅を有するn個のテクセルの2次元テクスチャである。点メッシュ800は、それぞれ「rows」および「cols」の要素である、行および列に組織化される。従って、各テクスチャの各テクセル位置は、点メッシュ800の特定の点に1対1にマッピングする。各テクスチャは、左から右へ、かつ上から下へと順序付けられる。一般的には、個別のテクスチャが、同一のテクスチャ座標{s、t}における同一点iに属する、異なるプロパティを格納する(明確にするために、本文は、全てのテクスチャ座標を、高さ=‘rows’および幅=‘cols’によって境界付けられた非正規整数として描写する)。点番号から点のテクスチャ座標への、およびその逆のマッピングは、以下によって与えられる。 The texture used to simulate the cloth described herein is a two-dimensional texture of n texels having a height of "rows" and a width of "cols" corresponding to the point mesh 800. . The point mesh 800 is organized into rows and columns, which are elements of “rows” and “cols”, respectively. Accordingly, each texel position of each texture is mapped one-to-one to a specific point in the point mesh 800. Each texture is ordered from left to right and from top to bottom. In general, individual textures store different properties belonging to the same point i at the same texture coordinate {s, t} (for the sake of clarity, the body text describes all texture coordinates as height = Delineated as non-normal integer bounded by 'rows' and width = 'cols'). The mapping of point numbers to point texture coordinates and vice versa is given by:
・Pは、点の現在位置
・ P is the current position of the point
・Vは、点の現在速度
・ V is the current speed of the point
・Fは、点の現在のネット力ベクトル
F is the current net force vector of the point
・A#は、
・ A # is
・B#は、
・ B # is
・Cは、
・ C is
・Dは、
・ D is
17のテクスチャを定義したので、ここで、これらのテクスチャを埋めるための(すなわち、図9のシステムセットアップのステップを行うための)2段階工程が記述される。図10は、点メッシュ800の運動を支配する線形方程式系を設定するための、2段階工程の流れ図を図示する。図10に含まれるのは、入力テクスチャ1002aおよび1004a Now that 17 textures have been defined, a two-step process for filling these textures (ie, for performing the system setup steps of FIG. 9) will now be described. FIG. 10 illustrates a two-step process flow diagram for establishing a linear equation system that governs the motion of the point mesh 800. Included in FIG. 10 is input textures 1002a and 1004a.
図10の第1の段階は、6つの同一のサブパスを含み、該サブパスは、ジョイントの相補的な対のジョイントに対して演算を行う、カーネル演算1010a−1010fによって表される。この第1段階において、ネット力ベクトル The first stage of FIG. 10 includes six identical subpaths, which are represented by kernel operations 1010a-1010f that operate on the joints of the complementary pair of joints. In this first stage, the net force vector
図10の第2の段階は、カーネル演算1010gおよび1010hによって表される、2つの同一のサブパスを含み、該カーネル演算は、 The second stage of FIG. 10 includes two identical subpaths, represented by kernel operations 1010g and 1010h,
システムセットアップの第1の段階(図10)は、ネット力ベクトル The first stage of system setup (Figure 10) is the net force vector
図11は、ジョイントパスmを表す、流れ図1100を図示する。各ジョイントパスは、2つのサブパスを含み、第1カーネル1110a(EvaJointと分類)および第2カーネル1110b(updateFと分類)によって表される。第1カーネル1110aは、それぞれ一時的なテクスチャT、Am、およびBmに書き込まれる、 FIG. 11 illustrates a flowchart 1100 representing the joint path m. Each joint path includes two subpaths and is represented by a first kernel 1110a (classified as EvaJoint) and a second kernel 1110b (classified as updateF). The first kernel 1110a is written to temporary textures T, Am and Bm, respectively.
第1カーネル1110a(evalJoint)は、以下の事実を利用する。 The first kernel 1110a (evalJoint) uses the following facts.
(1)ジョイント毎の値は、共に、最も容易に評価され、
(2)AmおよびBmに格納された
(1) Both joint values are most easily evaluated,
(2) Stored in Am and Bm
(3)対称性
(3) Symmetry
第2カーネル1110b(updateFと分類)は、解析されているジョイントの力を用いて、ネット力 The second kernel 1110b (classified as updateF) uses the force of the joint being analyzed to determine the net force.
再び図10を参照すると、システムセットアップの第2および最終の段階は、 Referring again to FIG. 10, the second and final stages of system setup are:
ii.ステップ2:システムソルバー
再び図8を参照すると、GPU上でのクロスのシミュレーションにおける第2のステップは、システムソルバーステップである。システムソルバーステップに対する最も有力なアプローチは、前述のBaraff引例に記述された、線形系
ii. Step 2: System Solver Referring again to FIG. 8, the second step in simulating cloth on the GPU is the system solver step. The most promising approach to the system solver step is the linear system described in the Baraff reference above.
iii.ステップ3:衝突応答
再び図8を参照すると、GPU上でのクロスのシミュレーションにおける第3および最終のステップは、衝突応答ステップである。衝突検出スキームは、シミュレーションされているメッシュ(例えば点メッシュ800)からの点の対が、(i)メッシュからの別の点の対、または(ii)シミュレーションされている別のオブジェクト(例えば、点メッシュ800として同一のシーンに描写されているボール)からの点の対、のいずれかと交わるかどうかを決定することによって、衝突が起きたかどうかを確認する。前述のBaraff引例によって例示されるように、衝突検出スキームは、当業者に周知である。当業者に公知のあらゆる衝突検出スキームが、本発明の精神および範囲から逸脱することなく、用いられ得る。
iii. Step 3: Collision Response Referring again to FIG. 8, the third and final step in the simulation of the cross on the GPU is the collision response step. Collision detection schemes can use a pair of points from a simulated mesh (eg, point mesh 800) to (i) another pair of points from the mesh, or (ii) another object being simulated (eg, a point). Whether or not a collision has occurred is determined by determining whether one of a pair of points from the ball) depicted in the same scene as the mesh 800 intersects. As illustrated by the aforementioned Baraff reference, collision detection schemes are well known to those skilled in the art. Any collision detection scheme known to those skilled in the art can be used without departing from the spirit and scope of the present invention.
C.FYSLで書かれた例示的コード
以下に提供されるものは、FYSLで書かれたコードの例示的セクションである。特に、以下に提供されるものは、(i)FYSLで書かれた高レベルシーン記述、(ii)チャイルドアクター展開、および(iii)ファブリックジョイントのプロトタイプ展開、である。
C. Example Code Written in FYSL Provided below is an example section of code written in FYSL. In particular, provided below are (i) a high level scene description written in FYSL, (ii) a child actor deployment, and (iii) a prototype deployment of a fabric joint.
i.FYSLで書かれた高レベルシーン記述 i. High-level scene description written in FYSL
本発明の実施形態は、ハードウェア、ソフトウェア、またはそれらの組み合わせを用いて実装され得、また、1つ以上のコンピュータシステムまたは他のプロセッシングシステムにおいて実装され得る。しかし、本発明によって行われる操作は、加算や比較などに関して、頻繁に参照されたが、それらは、一般的に、人間のオペレーターによって行われる、頭の中で行うオペレーションに関連する。本発明の一部を形成する、本明細書に記述されるオペレーションのいずれにおいても、そのような人間のオペレーターの能力はなにも必要なく、または、ほとんどの場合において望まれない。むしろ、オペレーションは、機械的なオペレーションである。本発明のオペレーションを行うために有用な機械は、デジタルコンピュータを含み、例えば、パーソナルコンピュータ、ビデオゲームコンソール、携帯電話、携帯情報端末、または同様のデバイスなどである。
実際に、一実施形態において、本発明は、本明細書に記述された機能性を実行することが可能な1つ以上のコンピュータシステムに向けられている。コンピュータシステム1300の例は、図13に示される。 Indeed, in one embodiment, the present invention is directed to one or more computer systems capable of performing the functionality described herein. An example of a computer system 1300 is shown in FIG.
コンピュータシステム1300は、1つ以上のプロセッサ、例えばプロセッサ1304を含む。プロセッサ1304は、汎用プロセッサ(CPUなど)、または専用プロセッサ(GPUなど)であり得る。プロセッサ1304は、通信インフラストラクチャ1306(例えば、通信バス、クロスオーバーバー、またはネットワーク)に接続される。様々なソフトウェアの実施形態は、この例示的なコンピュータシステムの点から記述される。本記述を読んだ後は、他のコンピュータシステムおよび/またはアーキテクチャーを用いて本発明を実装する方法が、当業者には明らかとなる。 Computer system 1300 includes one or more processors, such as processor 1304. The processor 1304 can be a general purpose processor (such as a CPU) or a dedicated processor (such as a GPU). The processor 1304 is connected to a communication infrastructure 1306 (eg, a communication bus, crossover bar, or network). Various software embodiments are described in terms of this exemplary computer system. After reading this description, it will become apparent to a person skilled in the art how to implement the invention using other computer systems and / or architectures.
コンピュータシステム1300は、ディスプレイインターフェース1302を含み、該ディスプレイインターフェース1302は、ディスプレイユニット1330に表示するために、通信インフラストラクチャ1306(または不図示のフレームバッファ)から、グラフィックス、テキスト、および他のデータを転送する。 Computer system 1300 includes a display interface 1302, which displays graphics, text, and other data from communication infrastructure 1306 (or a frame buffer not shown) for display on display unit 1330. Forward.
コンピュータシステム1300はまた、メインメモリ1308、好ましくは、ランダムアクセスメモリ(RAM)を含み、また、二次メモリ1310をも含み得る。二次メモリ1310は、例えば、ハードディスクドライブ1312および/またはリムーバブルストレージドライブ1314を含み得、フロッピー(登録商標)ディスクドライブ、磁気テープドライブ、光学ディスクドライブなどが、その代表である。リムーバブルストレージドライブ1314は、周知の方法で、リムーバブルストレージユニット1318との読み取りおよび書き込みを行う。リムーバブルストレージユニット1318は、フロッピー(登録商標)ディスク、磁気テープ、光学ディスクなどを表し、これは、リムーバブルストレージドライブ1314によって読み書きがされる。認識されるように、リムーバブルストレージユニット1318は、コンピュータソフトウェアおよび/またはデータをその中に格納した、コンピュータ使用可能媒体を含む。 Computer system 1300 also includes main memory 1308, preferably random access memory (RAM), and may also include secondary memory 1310. The secondary memory 1310 may include, for example, a hard disk drive 1312 and / or a removable storage drive 1314, such as a floppy disk drive, magnetic tape drive, optical disk drive, and the like. The removable storage drive 1314 reads from and writes to the removable storage unit 1318 in a well-known manner. The removable storage unit 1318 represents a floppy (registered trademark) disk, a magnetic tape, an optical disk, and the like, and is read and written by the removable storage drive 1314. As will be appreciated, the removable storage unit 1318 includes computer usable media having computer software and / or data stored therein.
代替的な実施形態において、二次メモリ1310は、コンピュータシステム1300にコンピュータプログラムまたは他の命令をロードさせる、他の同様のデバイスを含み得る。そのようなデバイスは、例えば、リムーバブルストレージユニット1322およびインターフェース1320を含み得る。そのような例は、プログラムカートリッジおよびカートリッジインターフェース(ビデオゲーム機に見受けられるようなものなど)、リムーバブルメモリチップ(消去可能プログラマブル読取り専用メモリ(EPROM)またはプログラマブル読取り専用メモリ(PROM)など)および関連ソケット、ならびに他のリムーバブルストレージユニット1322およびインターフェース1320を含み得、これらは、リムーバブルストレージユニット1322からコンピュータシステム1300にソフトウェアおよびデータを転送することを可能にする。 In alternative embodiments, secondary memory 1310 may include other similar devices that cause computer system 1300 to load computer programs or other instructions. Such devices may include, for example, a removable storage unit 1322 and an interface 1320. Examples include program cartridges and cartridge interfaces (such as those found in video game consoles), removable memory chips (such as erasable programmable read only memory (EPROM) or programmable read only memory (PROM)) and associated sockets. , As well as other removable storage units 1322 and interfaces 1320 that allow software and data to be transferred from the removable storage unit 1322 to the computer system 1300.
コンピュータシステム1300はまた、通信インターフェース1324を含み得る。通信インターフェース1324は、コンピュータシステム1300と外部デバイスとの間でのソフトウェアおよびデータの転送を可能にする。通信インターフェース1324の例は、モデム、ネットワークインターフェース(イーサネット(登録商標)カードなど)、通信ポート、パーソナルコンピュータメモリカードインターナショナルアソシエーション(PCMCIA)スロットおよびカードなどを含み得る。通信インターフェース1324を介して転送されるソフトウェアおよびデータは、信号1328の形式をとり、該信号は、電子、電磁気、光学、または通信インターフェース1324によって受信可能な他の信号であり得る。これらの信号1328は、通信パス(例えばチャネル)1326を介して通信インターフェース1324に提供される。このチャネル1326は信号1328を運び、ワイヤまたはケーブル、光ファイバー、電話線、セルラーリンク、無線周波数(RF)リンクおよび他の通信チャネルを用いて実装され得る。 Computer system 1300 may also include a communication interface 1324. Communication interface 1324 enables the transfer of software and data between computer system 1300 and external devices. Examples of communication interface 1324 may include a modem, a network interface (such as an Ethernet card), a communication port, a personal computer memory card international association (PCMCIA) slot and card, and the like. Software and data transferred via the communication interface 1324 take the form of a signal 1328, which can be electronic, electromagnetic, optical, or other signal receivable by the communication interface 1324. These signals 1328 are provided to the communication interface 1324 via a communication path (eg, channel) 1326. This channel 1326 carries signal 1328 and may be implemented using wires or cables, optical fibers, telephone lines, cellular links, radio frequency (RF) links and other communication channels.
本文において、「コンピュータプログラム媒体」および「コンピュータ使用可能媒体」という用語は、概して、リムーバブルストレージドライブ1314、ハードディスクドライブ1312にインストールされたハードディスクなどの媒体および信号1328を指すために用いられる。これらコンピュータプログラム製品は、コンピュータシステム1300にソフトウェアを提供する。本発明は、そのようなコンピュータプログラム製品に向けられる。 In this text, the terms “computer program medium” and “computer usable medium” are generally used to refer to a removable storage drive 1314, a medium such as a hard disk installed in hard disk drive 1312, and a signal 1328. These computer program products provide software to computer system 1300. The present invention is directed to such a computer program product.
コンピュータプログラム(コンピュータ制御ロジックとも呼ばれる)は、メインメモリ1308および/または二次メモリ1310に格納される。コンピュータプログラムはまた、通信インターフェース1324を介して受信され得る。そのようなコンピュータプログラムは、実行されたときには、コンピュータシステム1300が本明細書に議論されたように本発明の機能を行えるようにする。特に、コンピュータプログラムは、実行されたときには、プロセッサ1304が本発明の機能を行えるようにする。従って、そのようなコンピュータプログラムは、コンピュータシステム1300のコントローラを表す。 Computer programs (also called computer control logic) are stored in main memory 1308 and / or secondary memory 1310. A computer program may also be received via communication interface 1324. Such computer programs, when executed, enable the computer system 1300 to perform the functions of the present invention as discussed herein. In particular, the computer program, when executed, enables the processor 1304 to perform the functions of the present invention. Accordingly, such a computer program represents a controller of computer system 1300.
ソフトウェアを用いて本発明が実装される実施形態において、該ソフトウェアは、リムーバブルストレージドライブ1314、ハードドライブ1312、または通信インターフェース1324を用いて、コンピュータプログラム製品に格納され、コンピュータシステム1300にロードされ得る。プロセッサ1304によって実行されるときには、制御ロジック(ソフトウェア)は、プロセッサ1304に、本明細書に記述されたように本発明の機能を行わせる。 In embodiments where the present invention is implemented using software, the software may be stored in a computer program product and loaded into a computer system 1300 using a removable storage drive 1314, hard drive 1312, or communication interface 1324. When executed by the processor 1304, control logic (software) causes the processor 1304 to perform the functions of the present invention as described herein.
別の実施形態において、本発明は、例えば、GPUなどのハードウェア構成要素を用いて、主にハードウェアに実装される。本明細書に記述された機能を行うためのハードウェアステートマシーンの実装は、当業者に明らかであろう。 In another embodiment, the invention is implemented primarily in hardware using, for example, hardware components such as GPUs. Implementation of a hardware state machine to perform the functions described herein will be apparent to those skilled in the art.
さらに別の実施形態において、本発明は、ハードウェアおよびソフトウェアの両方の組み合わせを用いて実装される。 In yet another embodiment, the invention is implemented using a combination of both hardware and software.
V.結論
概要および要約の章ではなく、実施形態の章は、請求項を解釈するために用いられることを意図するということを、認識されたい。概要および要約の章は、発明者によって意図されるように、本発明の、全てではないが、1つ以上の例示的な実施形態を述べ得る。故に、概要および要約の章は、あらゆる方法において、本発明および添付の請求項を限定する意図はない。
V. CONCLUSION It should be recognized that the chapters of the embodiments, rather than the summary and summary chapters, are intended to be used to interpret the claims. The summary and summary sections may describe one, but not all, of the exemplary embodiments of the present invention, as intended by the inventors. Accordingly, the Summary and Summary sections are not intended to limit the invention and the appended claims in any way.
Claims (4)
該方法は、
該インターフェースシステムが、該少なくとも1つのGPUにシミュレーション定義データを送信することと、
該インターフェースシステムが、該送信されたシミュレーション定義データに応答する該少なくとも1つのGPUからのシミュレーション結果を受け取ることと
を含み、
該シミュレーション結果は、プロセスの第1のステージおよび第2のステージの間に少なくとも1つのメッシュに関連した物理パラメータを該複数のメモリアレイにマッピングすることと、該少なくとも1つのピクセルプロセッサを用いて該メモリアレイ内のデータに対して演算を行うこととによって、該少なくとも1つのGPUによって生成され、
該演算は、
該第1のステージの間に、該少なくとも1つのメッシュに関連した第1の組の物理パラメータ間で相補的なジョイントに対して演算を行う第1の組の同一のレンダリングサブパスを実行することと、
該第2のステージの間に、該第1の組の同一のレンダリングサブパスの結果に基づいて、該第1の組の物理パラメータに対して演算を行う第2の組の同一のレンダリングサブパスを実行することと
を含む、方法。 A method for performing a physics simulation, wherein the method is performed by an interface system that communicates with at least one graphics processor unit (GPU) such that the at least one GPU communicates with a plurality of memory arrays. Is adapted and includes at least one pixel processor;
The method
The interface system sends simulation definition data to the at least one GPU;
The interface system includes receiving simulation results from the at least one GPU responsive to the transmitted simulation definition data;
The simulation results, the first stage and at least one mesh in the associated mapped child physical parameters to the plurality of memory arrays during the second stage of the process and, using one of the pixel processor the at least Generated by the at least one GPU by performing operations on data in the memory array ;
The operation is
Performing a first set of identical rendering sub-passes that operate on complementary joints between the first set of physical parameters associated with the at least one mesh during the first stage; ,
During the second stage, perform a second set of identical rendering sub-passes that operate on the first set of physical parameters based on the results of the first set of identical rendering sub-passes To do
Including the method.
該インターフェースシステムからシミュレーション定義データを受け取ることと、
該送信されたシミュレーション定義データに応答するシミュレーション結果を該インターフェースシステムに送信することと
を行うように適合されており、
該シミュレーション結果は、プロセスの第1のステージおよび第2のステージの間に少なくとも1つのメッシュに関連した物理パラメータを該複数のメモリアレイにマッピングすることと、該少なくとも1つのピクセルプロセッサを用いて該メモリアレイ内のデータに対して演算を行うこととによって、該少なくとも1つのGPUによって生成され、
該演算は、
該第1のステージの間に、該少なくとも1つのメッシュに関連した第1の組の物理パラメータ間で相補的なジョイントに対して演算を行う第1の組の同一のレンダリングサブパスを実行することと、
該第2のステージの間に、該第1の組の同一のレンダリングサブパスの結果に基づいて、該第1の組の物理パラメータに対して演算を行う第2の組の同一のレンダリングサブパスを実行することと
を含む、コンピュータ読取可能媒体。 A computer readable medium comprising instructions for generating at least one graphics processor unit (GPU) in communication with an interface system, wherein the at least one GPU is adapted to communicate with a plurality of memory arrays. And including at least one pixel processor, the instructions being adapted to create the at least one GPU when executed, the at least one GPU comprising:
Receiving simulation definition data from the interface system;
Transmitting simulation results in response to the transmitted simulation definition data to the interface system; and
The simulation results, the first stage and at least one mesh in the associated mapped child physical parameters to the plurality of memory arrays during the second stage of the process and, using one of the pixel processor the at least Generated by the at least one GPU by performing operations on data in the memory array ;
The operation is
Performing a first set of identical rendering sub-passes that operate on complementary joints between the first set of physical parameters associated with the at least one mesh during the first stage; ,
During the second stage, perform a second set of identical rendering sub-passes that operate on the first set of physical parameters based on the results of the first set of identical rendering sub-passes To do
A computer readable medium comprising:
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/491,169 US8666712B2 (en) | 2006-07-24 | 2006-07-24 | Physical simulations on a graphics processor |
US11/491,169 | 2006-07-24 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009521775A Division JP5616060B2 (en) | 2006-07-24 | 2007-07-20 | Physics simulation on graphics processor |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012099152A JP2012099152A (en) | 2012-05-24 |
JP5629704B2 true JP5629704B2 (en) | 2014-11-26 |
Family
ID=38894081
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009521775A Active JP5616060B2 (en) | 2006-07-24 | 2007-07-20 | Physics simulation on graphics processor |
JP2012028708A Active JP5629704B2 (en) | 2006-07-24 | 2012-02-13 | Physics simulation on graphics processor |
JP2012028709A Active JP5629705B2 (en) | 2006-07-24 | 2012-02-13 | Physics simulation on graphics processor |
JP2012188538A Pending JP2013020631A (en) | 2006-07-24 | 2012-08-29 | Physical simulations on graphics processor |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009521775A Active JP5616060B2 (en) | 2006-07-24 | 2007-07-20 | Physics simulation on graphics processor |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012028709A Active JP5629705B2 (en) | 2006-07-24 | 2012-02-13 | Physics simulation on graphics processor |
JP2012188538A Pending JP2013020631A (en) | 2006-07-24 | 2012-08-29 | Physical simulations on graphics processor |
Country Status (5)
Country | Link |
---|---|
US (1) | US8666712B2 (en) |
EP (1) | EP2069986B1 (en) |
JP (4) | JP5616060B2 (en) |
CN (1) | CN101542487B (en) |
WO (1) | WO2008013741A2 (en) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2429375A1 (en) * | 2003-05-22 | 2004-11-22 | Cognos Incorporated | Model action logging |
US8700366B1 (en) * | 2005-09-06 | 2014-04-15 | The Mathworks, Inc. | Variable transport delay modelling mechanism |
US7933858B2 (en) * | 2007-03-23 | 2011-04-26 | Autodesk, Inc. | General framework for graphical simulations |
US7636907B1 (en) * | 2007-05-24 | 2009-12-22 | Xilinx, Inc. | Balancing logic resource usage in a programmable integrated circuit |
WO2010041358A1 (en) * | 2008-10-08 | 2010-04-15 | 株式会社ソニー・コンピュータエンタテインメント | Game control program, game device and method for controlling game |
US8289327B1 (en) * | 2009-01-21 | 2012-10-16 | Lucasfilm Entertainment Company Ltd. | Multi-stage fire simulation |
ITBO20090385A1 (en) * | 2009-06-15 | 2010-12-16 | Surgica Robotica S R L | METHOD FOR INTERACTIVE IMAGE SIMULATION |
US9099866B2 (en) | 2009-09-01 | 2015-08-04 | Aden Seaman | Apparatus, methods and systems for parallel power flow calculation and power system simulation |
US20110081959A1 (en) * | 2009-10-01 | 2011-04-07 | Wms Gaming, Inc. | Representing physical state in gaming systems |
CN104658021B (en) * | 2009-12-25 | 2018-02-16 | 英特尔公司 | The graphic simulation of object in virtual environment |
WO2011078724A1 (en) | 2009-12-25 | 2011-06-30 | Intel Corporation | Graphical simulation of objects in a virtual environment |
US8271237B2 (en) * | 2010-02-02 | 2012-09-18 | Livermore Software Technology Corporation | Fully-integrated hexahedral elements configured for reducing shear locking in finite element method |
JP5242628B2 (en) * | 2010-05-06 | 2013-07-24 | 株式会社スクウェア・エニックス | A high-level language that improves programmer productivity in game development |
US9652201B2 (en) * | 2010-10-01 | 2017-05-16 | Adobe Systems Incorporated | Methods and systems for physically-based runtime effects |
US9535817B2 (en) * | 2011-06-10 | 2017-01-03 | Microsoft Technology Licensing, Llc | Application development environment for portable electronic devices |
US8413166B2 (en) * | 2011-08-18 | 2013-04-02 | International Business Machines Corporation | Multithreaded physics engine with impulse propagation |
US9378579B1 (en) | 2012-06-27 | 2016-06-28 | Pixar | Creation of cloth surfaces over subdivision meshes from curves |
US20140092102A1 (en) * | 2012-09-28 | 2014-04-03 | Nvidia Corporation | Circuit and method for dynamic cloth simulation and graphics processing unit employing the same |
CN103198233B (en) * | 2013-04-25 | 2016-05-11 | 李援朝 | A kind of interacting toys gyro analogy method and system |
CN103544727B (en) * | 2013-06-26 | 2017-02-15 | Tcl集团股份有限公司 | Scenario rendering and optimizing method, system and mobile terminal based on predict braches |
CN103426196B (en) * | 2013-08-30 | 2016-07-06 | 电子科技大学 | A kind of animation modeling method under fluid environment |
CN103425849B (en) * | 2013-09-04 | 2016-05-18 | 电子科技大学 | The emulation mode of the lower fluid of a kind of dynamic barrier impact |
US10915984B2 (en) * | 2014-01-21 | 2021-02-09 | Elektraglide Ltd | Method and system for interactive graphics streaming |
US10410312B2 (en) * | 2014-01-21 | 2019-09-10 | Elektraglide Ltd | Method and system for interactive graphics streaming |
WO2016016875A1 (en) * | 2014-08-01 | 2016-02-04 | Tata Consultancy Services Limited | Method and system for transforming mesh for simulating manufacturing processes and products |
CN107002606B (en) * | 2014-12-22 | 2019-08-27 | 大陆汽车有限公司 | For transporting the transmission equipment of simultaneously heat medium |
US10044800B2 (en) * | 2015-10-11 | 2018-08-07 | Microsoft Technology Licensing, Llc | Synchronization scheme for physics simulations |
GB2545508B (en) * | 2015-12-18 | 2019-04-10 | Imagination Tech Ltd | Controlling operation of a GPU |
GB2545507B (en) * | 2015-12-18 | 2019-07-17 | Imagination Tech Ltd | Controlling scheduling of a GPU |
EP3484674B1 (en) * | 2016-08-17 | 2021-07-07 | Siemens Aktiengesellschaft | Method and system for preserving privacy for cloud-based manufacturing analysis services |
US9990714B2 (en) | 2016-09-07 | 2018-06-05 | Simula Innovation As | Apparatus and method for global optimization |
US10249099B1 (en) | 2017-04-26 | 2019-04-02 | Kabam, Inc. | Providing error correction for particles of destructible objects |
CN107529638B (en) * | 2017-08-18 | 2018-05-11 | 浙江远算云计算有限公司 | Accelerated method, storage database and the GPU system of linear solution device |
US10885242B2 (en) * | 2017-08-31 | 2021-01-05 | Microsoft Technology Licensing, Llc | Collision detection with advanced position |
US11694384B2 (en) | 2020-10-30 | 2023-07-04 | Qualcomm Incorporated | Fast incremental shared constants |
US20220414285A1 (en) * | 2021-06-29 | 2022-12-29 | Landmark Graphics Corporation | Reservoir simulation utilizing hybrid computing |
US11586788B2 (en) * | 2021-07-02 | 2023-02-21 | Ansys, Inc. | Efficient shape-accurate finite element mesh visualization |
CN118570416A (en) * | 2024-07-30 | 2024-08-30 | 浙江凌迪数字科技有限公司 | Method and device for solidifying simulated cloth form, electronic equipment and storage medium |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050250083A1 (en) * | 1997-10-06 | 2005-11-10 | Macri Vincent J | Method and apparatus for instructors to develop pre-training lessons using controllable images |
US6067096A (en) * | 1998-03-04 | 2000-05-23 | Nagle; John | Method and system for generating realistic collisions in graphical simulations |
US6947044B1 (en) * | 1999-05-21 | 2005-09-20 | Kulas Charles J | Creation and playback of computer-generated productions using script-controlled rendering engines |
US6425116B1 (en) * | 2000-03-30 | 2002-07-23 | Koninklijke Philips Electronics N.V. | Automated design of digital signal processing integrated circuit |
US6876361B2 (en) * | 2001-03-15 | 2005-04-05 | Micron Technology, Inc. | Architecture for real-time texture look up's for volume rendering |
US7353149B2 (en) | 2001-04-25 | 2008-04-01 | Telekinesys Research Limited | Method and apparatus for simulating dynamic contact of objects |
US7363199B2 (en) | 2001-04-25 | 2008-04-22 | Telekinesys Research Limited | Method and apparatus for simulating soft object movement |
US20050122338A1 (en) * | 2003-12-05 | 2005-06-09 | Michael Hong | Apparatus and method for rendering graphics primitives using a multi-pass rendering approach |
US7421303B2 (en) * | 2004-01-22 | 2008-09-02 | Nvidia Corporation | Parallel LCP solver and system incorporating same |
US7847800B2 (en) * | 2004-04-16 | 2010-12-07 | Apple Inc. | System for emulating graphics operations |
US8134561B2 (en) * | 2004-04-16 | 2012-03-13 | Apple Inc. | System for optimizing graphics operations |
US7154500B2 (en) * | 2004-04-20 | 2006-12-26 | The Chinese University Of Hong Kong | Block-based fragment filtration with feasible multi-GPU acceleration for real-time volume rendering on conventional personal computer |
US7570267B2 (en) | 2004-05-03 | 2009-08-04 | Microsoft Corporation | Systems and methods for providing an enhanced graphics pipeline |
US7724258B2 (en) * | 2004-06-30 | 2010-05-25 | Purdue Research Foundation | Computer modeling and animation of natural phenomena |
-
2006
- 2006-07-24 US US11/491,169 patent/US8666712B2/en active Active
-
2007
- 2007-07-20 JP JP2009521775A patent/JP5616060B2/en active Active
- 2007-07-20 CN CN2007800347373A patent/CN101542487B/en active Active
- 2007-07-20 WO PCT/US2007/016421 patent/WO2008013741A2/en active Application Filing
- 2007-07-20 EP EP07810628.3A patent/EP2069986B1/en active Active
-
2012
- 2012-02-13 JP JP2012028708A patent/JP5629704B2/en active Active
- 2012-02-13 JP JP2012028709A patent/JP5629705B2/en active Active
- 2012-08-29 JP JP2012188538A patent/JP2013020631A/en active Pending
Also Published As
Publication number | Publication date |
---|---|
CN101542487B (en) | 2013-11-20 |
US20080021679A1 (en) | 2008-01-24 |
JP2012099153A (en) | 2012-05-24 |
CN101542487A (en) | 2009-09-23 |
US8666712B2 (en) | 2014-03-04 |
JP2013020631A (en) | 2013-01-31 |
JP2009545067A (en) | 2009-12-17 |
JP2012099152A (en) | 2012-05-24 |
WO2008013741A3 (en) | 2008-05-29 |
WO2008013741A2 (en) | 2008-01-31 |
EP2069986B1 (en) | 2019-04-17 |
JP5616060B2 (en) | 2014-10-29 |
JP5629705B2 (en) | 2014-11-26 |
EP2069986A2 (en) | 2009-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5629704B2 (en) | Physics simulation on graphics processor | |
EP2939208B1 (en) | Sprite graphics rendering system | |
Dorier et al. | Damaris/viz: a nonintrusive, adaptable and user-friendly in situ visualization framework | |
Greß et al. | GPU‐based collision detection for deformable parameterized surfaces | |
Rathke et al. | SIMD Parallel Ray Tracing of Homogeneous Polyhedral Grids. | |
US20240112397A1 (en) | Spatial test of bounding volumes for rasterization | |
Movania et al. | A Novel GPU‐Based Deformation Pipeline | |
Tian et al. | A multi‐GPU finite element computation and hybrid collision handling process framework for brain deformation simulation | |
CN103093496B (en) | A kind of graphics Simulation method and system | |
Va et al. | Real-time volume preserving constraints for volumetric model on GPU | |
Gribble et al. | Visualizing particle-based simulation datasets on the desktop | |
Sung et al. | Simulation of deformable objects using GLSL 4.3 | |
Salazar et al. | Cloth simulation using AABB hierarchies and GPU parallelism | |
Venetillo et al. | GPU-based particle simulation with inter-collisions | |
KR20050082377A (en) | Method and apparatus for integrated modeling of 3d object considering its physical features | |
An et al. | Research on Fast Collision Detection Algorithm Based on CPU Cache Technology | |
Chan et al. | Particle–mesh coupling in the interaction of fluid and deformable bodies with screen space refraction rendering | |
de Lucas et al. | Ultra-low power render-based collision detection for CPU/GPU systems | |
Jung et al. | Mesh deformations in X3D via CUDA with freeform deformation lattices | |
US10586401B2 (en) | Sculpting brushes based on solutions of elasticity | |
Revie | Designing a Data-Driven Renderer | |
Chang et al. | Deformable object simulation in virtual environment | |
Yalçın | Real-time simulation and visualization of deformations on heightfields | |
Zou et al. | A GPGPU-based collision detection algorithm | |
Романюк et al. | INTERACTIVE SHAPE MODELING USING FUNCTIONALLY DEFINED OBJECTS |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120213 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130212 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130218 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130517 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130812 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20131111 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20131114 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131211 |
|
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: 20140909 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20141006 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5629704 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 |