box2dで羽毛の落下をシミュレートする方法は?


10

私はBox2d拡張機能を備えたAndEngineを使用していますが、一般的な回答やコンセプトのアイデアも高く評価されます。

物理シミュレーションの一部にしたい2D側面図の世界に羽のようなオブジェクトがあります。「羽」をゆっくりと落とすために、線形減衰を使用しています。これは良い考えではないかもしれませんが、更新のたびに力を加える必要があるかもしれませんが、それでも機能し、オブジェクトが「軽く」見えるようになり、抵抗のある空気があるように感じます。

次に、オブジェクトを実際に羽毛のように見えるようにするにはどうすればよいですか?

具体的には、次の2種類のオブジェクトを探しています。長い低密度のオブジェクトは、ゆっくりと揺れる動きで下に移動する必要があり、四角形のオブジェクトは軌道をランダムに変化させるだけです。これが1つのシミュレーションであり、長さがパラメータであるとよいでしょう。オブジェクトが長いほど、より大きく振れます。現在、漫画の世界で羽、葉、雪片をシミュレートしたいと思います。

落下するオブジェクトのパス


2
スクリーンショットやコンセプトスケッチなどはどうですか。結局のところ、羽と見なすことができるものはたくさんありますが、ほとんどの場合、状況に応じて動作が異なります。
マリオ

詳細と画像を追加しました。
MartinTeeVarga 2013年

回答:


6

月面着陸のように、それを偽造する必要があります。フラッター、タンブル、渦による自転の物理は複雑です。この効果のシミュレーションに関する論文があり、それらはいくつかの素敵なJavaアニメーションを生成します

しかし、私はあなたの偽造品にさらに行き、動きをアニメートするために成長する正弦波のようなものを実装します。

ここに画像の説明を入力してください

もちろん、開始値、振幅と周波数の独立した増加率を微調整して、希望するものに近いものが得られるようにする必要があります。あなたはそれを面白くするためにいくつかのランダムさを投入したいと思うでしょう。さらに、例が示すように、表面積が非常に大きい非常に軽いオブジェクトは、実際には波の端近くまで上がる可能性があります。そのため、特定の振幅を超える波は、上限値が小さく、掃引値を考慮に入れ始める必要があります。

オブジェクトの質量が小さく、表面積が大きいほど、正弦波の振幅と周波数が大きくなります。質量が大きく表面積が少ないほど、振幅と周波数が低下します。


3
** 共謀者 **
Mikolaj Marcisz 2013年

わかりましたので、2つの機能を持つことができます。水平方向の動きを制御する正弦波を成長させ、次に垂直方向の動きを制御し、おそらくオブジェクトの中心からの距離に依存し、動きを中断するキャップを持ち、それを送り返してください...私に力を与えるそのような複合機能を理解した場合、どのように力を適用しますか?エンジンの各ティックで、経過時間に基づいて少しですか?以前は、box2dを実際に使用したことはありません。
MartinTeeVarga 2013年

そのような音はうまく機能し、重力で残りを処理します。力を処理する方法はいくつかあります。おそらく、あなたが言うように経過時間に基づいて、エンジンの各ティックにあります。それらは衝撃的な力であり、そのフレームにとって瞬間的なものです。詳細については、この質問を参照してください(質問のようにCocos2Dを使用していない場合でも同じです)。
MichaelHouse
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.