問題タブ [physics-engine]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
physics-engine - 物理エンジンのスプリング バグ
そこで、ポリゴンと円をサポートする 2D 物理エンジンに取り組んできました。円と円を除くすべての衝突の組み合わせに分離軸の定理を利用しました。エンジンの基本的な形式は次のとおりです。
*注: 実際のコードではありません
すべての体を進めます。
ここに私が抱えている問題のビデオがあります: http://www.youtube.com/watch?v=kSZeuP4AiQ0&feature=youtu.be
エラーは、最初の近くで見られるスプリング効果です。私は問題を考えようとして頭を悩ませてきましたが、何も思いつきませんでした。誰が問題が何であるか教えてもらえますか?
java - Slick2DおよびJBox2D。描き方
これを尋ねる前に、私はネットでたくさんの検索をしました。できません。理解するのは少し難しいです。では、ワールドポジションのボディに対応する正しい画面位置に画像を描画するにはどうすればよいですか?ありがとう。
他の誰かが同じ障害物の前でhimslefを見つけた場合、私はHOW TOを投稿しました、normalocityの良い説明に感謝します。あなたはここでそれを見つけることができます:http://romeo.akademx.ro/2012/04/06/slick-and-box2d/
これはレンダリング関数です:
そして、これらは私が世界画面の調整を変換するために使用する機能です:
私はまた、このリンクにあるSlickDebugDrawを使用しています:http ://slick.javaunlimited.net/viewtopic.php?f = 19&t = 3610&sid = 69614ac53aaf5724b808b75173e8e48e
しかし、彼のDebugDrawは、私のレンダリング関数とはまったく別のものを描画します。私は少し混乱しています。
c++ - Box2D を使用して cocos2d iPhone で b2CircleShape のサイズを変更するにはどうすればよいですか
接触するとサイズが変更される円がたくさんある 2D 物理サンドボックスがあります (大きい方が大きくなり、小さい方が小さくなります)。スプライトのサイズは問題なく変更できます。また、B2Body をスケーリングできないことも理解しています。B2Body を破棄して再作成する必要がありますが、Box2D についてはまだ十分に理解していません。
スプライトのサイズを変更するために私がやっていることは次のとおりです。
Box2D 本体 (b2CircleShape ?) のサイズを変更 (破棄/再作成) するにはどうすればよいですか?
これはCで行う方法だと思います-emanueleferonato.comから(私はCを理解するのに十分な知識がありません):
c# - C# ライブラリ ノード エッジ グラフ
このビデオのような強制ノード エッジ グラフを生成するプログラムを書きたいと思います。それを可能にする優れたC#ライブラリは何ですか?
box2d - キャラクターが歩いている/立っている傾斜に合わせてキャラクターをスムーズに回転させるにはどうすればよいですか?
キャラクターのスプライトを、彼(長方形)が立っている、または歩いているプラットフォームのスコープに応じて回転させる必要があります。彼が立っているプラットフォームの傾斜に合わせて回転させることで効果を発揮しました。しかし、2つの問題があります。
まず、回転がスムーズではありません。キャラクターが平らなプラットフォームから傾斜したプラットフォームに歩くと、キャラクターは瞬時に回転します。また、その回転により、キャラクターは少し押し上げられます。
第二に、彼が坂を降りて再び平らなプラットフォームに入ると、それに応じてキャラクターを回転させることができません。これは、その時点でキャラクターが平らなプラットフォームと傾斜したプラットフォームの両方と衝突するため(これらは一緒に配置されます)、2つの衝突検出機能が連携して機能するため、数ステップの間、キャラクターは狂ったように前後に回転します。
キャラクターの向きを検出して、キャラクターのどの点(左または右)が最初に何かに触れているかを調べて解決しようとしましたが、衝突しか検出できず、「衝突なし」では検出できないため、機能しませんでした。または「キャラクターがプラットフォームを離れるとき」。
状況のイラストを添付しました。助けてください、ありがとう!
PS:私は画像を投稿することを許可されていないので、画像についてはhttp://i.stack.imgur.com/jqPjt.pngにアクセスしてください。ありがとう。
box2d - ボディ間をスムーズに移動
タイトルが正しいかどうかわかりません(間違っている場合はコメントしてください)。スプライト (長方形のボディ) があり、左から右に移動してから戻るように力を加えています。プラットフォームは、同じサイズのいくつかの長方形のブロックで構成され、それらの間に距離がなく並んでいます。それらが形成するのは完全な直線です。プラットフォームは、平らまたは傾斜することができます。
私が欲しいもの
スプライトはプラットフォーム上をスムーズに前後に移動します。
実際に何が起こるか
ブロック間にスペースがまったくない場合でも、あるブロックから別のブロックに移動する時点でスプライトが詰まることがあります。また、その時点で衝突が登録されることもあります。
「内部コーナー」と呼ばれるものを検索して見つけましたが、この問題を解決する方法がわかりません。回避する方法はありますか?ありがとう!
c++ - 物理シミュレーションの開始
CS282 - Computer Physics Simulation の独立した学習コースを受講し終えたところです。私が通っている大学で初めて提供されました。教科書は、Ian Millington による「ゲーム物理エンジンの開発: ゲーム用の堅牢な商用グレードの物理エンジンを構築する方法」でした。この本は文法上の誤りが多く、リファレンスとしては便利ですが、コード化するのは困難です。この本で提供されているソース コードは、本で説明されているよりもはるかに完全であり、エンジンを使って自分で何かを行う方法についての入門書さえないため、特にグラフィカルな目的でコードを解読するのはある程度困難です。 、実際にはいくつかの場所で壊れているか実装されていないか、または本が使用するグラフィックユーティリティであるGLUTの使用方法であり、これ以上開発されていません! 実際には、この本の参考文献のほとんどは、過去 10 年間のものではありません。これは、15 年前のコードを教えるにはそれほど悪くないと思います。このテキストは、初心者向けの物理シミュレーションの全体像を把握するための優れたリソースですが、CS の学生がプレイできるフレンドリーなサンドボックスについては紹介していません。
これは基本的に、何が機能し、何が機能しないかを調べるための実験でした。私の教授には、物理エンジンで ActionScript を使用するためのテキストも含まれていましたが、テキストには物理エンジンがどのように機能するかについての予備知識が必要だったため、実用性のために削除しました。
私の質問はこれです:
私はリフレクション ペーパーを書いている最中です。これらのテキストに代わるものをお勧めしたいと思います。これにより、CS の学生が簡単にコードを記述し、その成果を実際に確認できるようになります。おそらくpythonを使用して作業します。この目的に役立つ優れたリソースやテキストを推奨できる人はいますか? このコースまたは類似のコースを受講された方は、どのような経験をされましたか?
c# - WPF C#、動くシャボン玉の作成
キャンバス上を移動するシャボン玉「楕円を使用して表現する」WPFアプリケーション「ゲーム」を作成しようとしています。マウスのクリックでそれらをポップできます。
シャボン玉の自然な動きを得る方法はありますか? 私はそれらを動かしていますが、下から上にしか動かしていません。これに役立つライブラリのようにするにはどうすればよいでしょうか..
android - 体を破壊するとクラッシュする
ジョイントで接続された複数のボディで構成されるオブジェクトを破棄すると、アプリケーションがエラーなしでクラッシュします。もちろん、私はいくつかの調査を行い、物理エンジンがステップを計算している間にボディを破壊すると、これが発生することを発見しました. そのため、ボディをリストに追加して onUpdate() で破棄しましたが、それは役に立ちませんでした。面白いことに、単純なボディの破棄は onUpdate() の外部でも魅力的に機能し、クラッシュを引き起こすことはありません。
エラー出力はありませんでしたが、問題は World.java の 507 行目の NullPointerException であるというメッセージをなんとかキャッチできました。驚いたことに、次のことがわかりました。
誰かが何が起こっているのか教えてもらえますか? 私は死体を一度に 1 つずつ破壊することさえしました。
問題は解決しません。
注: 私が破壊しようとしているオブジェクトは、WeldJoints によって 1 つの中心ボディに接続された複数のボディで構成されています。体が重なっているので、負の groupIndex を使用して、それらが互いに衝突しないようにします。特定のボディを削除する前に、そのボディに関連付けられているすべてのジョイントを削除しても役に立ちません。エラー出力:
collision-detection - 2D Physics Engine: 非弾性衝突で跳ねるボールが止まらない
円形の発射体と直線の壁を使用する単純な 2D 物理エンジンを Java で作成しました。現在、各フレームで、すべての発射体の位置が だけ進みvelocity * (1/fps)
ます。その後、速度はフレームごとに 1 回更新されます。衝突検出は、前の位置と現在の位置を使用してポイントスロープ形式で線を定義し、その線が壁と交差するかどうかを確認し、その交点が前の位置と現在の位置の間にある場合、衝突が登録され、発射体の現在の位置とそれに応じて速度が更新されます。現時点では、ローテーションは意図されていません。
さて、これは非弾性衝突を除いてすべて機能します。現在、非弾性衝突は、衝突した表面に垂直な発射体の速度の成分に 1 未満の係数を乗算します。
水平面上で上下に跳ね返る発射体があるとします。発射体の速度の y 成分がバウンスごとに減少し、バウンドごとに発射体の最大高さが減少し、最終的には無視できるポイントに到達します。代わりに、ボールの最大高さが特定のポイントまで減少し、その後増加し始めて数回バウンドし、再び減少し始め、一定のサイクルに入ります。その結果、ボールが実際に止まることはなく、「ジッター」しているように見えます。
これは、発射物がフレームごとに直線セグメントで移動し、速度が連続的に変化しないために発生します。ボールが上昇しているフレームよりもボールが落下しているフレームの方が多い場合、ボールはそれらの余分なフレームで加速され、必要以上に高くなってしまいます。何が起きているかというと、上記の理由により、ボールが 1 回のバウンドで本来よりも高い位置に到達するということです。非弾性衝突により最大高さが再び下がると、再び同じことが行われます。
私は、ボールを(v*t + 0.5*a*t^2)
でv
動かすa
ことによってこれを排除しようt
としまし1/fps
た。これは機能しますが、バウンスが十分に小さくなると、直線を使用した衝突検出が失敗するという事実を除きます。また、パラメトリックに定義された放物線で衝突検出を試みましたが、発射体間の衝突の検出に関しては、信じられないほど面倒で非効率的になります。興味があれば、私が試みた解決策をさらに詳しく説明できます。
他に提案したい簡単な解決策はありますか?
特に、これらの 5 つの段落を実際に読んだ場合は、事前に感謝します。