問題タブ [glm-math]
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.
opengl - glmが使用しているコンパイル/リンクメカニズムは何ですか?
私は現在OpenGLuseglmライブラリを使用していますが、各ヘッダーファイル(* .hpp)には独自の実装ファイル(* .inl)がありますが、プロジェクトをコンパイルするたびにglmを自動コンパイル(またはリンク)するにはどうすればよいですか?例えば:
しかし、コンパイルすると、エラーは発生しませんでした。
c++ - OpenGL 3.2 で行列を設定する際の問題
GLM を使用してマトリックスを管理していますが、意味のない問題に直面しています。射影行列を単位行列以外に設定すると、描画しようとしている正方形が見えません。それがアイデンティティであれば、それは機能します。私のビューマトリックスでも同様のことが起こります。-1 または +1 を超えて変換しようとすると、正方形が消えます。そうしないと、効果がないように見えます。
OpenGL エラー、GLSL リンカー/コンパイラ エラーはなく、glGetUniformLocation は有効な場所を返します。また、シェーダー プログラムも正しく使用されています。
また、シェーダーをテストして、各マトリックスに正しい値が渡されているかどうかを確認しました (値が正しい場合は正方形の色を変更することによって)。
射影行列を設定する方法は次のとおりです。
そして、ここに私の描画機能があります:
}
これがshader.vertです
これがshader.fragです
何を描いているか忘れてすみません:
このようにマトリックスを設定すると、画面に何も描画されません。私が言ったように、射影行列とビュー行列をアイデンティティに設定すると機能します。modelMatrix のスケーリングも常に機能しているようです。
java - OpenGLESのGLMライブラリ
私はJavaで3年間プログラミングしていません。そのため、私はJavaに少し不器用です。
問題は、OpenGLESを使用してAndroidアプリを開発する必要があることです。今、私は自分の3D数学をどのように行うべきか疑問に思っています。私のC++ゲームでは、常にglm(glm.g-truc.net)を使用していましたが、これはCライブラリです。
このトピックに関するいくつかの投稿を見たことがありますが、glmはOpenGLESでの使用にも非常に適しています。しかし、ここにポイントがあります。私はおかしなことに聞こえるかもしれませんが、JAVAで実装されたOpenGLESアプリケーションでglmを使用する方法がわかりません。そのライブラリを使用するには、JNIを使用する必要がありますか?
c++ - GLM四元数を正しく回転させるには?
私が持っているゲームで車を左に 90 度回転させたいです。
このコードを使用すると:
車が変な回転をします。
ただし、次のコードは車の回転をまったく変更しません (GLM がゲームの quats と互換性があることを確認するためだけに、私が期待したとおりです)。
そして、回転がそれで変更されたかどうかを確認するためにこれを試みるたびに:
車の回転は、ゲーム内で 0,0,0,0 回転に設定されています。次のコードは車を左に 90 度回転させると予想していたので、このコードでは回転はそのままであると予想していました。
しかし、それは私が望むようには機能しません。「回転」に追加するのではなく、回転を設定するだけです。
私は何を間違っていますか?
c++ - glm :: unProjectは、マウスの位置を3つの座標に変換します
行列の計算にOpenGL3.2+GLMを使用しています。以下は私のコードです:
winZ
正しい。モデルをクリックすると1.0(zfar)になり、モデルをクリックすると予想どおりに表示されます。しかし、戻り値pos.z
は私が期待するものではありません。マウスが背景の上にある場合:中央に向かっている場合pos.z
は小さくなり、画面の端にある場合pos.z
はzfarになります。誰かがこれを説明できますか?
私が抱えている実際の問題は、私が期待するエーテルpos.x
をpos.y
返さないことです。私のモデルの幅は4.88ユニットですが、幅unProject
は約20ユニットだと言っていますか?(左側と右側にホバリングの値を追加した場合)。
ああ、そして画面の中心は予想通り0.0です。
pos.z
編集:返されるのは画面の中央からのマウスの位置に依存することにも注意する必要があります。モデルの上にある場合は、はるかに高い数値に変更されます。カーソルのY位置が画面中央より上にある場合、pos.z
は正です。Y-posが下の場合、pos.z
は負です。本当に奇妙なようです。
c++ - GLMでクォータニオンの前の位置を決定しますか?
できればGLMを使用して、クォータニオン (XYZW) 回転の前に XYZ 位置を計算する方法はありますか?
前の位置を計算したいオブジェクトのQuat回転と位置を知っています。
フロントベクトル、アップベクトル、右ベクトルがある回転行列の前の位置を計算する方法は知っていますが、この場合は XYZW 値しかありません (W は常に 0 で、1 になることはありません.. ?)
要するに: 私が持っているデータ:Quat (X Y Z W)
そしてPosition(X Y Z)
、計算したいPositionInFront(Position, Quat, Distance, &X, &Y, &Z)
この目標を達成する方法は?
3x3matrix へのキャストを試み、Up,Right,Front (3x3 マトリックス キャストはこれらの値であるためですよね?) の計算を実行しましたが、正しい位置が返されません。
または、オブジェクトの Z 角度を決定することは可能でしょうか? (ワールド Z 周りの回転/高さ軸のみ)
opengl - glmでビルボードマトリックスを作成する方法
glmを使用して空間内のポイントからビルボード変換行列を作成するにはどうすればよいですか?
opengl - 平行移動と回転後のカメラビューの調整
部屋の中で「歩くカメラ」のシーンを作ろうとしています。
今のところ、回転や平行移動はもちろん、何も見えません。その理由がわかりません。
ルックアット関数を使用する前は、必要なものをすべて見ることができたことに注意してください。
しかし、私は常に定義された軸に従って移動したため、平行移動と回転は間違っていました。
そして、私がすべきようなカメラ軸ではありません。
これは今のところ私のコードです:
展望と見て-
いくつかのキーを押した後の平行移動と回転:
今のところ定義された頂点:
それらを接続する理由:
いくつかのバッファリング:
必要に応じてカメラを定義し、平行移動と回転を使用してカメラに合わせる方法について何かアイデアはありますか?
c++ - OpenGL、GLM クォータニオン回転
古い OpenGL プロジェクトを更新していて、行列とクォータニオンのすべての (非推奨の) glMatrix()関数を切り替えていますが、回転を機能させるのに問題があります。
私の絵は次のようになります。
私が今やろうとしているのは、特定の点 (オブジェクトの中心など) を中心にオブジェクトに回転を適用することです。私は試した:
ただし、これにより、オブジェクトは中心ではなく、エッジの 1 つを中心に回転します。
たとえば、クォータニオンを適用して、パラメーターとして渡す任意のポイントを中心にオブジェクトを回転させる方法を知りたいです。
以前はglMatrix()関数を使用できたので避けていたので、マトリックスの経験がありません。そのため、空間位置とそれらの関係についてあまり理解していません。それらをクォータニオンに更新しようとすると、さらに見えます複雑。
クォータニオンのロジックと技術的な使用方法について読んだことがありますが、それらの値がどこから来るのかわかりません。
例えば:
私はこれを読みましたが、これらの値が何であるかわかりません。軸は単位ベクトルです...何の?fAngle回転させたい角度だと思いますが、Quaternions は任意の軸を使用するため、XYZ 軸ごとの値をどのように取得し、Quaternion で指定するのですか?
だから、クォータニオンの実用的な例/チュートリアルを探しているので、何が起こっているのか理解できます。
オブジェクトを回転させたいときに私が持っている唯一の情報は、回転させたい軸 (x、y または z、すべてではなく、最終結果でのそれらの組み合わせ) と、度単位の値です。私は数学にあまり詳しくないので、ショートカットを使用しないチュートリアルは高く評価されます。
opengl - OpenGL でのカメラ変換
OpenGL で世界を歩き回るクラスをやろうとしていますが、数学に問題があります。ここでの私の考えは、glm の関数 lookAt を使用してオブザーバーを希望の位置に設定し、関数に渡したポイントで操作することです。私が作った回転を行う関数は正しいと思いますが、walk メソッドの翻訳部分が間違っているようで、翻訳するだけ、または回転するだけでワールドを歩こうとするとうまくいくのですが、私は両方のことをするだけでめちゃくちゃになります。
これまでのクラスは次のとおりです。
そのため、描画を開始する直前に、プログラムの他の部分でこのクラスを使用してビュー マトリックスを設定しました。私の数学が正しいかどうか誰か教えてもらえますか?