タグ付けされた質問 「physics-engine」

衝突、力、質量、関節、運動などの物理をシミュレーションするためのソフトウェア。物理エンジンの例は、PhysX、Havok、Bullet、ODEです。


8
決定論的な物理シミュレーションを実行するにはどうすればよいですか?
私は、プレイヤーがパズルやマップを解くためにピースやパーツを動かす剛体を含む物理ゲームを作成しています。ゲームの非常に重要な側面は、プレイヤーがシミュレーションを開始すると、オペレーティングシステム、プロセッサなどに関係なく、どこでも同じように実行されることです。 多くの複雑さの余地があり、シミュレーションが長時間実行される可能性があるため、物理エンジンがその浮動小数点演算に関して完全に決定的であることが重要です。別の「失敗」。 ゲームでこの決定論を実現するにはどうすればよいですか?Javascript、C ++、Java、Python、C#など、さまざまなフレームワークと言語を使用したいと思っています。 Box2D(C ++)と他の言語の同等物に惹かれましたが、それは私のニーズを満たすようですが、特に三角関数の場合、浮動小数点の決定論に欠けています。 私が今まで見た中で最良の選択肢は、Box2DのJava同等物(JBox2D)です。多くの操作でStrictMathはなく浮動小数点の決定論を試みているMathようですが、ゲームをまだ作成していないので、このエンジンが必要なすべてを保証するかどうかは不明です。 ニーズに合わせて既存のエンジンを使用または変更することはできますか?または、自分でエンジンを構築する必要がありますか? 編集:誰かがそのような精度を必要とする理由を気にしない場合は、この投稿の残りをスキップしてください。コメントと回答の個人は、私がすべきでないことを求めていると信じているようです。そのため、ゲームがどのように機能するかについてさらに説明します。 プレーヤーには、障害物と目標が含まれるパズルまたはレベルが与えられます。最初は、シミュレーションは実行されていません。その後、提供されたピースまたはツールを使用してマシンを構築できます。スタートを押すと、シミュレーションが開始され、マシンを編集できなくなります。マシンがマップを解決した場合、プレイヤーはレベルをクリアしています。それ以外の場合は、停止ボタンを押してマシンを変更し、再試行する必要があります。 すべてを決定論的にする必要がある理由は、各ピースの位置、サイズ、回転を記録することにより、すべてのマシン(レベルを解決しようとするピースとツールのセット)をxmlファイルまたはjsonファイルにマッピングするコードを作成するためです。その後、プレイヤーはソルブ(これらのファイルで表されます)を共有して、ソルブの検証、相互の学習、競技会の開催、コラボレーションなどを行えるようになります。もちろん、ほとんどのソルブ、特にシンプルまたはクイック決定論の欠如の影響を受けません。しかし、本当に難しいレベルを解決する低速または複雑な設計は、おそらく最も興味深いものであり、共有する価値があると思われる設計です。

6
2D物理エンジンを構築するにはどうすればよいですか?[閉まっている]
ここで何が尋ねられているかを伝えるのは難しいです。この質問は曖昧、曖昧、不完全、過度に広範、または修辞的であり、現在の形式では合理的に答えることができません。この質問を明確にして、再開できるようにするには、ヘルプセンターに アクセスしてください。 6年前に閉鎖されました。 私が作った最も高度なゲームは、物理エンジンBox2dFlashAS3で作られた8ボールプールゲームとレベルのあるプラットフォームゲームです。 プラットフォームゲームをするとき、エンジンを再利用できるように、エンジンの作り方を常に知りたいと思っていました。斜面、曲線の斜面、完全な重力、現実の物理学を備えたゲームを見たとき、エンジンのコーディング方法を知っていたらと思っていました。 関連する知識ベースが必要な場合は、テクニックや記事を提案してください。

7
XNA用のいくつかの既知の2D / 3D物理エンジンとは何ですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 6年前に閉鎖されました。 XNAプロジェクト(2Dまたは3D)で使用する物理エンジンを探しています。XNA用であるため、いくつかの要件を満たす必要があります。 必ずしも無料ではありませんが、それに近いことが明らかに好まれます マネージコードのみ(または360では実行されません) 3Dの場合-BulletX(動作し、現在使用していますが、アクティブではなく、より多くの作業を使用できます) 私が知っている2Dの場合-Farseer
20 c#  xna  physics-engine 

