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


2
累積マトリックス変換を使用してジンバルロック問題を解決する方法
ジェイソンL.マッケソンのオンライン「Learning Modern 3D Graphics Programming」本を読んでいます 今のところ、ジンバルロックの問題と、クォータニオンを使用してそれを解決する方法について説明しています。 ただし、ここ、クォータニオンページで。 問題の一部は、方向を一連の3つの累積軸回転として保存しようとしていることです。方向は回転ではなく方向です。そして、向きは確かに一連の回転ではありません。そのため、船の向きを特定の量としての向きとして扱う必要があります。 これは私が混乱し始める最初の場所だと思います。理由は、向きと回転の劇的な違いが見えないからです。また、方向が一連の回転で表現できない理由もわかりません... また: この目的に向けた最初の考えは、マトリックスとしての方向を維持することです。向きを変更するときが来たら、この行列に変換を適用し、結果を新しい現在の向きとして保存します。 これは、現在の方向に適用されるすべてのヨー、ピッチ、およびロールが、現在の方向に対して相対的であることを意味します。まさにそれが私たちに必要なものです。ユーザーが正のヨーを適用する場合、そのヨーは、ある固定座標系ではなく、現在のポインティングの位置を基準にして回転させます。 概念は理解していますが、行列変換の累積がこの問題の解決策である場合、前ページで示したコードがそれだけではないことを理解していません。 コードは次のとおりです。 void display() { glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClearDepth(1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glutil::MatrixStack currMatrix; currMatrix.Translate(glm::vec3(0.0f, 0.0f, -200.0f)); currMatrix.RotateX(g_angles.fAngleX); DrawGimbal(currMatrix, GIMBAL_X_AXIS, glm::vec4(0.4f, 0.4f, 1.0f, 1.0f)); currMatrix.RotateY(g_angles.fAngleY); DrawGimbal(currMatrix, GIMBAL_Y_AXIS, glm::vec4(0.0f, 1.0f, 0.0f, 1.0f)); currMatrix.RotateZ(g_angles.fAngleZ); DrawGimbal(currMatrix, GIMBAL_Z_AXIS, glm::vec4(1.0f, 0.3f, 0.3f, …

4
X、Y、Z座標標準?
それにもかかわらず、ゲームの3D開発は初めてです。チュートリアルと例を読むと、X / Y / Z座標は最初の推測よりも少し逆になっているように見えます。 人がフィールドの周りを歩いていると、X / Y位置が変化し、ジャンプまたは丘を上ったり下ったりすると、Z位置が変化すると想像していました。私の仮定は間違っているように見えます。なぜなら、フィールドの周りを歩くとX / Zが変わり、丘をジャンプしたり、上下に移動するとYが変わるからです。 1)私の観察は正しいですか?3Dは私にとって新しいものであり、物事について適切に考えていないかもしれません。 2)X / Zである水平移動とYである垂直移動の背後にあるロジックは何ですか? 3)XNA FrameworkでX / Yを水平方向の移動として使用し、Zを垂直方向の移動として使用するのは、私にとってそれほど間違っているでしょうか?

2
Table.drawDebugはlibGDXでは非推奨であるため、代わりに何を使用する必要がありますか?
私は「Learning LibGDX Game Development」の本に従ってシンプルなゲームを作成しています。私は、ステージを作成してデバッグ境界線でレンダリングするメニュー作成セクションにいます。 本は使用するように言っていますTable.drawDebug(stage)が、この静的メソッドはフレームワークTableクラスから完全に削除されたようです。 インポートしていcom.badlogic.gdx.scenes.scene2d.ui.Tableます。以下は私のコードです: @Override public void render(float deltaTime) { Gdx.gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); if (debugEnabled) { debugRebuildStage -= deltaTime; if (debugRebuildStage <= 0) { debugRebuildStage = DEBUG_REBUILD_INTERVAL; rebuildStage(); } } stage.act(deltaTime); stage.draw(); Table.drawDebug(stage); } 最後の行にTable.drawDebug(stage);はコンパイルエラーがあります"The method drawDebug(ShapeRenderer) in the type Table is not applicable for the …

1
トルクを加えて向きを変える
空間に自由に浮かんでいるオブジェクトがあるとします。このオブジェクトに向かわせたいベクトルと、現在向いている方向を表すベクトルがあります。これらの2つから、方向の変化を表す回転(行列、クォータニオンなど)を取得して、2つのベクトルを整列させることができます。 トルク(角速度の派生物)をオブジェクトに適用する能力しかない場合、目的地をオーバー/アンダーシュートしない、時間をかけてトルクを適用するための良いアルゴリズムは何ですか? (この場合、スラスタを使用して進行方向に自動的に向きを変えたい宇宙船です。ロールは関係ありません。)

1
オブジェクトを回転させてプレイヤーに向けます
これはおそらく単純なベクトルの質問ですが、どうすればよいかわかりません。 ベクターの位置にオブジェクトがあります(ox,oy)。可能性のあるすべての更新で、ユーザーは画面上を歩き回り(px,py)、いつでもその位置にいます。オブジェクトが常にプレーヤーに面するようにするにはどうすればよいですか?角度を度単位で取得する必要があります。 これは私がいじくり回してきたものですが、方向はすぐにユーザーがいる場所を指していません。代わりに、ユーザーが歩いている方向に徐々に増加します。 objVec.Normalize(); playerVec.Normalize(); obj.Rotation = MathHelper.ToDegrees((float)Math.Acos(Vector2.Dot(objVec, playerVec))); 私はそれが完全に間違っているかもしれないので、どんな助けでもありがたいです!
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.