TW200525429A - Method and program solving LCPs for rigid body dynamics - Google Patents

Method and program solving LCPs for rigid body dynamics Download PDF

Info

Publication number
TW200525429A
TW200525429A TW093129560A TW93129560A TW200525429A TW 200525429 A TW200525429 A TW 200525429A TW 093129560 A TW093129560 A TW 093129560A TW 93129560 A TW93129560 A TW 93129560A TW 200525429 A TW200525429 A TW 200525429A
Authority
TW
Taiwan
Prior art keywords
matrix
lcp
constraint
iteration
row
Prior art date
Application number
TW093129560A
Other languages
English (en)
Inventor
Li-Hua Zhang
Richard Tonge
Dilip Sequeira
Original Assignee
Ageia Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ageia Technologies Inc filed Critical Ageia Technologies Inc
Publication of TW200525429A publication Critical patent/TW200525429A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/23Design optimisation, verification or simulation using finite element methods [FEM] or finite difference methods [FDM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features 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/60Methods for processing data by generating or executing the game program
    • A63F2300/64Methods 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/646Methods 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 for calculating the trajectory of an object
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/04Constraint-based CAD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/10Numerical modelling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computer Graphics (AREA)
  • Operations Research (AREA)
  • Geometry (AREA)
  • Algebra (AREA)
  • Evolutionary Computation (AREA)
  • Databases & Information Systems (AREA)
  • Processing Or Creating Images (AREA)

Description

200525429 九、發明說明: 【發明所屬之技術領域】 本發明係關於一種於一顯示系統中使運動和物件交互逼 真顯現之方法和程式。特別地,本發明關於一種用於解決 一類線性互補問題(LCPs )之方法與程式,該LcPs係於一 顯示系統内之剛體動態引擎運行過程中引起。本發明於傳 統系統,以及最近推出之並入一基於硬體之物理處理單元 之系統内得到應用。 【先前技術】 基於物理之動畫和模擬”(下文無論應用、顯示 之特殊方法、或與基於物理之資料相關之通信方式,這些 術語都可以互換使用)於過去三十年中已進行廣泛研究。 這些動畫於一應用領域(包括虛擬現實、電子/電腦遊戲、 科學模擬和機器人運動計劃)内非常有用。例如,遊戲開 發人員越來越多地採用基於物理之即時動畫來提升遊戲物 件交互之逼真性。整合至基於物理之即時動晝開發中者, 係剛體運動和交互之動態模擬。 術語“剛體”用以描述不發生變形之動畫物件。即使與 動晝所定義之其他物件或環境發生碰撞,它們亦保持堅 硬 剛體模擬包含一系列複雜之計算步驟,其引起動畫 實體和相關力|女照一套定義之物理規則或所言胃“約束,,, 以逼真之方式交互。剛體模擬器之一目的係最大程度地降 低或防止物件穿透。如果—個模擬器允許物體有很大之穿 透,那麼物體就失去了剛性之感覺。 96406.doc 200525429 現已證明,該基於物理之動畫(包括剛體模擬)之實際 開發係相當困難。對於簡單情況,可用連續之數學方法寫 出連續之真實生活問題,並用代數方法解決。學過高中物 理之學生就可以掌握這種方法。然,於代數解非常小之複 雜情況下,一剛體模擬器必須能夠處理接觸剛體之任何構 造情況。為此,選擇接近連續問題之離散問題。一離散問 題可用有限個資料來表示,並且可以離散時間間隔進行數 值計算(由電腦進行)。假如只於離散時間間隔内需要動畫 幀,則其係一種可接受之限制。 選擇一個接近足夠多類型之連績問題、並可由電腦即時 解決之離散模型’係很困難。如果離散模型選擇不當,可 能會發生不可接受之偏離最初連續問題之情況。例如,對 於一個不良模型,物件可能會無故到處跳,發生不能接受 之穿透,落入地板内,飛到無限遠處等。 至少於電腦遊戲之上下文環境中,連續問題之離散逼近 精度於某些範圍内並非特別重要。産生這種結果之原因係 於科學和工程中使用了不同之模擬技術,因此電腦遊戲動 畫不需要可推測。任何可接受之離散模型均係這樣。然, 雖然這種不太嚴格之要求比較容易符合即時約束要求,然 而,這並不能使數學問題難度有任何降低。 於創建一個適合運行基於物理之即時模擬系統時,必須 說明很多問題。例如,物件之幾何結構對於確定運動之物 理以及物件間接觸之物理起著重要作用。一個物件可以係 一單獨之剛體,如一椅子或房子,也可以由很多相連(例 96406.doc 200525429 如接合之)之實體組成,比 觸必須精確確定。已經證明 模擬物件,係一個難題,因 速度總不一致。 如-人體。物件間之碰撞或接 ,求解運動所需之方程來真實 為精確度(即真實度)和計算 除了防止物件/物件或物件/環境間發生穿透外,一個顯示 剛體動態運動和交互之系統亦必須考量物件之各種物理特 性。質量就係物理特性之-個例子。基於物理之動晝亦必 須忠實跟蹤和考量加於活動物件上之力。重力係力之一個 例子》—個與該顯示系統相關之剛體模擬器或“引擎,,亦 必須能産生模擬物件具有某種表面特性之假像,比如摩擦。 正如人們所希望者,由各種物件幾何形狀、物件和力閒 之交互以及物件約束之改變導致之複雜性之建模和模擬, 需要大量複雜之數學處理。然而,本發明所牵扯之數學處 理均係常規gp,本技術領域之普通人員都可理解本發明 牽扯之數學依據。本說明不適合也不需要教示整個剛體所 之數學原理。儘管如此,為建立_普通之描述性辭彙, 仍需要對數學模型進行一些討論。 人圖1例示了一執行基於物理特性之動畫顯示系統通常所 3之傳統資源之概念圖。於圖!中主要基於硬件之資源以實 .次肩不,而軟體資源則以虛綫顯*。本領域之普通技術人 負將會發現’這個例子中之硬體/軟體命名相對比較隨意。 ,如’ 6十算邏輯可按照系統設計者之意圖於軟體、硬佈線 或某些軟體和硬體之組合中充分實現。然,目前最佳實踐 所例示之硬體和軟體之間之某些邏輯差別於以下描述中係 96406.doc 200525429 有用。 於圖I中,一中央處理單元(CPU) 1 (例如一Pentium@ Μ處理器)及其相關驅動程式和内部記憶體都從一個相關 外部主3己憶體11,和/或一個或多個週邊13 (通常包括一個 顯示器)存取資料。術語“内部,,和“外部,,通常用於區 分系統_與其他計算元件有關之各種記憶體。這一區別顯 然相對地,因為大多數内部記憶體可變成外部記憶體。反 之亦然。然,一般而言,一内部記憶體通常與相關計算元 件位於同一晶片上,而外部記憶體一般則於一單獨晶片或 晶片組上實現。 一主應用程式4常駐主記憶體2和/或週邊13 (例如,一磁 片或光碟,一靜態記憶體設備如pR〇M、epr〇m或 EEPR0M,一遊戲控制臺或類似設備使用之盒式磁片等)。 主程序4通常採用一個或多個應用編程介面(Apis )訪問與 各種程式功能相關之專用軟體功能塊。一 API係一種易於理 解之編程技術,用於建立各種辭彙,一個軟體可藉由這些 辭彙調用”另一個軟體。術語“調用”(下文會經常用 到)廣泛描述了一個軟體導致另一個軟體産生檢索、存儲、 索引、更新、執行等操作之交互活動。 通常以指定包形式出現之資料指令(下文稱為“命令,,) 一般用於發起一個或多個軟體或硬體元件間之調用。一旦 收到合適命令,軟體就會以各種形式(包括宏代碼)執行 (即“運行”)。 實現基於物理特性之動晝之傳統顯示系統通常藉由功能 96406.doc 200525429 ^ 周用包括或並入了一個相關專用軟體,下文一般 、权體稱為-⑯理引擎”。—物理引擎可看成一資源 之有效集合,其包括於一主應用程式内實現逼真、實時(或 接近實時)物理效果之專門軟體。 、隨著目前對逼真性要求之不斷提升,實現如1>(^遊戲之程 式碼中已經加入了所謂物理引擎。事實上,最近已經出現 了開發物理引擎或所謂‘物理中間件,,之市場。HAV〇K、 athEngine、Novodex和 Mcqon Research等公司已經開發了 可由一主應用程式調用之專門軟體,以便將自然外觀、基 於物理之交互更好之融入到一主應用程式中。 於遊戲中採用物理引擎之前,係手工使遊戲物件動起 來 ^些動畫係回應用戶輸入而被觸發。例如,如果用戶 按了一個猛擊(punch )鍵,遊戲將作相應之猛擊動作。如 果用戶按了 punch鍵,同時站於一堆箱子旁邊,那麼箱子堆 就會翻倒。如果用戶按了 punch鍵,同時站於一個遊戲人物 之旁邊,那麼這個人物就會摔到地板上。 由於遊戲顯示之動畫動作係由一套預先晝出之動畫指 疋’因此’猛擊、翻倒之箱子和摔倒之人每次都將以相同 之方式移動。使用戶厭煩之同時,該動畫亦不考量動作之 上下文環丨兄。例如’如果用戶按牆壁旁邊之punch鍵,往往 不能阻止遊戲者之手臂穿過牆壁。如果用戶以前將車停於 箱子堆後面,箱子通常會穿過車。如果用戶猛擊懸崖旁邊 之一個人,被擊之人就會平躺於地上,並半懸於懸崖邊上, 而不會掉下懸崖。 96406.doc 200525429 這些問題通常藉由限制用戶之動作而在一定 心程!上得到 解決,例如不讓用戶開車、不允許用戶走到離牆一手臂長 之距離内、不允許於懸崖邊打鬥等。這些限制常常使用戶 感到泄氣。另一種解決問題之辦法係只為用戶動作之每個 可能組合生成結果動畫。然而,隨著可能之用戶動作數目 的增長,輸出之動畫數目也隨之增長。因此,由於遊戲複 雜性增大,與開發多動畫相關之成本也就非常高了。 只用動畫之遊戲係於完全受限之環境下開始運行,於這 種環境下,決不可能發生預先沒有設計之情況。於這種完 全受限之環境下,動畫繚製者緣製之動晝越多,産生之交 互就越多。相反,用基於物理之方法設計出之遊戲係以相 反之觀點運行,即物件起初係完全自由運動。例如,遊戲 設計者設計一個固定環境,並添加仍能使物件完全自由移 動之約束,然它們絕不能穿過該固定環境。於一個基於物 理特性之遊戲中,沒有理由不給用戶提供汽車,也沒有理 由阻止用戶猛擊懸崖邊之一個人,因此這些限制也決不會 引入。然而,於遊戲設計過程中,亦會添加其他一些約束, 因為大多數有趣遊戲都有一套規則。 遊戲没計者不給各物件都提供一套動畫,而為物件規定 一套物理屬性,例如質量、摩擦,於某些情況下甚至仍有 彈性。然後,物理引擎運用物理定律移動物件,就像它們 具有某些屬性一樣,以便不違反規定之約束。遊戲設計者 藉由決定將哪些力和力矩施加於物件上來並入基於物理特 性之影響’以回應用戶輸入。 96406.doc -10- 200525429 物理引擎必然包括一個適合計算剛體於一動畫内運動之 剛體動態引擎。正如熟悉本項技術之人士所意識到者,剛 體動態引擎通常構成較大物理引擎之一個方面。剛體動態 引擎和物理引擎内之其他效果引擎之間之精確編程和/或 資源界限係設計選擇之問題,人們希望剛體動態引擎利用 功能庫和/或由物理引擎和/或主應用程式提供之公共資源 之組合。 然而不幸之是,當前之物理引擎在一動畫場景内之物件 數量方面具有很大之局限性,特別是活動(即移動或交互) 物件之數量更是極其有限。基於物理性質之交互之真實直 觀圖像必須考量多個或所有物件上之約束。正如以上所指 出者,一個約束是對一個物件(例如門折頁、膝關節和用 鍵子栓住之狗)之可能運動或交互之限制。地形幾何結構 越來越複雜,導致物件與地形之間交互之模擬難度亦大大 增加。碰撞檢測和解決之難度也隨著物件表面幾何結構複 雜性(即’其表面細節)之增加而增大。 除了活動物件數目不斷增加外,最新型動畫和模擬亦需 要有越來越多之力施加於物件上。動晝中所用之每秒“時 間步數之增多對此提出了更高要求(即,即時更新具有 所有物件和力之動畫世界之頻率)。 而,在影響一基於物理之應用中逼真、即時動晝問題 之各個因素中,動畫剛體物件上之約束定義和合併是最難 二決之問題。事冑±,相對於牛頓運動定律之簡單應用而 曰,正是由於存在大量約束,才使得潛在之數學(數值分 96406.doc 200525429 析)問題尤難解決。 一通常稱作擴展協作方法”解決基於物理限制問題之 相對較久之、傳統方式使用拉氏乘子限制,該拉氏乘子對 應有效維持該模擬世界空間内之約束之力。如,見R.Bazel 與A,Barr之“基於動態約束之一模型系統,,(Pr〇ceeding in SIGGERAPH 1988, ν〇1·22, ρρ· 179-188 (1988))。在此種方 法中,該拉氏乘子造成大量使用之變量——接近翻倍用於 描述該動畫之變量。與一類似的缺少約束之動畫相比,該 與約束條件相關之變量之增加造成用於解算該動畫之計算 資源之八重增加。 該早期之用於剛體模擬之“基於約束”方式之性能,藉 由結合利用具有“稀疏”特性之矩陣優勢之數學方法而得 以改善’該矩陣用於表達動畫物件、力及約束。如,見 C.Lubich 等之 “ Mexx-numerical software for the integration of constrainted mechanical multi-body system” (Technical Report SC92-12, Konrad-Zuse-Zentrum fur Informationstechnik,(1992))。 另一种處理基於物理剛體動晝之方法擴展這些基於約束 之方法以處理物件閒之接觸。於一動畫中並入接觸典型地 藉由將該約束之動態等式公式化為一線性互補問題 (LCP ),其本質上係為一線性系統尋找一些滿足一定不同 約束之解。P·Lodestadt之”Mechanical system of rigid bodies subject to unilateral contraints5,(SIAM Journal of Applied Mathematics,42(2): 281-96(1982))係將該屆出問題表達為 96406.doc -12- 200525429 一 LCP 之早期論文代表。D.Baraff 之”Fast contact force computation for non-penetrating rigid bodies” (Proceedings of SIGGRAPH 1994, Vol.28, pages 23-34( 1994))後來解釋一 LCP解決演算法,該演算法由R.W.Cottle與G.B.Dantzig 於,’Complementary pivot theory of mathematical programming,’(Linear Algebra and application,1,(1996)) — 文發展而來。 早期LCP方法證實係不可靠者,因為不能保證在與 Coulomb摩擦接觸情況下存在解。實際上,就衆所周知之剛 提架構而言不存在滿足所有約束之接觸與摩擦力集。 D.E.Stewart 與 J.C.Trinkle 之” An implicit time-stepping scheme for rigid body dynamics with inelastic collisions and coulomb friction” (International Journal of Numerical Methods Engineering,(1996)) —文藉由建議一組合加速級 LCP與時間步進行以獲得一表達為速率與脈衝變量之LCP 方案,在一定程度上解決了這一困難。這一方法保證較大 級別LCPs之解決性,且後來由M.Anitescu與F.Potra 之’’Formulating dynamic multi-rigid-body contact problem with fricition as solvable linear complementary problems55 (Nonlinear Dynamics,14:231-47 (1997))。這兩篇文件均建 議使用Lemke算法解決LCPs。然,這兩種途徑於實時動畫 内使用時非常之慢,且可能具有很大之計算錯誤。 於一更近之文章一 2003年9月25日公佈之Smith等人之美 國專利申請第2003/0 179 205 A1號,提供一剛體模擬器, 96406.doc -13 - 200525429 其藉由使用應用於速率與位置參數而非一加速參數之 Murty算法解決LCPs。Smith等進一步建議一半隱含步驟之 使用,其中約束力藉由確保該約束函數之派生值為〇確定, 相比較之先前方法則要求第二派生值為0。 然,所有先前解決LCPs之途徑不適合實時應用,其中該 LCPs係由包含約束剛體之系統靠兩引起;除非這類系統在 尺寸與複雜性上有非常嚴格之限制。習知之方法簡單然很 慢。這種慢速通常由沒有效率之計算方法與不正確之資料 格式造成。 【發明内容】 本發明是在以往所有剛體間基於物理之交互之即時動畫 方法都失敗後産生。 一方面,本發明提供了 一種操作一顯示系統之方法,該 系統有一顯示器、一處理單元和一記憶體。該方法適合模 擬該顯示系統η個受約束影響之物件,這些約束去掉了㈤個 自由度(以下稱m為“約束之自由度,,)。該方法之特點是 定義並在記憶體中存儲了系統參數,其中,該系統參數定 義了這些物件以及作用在這些物件上之至少一約束。該方 法是在一個定義之時間步增量後,用預先設計之叠代下降 方法計算處理單元中更新之系統參數,這種叠代下降方法 適用於對系統參數所定義之線性互補問題(LCp ),這樣可 針對更新之系統參數來確定這些物件之動畫動作。 在相關方面,本發明提供了一種計算方法,該方法解決 形如f—LCPCbJM1]^)之線性互補問題(LCp),其中Lcp由 96406.doc -14- 200525429 該資料集包含向量 -與剛體動態特性有關之資料集得來 b、雅可比矩陣j和質量矩陣 該方法初始化並保持f,f是LCp之備選解。在每次叠代 中,該方法修改備選解,以便m度上更接近lcp之 最終解。在—個較佳實施例中’叠代連續進行,直到備選 解充分接近由一個預先確定之差閾定義之最終解。在另一 個實施例中,執行一個固定叠代次數。 初始化後,該方法為f賦一任意初始備選解fG,該備選解 在極限值1〇和hi之間之可行範圍内,或1〇< f〇<hi之間。然 後,該方法檢查終止條件。然後用預先設計之叠代下降方 法修改f°。該方法叠代到終止。 終止可由一固定叠代次數來定義,或滿足與該Lcp相關 之一組封裝條件。 仍是另一相關方面,本發明提供了 一種計算方法,以解 決一個來自一個資料集之線性互補問題(LCP )。該資料集 是相對於複數個剛體和一個或多個定義了剛體運動限制之 約束而定義。該方法是在一個最大固定時間段内,將一種 預先設計之叠代下降方法應用於來自該資料集之資料格 式。值得注意的是,該最大固定時間段允許顯示系統上之 剛體之動態交互實現即時動畫。 仍是另一方面,本發明提供了 一種叠代方法,以解決一 個形如LCP(b+Cf,A)之線性互補問題(LCP),其中c是一 個常量,f是每種方法叠代之任意備選解。該LCP得自一個 與剛體動態特性相關之資料集。該方法之特點是為一個初 96406.doc 15 200525429 始叠代0賦個任意、非負向量作為初始備選解fG。然後該 方法藉由為一個叠代X+丨定義一個後續備選解fX+1求解 LCP,這樣,對於所有大於零之fX,後續備選解严+1總是比 前一個備選解严更接近最終解。叠代一直進行,直到滿足 了一最終終止條件,這個條件既可以是執行一個最大叠代 次數,也可以是滿足LCP之一組封裝條件。 仍是另一方面,本發明提供了一種解決來自一個資料集 之線性互補問題(LCP )之計算方法。該資料集涉及複數 個動態交互剛體和複數個定義了複數個剛體運動限制之約 束。該計算方法包括從該資料集定義LCP資料,以及藉由 對泫LCP資料應用一種預先設計之叠代下降方法來解決該 LCP。 仍是另一方面,本發明提供了一個系統,該系統至少包 括一個處理單元、一個記憶體和包括一顯示器之複數個週 邊。該系統適用於模擬顯示器上之複數個物件之動作。存 儲在記憶體中之一程式導致該系統將一資料集存儲在記憶 體中。該資料集定義了該複數個物件之基於物理性質之特 點,以及該複數個物件之一動畫之一初始狀態。該程式亦 在圮憶體中存儲了約束參數。該約束參數至少定義了一個 約束函數,該約束函數至少約束動畫中之一物件之運動。 然後該程式按照約束參數,藉由對該資料集採用一種預 先设计之叠代下降方法在處理單元中計算速度和力參數, 這些速度和力參數定義了 一時間步之後之動畫狀態。 在一個相關方面,計算該速度和力參數之該處理單元包 96406.doc -16- 200525429 括该系統之一個通用中央處理單元(cPU)。換言之,該處 理單7L包括一個與該系統相關之專用物理處理單元 (PPU)〇 【實施方式】 對以往在基於物理之資料中產生之LCP時間有效解決方 法失敗之補充理解,成了本發明幾個較佳實施例之有用書 面描述。正如前面所討論者,以前已經提出過很多專門之 LCP “解算器”。 例如’考量開放式動態引擎(“ 〇de”)所採用之方法。 參見 http://opende.sourceforge.net/。這種方法實際上是
Dantzig所述計算方法之修改版。一面1〇xl〇塊磚之牆壁在 受到一個炮彈球影響後倒塌之動畫作為方便之性能基準。 可惜的是,這樣一個動畫之每個動畫幀(名義上為丨6nis ) 通常需要花幾秒甚至幾十秒時間用在一台配有lntel p4 2GHz微處理器之PC上運行之該〇DE解算器進行解決。很顯 然,這種解決不能實現一種倒塌牆壁之逼真、即時動畫。 倒塌牆壁之基於物理之動畫所蘊含之LCP問題僅係不能用 該ODE解算器充分快速地進行解決。當下一代物理動晝設 計LCP之大小從1 X 1到1 5000X 1 5000 (即LCP要足以模擬 3 2 X 3 2塊碑之牆壁之倒塌)時,這種性能瓶頸將很快變得更 為嚴重。 s亥LCP主要是一個組合問題’因為有^一些不連績之可能 解。對於一個大小為m之封裝LCP,該解是3m個可能解中之 一。這與大多數數學問題不同,它們的解是無限多個可能 96406.doc -17- 200525429 解中之一。假設有一個可能解,一個“備選解”,可用一 種比求解該LCP更簡單之計算來測試該備選解是否是真正 之解。因此,適合解決該LCP之一個非常簡單之計算方去 就是測試3m個備選解中之每一個,直到找到一個滿足$測 試之解。雖然這種未經測試方法從概念上解釋了該傳統 “有效集”方法,然它實際上並不是該LCP解決之有用方 法。當考量最壞情況時,這一點就更明顯了,即在找到一 個解之前,要檢查3m— 1個備選解。更特殊之情況,考量一 個與本發明能夠有效解決之那些問題大小差不多之問題, 即當m= 10000時,最壞情況下之測試次數將會等於31⑽〇〇, 或1 10 。如果每次測試要進行1 ms,那麼該計算方法將 需要5xl〇4751十億年來解決該最壞情況。 一個封裝LCP有3爪個備選解之原因是三種條件必須用於 m行約束中之每一個。這些條件指之固定高(❿― hlgh )、固定低(clamped low ) ”和“未固定 (unClamped) ” 。3m個備選解中之每一 : 個條件中之哪-個適合m行約束中之每一個來 一個標籤。例如,對於一個 〜山 7万、22LCP,一個可能之標籤 (固疋π,未固定)。這樣,唯一一個標籤定義一個有效 集0 文集類似於前述未經測試之方法,因為它們從^個備 試早集中選出備選解’直到找到一個解。然,與該未經測 2方法不同’有效集方法不從備選解集中順序搜索。在 母步,有效集計算方法都採用與“當前”考量到之備選 96406.doc -18- 200525429 解相關之標籤以確定下一步要進行測試之備選解。 —通常’給定當前備選解之該標籤,採用_種探索法來確 定下-個備選解來試試。雖然選擇了該探索法,這樣在平 均情況下可測試少量備選解,然在最壞情況下,仍然需要 測試所有3 m個備選解。 在個物理引擎之特殊應用中,要進行測試之備選解數 量疋有限的。當相對於一個即時顯示之幀速率定義最大 LCP解決時間時,這一點就特別明顯。因此,當在解決該 LCP以前達到最大解決時間日寺,傳統有效集方法通常採用 作為解進行測試之最新備選解。然而,利用有效集方法, 不能保證下一個備選解會比最新備選解更接近真正解。因 此,如果該搜索提前結束,就不能保證由該方法返回之該 備選解在任何地方都接近該真正解。甚至在更壞情況下, 如果該有效集計算方法以更多叠代次數重復進行,就不能 保證新解比原解更好。 與有效集方法相關之另一個問題是每個測試通常都涉及 很多大型的(m3)矩陣運算。即,如果㈤二丨⑻⑻,那麼每 次叠代之運算數目就與100003或一萬億成比例。雖然設計 者已經藉由改變允許之最大叠代次數控制了該方法之運行 時間,然由於每次叠代所用時間量大,因此這是一個非常 難以控制之機制。有效集方法常常需要大量之資料排列, 如基本之子矩陣運算。這些資料排列使有效集方法特別不 適合硬體之實現。 相反,我們預先設計之叠代下降方法保證了每一次叠代 96406.doc -19· 200525429 都使當前之備選解更接近最終解。一名設計者能夠(或願 意)分配到一個並入了本發明該方法之LCP解算器之時間 越多’該解算器所提供之最終解就越好。一名設計者可選 擇使叠代次數保持不變,而使該解之質量變化,或使所需 質量保持不變,而使該解時間變化。 且’按照本發明設計之一種方法之每次叠代所進行之運 算次數與m無關,並且相對較少--般小於100。這使得系 統設計者能夠非常精細地控制速度和質量之間之協調關 係。 考量上述開放式動態引擎所採用之該傳統有效集方法。 這種方法是Dantzig方法之延伸,其利用了以下三個有效集: N — { (f,u)\u>0,f = 1〇 }, = “f,u)\u<0J=hi J,以反 c = { (f,u)\u = 〇, l〇 <f< hi }。 适些有效集之計算用途與下面之
相鄰之矩陣行。 從數學角度可以看出,這 方程(4 )到(7 )所示之該 96406.doc •20- 200525429 繼續討論該ODE例子,如果在三個有效集中之任何一個 當中找到了一個資料行,那麼就可以找到一個精確定義與 4資料行相關之一個物件之位置和運動之解。一個精確解 將正確考量加在該動晝世界空間中之物件之所有限制條 件。因此,該ODE解算器藉由將所有合成資料行放入三個 有效集中之任何一個中來試圖解決該定義了 一個動畫世界 空間中之剛體之位置和運動之LCP。該計算方法逐行進行 計算,順序將每行定義為一個“工作行”,並藉由將每個 工作行放入一個有效集中來儘量求解。 然而,由於該封裝條件所引入之複雜性,導致該求解過 程根本不是簡單直接的。(注意,這些封裝條件是由加在該 動晝中之物件之約束之數學表達引起)。由於存在這些複雜 性,因此求解一個特定工作行之動作常常需要對以前解決 過之行進行大量之重新分類X作。實際上,以前解決過之 行可能需要在這三個有效集之間進行傳遞,以便正確求解 每個新之工作行。這個結果産生—種情況,即該0DE解算 器解決L C P所用之計算方法實際±是以非線性方式運行 之。 一個行在有效集之間之每次傳遞都需要解決另一個線性 系統。求解-個線性系統可能是一個非常耗時之過程。另 外,LCP解決之傳統方法需要對極大、極_密之矩陣進行 定義(即構建)、存儲和數學應用。例如,必須明確構建: 個非常大之系統矩陣八並將其儲存在記憶體中。在下文中, 要將這些大型之複雜資料格式用在計算操作中。因此,大 96406.doc -21 - 200525429 量矩陣/向量乘法運算必然反復進行。在—個即時顯示系統 中,一般之LCP解決之有效集方法不具有可接受之性能。 前面所述都是將該ODE解算器作為一個例子。然,所有 依賴於有效集之使用之計算方法都具有類似之缺陷。每種 方法都需要在每次叠代過程中解決一個線性系統、明確構 建和儲存系統矩陣,和/或進行複雜之計算運算。相反,本 發明沒有這樣之缺陷。按照本發明定義之一種計算方法沒
• 4類寺間和存儲m肖耗要求,能夠在精確解決之 同時即時運行,像那些由剛體動態特性之顯示所引起之 LCP 〇
計算那些受雙向約束(例如接頭等)以及單向約束“ 摩擦重力等)影響之物件(如剛體)之運動是最消岸 寺]資源之一種汁算,並對基於物理性質之即時動畫4 :慧方面提出了挑戰。簡而言之,傳統方法速度太慢,, 能太不可靠’不能創建複雜、即時、視覺逼真之動畫。^ :前面所指出者,一個剛體(移動或靜止)集合(一個或 多個)和-個作用在該剛體上之力之集合可有效變成一組 有界二次最小化數學模型問題,t將這些問題用合適之約 表達寺 般都稱為線性互補問題(LCP )。 LCP不只在基於物理性質之動畫中存在。例如,在經濟 遺域亦有LCP之例行應用。已經有很多傳統演算法應用在 很多技術領域之Lcp之解決中。 與以前應用之有效集方法不同者係,本發明至少在-個 目前較佳之實施例中充分應用了“預先設計之叠代下降” 96406.doc -22- 200525429 方法。術浯梯度預剛(gradient projection ),,可能亦可 用於對目前較佳之方法進行描述,這些方法用來求解基於 物理性質之LCP。 正如前面所私出者,由於該工作集之排列緩慢進行,因 此使有效集方法之解決變得很慢。對於每次叠代,至少有 個約束(即工作行)要加入到一個有效集中,或從一個 有效集中取出。因此’如果一個LCp之一個初始備選解中 之有效約束相對較少,而最終解中卻有很多有效約束,那 _ 麼就需要進打很多數學叠代以覆蓋該初始備選解到一個精 確最終解之間之所有解。因此,如果-個大型LCP之起始 點處之-有效集之成分與最終解中之成分差別很大,收斂 將很慢。所需要者係一個能夠使工作解在每次叠代過程中 承受合理變化之計算方法,和/或—個不需要明確維護工作 集之解決計算方法(如果需要的話)。 本發明充分利用了這種計算方法。下面將詳細介紹求解 與基於物理性質之資料相關之心之典型之預先設計之叠 _ 代下降方法。 繼續描述一個典型Lcp’假設一 _ “系統方陣”八,有 “nxn”個元素,一個實型n維向量b(無約束之速度)(下文 向量都用粗體標出)’補充問題包括查找滿;I以下方程⑴ 和(2)中給出之條件之n維向量χ (力)矛”(速度)。
AnxnXnx] + bnxj = u nM ( 1 ) U4 0,,UiXi=〇,對於、卜2, ·,η (2) 該LCP問題由LCP(b,A)給出。 96406.doc -23- 200525429 正如前面介紹者,剛體動態特性通常所用之LcP之推廣 就疋5亥封裝L C P。該封裝L C P問題從該標準l c: p之定義開 始’並增加兩個附加之η維限制1〇和W,即下限和上限,這 樣以下之方程(3)到(7)就可以成立。該比和…限制就可 視為針對基於物理性質之動畫之特定物理現象所定義之力 邊界或閾值。2003年9月25日Smith etal·發表之美國專利申 請案2003/0179205之主題將作為參考並入本文,其中描述 了一種選擇1〇和hi之方法。 + Vi-m, (3) Ιϋ^ ^ xi S h if (4) as Q /<j\ (6) ⑺ xt « hit ξ> s 0 l〇t <xt <hi( =>«=:〇 系統矩陣A可定義為A = JM·1]^,其中j是由該約束計算出 之雅可比矩陣(1階導數),M是該系統中之物件之質量和 慣量矩陣。求解一個LCP主要是查找滿足前述不等式和互 補性約束之線性系統之一個解之問題。 後面之解釋利用了一種有用之數學工具,即所謂“資料 求精。參見 C.C. Morgan 和 P.H.B. Gardiner 之 “ Data refinement by calculation (計算資料求精),,,八伽
Inf〇rmatlca,27:481_503,( 199〇 )。正如下面所述,資料求 精可用於幾個典型實施财1逐步求精一種適合咖之 更普通之計算方法,直到精練成_種適合剛體動態特性之 有效解決之計算方法。因此,下面將在—個適合大型、即 96406.doc -24- 200525429 時剛體動悲模擬之預先設計之高斯_希代爾(Gauss_Seidel) LCP解算器之上下文環境中詳細描述本發明。彳關一般高 斯-希代爾方法之描述可參見R.w. c〇ule et al.之“ 丁“
Linear Complementarity Pr〇blem (線性互補問題)”, Academic Press ’ Boston (波士 頓學術出版社)(1992 )。
為了例7F ’本發明所述之問題是—個精確預測或模擬 ‘V’個實體之位置和運動之問題’其中一個或多個實體具 有由約束限制之“m”個自由度。從數學角度上看,這個問 題和其組成資料分量可表達為矩陣< “行約束,,集合,其 中每個接頭或接觸定義了一個連接(即相關)兩個物件之 約束。圖2例示了從一個資料集合中選出之一個約束行2〇, 該資料集合用數學方法表達了很多物件和相關約束之間之 物理關係。即,如果其中一個給定,則可以開發出具有賦 過值之屬性(如質量和大小)之物件集合、約束集合(即 定義物件如何運動之一組規則)和描述性資料之一個數學 矩陣(或矩陣集合),其中,與行有關之值描述了一個自由 度上之一個物件。(圖2只例示了與X、…和J之資料相關 之-個行約束。這一資料集僅係舉例用,並不完全包括 “基於物理性質,,之描述性資料之全集用物理方法模擬 曰,其令雅可比矩陣J是叫固“m,,乘“6n,,階矩陣,這 疋 個稀疏矩陣,其中备個均Φ t + #中每個力束仃有兩組6個相鄰非零元 大二量ΓΜ是一個“6nx6n”階之分塊對角矩陣,分塊 八々、马6。系統矩陣A較佳地是一 _ “ 孕乂住疋個mxm”階對稱、正之半 96406.doc •25· 200525429 正定矩陣,在本發明中該系統不需要明確計算。 一方面,本發明是“預先設計者”,即從計算角度來看 適用於一個LCP。另一方面,本發明是“叠代的,,。一般 來說’可把叠代計算法看成是逐步求精一個備選解之方 法,直到充分接近該問題之最終解為止。另一方面,本發 明疋一種下降方法”,因為每次叠代都保證當前之備選 解更接近最終解。某些叠代計算方法是藉由考量“分裂” 該矩陣而實現。正如對一個系統矩陣所做之,如果A = B + C,則矩陣對(B,c )稱為是a之分裂矩陣。對於矩陣分裂 演算法之更多背景及其在LCP中之應用,參見R w c〇ule et al.之文章 “ The Linear Complementarity Pr〇blem(線性互補 問題)”,波士頓學術出版社(1992 )。 圖3之典型計算方法中進一步例示了本發明之“預先設 計”、“叠代 和“下降”特性。圖3所示 圖3所示之方法用於解決 LCP(b,A) 〇
方法返回到第3 1步。 不同之矩陣分裂(B,C)方案 導致適合求解LCP(b,A) 96406.doc -26- 200525429 之計算方法不同。其中,使B = L + D,L和D分別嚴格小於 A之三角陣和對角陣’叠代fx+1之分量由下式叠代得出: /广1 =max 0,//—β 6十= 1,·”讲, (8) 按照高斯-希代爾演算法,得出之計算方法就是預先設計 之叠代下降方法。 以下虛擬代碼例示了一種適合用固定(最大數)叠代步 (‘‘ numlterations”)實現預先設計之高斯·希代爾演算法之 簡單編程方法。 虛擬代碼舉例1 f, X 0, 0 while X Φ numlterations i:«0 while i Φ m //;= max(0,/X 汍 +(〇,)) r.= i + l u emhvhile x :« x + 1 endwhile 正如前面在方程(9)令明顯看到者,藉由系統矩陣A反 復乘以f’該預先設計之叠代下降方法是—種計算最密集型 (或计算支配型”)之方法。因此,只要能夠簡化或減 少這種計算方法之叠代步驟,那麼解決Lcp之速度將會增 大。在本發明之上下文環境中,可藉由引入一個輔助變數 來使用系統矩陣A之特殊結構,該輔助變數將會大大降低上 述主要計算之開銷。 雖然系統矩陣A實際卜县r _
、、 T U上疋二個獨立矩陣之數學積,然將A 表達成雅可比矩随_ 矩陴J和個雅可比/質量”矩陣JM之轉置
矩陣之積很方便,装中M 共T J疋義為J和質量慣量矩陣Μ·1之 96406.doc -27- 200525429 積,或 4 == where / *ΛΓι (ΐ〇) 現在引入一個稱為“輔助變數”之較佳之“ 6η”維新向 量變數“ ν”。一個耦合不變數根據雅可比/質量矩陣jM和備 選解f定義了輔助變數V,如下: V =(尸/7. (11) 辅助變數V可看成(即解釋)是動畫世界空間中之一個物 件之速度。重寫上面之方程(11 )(記住M·1對稱)得出: ν = ΛΤΐ*(/Γ/), (11,) 其中JTf是所加之衝量’以加強該約束。值得注意者是, 在這個特殊例子中,正確選擇耦合不變數,可提高按照本 發明設計之計算方法之效率。 以上之虛擬代碼例子1可如下修改,以並入由該耦合不變 數定義之輔助變數v之使用。 虛擬代碼舉例2 f, v, X := 0, 〇, 〇 while w Φ numlterations i:=0 while i Φ m (12) (13) := maxiO,^ ~a:1 (b. + {Jv)t)) v:=(,)7 i :=/ + 1 endwhile x :=x + 1 endwbile 以上計算步驟中之(bi+ (jv)i)亦具有物理解釋,即一個當 前約束行i之約束空間速度,或更正確說是行約束丨之約束違 反變化之速率。考量在每次叠代中£僅有一個元素變化之情 況,輔助變數V可以一種增量方式進行更新。這一認識使得 96406.doc -28- 200525429 工作虛擬代碼例子可進一步如下優化。 虛擬代碼舉例3 f, V, X 0, 0, 0 while χ Φ numlterations i:=0 while i Φ m new/ max(0, /厂 < (ft, + (Jv)i)) (H) π+d (臟/d (15) / := newf i := z +1 endwhile x := x + 1 endwhile 正如在上面之(15)中所看到之,“newf,,是一個向後職 給該當前備選解“fi”之一個中間值。因此,術語“ newf_fi,, 用於遞增更新輔助變數V。值得注意者是,虛擬代碼例子〕 中之方程(13)要求一個大型矩陣jM (6〇xm)與一個大型 向量、備選解f(m維)相乘。然,輔助變數v之使用使得虛 擬代碼例子3中之方程(15)可以用一個小向量縮放和加法 代替這一複雜乘法步驟。用一個簡單、縮放之向量加法步 驟(newf — fi)代替該複雜之大矩陣乘以大向量之步驟大大 減少了計算每次叠代所需浮點運算之數目。 按照本發明,可藉由利用該分矩陣之稀疏性進一步優化 該預先設計之叠代下降方法,該分矩陣構成了很多在該 LCP中表達之基於物理性質之資料。該雅可比矩陣了和雅可 比/質量矩陣#是稀疏矩陣之現成例子。將j和户之每一行考 量成一個“1x6”資料之方塊矩陣是很方便的,或 ^ = = I/" 4 …乂 山二 1,…,m 其中,心和JMij是6個向量,i和j分別表示行和列。對於通 96406.doc -29- 200525429 系由°玄σ十算方法按照本發明進行運算之該基於物理性質之 貧料,J之每一行都至少有2個非零塊,即至少有兩個&,』 =1,….η非零。 現在’我們將引入變數JC和JMC來分別表示J^uJM的“精 簡表達變數JC和JMC都是矩陣,其行和雅可比矩陣J之行 樣多,然僅有12列--這12列分成2個ό列的矩陣塊。因 此,精簡雅可比矩陣” Jc和“精簡雅可比/質量矩陣,, JMC的每一行都將只存儲雅可比矩陣J和少的相應行的兩個 非零塊’如下所示:
Jc
(17) '11
其中’ JCU和JMCij是6個向量。 k裏貝料求精需要-個索引函數1,其中i = —N’它為每—行產生2個非零塊的索引,這樣就可使m’j 和1聯繫起來,^與JMe和1聯繫Μ。謂作分類的二 j = I(i,2) 〇, otherwise (18) 的非I ^雅可比矩陣/ f量矩陣:Μ與雅可比矩陣】具有相序 的非零、‘構’因此有以下稀疏性表達。 96406.doc -30 - 200525429 ^Mi\^ j = I(i5l) ^Mij ^ ^Mil ^ J ~ I〇>2) 0, otherwise (19) 7亚做,1夕丨J 丁 J 口J利用 虛擬代碼舉例4 (;v, X ^ 0, 0, 0 while w Φ iiumlterations i» 〇 while i ψ m P〇) (21) (22) newf:® max(〇,y: v/(u) v/(/j) V/(/,2) ^ j]newf endwhlle x : ..= x + 1. endwhlle 值得注意的是,虛擬代碼例子4中例示的該計算方法 一個内部WHILE迴圈,該迴圈執行—個恒定的時間間^ 該唯-重要的計算步驟進—步包含兩㈤⑺、六元^積 和兩個(2 )、六凡素縮放向量加法。實際上,在—個基於 物理性質動畫的上下文環境中,該索引函數ι(ι,:η)具有明確 的物理含彡一一即,與該當前約束行相關的物件的“物件 ID。適合模擬物理約束物件運動的—個顯示系統的實際實 現需要為每個物件使用一個唯一的標識號(ID )。藉由在前 述索引函數中使用該物件ID,可從記憶體中有效檢索與該 物件相關的資料。 在該工作例子的上下文環境中,本計算方法的最後求精 允許LCP分解在每個約束、每次叠代中只使用52個浮點運 算(“ flops”)。而且,很多flops可在提供了合適硬體的情 況下並行執行。(例如,見普通轉讓並共同申請的美國專利 96406.doc -31 - 200525429 申清案[代理人摘要號:AGEIA-004])。 在即時動晝(例如電腦遊戲)中,重要的是每個動晝幀 (即時間步)的計算消耗相同的時間量’,或至少在預先確 定的最大時間量内發生。這種條件允許該動晝以一個恒定 的悄速率連續進行,該幀速率使該動晝質量穩定。為此, 與圖3例示的一般計算方法不同,虛擬代碼例子1到*例示的 方法不進行一個終止條件測試。相反,每一種典型方法都 採用外迴圈叠代步的一個固定(最大)數目,由 “numlterations,,的值定義。 然,這種方法可能導致該LCP解的總體質量逐巾貞出現偏 差。當這種逐幀質量偏差不能接受時,可增加一個終止步 驟或條件的附加評價。以下虛擬代碼例子顯示了虛擬代碼 例子5的更多修改如何實現這一點。 虛擬代碼舉例5 96406.doc 32- (23) 200525429 f, v, χ = 〇, 〇, 〇 //尋找起始最大非受限速度 max 14 = 0 ί-Ο while i Φ m if ((fi - ^ a < 〇) v (β ^ a > 0) v (/ < hi, a /; > l〇i A|^| > 7ta)) A^|> max^t. endtf i:33 i + 1 endwhik while i^ms < max_«) i - 0 (24) (25)
max: u ® 0 while i ψ m ne和 medQ〇itfr a:、 v/(u) v/(i,:= v/(u) +(細/-X)fc2)r f, := new/ ((乂 Λ%<0)ν (// < a />> /o^ a I > Thres)) a ^ | > maxw u Π1ΙΙΧ_ = ||^·丨 endif eBdwbile end while
前述方法中的終止條件評價是以上面的方程(4 )到(7 ) 定義的封裝LCP條件為基礎。然,可按照一種特殊計算方 法的合適終止測試使用任何類似條件。 為了總結前述内容的選定例示方面,本發明使用一種預 先設計的叠代下降方法來求解由基於物理性質的模擬資料 形成的LCP。將一種預先設計的高斯-希代爾演算法作為一 種目前較佳的實施例進行描述。 在一個相關方面,該預先設計的叠代下降方法定義為具 有個固定(或最大)叠代次數。將一個外WHILE迴圈描 96406.doc -33- 200525429 述為一個適合定義該固定,、 該固定計算叠代數目確保了一且代數目二編程方法例子, 的時間步内發生。換言之,—個LCP计异在~個預先確定 個終止條件測試可以廿A不丨 該計算方法内。 」以並入到 在另一個相關方面,利用_ ^ 1 ~個辅助變數和耦合不變數掛 该預先没計的叠代下降方法、、 婁對 订求和’以改進纟φ、㈣古管 率。利用正確選擇的耦人$ 、心I计异效 甲J祸σ不變數和辅助轡赵的加丄 義,該方法内的一個或多個主| 又數的—個相應定 飞夕個主要計算步驟可以表遠A 一 相對簡單的數學計篡 W 為個 間早的數予.十算—前述例子中的一 放向量加法。 心我没縮 力 -剛乃田’可利用構成該Lcp的基於物理 資料的稀疏特性來進-步簡化分解Lcp所需的計算。 發生的矩陣資料的簡化表達允許有效使用-個或多個索引 函二。當這種索引函數定義大小固定的資料格式時,可明 確定義一種持續時間固定的計算方法。 正如通篇所提及的一樣,本發明的一個重要目的是定義 適合求解與剛體動態特性相關的Lcp的有效計算方法,這 樣即時動畫就有可能實現了。換言之,只開發能夠精確求 解由基於物理性斗產生的Lcp的料算#法是不夠 的。該計算方法亦必須能以足夠大的速度運行以實現即時 動畫。 因此,在基於物理性質的動晝的上下文環境中,應盡可 能精確評價那些用數學方法表達該動畫物理環境的資料的 特性。這樣的評價是針對物理實現的考慮因素進行的,例 96406.doc -34- 200525429 如編碼效率、資料存儲要求和資料傳輸限制。 例如虛擬代碼例子4和5所例示 價分物理資枓M W π 十异方法可藉由精確評 物里貝枓的性質來進_步求精。考慮這些例子 y曰newf,,的計算需要反復使用該系統矩陣A。 ^先料A需要大量記憶體用來存儲,並料算速度相對較 慢0然’計算標量值 f僅雲 值_僅㊉要系統矩陣的對角it素的倒 數。這些矩陣資料W可以縣計算為統矩陣相 關向量” ϋ可作為-個長度為“心資料向量存储在辣 體中’因此避免了存儲和傳輸整個系統矩陣Α的要求。 存儲雅可比矩陣J所需的存儲空間可減少一半。如果我們 將一個“縮小了的矩陣,,JQ定義為: W ㈣1/2 (26) 則可以很容易地驗證JQ是否滿足以下關係: “从 (27) 藉由用各個形如JQ的縮小的矩陣來代替雅可比矩陣了和 雅可比矩陣/質量矩陣心,虛擬代碼例子5中例示的計算方 法可以得到改進,如以下虛擬代碼例子6所示。 虛擬代碼舉例6 f, v, X = 0, 0, 〇 while x < numlterations i = 0 while i Φ m «w/ > max(0, /;· 一 < (6,. + & · ό ‘·〜j J (28) V/W) := V/W) + (顧,_,·, (29) v/w) := v/(u) /-乂)fe)7 ⑽ ft := newf endwhile x := x+1 endwhile 96406.doc -35- 200525429 :方程(27)中定義的資料格式,虛擬代碼例子6例示 白’什异方法將與虛擬代碼例子5例示的計算方法具有相同 的收敏性。然,由於存储空間在虛擬代碼例子5例示的計算 方法的上下文環境中主要用來存儲矩陣】和&,因此,使用 形如縮小的㈣;Q (㈣糾σ;Μ)的㈣將以減少對並 丨個抓用了本發明的計算方法的剛體動態引擎的顯示 系統存儲空間的要求。當人們設想下一代動畫,以及“m” 值可能達到15_的大型比例系統的動畫時,這一點是非常 顯而易見的。 進一步值得注意的是,對於虛擬代碼例子6中例示的計算 方法’現在(含蓄的)將輔助變數v定義為:
Sf (31) 顯然’該新輔助變數的物理解釋不再與前面方程(H ) 疋義的物理釋意相同 '然’新的耦合不變數可認為是動畫 世界中的模擬物件的加權速度,每個物件的權丨(Μ)ι/2。 因此’進—步優化—種與其分數據格式相關的計算方法的 例子亦用於進-步例示—個有效耦合不變數的選擇和定 義0 毋庸置疑,虛擬代碼例子5中例示的計算方法可用一個縮 小的矩陣資料格式進行類似優化。 仍然在另一種方法中ρ盐 ^ 了错由並入一個或多個行過濾技 術來進一步優化前述計算方法。 觀察虛擬代碼例子4、5 :? 口 6 it? a ϊ _ & 3和6中例不的典型方法,人們應該 注思到’對於母個外叠代迪固, 1宜n设圈(即給出的每個例子中的 96406.doc -36 - 200525429 WHILE迴圈)’必須[‘m’,個約束行(即對於—個大型比 例模擬,最大為15000行)中的每一個叠代進行該計算。然, 在每個叠代過程中,可能有很多約束行已經收斂,或基本 上與前-步叠A (或前面的一組叠代)沒有太大變化。在 這種情況下,對這些約束行進行的計算對收斂到最終解的 過程作用不大U,計算這些“無作用,,約束行需要消 耗相當大的計算資源。 對於一個約束行中的Vl(i,WVi(i2)都變化的情況,就符合 這觀察、纟σ果。參見虛擬代碼例子4中的方程(2 1 )和(22 ), 或虛擬代碼例子6中的方程(29)和(3〇)。在輔助變數(即 速度分量卜⑴山和^⑶更新過程中^果新值和前一個值 之間的差別下降到-個預先確^的閾值以下,則該約束行 的計算跳到當前叠代中。 為確保這種行過濾在叠代最終收斂之前不至於過度,在 以下叠代過程中,處理不滿足封裝Lcp條件的約束行。可 藉由將-種仃過濾技術以及縮小的矩陣資料袼式並入到虛 擬代碼例子6中例示的方法,來定義在下面的虛擬代碼例子 7中例示的另一個典型計算方法。這個例子中,陣列 new—v—tag用來存儲所有物件的標籤,這樣就可為每個 物件確定v中與叠代有關的變化是否超過了預先定義的間 值、Thres 。最初,v中的所有變化都認為大於“丁, 即為陣列new—v—tag中的每個元素都賦一個值“丨”。 虛擬代碼舉例7 //初始化 96406.doc •37· 200525429 f, vt x - 0, 0, 0 new_v tag - 1 一 一 //尋找起始最大非受限速度 max_a«0 while \Φ m if = Μ λ 夂 < 0) v (β ^ hit a b( > 0) v (a^ > 1〇( ApJl > Thres)) a[^| > max_u (25) 'max_« = j^j endlf i 1 eiidwhile //如果max_u大於閾值,則繼續進行疊代 while {Thres < max_ u) i - 0 max u ^ 0 ^ //記住前一次疊代結果之標籤 cur vjug:new_v_tag — — //清除目前時間步之標籤 new v tag ® 0 white ί 細 //如果兩物件均有小改變,則跳過這行 if !(cu〇g[/(/,l)] || oir^jag[/(a)]) (32) continue to next / = /-1*1 endif Ui « hi ^ » v/(lVt> -f Jgn ♦ v/({. 2) newf := medllo丨,a:1 ψUph“) (33) Av:(”ew/_/;U (34) //檢查是否物件I(i,l)’s v有大改變 38-
96406.doc 200525429 if ΐΔνΙ^ > Thres //為物件I(i,l)設定標籤 new_v_tag[/(/,l)] = 1 endif ν/(Μ)-ν/(Μ)+Δν (35) (36) //檢查是否物件I(i,2),s v有大改變 if ΙΔνΙ« > Thres new_v_tag[/(z’,2)] = 1 endif V/(/,2) :=: V/(/,2) + /; := new/ (37) //檢查LCP封裝條件(4)-(7).若被檢查之行 約束沒有受限,則更新最大非受限I Ui I值
if((fi^l〇iAUi<0)v = ^ AW. >0)v (/. < hit a ft> loi λ |w.| > Thres)) ifjwj > maX-W max—w=|w,| . endif //若被檢査之行約束不滿足條件,則於 下次疊代時繼續計算行 new_v_tag[I(i,l)] = 1 new_v_tag【I(i,2)j = 1 ί:-Γ+1 endwhile endwhile 在前述例子中’收斂係由該LCP封裝條件和收斂閾值確 定,並滿足終止條件,對於最大|Ui|為(max—u<Thres)。在滿 足此終止條件的情況下,我們亦可以得出結論,即所有行 約束都滿足該LCP封裝條件,並終止該計算方法。值得注 意的是’最小改變閾值Thres可按照該計算方法的精度和速 度之間的理想協調來定義。如果需要更精確(或精密)的 結果’則该收敛閾值應選得相對小一些。相反,相對較大 96406.doc -39- 200525429 的收斂閾值將加速收敍。與一個類似的測試情況相比,利 用-種計算方法(如虛擬代碼例子6中例㈣方法 的運行不具有行過濾(即並入間值測試△ ^,。〈几…和△ v^fThres)方面的優點,測試結果顯示並入了行過遽的 方法最多可以實現五次性能改進。 “ 最近的測試情況是利用一種計篡 裡4异方法(如虛擬代碼例子7 中例示的方法)即時成功i軍# & 于成力運仃的。這種測試情;兄包括888 個剛體(即η = 888 )、5 1 70個垃奋若4:立, 川個接觸和産生的155 10個約束行 (即m=1551〇)的動晝。該收斂閣值“Thres”設為001。 在當前的-個較佳實施例中,行過遽是在適合求解Lcp 的合適方法内,用兩個具右“ 一 、有η個條目(即每個實體一位 元)而不是具有m個條目(即每個 仏、^ 、^ v I母個約束仃一位)的位表間接 進行的。這種進一步的戈# 4 ^的衣精大大簡化了計算方法(如虛擬 代碼例子7中例示的方法)的實現。 到本書面描述為止,個宁今、+ 假疋則述按照本發明定義的一種計 算方法的典型實施例已經在一 一 你·得統顯不系統(如圖1中例 示的一個概念圖)上運行。 k就疋說,顯示系統硬體上運 行的一個物理效應引擎5可以完全並入到-個運行-種按 照本發明定義的計算方法的剛體動態引擎6中 硬體可以是任何一種傳 于兄 寻、死幵y式,包括一台通用微型、小型 或大型電腦,或一個遊夠批生丨丨直 ^ 礙戲控制臺,或類似設備。並入了一 種按照本發明定義的杆复古、+ ^ 〇 ^异方法的剛體動態引擎將與主應用 程式4協同運行,並且诵為 I书又该主應用程式4控制。 在如圖4所示的一船泣 /爪転令’ 一個顯示系統將一組初始系 96406.doc -40- 200525429
按照該定義的約束和該系統參數的該初始(或以前的步) 狀態來計算和更新系統參數(43)。計算和更新了該系統4 數後’運行-個終止測試(44)。在収(YES) 一個終j 條件的情況下,該方法停止。在不滿足終止條件的情況下 该方法返回以增加該時間步(42)。 統參數儲存在記憶體中(40)。系統參數可以包括待顯示的 一個動畫中的複數個物件的大小和位置,以及其各自的初 始速度和作用在複數個物件中的一個或多個物件上的力 (如果有)。該顯示系統亦將存儲一組初始動晝約束(41)。 k之,该初始系統參數和約束以一個初始時間步從物理 方面”定義了-個動晝世界空間。初始化之後,基於物理 的即時動畫的顯示過程將以增加的時間步繼續進行(叫。 每個時間步增加後,與該顯示系統相關的一個或多個處理 器(即-個或多個CPU,包含-個或多個計算邏輯單元) 通常,主應用程式4將提供一個初始物件資料陣列和約
資料陣列。該資料將藉由該主應用程式和/或該物理引擎 操作被並入以創建'組相應的雅可比矩陣,計算該質量 :量矩陣、系統矩陣和相關資料分量,包括起初作用在 界空間中的物件上的力。 理:擎-ΤΙ明“和並入了 “更新Μ的系統參數後: ,引擎#的系統參數值可導出㈣主⑽程式、1 二記憶體上,作為實現該逼真視覺顯示系制 ==—部分。因此,雖_有顯示出來,然顯 動旦世界工間内的物件的位置和運動所 96406.doc -4J - 200525429 發明的該應用程式中是隱含的。 按照本發明定義的一種計算方法亦可在一個並入了一個 基於硬體的獨立物理處理單元的顯示系統上有效執行。 2003年2月申請的美國臨時專利申請案6〇/5〇7,527,和2〇〇3 年U月19日申請的相關非臨時專利申請案1〇/715,459、 10/7 15,370和10/71 5,440都採用相關示教實施例描述了這種
顯示系統。因此以下將會把這些普通轉讓、待定的美國專 利的共同主題作為參考並入本文 當按照本發明定義的該計算方法在一個並入了一個專用 PPU的顯示系統上運行時,該方法較佳地常駐該ppu並回應 從一個相應CPU接收到的命令在該PPU上運行。實際上,一 旦將初始系統參數從該主機CPU傳遞到該PPU,就可以在基 本上獨立於CPU運算的該PPU中計算剛體動態特性,因此可 從該CPU中釋放與物理性質相關的資料計算的負擔。該咖 和PPU都稱為處理單元。 地1門卞惶係舉例用
實際上,本發 現和應用,然不嚴格限制本發明的範圍 的範圍係由申請專利範圍。 【圖式簡單說明】 在圖中’相同之參考字元表示相同之元件。圖連同前、 讨論、後面之詳細描述和巾請專利範圍,描述了本 一較佳實施例。圖如下: 圖1係-能夠運行一根據本發明之計算方 系統之概念圖; 寻、、死顯η 96406.doc -42- 200525429 圖2係實現本發明所用之約束行集合之概念圖; 圖3係例示本發明一實施例之一流程圖;以及 圖4係另一流程圖,例示本發明之另一實施例。 【主要元件符號說明】 1 CPU 2 主記憶體 3 週邊 4 主應用程式 5 物理效應引擎 6剛體動態引擎 7 系統 20約束行 30〜31、33〜34、40〜44 步驟
96406.doc -43-

Claims (1)

  1. 200525429 十、申請專利範圍: 1 · 種操作一顯示系統之方法,該顯示系統有一顯示器、 一處理單元和一記憶體;該方法適用於顯示n個物件之一 動畫’該等物件於該顯示器上之m個自由度受到約束;其 包括: 疋義並將系統參數存儲至記憶體中,其中該系統參數 定義複數個物件,且至少有一約束作用在該複數個物件中 之一物件上; 增加一時間步;以及 立曰加。亥時間步後,用應用於一或多個線性互補問題 (LCP )之一預先設計之叠代下降方法計算該處理單元中 更新之系統參數,該LCP係與該系統參數相關定義者; 其中’該物件之動晝運動係由該更新之系統參數確定。 2·根據請求項丨之方法,其中定義並將系統參數存儲至記憶 體中之步驟包括: 定義形如LCP(b,A)之該LCP,其中系統矩陣a等於 JM !JT之乘積,其中雅可比矩陣〗係一之稀疏矩陣, 其中各行有兩組6個相鄰非零元素,其中質量矩陣“係一 6ηχ6η分塊對角陣。 3.根據清求項2之方法,其中該預先設計之叠代下降方法包 吕改進之鬲斯-希代爾方法。 4·根據明求項!之方法,其中該預先設計之叠代下降方法包 含一固定之最大叠代次數。 5·根據σ月求項3之方法,其中該預先設計之叠代下降方法包 96406.doc 200525429 3 一固定之最大叠代步數。 6. 根據請求項1 > t、土 盥員t方法,其中該預先設計之叠代下降方法係 "T變數相關定義,該耦合不變數係與-LCP資料 之叠:出’並定義一辅助變數;這樣,當在該預先設計 7, 降方法範圍内使用時,該輔助變數降低了計算 该更新系統參數所需之總體數學複雜性。 之方法,其中該改進之高斯·希代爾方法係用 统矩陳A h實現’該輔助變數讀與一耦合不變數和系 統矩陣A之形式相關選出; 二:=為—轉置雅可比矩陣/f量矩陣JM和-備選解 8,根據請求項6 一 彳,其中,該輔助變數包含一精確解釋 9柄棘:广個物件中之一或多個物件相關之速度之變數。 9,根據請求項7之古、土 &丄 ,,其中該輔助變數等價於與一約束相 關 < 衝量力,s ,,. 力個物件令之一或多個物件相對應之 負里矩陣之乘積: 10·根據請求項6之方φ 机 万法,其中該輔助變數之使用導致該預先 ^之叠代下降方法之主要數學計算表達為-標量運 Π·根據請求項1〇之方 量加法。 其中該標量運算包含一縮放之向 12 ·根據請求項7之 其中雅可比矩陣·1和質量矩陣jm分別 定義。叹°十之叠代下降方法内之縮小之資料矩陣格式 96406.doc 200525429 13·=請4 12之方法’其中該縮小之資料㈣格式主要 ^ 3行數分別等於J或JM中之行數,然僅有12列。 14·根據請求項7之方法,其中該預先設計之叠代下降方法包 含數學運算之-固定最大數目。 根據明求項14之方法,其中該預先設計之叠代下降方法 之主要運算包含兩個、6元素點積和兩個、6元素縮放 向量加法。 μ V 16.根據請求項丨之方法,進一步包含: 汁算該更新系統參數後,測試一終止條件;以及 按照-終止條件測試結果,或者結束該方法,或者返 回到增加該時間步之步驟。 17·根據請求項16之方法,其中該終止條件係與-定義該ΙΧΡ 之封裝LCP條件相關進行定義。 18·根據請求項2之方法,進一步包含: 由系統矩陣Α之對角元素之倒數計算固定長度之-系 統矩陣向量,並將該系統矩陣向量儲存於記憶體中;以及 採用得自該系統矩陣變數之該輔助變數之一種增加之 降低計算該更新系統參數所需之總數學複雜性。 項1之方法’其中定義並將系統參數存儲至記憶 ,^ , 、力束集,各行約束定義η個物件 中至少二物件之間之關係;以及 於計算該更新系統參數 之乂驟内,進一步包含測試行 、、勺束集中之每個行約束,节 士、+ 仃約束與一該預先設計之叠代 下&方法之每次叠代中之异 〒之取小改變閾值相關。 96406.doc 200525429 20·根據請求項19之方法,其中測試該行約束集中之每個行 約束之步驟進一步包含: 對於每個約束行,在該預先設計之叠代下降方法之一 當前叠代過程中’將每個約束行之糸統參數之_變化與該 最小變化閾值相比;其中在該當前叠代過程中,該變化不 降到了閾值以下時,忽略該由數學計算得出之約束列。 2 1,一種求解一 LCP(b + Cf,Α)格式之線性互補問題(Lcp )之 叠代方法,C係一常量,f係各叠代方法之一任意備選解, 其中該LCP由與剛體動態相關之一資料集得出,該資料集 包含一系統矩陣A ;且該方法包含: 分配一任意向量,作為一初始叠代〇之一初始備選解 f〇,該向量在由1〇和hi ( 1〇< f〇<hi )定義之一可行範圍内; 藉由定義一叠代X+1之一後續備選解fx+1求解該LCP, 這樣對於大於零之所有fx,該後續備選解严+1總比前一備 選解fx更接近該LCP之一最終解;以及 測試終止條件。 22·根據請求項2 1之方法,其中系統矩陣a包含一矩陣分裂對 (B,C),其中a=B+C,且B=L+D;其中L嚴格低於系統 矩陣A之三角部分,且D是與系統矩陣a之對角元素相關 之一向量。 23·根據請求項22之方法,其中系統矩陣A等於JM-1JT之乘 積’其中雅可比矩陣J係一 mx6n之稀疏矩陣,Μ係一 6n><6n 分塊對角陣。 24·根據請求項23之方法,其中求解該LCP之該步驟包含將〆 96406.doc 200525429 ==之高斯-希代_演算法遲圈應用料集中之資 25, 26- 27, 28. 29. 30. 31, 根據請求項24之方法’其中該 $ <回斯-希代爾演算法 之迴圈應用中固有之數學計算 乂 Πϊβ异法 係由系統矩陣A和一備選 解向量fi之相乘步驟控制。 根據請求項25之方法,進一步包含: J-比例向量加法步驟代替系統矩陣A和一備選解向 量fi之相乘步驟,如下: 表達系統矩陣A為雅可比/質量矩陣户,其中= M〜JT,其中“係一質量 、 ^ 貝1矩陴,J係一雅可比矩陣; 定義一輔助變數v為ν= Μ-1*πτη ·、, W U,Μ 及 並入輔助變數V至改進之高斯-希代爾演算法中。 根據凊求項21之方法’其中該測試終止條件步驟進一步 包含: 確定是否已經執行固定最大叠代次數。 根據請求項之方法,其中該測試終止條件步驟進一步 包含: 確定是否已經滿足一組封裝LCP條件。 根據請求項21之方法’其中該系統矩陣Α沒有詳細計算。 根據請求項29之方法’其中雅可比矩陣】、系統矩陣A和 雅可比矩陣/質量矩陣JM中至少之一於一縮小之資料矩陣 格式内之資料集内表達。 根據請求項3G之方法’其中該縮小之資料矩陣格式有— 固定大小。 96406.doc 200525429 32,根據請求項3 1之方法,其中該縮小之資料矩陣格式包含 一僅有12列之矩陣。 33·根據請求項29之方法,其中該系統矩陣a以一種固定長度 向量之形式在該叠代方法内功能使用,該固定長度向量 係與系統矩陣A之該對角元素相關定義。 34,根據請求項21之方法,其中該lcp於該資料集中表達為複 數個行約束,各行約束與一資料陣列及該資料集中之一 約束資料陣列定義; 其中,求解該LCP之步驟進一步包含: 迴圈確定該複數個約束行中之各約束行之收斂性。 3 5,根據請求項34之方法,其中於各叠代過程中,該叠代確 定該複數個約束行中之各約束行之收斂性之步驟進一步 包含: 藉由選定之約束行過濾該複數個約束行,該複數個約 束行與一最小之變化閾值相關; 其中,一選定之約束行不符合該最小變化閣值,忽略 從求解該LCP之步驟中選出之約束行。 種求解-線性互補問題(LCp)之計算方法,該來 自^料集,戎資料集與複數個動態交互之剛體和複數 個定義該複數個剛體運動限制之約束相關,該方法包括: 從遠資料集定義LCP資料;以及 應用一預先设计之叠代下降方法於該LCp資料運用以 求解該LCP。 3 7.根據請求項3 6之方#,甘+ & 。 貝之万,套其中在一最大固定時間段内發生 96406.doc 200525429 求解該LCP之步驟、 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 3 8,根據請求項3 6 束,且其中d其中該LCP資料包含複數個行約 °Λ 口疋最大時間段係與一固定之浮點運算t 數、母個約束、每次叠代相關定義。 3 9,根據請求項3 包含一…法’其中該預先設計之叠代下降方法 。3測试終止條件之步驟。 40·根據請求項39 之方法’其中㈣試終止條件之步驟包含 已經執行—固定最大次數之叠代。 41,根據請求項39之方法,其中 硇 具中°亥測试^止條件之步驟包含 42 —铺Γ已經滿足與該LCP相關之一組封裝條件。 .、統’其包含至少-處理單元、一記情 個包括—顯 匕隐體,及稷數 數個物件之運動,其包括: 擬^…複 下步:存於記憶體中之程式,該程式導致該系統執行以 義軸體中,其中該資料集為複數個物件定 態; 動畫之一仞始狀 儲存約束參數於記憶體令,其 一約击7χ、、巧果參數定義至少 、”數,該約束函數至少約束該動 動;以及 助1中之一物件之運 在一時間步後,在該處理單元中 狀態之速度和力參數; 仏義該動畫之 96406.doc 200525429 其中,該計算該速度和力參數之步驟包括按照該約束 參數對該資料集應用一預先設計之叠代下降方法。 43, 根據請求項42之方法,其中該處理單元包含一通用中央 處理單元(CPU)。 44, 根據請求項42之方法,其中該處理單元包含一專用物理 處理單元(PPU)。
    96406.doc
TW093129560A 2004-01-22 2004-09-30 Method and program solving LCPs for rigid body dynamics TW200525429A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US53795404P 2004-01-22 2004-01-22
US10/793,899 US7079145B2 (en) 2004-01-22 2004-03-08 Method and program solving LCPs for rigid body dynamics

Publications (1)

Publication Number Publication Date
TW200525429A true TW200525429A (en) 2005-08-01

Family

ID=34798883

Family Applications (1)

Application Number Title Priority Date Filing Date
TW093129560A TW200525429A (en) 2004-01-22 2004-09-30 Method and program solving LCPs for rigid body dynamics

Country Status (2)

Country Link
US (1) US7079145B2 (zh)
TW (1) TW200525429A (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7363199B2 (en) * 2001-04-25 2008-04-22 Telekinesys Research Limited Method and apparatus for simulating soft object movement
US7353149B2 (en) * 2001-04-25 2008-04-01 Telekinesys Research Limited Method and apparatus for simulating dynamic contact of objects
US7526456B2 (en) * 2004-01-22 2009-04-28 Nvidia Corporation Method of operation for parallel LCP solver
WO2007054755A2 (en) * 2004-12-03 2007-05-18 Telekinesys Research Limited Physics simulation apparatus and method
US20060262113A1 (en) * 2005-03-23 2006-11-23 Electronic Arts Inc. Computer simulation of body dynamics including a solver that solves for position-based constraints
JP4291306B2 (ja) * 2005-07-22 2009-07-08 株式会社日立製作所 数値計算ライブラリのチューニングパラメータ算出プログラム及び方法
WO2007102845A2 (en) * 2006-03-07 2007-09-13 Ageia Technologies, Inc. Method of simulating dynamic objects using position based dynamics
US8223155B2 (en) * 2007-04-27 2012-07-17 Sony Corporation Method for simulating large numbers of spherical bodies interacting
US8279227B2 (en) * 2008-04-04 2012-10-02 Sony Corporation Method for detecting collisions among large numbers of particles
US8405680B1 (en) * 2010-04-19 2013-03-26 YDreams S.A., A Public Limited Liability Company Various methods and apparatuses for achieving augmented reality
US9063882B1 (en) * 2010-09-09 2015-06-23 Sas Ip, Inc. Matrix preconditioners for simulations of physical fields
US9119655B2 (en) 2012-08-03 2015-09-01 Stryker Corporation Surgical manipulator capable of controlling a surgical instrument in multiple modes
US9226796B2 (en) 2012-08-03 2016-01-05 Stryker Corporation Method for detecting a disturbance as an energy applicator of a surgical instrument traverses a cutting path
KR102235965B1 (ko) 2012-08-03 2021-04-06 스트리커 코포레이션 로봇 수술을 위한 시스템 및 방법
US10614257B2 (en) 2013-02-22 2020-04-07 Navidia Corporation Parallel linear complementarity solver for rigid body dynamics
US10776532B2 (en) 2013-02-22 2020-09-15 Nvidia Corporation Modified effective mass for parallel rigid body simulation
US9875567B2 (en) * 2014-03-20 2018-01-23 Digizyme, Inc. Systems and methods for modeling
US10885242B2 (en) * 2017-08-31 2021-01-05 Microsoft Technology Licensing, Llc Collision detection with advanced position
US11270041B2 (en) 2017-09-25 2022-03-08 Nvidia Corporation Position-based dynamics simulation
US11170143B2 (en) * 2018-10-19 2021-11-09 Cmlabs Simulations Inc. Systems and methods for simulating multibody systems
CN116306043B (zh) * 2023-05-23 2023-07-28 北京云道智造科技有限公司 一种多体系统的求解方法、装置、电子设备及仿真方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0005750D0 (en) * 2000-03-10 2000-05-03 Mathengine Plc Image display apparatus and method

Also Published As

Publication number Publication date
US7079145B2 (en) 2006-07-18
US20050162433A1 (en) 2005-07-28

Similar Documents

Publication Publication Date Title
TW200525429A (en) Method and program solving LCPs for rigid body dynamics
CN113785330B (zh) 使用相异的目标动画数据来训练人物的强化学习
Narain et al. ADMM⊇ projective dynamics: fast simulation of general constitutive models.
Bender et al. A survey on position‐based simulation methods in computer graphics
US7616204B2 (en) Method of simulating dynamic objects using position based dynamics
Meyer et al. Interactive animation of cloth‐like objects in virtual reality
Bender et al. Position-based Methods for the Simulation of Solid Objects in Computer Graphics.
US7813903B2 (en) Fixed time step dynamical solver for interacting particle systems
House et al. Foundations of physically based modeling and animation
Xian et al. A scalable galerkin multigrid method for real-time simulation of deformable objects
TW200525374A (en) Parallel LCP solver and system incorporating same
Kikuuwe et al. An edge-based computationally efficient formulation of Saint Venant-Kirchhoff tetrahedral finite elements
US7526456B2 (en) Method of operation for parallel LCP solver
Spillmann et al. Inextensible elastic rods with torsional friction based on Lagrange multipliers
Karmakharm et al. Agent-based Large Scale Simulation of Pedestrians With Adaptive Realistic Navigation Vector Fields.
Wong et al. Dynamic interaction between deformable surfaces and nonsmooth objects
Weller et al. Inner sphere trees
Tournier et al. Velocity-based adaptivity of deformable models
Sobota et al. On building an object-oriented parallel virtual reality system
Kharevych et al. 3D physics engine for elastic and deformable bodies
Larsson Adaptive bounding volume hierarchies for efficient collision queries
Shi et al. GPU in haptic rendering of deformable objects
Liu et al. Anisotropic kernels for meshless elastic solids
Kaliappan Hierarchical Clustering for Enhanced Elastic Behavior in Clustered Shape Matching
de Sousa Rocha et al. An evaluation of a collision handling system using sphere-trees for plausible rigid body animation