2

ビューで砂の粒子をアニメーション化する最良の方法は何ですか? 基本的には、iOS デバイスの画面を小さな砂のような粒子で半分埋めてから、ユーザーがデバイスを回転させたり振ったりして、砂の位置を指定できるようにしたいと考えています。

これまで物理プログラミングをしたことがないと仮定すると、チュートリアルを推奨したり、その方法を教えてくれたりできますか?

ありがとうございました、

クエリ。

更新: 私は今これに出くわしました(私のものは 2D である必要があります) - どうすれば似たようなものをアプリに持ち込むことができますか?

4

2 に答える 2

1

衝突をチェックするために最も近い粒子を見つけるために空間インデックスを使用し、力(加速度)-速度-位置間の遷移に統合手法を使用し、重力のみを外部フォースとして使用すると、サンドボックスが得られます。

衝突後検出を使用する場合は、粒子ポテンシャルから導出された適切な排除力を選択する必要があります。

Truncated Lennar-Jones ポテンシャルと Verlet-Integrator を使用することをお勧めします。ルンゲクッタよりも簡単で、オイラーよりも正確です。分子動力学で使われるからです。他の力を使う必要はありません。排除力、重力、壁力を使用するだけです。

シミュレーターに弾丸がある場合は、Euler-Integration を使用できます。これは、自由落下するが衝突しない砂粒子には許容できると思います。それらが互いに閉じた後、VerletまたはRunge-Kuttaを使用するとよいでしょう.

上記のすべては、統合ステップが非常に大きいため、エネルギーが保存されず、減少することさえあると想定しています。統合がエネルギーを節約するのに十分な場合は、粒子に摩擦力を与えて砂を遅くする必要があります。そうしないと、粒子がどこでも爆発します。

于 2012-09-15T17:36:51.773 に答える
0

iPhone で作成したい場合は、iPhone は水や砂を実際にシミュレートできないため、特定の最適化とトリックを考える必要があります。

あなたのトリックは、あなたの仕事のほとんどがシーンを描くことです.

Box2D で、砂の粒子の 10 ~ 20 倍のサイズのボールを使用してシーンを作成します。

iPhoneはそれをシミュレートできます。

次に、ボールごとに 10 ~ 20 個の砂粒子を描画する必要があります。

フレームごとに、ボールが他のボールと衝突するかどうかを確認できます。

ボールが衝突していない場合、これらの砂の粒子は空中にあるため、互いに一定の距離を置いて描画する必要があります。

ボールが他のボールと衝突する場合、パーティクルは一緒にレンダリングする必要があります

また、マージンを検出し、グライダーの砂の境界線を上にレンダリングすることもできます。

于 2012-09-16T18:35:44.490 に答える