2013-07-04 31 views
0

我正在研究繩索物理。我已經使用Revolute關節實現了一條繩索..使用旋轉關節打破繩索

我正在用繩索連接動態物體(通過b2RevoluteJoints).i成功創建它。現在我還在繩索的末端附加了一個動態物體。 &我將這根繩子向下釋放,現在不知何故,我的動態繩索體之間的關節被拉長,然後斷開,我想我的繩子看起來更平滑。

我的關節都是這樣

b2RevoluteJointDef revoluteJointDef; 
revoluteJointDef.bodyA = referenceBody;//provided by testbed 
revoluteJointDef.bodyB = lastLink; 
revoluteJointDef.localAnchorA = startPos;//world coords, because m_groundBody is at (0,0) 
revoluteJointDef.localAnchorB.Set(0,0);//center of circle 
world->CreateJoint(&revoluteJointDef); 


revoluteJointDef.bodyA = lastLink;//the last added link of the chain 
revoluteJointDef.bodyB = chainBase; 
revoluteJointDef.localAnchorA.Set(0,linkWidth);//the regular position for chain link joints 
revoluteJointDef.localAnchorB.Set(0,linkWidth);//a little in from the edge of the circle 
world->CreateJoint(&revoluteJointDef); 

有沒有什麼辦法讓強關節?

我們可以通過在世界的重力作用於身體的密度?

請幫助.....

+0

粗略地說,有多少個旋轉關節?在一個單一的繩 – IronMan

+0

hmmmm大約30轉動關節&2條繩索ř有..兩個繩索具有groundbody一端(grond的上緣)&另一端安裝有一個動態b2body掛在世界。 –

+0

繩索末端的身體多麼密集和多大? –

回答

0

我有一個類似的問題(但擺動繩子結束較大的物體的離心力)。爲了解決斷鏈/繩索的問題,您需要使較大的物體較不密集,但這會引發一個敲門問題 - 現在,您的「較大」動態物體被繩索正確保持,但不會與其他物體世界應該如此。

爲了解決這個問題,我做了一件有點哈克和執行將適用衝突的衝動,我的較大物體相撞就好像它是更重的東西我自己的衝突處理。所以......

  • 讓你的對象繩子極低密度的末尾,以便繩持有
  • 實現一些補充碰撞處理程序爲對象,以使它看起來像你的對象是更密集到其他對象(傳感器= true也可以幫助這一點)。

它不是嚴格物理模擬器的精神,我們應該能夠設置參數我們,讓規則照顧一切 - 基本上這將是很好,如果轉動關節是牢不可破的。