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

空間と時間を介したオブジェクトの動きに関連します。加速(推力と重力)、質量、衝突応答、摩擦などの概念を含みます。

1
現実的なゆっくりと降る雪のアルゴリズム?
降雪をシミュレートする優れたアルゴリズムはありますか?特にゆっくりと降る雪に興味があるので、一直線にはならないが少しズレる。多分、小惑星(風のドラフト)、可変サイズなどのシミュレーションも含まれます。実際の雪の動きを模倣したり、ゲームのコンテキストでシミュレーションしたりするアルゴリズムに関する論文や記事はありますか? 特に2Dアルゴリズムに興味がありますが、どのアルゴリズムでも簡単に3Dに変換できると思います。

1
タイルベースのハック&スラッシュゲームで使用される一般的なキャラクターアニメーションテクニックは何ですか?
現代のハック&スラッシュタイプのタイルベースのゲームで、クリーチャーとキャラクターのアニメーションにはどのようなアニメーション技法が使用されているのでしょうか?さまざまなアクションのキーフレーミングは1つのオプションです。骨格フレーミングは別かもしれません。しかし、物理学はどうですか?それとも、スケルトン、物理学でサポートされ、よりリアルなアニメーションのために補間されたキーフレームと混合されたインバースキネマティクスの完全にハイブリッドなシステムを使用していますか?もしそうなら、どのようにそしてどのような理由で?以下の問題にはさまざまな解決策が考えられますが、次のような問題に何が使用され、最も適しているのでしょうか。 起伏のある地形での歩行または移動 戦闘の相互作用、戦闘の物理学、衝突 剛体アイテムをキャラクターとそれらの反復にアタッチする物理世界 髪の毛、植生、衣服、布地などのソフトボディのダイナミクスがアニメーションと反復に沿って表示されます。

4
Box2Dポイントがボディと交差するかどうかをチェック
ポイントがボディと交差しているかどうかを確認する方法はありますか? たとえば、世界の(100,100)の位置にボディがあるとしましょう。 (100,100)の点がそのボディと交差するかどうかを確認する方法はありますか? 別の例は、「PHUN」と呼ばれるゲームに関連しています。PHUNでは、ボディをクリックしてドラッグできます。マウスポイントがボディと交差しているかどうかをどのように確認しますか?
10 2d  physics  box2d 

3
2Dオブジェクトをラッピングするピンと張ったワイヤーによって加えられる力を計算するにはどうすればよいですか?
私が「ワイヤー」と呼ぶ物理プリミティブがあり、2D環境にラップされていると仮定します(この質問で説明されているように)。 これはどのようなものかを示す図です。 例の図では、ボックスはワイヤーによって上方に(持ち上げられて)引っ張られており、ボックスはワイヤーを下方に引っ張っています。スプリング上の物体はワイヤーによって押し下げられていますが、ワイヤーを押し上げています。 私はまだそれを実装する方法を理解していませんが、ワイヤーがラップされているポイントを横切ってワイヤーが自由にスライドすると仮定します。 2D物理シミュレーション(つまり、フレームベース)では、このようなワイヤーに接続またはラップされているオブジェクトに適用する力(またはインパルス)をどのように計算しますか? 最初の質問で触れたように、ワイヤー上の「静的な」オブジェクトが最後の質量である場合、力は前の質量と点の間の固定長のジョイントと同じになると想像しますワイヤーで。