4
オープンソースのJavaScript 3D物理エンジンは存在しますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 WebGL、HTML5、およびJavaScriptを使用したWebベースの3D FPSゲームに取り組んでいます。WebGL対応ブラウザがインストールされたPCおよびネットブックを対象とすることになっています。 JavaScriptで記述された既存のオープンソース3D物理エンジンがあるかどうか疑問に思っていますか?

5
なぜ蓄積を統合するのですか?
私は物理学をDIYする方法を学び始めており、最も基本的なレベルで統合を実装することについて質問があります(つまり、これはオイラー対RK4の質問ではありません)。 私が遭遇するほとんどすべての例にintegrate()は、最後の更新以降のタイムステップを取得し、最後の更新以降の加速度(および/または速度および/または位置)を更新する関数があります。 最も単純な形式: position += velocity * deltaTime ただし、関数を変更するだけで簡単に取得できるのに、なぜこのように蓄積されるのかわかりません。たとえばgetPosition = makeNewFunction()、のシグネチャを持つ何かを返す可能性がTime -> Positionあり、その関数の内部動作は適切な数式を介して生成されます。 そうすれば、蓄積はありません...位置を取得する必要があるときはいつでも、現在の時間でその関数を呼び出します。 私の初心者の理解では、これは蓄積から生じるエラーも回避するということです...それではなぜこれが機能しないのですか、何が欠けていますか? (私はこのアイデアの概念の基本的な証明をまとめましたが、同時にいくつかの他のこともテストしているため、最もクリーンな例ではありません:https : //github.com/dakom/ball-bounce-frp) 編集1:コメントで述べたように、加速の変更についてはまだ学んでいないこと、または加速度を一定にするよりも高次の積分を必要とするジャークやその他のことを扱ったことを指摘することはおそらく重要です。 EDIT 2:ここでのアイデアのいくつかの基本的なサンプルコードで、擬似JavaScriptシンタックス-ノートgetKinematicPositionされ、部分的に適用され、それはちょうど時間の新機能戻っているので- >位置を: 私はここでの位置に固執していますが、それは他の何かかもしれませんgetVelocity。 getKinematicPosition = initialVelocity => acceleration => time => ((.5 *acceleration) * (time * time)) + (initialVelocity * time); getPosition = getKinematicPosition ([0,0,0]) (GRAVITY); onTick = totalTime => …

3
衝突検出は常にO(n ^ 2)ですか?
物理エンジンは、たとえば、互いに近くにあるオブジェクトをグループ化し、すべてのオブジェクトではなくこのグループ内の衝突をチェックすることにより、その複雑さを軽減できますか?(たとえば、他のオブジェクトからの速度と距離を調べることにより、遠いオブジェクトをグループから削除できます)。 そうでない場合、球体(3d)またはディスク(2d)の衝突は簡単になりますか?ダブルループを作成するか、代わりにペアの配列を作成する必要がありますか? 編集:弾丸やbox2dのような物理エンジンの場合、衝突検出はまだO(N ^ 2)ですか?

3
力との衝突の解決
2D物理エンジンでは、AABBとAABBの衝突を検出し、最短の貫通ベクトルを見つけてAABBの位置に追加することでそれらを解決できます。 これを行うと、最初のAABBが2番目のAABBの外側に「プッシュ」されますが、速度/加速度の変化はまったく処理されません。 シミュレーションに重力加速度を追加すると、最初の動的AABBの速度は、2番目の静的AABBの上にある場合でも増加し続けます。最終的に、速度が大きくなりすぎて衝突が検出されなくなります(動的なAABBは静的なAABBを通過します)。 解像度後に速度をゼロに設定しようとしましたが、明らかにうまく機能せず、非現実的なシミュレーションを作成しました。 オンラインで読んだところ、位置を手動で操作して衝突を解決したり、速度が正しくなかった。私は力を実装しようとしました(今のところ、質量は「ハードコードされた」1です): void Body::applyForce(sf::Vector2f mForce) { acceleration += mForce; } void Body::integrate(float mFrameTime) { velocity += acceleration * mFrameTime; position += velocity * mFrameTime; acceleration = {0, 0}; } 衝突の解決中に最短の貫通ベクトルを力として適用すると、動的なAABBは静的なものから「押し出され」ますが、その速度は重力のないシミュレーションでは決して低下せず、永遠に動き続けます。 「一時的な」力を適用する方法はありますか?最初のAABBを2番目のAABBから押し出し、その後AABBが衝突しなくなった時点で停止する力。 ここで利用可能なソースコード全体:https : //github.com/SuperV1234/SSVSCollision

1
固定小数点ポータブルオープンソース3D物理エンジンはありますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 2年前に閉店。 固定小数点3D物理エンジンを探しています(基本的なキネマティクスと衝突検出-解像度...あまり凝っていません。) 浮動小数点ユニットのない携帯電話や携帯ゲーム機などのデバイスでゲームの移植性が高いことを期待しているため、再現性の目的で決定論的な結果が得られ、移植性が高いため、固定小数点演算が必要です。

4
物理エンジンで小さなオブジェクトをどのように処理する必要がありますか?
サイコロを投げるための3D物理エンジンを作成しています。これまでのサイコロは1x1x1mで、重力は9.82 m / s ^ 2でした。もちろん、これは現実的ではありません。サイコロがすべてに少し反応するように反応するからです。 これを修正するために、サイコロが一辺に沿って約0.02mになるようにすべてのサイズを変更しようとしました。これにより、逆質量と逆慣性行列の値が非常に大きくなり、数値が不安定になります。 これを処理する最適なルートは何ですか?サイコロが1x1x1になるようにスケールを維持し、作用する力の質量またはサイズを変更することはできますか?または、他の何かを微調整する必要がありますか? 宇宙船などの非常に大きな肉体でゲームを作成した場合、同じ問題が発生する可能性があるため、以前に誰かが同様の何かに遭遇したことを願っています。

3
物理エンジンに必要なアドバイス
私は最近、物理エンジンを構築するプロジェクトを開始しました。このためのドキュメントや最高の技術に関連するアドバイスをいただければ幸いです。 まず第一に、当面の課題にはGame-Physics-Engine-Developmentが強く推奨されていることを見てきましたが、セカンドオピニオンを提供できるかどうか疑問に思っていました。また、Amazonをブラウズしているときに、Game Engine Architectureにつまずきました。 ゲーム用の物理エンジンを構築したいので、これも読みやすいと思いました。 第二に、物理シミュレーションの計算は非常に計算集約的であることがわかっているので、CUDAまたはOpenCLのいずれかを使用したいと思いますが、今ではNVIDIAとATIチップセットの両方で動作するため、OpenCLに傾倒しています。 PS:LinuxのC ++でこれを実装します。

1
弾丸の物理演算をゲームに統合するにはどうすればよいですか?
ここにあるリリースファイルをダウンロードしましたが、どこから始めればよいかわかりません。私のゲームでは、長方形と球体がいくつかあるので、これらすべてを互いに衝突させたい。(それらにはすべてメッシュと関連する境界ボリュームがあります) 編集-直方体には実際にAABBが関連付けられていることに気づきました。少なくともそれを変える必要があると思います。 どのような手順に従う必要がありますか?

3
物理エンジンでオブジェクトの「飛び出し」やジッターを修正するにはどうすればよいですか?
速度を変更したりインパルスを適用したりするのではなく、重なり合うボディ(現時点では円のみ)の位置を直接修正することで衝突を解決する単純な物理エンジンを持っています。速度は、影響がすでに解決された後、または統合部分の間にのみ変更されます。 オブジェクトのヒープで、上位のオブジェクトがヒープの下部にあるオブジェクトに過度の圧力をかけている(これは暗黙的に存在し、アルゴリズムには圧力モデリングがない)という問題がありました。等 オブジェクトをy座標で並べ替えることでこれを修正したかったので、衝突はボトムアップで解決されました。しかし今、エンジンは実際に静止しているはずのオブジェクトの奇妙な飛び出し動作を示しています(gifを参照) ソースコードを提供するだけでなく、これは何でしょうか?


2
重力のある世界でキャラクターをカーブしたスロープに沿って移動させる
私はこのゲームを見ました ファンシーパンツ2。そして、物理学と美しいアニメーションとは別に気付いたのは、キャラクターが坂道に沿って移動していることです。私はBox2dでの経験はほとんどありませんが、このカーブしたスロープの概念は初めてです。もし誰かがこのコンセプトとその実装について私に啓蒙したなら、それは私にとって大きな助けになるでしょう。実装がbox2dにない場合でも、それは歓迎されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.