30

Box2dの剛体の定義は次のとおりです。

非常に強い物質のチャンクであるため、チャンク上の任意の2ビットの物質間の距離は完全に一定です。

そして、これはまさに私が2D(おそらく最終的には3D)、弾性、変形可能、壊れやすい、さらには粘着性のあるボディを作りたいので、私が望んでいないことです。

このコミュニティから抜け出したいと思っているのは、オブジェクトがどのように曲がり、壊れ、相互作用するかについての数学を教えてくれるリソースです。私はこれらのオブジェクトの分子的または化学的性質を気にしません、そして私が木、金属、ゴム、グー、液体、有機材料などの部分を計算する方法を検索しようとすると、これが私が見つけるすべてです。力を加えた後のように見えるかもしれません。

また、私は非常に視覚的な人間なので、図などは私にとって非常に役に立ちます。

================================================== ==============================

これらの質問は無視してください。古いものであり、文脈上の目的でのみここに保持しています。

1.このような単純な2Dソフトボディ物理エンジンはありますか?
できれば無料またはオープンソース?

2.そうでなければ、何年も費やすことなく自分で作ることは可能でしょうか?

3. bulletやbox2dなどの既存のエンジンを開始点として使用し、それらのコードを単純に変換できますか、それとも、1年間のプログラミング経験とbulletが3Dであることを考えると、後でさらに問題が発生する可能性がありますか?

4.最後に、別のライブラリを変換する場合、box2Dのすでに2Dコード、Bulletのすでにソフトコード、または両方のソースコードを混合するのが最善でしょうか?


ありがとう!

4

5 に答える 5

17

(1) Bullet と PhysX はどちらも、変形可能なオブジェクトをある程度サポートしています。Bullet はオープン ソースであり、PhysX は無料で使用できます。どちらも、Windows、Mac、Linux、およびすべての主要なコンソール用のポートを備えています。

(2) 自分が何をしているかを本当に理解しているなら、何かを一緒にハックすることができ、うまくいくかもしれません。ただし、Box2D のシーケンシャル インパルス制約ソルバーがどのように機能するか、およびシステムを安定に保つためにどのような手段が必要になるかについて十分に理解していない限り、バグが発生する可能性があります。とはいえ、ゲームのような環境内で最小限の手間で変形可能なオブジェクトを動作させる方法はたくさんあります。最初のオプションは、変形の 2 次 (またはそれ以上) の近似を取ることです。これにより、リジッド モーションを処理するのとほぼ同じ方法で変形を処理できますが、いくつかの自由度が追加されます。たとえば、次の論文を参照してください。

http://www.matthiasmueller.info/publications/MeshlessDeformations_SIG05.pdf

2 番目の方法は圧力ソフト ボディです。これは基本的に、ボディをいくつかの距離の制約と圧力力を持つ一連のパーティクルとしてモデル化します。これは PhysX と Bullet の両方が行うことであり、現在ではかなり標準的な手法です (たとえば、Gish が使用しています)。

http://citeseerx.ist.psu.edu%2Fviewdoc%2Fdownload%3Fdoi%3D10.1.1.4.2828%26rep%3Drep1%26type%3Dpdf

グーグルで検索すると、それを実装するためのチュートリアルがたくさん見つかりますが、それらの品質を保証することはできません. 最後に、現実的な弾性モデルと有限要素タイプのアプローチを使用して、変形可能なオブジェクトを「正しい」方法で実行しようとする最近の動きがあります。これはまだ活発に研究されている分野なので、気弱な人向けではありません。たとえば、今年の SIGGRAPH 議事録の論文をいくつでも見ることができます。

http://kesen.realtimerendering.com/sig2011.html

(3) おそらくそうではない。ただし、特殊効果のために 3D 物理エンジン (トップダウン タイプのゲームなど) で動作する特定の 2D スタイルのゲームがあります。

(4) 私が今言ったことに基づいて、あなたはおそらくもう答えを知っているはずです. あなたが冒険好きで、暇つぶしと学ぶ意志があるなら、私はそれを試してみてください!もちろん、最初は大変ですが、時間が経つにつれて簡単になります。さらに、新しいことを学ぶのはとても楽しいです!

一方、今すぐ結果が欲しい場合は、実行しないでください。かなりの時間がかかりますし、おそらく失敗するでしょう (たくさん)。ゲームを作りたいだけなら、既存のライブラリに固執し、それが提供する抽象化の上に構築してください。

于 2011-06-28T05:54:55.043 に答える
5

迅速かつ部分的な回答:

  • 剛体は、その特性によりモデル化が容易です ( 「Torseur+ (ウィキペディアのフランス語のリンク、ねじ理論に相当する英語のポイント)などの物理ツールを使用して、要素内の任意の点に適用される力をモデル化できます。
  • 対照的に、非固体要素はほぼ固体 (非常に硬いゴムを考えてください。動くことはできますが、ほぼ固体です) からほぼ液体 (非常に柔らかいゴム、ラテックスを考えてください) に変化します。その種類のオブジェクトに適用される動的プロパティは非常に複雑であり、オブジェクトの性質に依存することを意味します
  • ばねの例を見てみましょう: 独立してモデル化するのは簡単です (f=kx) が、その特定のケースをモデル化できる汎用ツールを作成することは悪夢です (特にコーナー ケースを考える場合: 伸長は無限ではなく、圧縮はより低い値に達します)ポイント、マテリアルは非線形です...)
  • 私の知る限り、「弾性」材料を扱うとき、人々は自分の目的のために独自のモデル化を行います(一般的なものは存在しません)

今答え:

  1. おそらくそうではありません、少なくとも私が知っているというわけではありません
  2. 簡単ではありません。前に理由を参照してください
  3. 弾性材料の高レベルのバックグラウンドを持っていない限り、それは苦痛になるのではないかと心配しています

これが役に立ったことを願っています

于 2011-06-28T05:14:33.327 に答える
2

必要な変形可能オブジェクトの複雑さによっては、box2d を使用してそれらをエミュレートし、ジョイントまたはスプリングで剛体を拘束できる場合があります。私は過去に xna (farseer) の box2d クローンを使用してそれを行いましたが、うまく機能しました。お役に立てれば。

于 2011-07-07T21:21:16.927 に答える
1

あなたの質問の物理学は、2 つの異なるトピックに分けられます。

  1. Inelastic Collisions : ここでの計算は簡単で、2D のポイント/ボールの作業をあまり行わなくても、かなりまともなライブラリを自分で作成できます。(さらに作業を重ねれば、拡張された物体の物理学を学ぶことができます。)
  2. 材料の曲げと破損: これは難しいでしょう。一般に、機械工学のトピックの多くをモデル化する必要があります。
    1. 連続体の力学
    2. 構造解析
    3. 故障解析
    4. 応力解析
    5. ひずみ解析

私は口下手ではありません。材料の曲げと破壊のモデリングは、一般に、非常に詳細で多様なトピックです。時間がかかります。成功する唯一の方法は、科学を十分に理解して、ゲームでモデル化する必要がある科学の範囲を制限する巧妙なショートカットを作成できるようにすることです。

ただし、問題の残りの半分 ( Inelastic Collisionsのモデリング) は、はるかに達成可能な目標です。

幸運を!

于 2012-10-04T20:57:25.833 に答える