1
シンプルなフライトシミュレータ
クリムゾンスカイレベルのリアリズム(リアルではなくアーケードレベルなど)を備えた3Dフライトシミュレータでは、各ゲームクロックティックごとに航空機の動きをどのように決定しますか? (Crimson Skiesはアーケードのようなフライトシミュレータです:http : //youtu.be/OWmYt0LZDnU?t = 3m) 私は、ゲームが一定のステップで進行し、各ステップで各移動オブジェクトが現在の位置から次の位置に一定速度で直線移動することを想定しています。 質量、速度、スロットルなどを決定するために必要な基本的なパラメータは何ですか。また、それらをどのように組み合わせますか?

1
box2dで羽毛の落下をシミュレートする方法は?
私はBox2d拡張機能を備えたAndEngineを使用していますが、一般的な回答やコンセプトのアイデアも高く評価されます。 物理シミュレーションの一部にしたい2D側面図の世界に羽のようなオブジェクトがあります。「羽」をゆっくりと落とすために、線形減衰を使用しています。これは良い考えではないかもしれませんが、更新のたびに力を加える必要があるかもしれませんが、それでも機能し、オブジェクトが「軽く」見えるようになり、抵抗のある空気があるように感じます。 次に、オブジェクトを実際に羽毛のように見えるようにするにはどうすればよいですか? 具体的には、次の2種類のオブジェクトを探しています。長い低密度のオブジェクトは、ゆっくりと揺れる動きで下に移動する必要があり、四角形のオブジェクトは軌道をランダムに変化させるだけです。これが1つのシミュレーションであり、長さがパラメータであるとよいでしょう。オブジェクトが長いほど、より大きく振れます。現在、漫画の世界で羽、葉、雪片をシミュレートしたいと思います。
10 box2d  physics 

3
慣性テンソルの計算
少し複雑で長い質問ですが、認めますが、まだよく理解できていないので、できる限り説明していきます。 ショートバージョン:オブジェクトの形状に基づいて慣性テンソルを計算するための一般的なc ++ / physx式はありますか? ロングバージョン: 物理学では、x、y、zの慣性テンソルを指定する必要があります。現在、それを行う方法は、質量に基づいた比率にすぎません。したがって、オブジェクトがX軸で長く、YとZで細く、質量が10000の場合、ZとYを7000に、Xを3000に設定します(これは正確ではありませんが、あくまでも参考です)。 これは比較的うまく機能しますが、最大の問題は、どこかに関節の不安定性がある場合、何が最もうまく機能するかを理解するまでテンソルで推測し続けなければならないことです。非常に大きな物理シミュレーションがあり、20以上のジョイントのうち1つが他のすべてのジョイントの安定性を失わせている場合、これは非常に時間がかかる可能性があります。 私が取り組んでいるのは、オブジェクトの境界ボックスを取り、うまくいけば比較的正確なテンソルを計算する関数です。私はhttp://en.wikipedia.org/wiki/List_of_moment_of_inertia_tensorsから数学の一部を取り、基本的に以下のようなローテーションで以下のように機能する関数を作成しました。 または、次のように回転が端にある場合: したがって、これは私たちが行ってきた方法と同様の結果を私に与えるようですが、それが一般的な使用で機能することを確認せずにこの方法に切り替えたくありません。以下は、立方体と中央のピボットを含む最初の画像に基づく関数のコードです。 NxVec3 CalculateInertiaTensor( VisBoundingBox_cl boundingBox, float m ) { float width = boundingBox.GetSizeX(); float height = boundingBox.GetSizeZ(); float depth = boundingBox.GetSizeY(); float xTensor = 0.083f * m*(height*height + depth*depth); float yTensor = 0.083f * m*(width*width + depth*depth); float zTensor = …

1
2D物理エンジンで、オブジェクトが静止したときに不要な衝突解決を回避するにはどうすればよいですか?
love-2dを使用して(学習用に)開発している物理エンジンで、衝突解決を次のように実装しました。 FixedUpdate(dt) // I use fixed timestep foreach collide c1 in allNotStaticColliders c1.integartePhysic // i.e. apply gravitational force.. foreach collider c2 "near" c1 // "near"= I use spatial hashing if collide(c1,c2) resolve collision (c1,c2) // the heavy operation collison callbacks c1 collison callbacks c2 ... gifアニメーションの最後にあるように、すべてのコライダーが静的オブジェクトにほぼ固定されている場合は、FPSの減衰があります。 これは、オブジェクトが落ち着くまでの接触時間を長くすると、衝突解決の数が増えるためです。ただし、オブジェクトはすでに互いに安定した位置に落ち着いているため、計算の多くは「役に立たない」ものです。 これらの「役に立たない」衝突検出を回避するためのベストプラクティスは何ですか(できれば物理学の学位を必要としないでしょう)。 編集:DMGregoryのヒントを受け入れ、この結果になります(まだ最適ではありません) (赤=静的、青=アクティブ、緑=スリープ)



3
AIを動かすときに重力を考慮する方法
2Dゲームを作っています。現在、プレイヤーが操縦するヘリコプターが飛び回っています。矢印キーを使用して制御されます:上、左、右。 Y軸に沿った速度はdy、X軸に沿った速度はdxです。 物理は次のとおりです。 たびUPが押されていない、dy、一定の加速度で加速し、無期限にダウンに向けました。(重力)。dx現在の値のままです。 場合UPが押され、dyそれが現在、あるものは何でもから一定の加速度で加速4まで(それは速度4に達するまで、上向きに)。dx現在の値のままです。 場合LEFTが押され、dxそれが現在、ある何から、一定の加速度で加速-4まで。 場合RIGHTが押され、それが現在、ある何から、一定の加速度で加速DX、4まで。 (私が言ったように、左または右が押され、同時に上が押されていない場合:dy重力がヘリコプターに影響しているため、ますます小さくなります) これにより、ヘリコプターは直線ではなく、空中のアーチに追従することがよくあります。 これにより、非常に現実的な物理が作成されます。 私の質問は: AIである敵のヘリコプターも同じ物理システムを使用して移動する必要があります。 AIが現在の場所からポイントBに移動したいとします。 ゲームに重力も緩やかな加速もなければ、それは簡単でしょう。AIの位置からポイントBまでのベクトルを描き、AIにそれを追跡させるだけです。 以来、しかし、そこにある重力と徐々に加速、AIは直線的に移動することはできません(ほとんど)。可能な限り時間効率的にAIをポイントBに移動させる最良の方法は何でしょうか? AIを特定の目的地に向けて移動するときに、重力をどのように考慮することができますか? (説明しやすい場合は、B点がAIと対角線ではなく、AIと同じy軸上のレベルにあると考えてください。) ありがとう
9 2d  physics  ai 

3
速いものを遅く見えるようにする(Box2D)
私はあなたがトレビュシェットを操作して対戦相手にボールを投げるゲームに取り組んでいます。 「中世の包囲」と呼ばれるゲームのようなものです。トレビュシェットが腕を振っているとき、プレーヤーはボタンを押してボールをリリースする最高の瞬間をつかむ必要があります。その後、ボールは接線角度で飛行します。 私の今の問題は、トレビュシェットの腕が速く振れすぎて、プレーヤーが適切な瞬間を捉えられないことです。その間、それはこれほど速くなければなりません、さもなければそれは十分に投げることができません。また、ボールとトレビュシェットアームをつなぐ小さなひもがあり、アームの動きが遅すぎると、アームが動くときにボールがひもにぶら下がっています。 ステップサイズを切り替えることで問題を解決し、腕を振るたびに、ステップサイズを1/60から1/200に変更します。そして、プレーヤーがボールをリリースすると、それは1/60に戻ります。 これは、私のゲームがネットワーキングを備えたマルチプレイヤー用であることを除いて、かなりうまくいきます。したがって、ステップを変更すると問題が発生する可能性があります。 私が考えることができるもう1つの解決策は、ゆっくりスイングできるようにすることですが、プレーヤーがボールをリリースするとき、方向を維持しながら手動でボールに速度を追加します。私はこのソリューションがあまり好きではないので、見た目が偽になり、ストリングを非常に短くしない限り、ボールがストリングにぶら下がっているという問題がまだあります。 これに少し光を当ててください、ありがとう! 編集 みんなの意見をありがとう、私は腕をゆっくり振って問題を解決し、プレーヤーがボールをリリースするとき、ボールの速度と2倍をつかみます。これは、ステップサイズを変更した場合とまったく同じように見えます。やらなければならないことがもう1つあります。腕の揺れが非常に遅いため、ボールが揺れるのではなく、腕の端にぶら下がっているだけです。私は、スイング期間中およびスイング期間中のみ、ボールに重力と等しい力を加えることによってこれを解決しました。それから、それはもはやそこにぶら下がらず、腕と一緒にスイングします。 @MrCrankyの答えは詳細であり、実行可能であるように見えるので、私はそれを受け入れます。:)

