問題タブ [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.
matrix - GLM マトリックス 4X4 (mat4) から配列への往復
glm 数学ライブラリ mat4 を sqlite3 BLOB に入れて戻す必要があります。最も効率的なアプローチは何でしょうか? mat4 をバイトにシリアル化しますか?、mat4 を float 配列にしますか? BLOB は mat4 を直接取りません
フロートの配列にmat4のブルートフォース変換を追加する
これは正しく動作することがテストされていますが、もっと良い方法があるはずです。float[16] から mat4 への変換は、glm ライブラリ glm/gtc/type_ptr.hpp によって処理されます - 正常に動作します。sqlite3 の BLOB は float 配列を直接受け取ります。
解決済み:
上記は glm::mat4 の値を float 配列に変換し、単一の BLOB 型として sqlite3 に保存できます
opengl - glm quat を使用してジンバル ロックを防止する方法
指定されたワールド座標を中心にカメラの位置を回転させる opengl カメラを実装しようとしています。glm 数学ライブラリを使用してこれを実行しようとしています。私のコードは次のとおりです
コードをテストすると、quat Q を使用した回転は正常に機能しますが、quat R は「ぎこちない」回転を引き起こします。私は何を間違っていますか?
c++ - オーバーロードされた '[]' による glm::vec3 追加エラー
glm::vec3 を返すオーバーロードされた [] 演算子も使用している場合、複数のベクトル加算をつなぎ合わせることに問題があります。
追加を「ストリング解除」することで問題を解決しました(それぞれを独自のステートメントに入れます)が、なぜそれが起こったのか本当に知りたいです(私の [] 演算子が間違っているのでしょうか?)。
NVec
std::vector<glm::vec3>
[] がオーバーロードされたラッパー クラスです。これの目的は、境界外の [] 呼び出しを処理することです (境界は必要なものであり、標準のインデックス境界ではありません)。
オペレーター
問題コード:
faceNormals
はNVec
三角形の面の法線でいっぱいですtri1
。glm::vec3[3]
とi1
toi6
はインデックスです。そして、結果を得るために、文字通りこれらのケースをこの順序で実行します。
それで、ええ。私には意味がありません。tri[0]
vec3 の追加を[]
つなぎ合わせ、同じステートメントで演算子を使用すると、エラー ( の奇妙なデータ) が発生するだけです。
c++ - クォータニオンを使用した GLM 行列の回転方向
私は 3D レンダリングのセットアップ (OpenGL の GLM で行われたすべての数学) に取り組んでおり、変換をどのように機能させたいかを除いて、すべて正しく機能します。次のように、エンティティごとにマトリックスを作成します。
これを使用すると、好みに合わせて一部を調整する方法がわからないことを除いて、通常は正しく機能します。つまり、これを使用すると、X 軸の平行移動が反転し (たとえば、左が正、Z 軸の前方が正ですが、私はそれをあまり区別しません)、Y 軸の回転が反転します。
この目的のための他のコードを見ると、多くの人が私が方向 (カメラ) に使用したものを否定しているようです。私もそれを行っており、変換は正しいですが、回転のすべての軸は推奨されるものとは反対です (ただし、方向が否定されているかどうかにかかわらず、X の回転は同じです)。
使用前に X 軸の平行移動と Y 軸の回転を無効にすることを除いて、これを修正するために何をすべきかよくわかりませんが、それは最善の方法ではないと感じています。考え?
c++ - glUniformx()でGLMをプレーンな古いデータとして使用できますか?
設計が弱いため、数学ライブラリ全体と数学に関連するものを書き直さなければなりませんでした。代わりに、GLM を使用できることがわかりました。以前の質問に遭遇した場合、私はスケルトン アニメーションを扱ってきたので、大量の mat4、vec3、vec2 をアップロードする必要があります。これが私の以前の頂点構造体です:
残念ながら、数学ライブラリが POD ではないことがわかり、構造体全体をアップロードしようとしたところ、奇妙な結果が得られました。次のように定義された最終的なボーン マトリックスについても同じです。
それも一気にアップしてみました。
Vec3s、Vec2s、および Mat4s を glm::vec3、vec2、mat4 に置き換えて、Vertex 構造体全体 (頂点の数) を直接アップロードし、次を使用して各データのオフセットを設定するかどうか疑問に思います。
.
意図したとおりに動作しますか? 私はすべてを書き直したくありません。今回は、別の失敗に直面したくないので、それが機能することを確認する必要があります。
c++ - glm::project の出力から z-buffer を計算する
glm::project の出力からオブジェクト位置の z バッファを計算したいと思います。以下のコードの z-buffer の計算は、https://en.wikipedia.org/wiki/Z-bufferingからのものです。
私が試したこと
問題
モデルをどのように回転させても、どのポイントを使用しても、zBufferValue の値は 1 です。wiki ページによると、値は -1 (近い面) から 1 (遠い面) の間である必要があります。
計算で何が間違っていますか?