0

「マトリョーシカ」または平凡な雪だるまの形をした単純な物理オブジェクトを作成したいとしましょう。私が見たように、私はそれを行うための2つのオプションがあります:
1. 2つの円(またはカスタム)ボディを作成し、それらを溶接ジョイントで接続するには、または
2. 2つの円(またはカスタム)形状で1つのボディを作成するには初期化。

問題は、CPU にとってより高価なのは、ジョイントで接続されたボディか、複雑な形状のボディかということです。オブジェクトが 1 つの場合はパフォーマンスの違いを感じないかもしれませんが、そのタイプのオブジェクトが多数ある場合はどうなりますか?
ジョイントが高価であることは知っていますが、カスタム形状のボディはより高価である可能性がありますか? Box2dFlash を使用しています。

4

2 に答える 2

1

雪だるまの胴体の 2 つの部分を互いに関連させて動かしたくない場合は、単一の胴体が適しています。とにかく衝突形状を手動で定義するのが理想的であるため、溶接を使用してもまったくメリットがありません。

次のように考えてください。(a) 溶接を使用する場合、衝突形状は、単一のボディの衝突ジオメトリの近似を作成した場合よりも複雑になります。選択に関係なく、複数の衝突形状、または単一の複雑な衝突形状のいずれかが必要です。溶接は単に余分なステップを追加するだけです.

とにかく雪だるまの体を動的にする必要がある場合 (分解または屈曲)、溶接または通常のジョイントが適しています。

于 2013-10-15T13:04:13.053 に答える
1

質問は CPU の使用に関するものなので、ジョイントはジョイントのない形状だけよりも多くの CPU を使用します。多くの場合、円の形状は多角形よりも効率的ですが、すべてではありません。CPU を最適化するには、できるだけ少ないボディとできるだけ単純なポリゴンを使用します。ポリゴンで定義された法線ごとに、オブジェクトが別のオブジェクトとオーバーラップしている場合、計算を実行する必要がある場合があります。円の場合、最大 1 回の計算が必要です。

余談ですが、すでにパフォーマンスの問題が発生していない限り、形状が CPU 使用量であるかどうかについて心配する必要はありません。代わりに、作成したシミュレーションがあなたが望むものであるかどうかを尋ねる必要があります。Box2D には、スムーズに実行するための多くの特殊なケースの最適化が含まれています。速度と位置の反復変数を設定することで、ティックごとの精度を下げることもできます。ジオメトリが非常に複雑でない限り、これはジオメトリよりもはるかに効率に大きく影響します。

于 2013-10-15T18:34:37.657 に答える