2
ドローンターゲティング
「ドローン」と2D平面上のターゲットポイントを想像してください。8つのパラメーターがあります。 P = my position Q = target position V = my velocity I = my moment of inertia w = my angular velocity s = my angular position T = max thrust U = max torque (ターゲットは静止しているとだけ言います) ドローンの仕事は、最大トルクと最大推力に従って、できるだけ早く目標に到達することです。これは2D平面のみであるため、トルクを適用する方法は2つしかありません。推力は、機体の向きに対して一方向にのみ進むように制限されており、ドローンを回転させずに狙うことはできません。抵抗を無視して、2Dの宇宙空間に漂っているように見せかけることができます。ドローンが時間間隔t(おそらく0.01秒ごとなど)で方程式をチェックし、パラメータを接続して、それに応じてトルクと推力を調整するとします。推力とトルクの方程式はどうあるべきですか?

2
Rectangle.Intersects()から衝突の詳細を取得する
私はある時点で、次のようなものでボールとパドルの衝突を検出するブレイクアウトゲームを持っています。 // Ball class rectangle.Intersects(paddle.Rectangle); 現在との衝突の正確な座標、またはそれに関する詳細を取得する方法はありますXNA APIか? 衝突の瞬間に各オブジェクトの正確な座標を比較するなど、いくつかの基本的な計算を行うことを考えました。次のようになります。 // Ball class if((rectangle.X - paddle.Rectangle.X) < (paddle.Rectangle.Width / 2)) // Collision happened on the left side else // Collision happened on the right side しかし、これが正しい方法かどうかはわかりません。 皆さんは私がそれを達成するために使用しなければならないかもしれないエンジンについて何かヒントがありますか?または、この方法を使用した優れたコーディング慣行ですか?

4
ゲーム内のグラフィックスエンジンと物理エンジンの間でデータを共有する必要がありますか?
いくつかのモジュールで構成されるゲームエンジンを書いています。それらの2つは、グラフィックエンジンと物理エンジンです。 それらの間でデータを共有することは良い解決策ですか? 2つの方法(共有かどうか)は次のようになります。 データを共有せずに GraphicsModel{ //some common for graphics and physics data like position //some only graphic data //like textures and detailed model's verticles that physics doesn't need }; PhysicsModel{ //some common for graphics and physics data like position //some only physics data //usually my physics data contains A LOT …

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