2012-10-31 24 views
2

我試圖在網站上模擬繩索物理正確。繩索模擬html5

在搜索了網頁後,我的結論是我需要一個像box2d這樣的物理引擎?

如果我已經理解了正確的解決方案是將一個對象分割成小段,然後加入和動畫這些一起。另外,我想把物理和瀏覽器結合起來。這意味着什麼:當我快速滾動網站時,繩子必須以物理上正確的方式做出反應。

這是可能的嗎?

+1

你有什麼試過?這是一個非常具體的項目,沒有什麼細節或證據表明您已經耗盡了您的資源。從[box2d文檔]開始(http://box2d.org/manual.pdf) – Scrimothy

+0

雖然它可能很有用,但您並不一定需要一個庫,但我只看到過使用JS的示例。尋找_spring physics_因爲這就是你可能會用來製作繩子的東西。 – elclanrs

+0

是的,這是可能的。 – Shmiddty

回答

16

根本不需要庫。 您可以高興地使用對象,組件或程序代碼,以及對基本機械物理學和一些2D幾何(基本微積分可能有所幫助)的理解。

以優化的方式做它需要更多的工作。 以模塊化和可重用的方式做它會需要一些前期工程。

但是製作一根繩子,使繩子正常工作很簡單。

2D繩索將是一系列線段或「骨頭」。每個骨骼都可以在其關節周圍彎曲。

您可以將重力或任何其他力量應用於每個骨骼。
每個骨骼都有約束條件(與之相連的其他骨骼,上方和下方)。
因此,當你更新「繩索」時,根據之前和之後產生的約束來更新每個骨骼。
您可以創建一個錨點 - 將繩子的頂部固定到牆上,這樣無論其他骨骼如何移動,最頂端的骨骼都會圍繞其頂部關節樞轉,但不會移動到任何位置。

要將物理學應用於懸掛繩索的中間(如將其拉向中間,然後放開),可以使用反向運動學來解決對一個或兩個關節施加的力如何影響其他每個連接(和約束)接頭。

認爲它不像一條蛇,更像一輛自行車鏈條。
鏈條中的每個「鏈接」越短,繩索看起來越流暢,但處理時間越長。
鏈條中的每個「鏈接」越長,計算出的變化就越快,但當它彎曲時看起來更僵硬和塊狀。

查找「verlet的集成」,「運動學」(「前進」 /「反」),並有背後的旋轉數學的一個半體面的把握和移動沿着2D矢量對象...
一個小如果你想得到像鞭子般的東西的幻想,而不是隻是波瀾。

其餘的只是循環。

見一個基本的例子如下:
http://gamedev.tutsplus.com/tutorials/implementation/simulate-fabric-and-ragdolls-with-simple-verlet-integration/

和樂趣。