問題タブ [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.
c++ - glm 変換行列はベクトルを変換しません
(VS2010で)glmの使用を開始しているときに、非常に単純なエラーが発生しました。私はこの短いコードを持っています:
変換されたVector の結果は、元の値 (1.f、1.f、1.f、0.f) と同じです。ここで何が欠けているのかわかりません。回転行列を試してみましたが、うまく機能しています。ポイントは正しく変換されています。
わかりました、私は問題を発見しました。ベクトルではなく頂点を変換したいのですが、この場合は w 値を 1 に設定する必要がありました。
c++ - std::tuple の配列での std::array 不完全型エラー
C++11 で奇妙な動作が発生していstd::array
ます。std::array<std::tuple<int, float>, 6> myTuples;
メンバー変数としてコンパイルしようとすると、次のエラーが発生します。
mingw32\4.7.2\include\c++\array:-1: In instantiation of 'struct std::array<std::tuple<int, float>, 6u>':
mingw32\4.7.2\include\c++\array:77: error: 'std::array<_Tp, _Nm>::_M_instance' has incomplete type
これが何かを変更するかどうかはわかりませんが、それが含まれているクラスは、別のテンプレート クラスから派生したテンプレート クラスです。テンプレート パラメーターは、派生クラスで参照する、基本クラスでunsigned int
保護されているのサイズを決定するものです。派生クラスにはさまざまな型があり、OpenGL 固定関数のものを使用します。OpenGL コンテキストを作成するために SDL-1.2.15 を使用しています。そのほとんどは無関係だったと思いますが、そうではないかもしれません。コードを貼り付けることはできますが、すべてが相互接続されているため、全体としてしかコンパイルできません (ソース間で分散されるのは約 1000 行です)。std::array
using Base<param>::m_array;
glm::vec3/dmat4/quat
glBegin(GL_QUADS);
ただし、このイデオンの例に同じ行を含めると、非常によく似た状況で、完全に正常にコンパイルされます。コマンドラインを使用してコンパイラで同じものをコンパイルすることにより、それが単なるコンパイラ(MinGW g ++バージョン4.7.2)ではないことを確認しましたg++ -Wall -std=c++11
これらのエラーが発生する理由を知っている人はいますか? 以前は、std::array
割り当ての解析中にコンパイラがクラッシュするという問題がありましたが (array = {{a,b,c}};
既定のパラメーターを使用)、今回はコンパイル エラーではなくクラッシュしました。
c++ - Glm クォータニオン ルックアット関数
この回答に基づいて、 glm::quat を使用して回転を表す lookat 関数を作成しようとしています。しかし、正しい角度を得るのに苦労しています。これは私のlookat関数です:
カメラが (0.0f, 0.0f, -10.0f) にあるときに LookAt(0.0f, 0.0f, 0.0f) を呼び出すと、正しい回転 0,0,0 が出力されます。ただし、カメラを (0.0f, -0.01f, -10.0f) 以上に移動すると、約 124,0,0 の回転が得られます。y を -0.01f だけ平行移動し続けると、これは低下します。四元数を正規化しないと、この問題は発生しません。回転は x 軸を中心に 124 のままですが、見た目は問題ありません。ただし、後でクォータニオンを正規化すると、再び約 124 に回転するように見えます。正規化できません。cross
これを行うと、アサートがスローされるためです。lookat 関数から x について 124 のオイラー角を取得する原因は何ですか?また、どうすれば修正できますか?
c++ - GLM コンストラクターがすべて明示的であるのはなぜですか?
コードで GLM ライブラリの使用を開始しました。かなり良いようですが、次のようなことはできません。
コンストラクターはすべて明示的であるためです。
これは私の地獄を悩ませ始めています。このような単純な値型の暗黙的な構築を禁止する正当な理由は思いつきません。著者は無関係な格言にやみくもに従ったのでしょうか、それとも私が知らないことを知っているのでしょうか?
c++ - glm を使用してクォータニオンに沿ってカメラを移動する
glm::quat で定義された方向に沿ってカメラの位置を変換しようとしています。
これは、回転が恒等四元数の場合にうまく機能します。回転が他のものである場合、X および Z の移動は機能しません。カメラを左に 45 度回転させて呼び出すTranslateCameraAlongZ(-0.1f)
と、右に後ろに移動する必要があるときに、左に左に移動します。完全な 90 度の増分ではないすべての変換は、同様に台無しになります。ここで何が間違っていますか?それを修正する最も簡単な方法は何ですか? 関連する可能性がある場合に備えて、ビューマトリックスを生成する関数とカメラを回転させる関数を次に示します。
opengl - 正射カメラによるピッキング/光線投影
私のコードには「単純な」問題があり、カメラが遠近法モードの場合はピッキングが完全に機能しますが、正射投影モードの場合は結果が奇妙になります。
これが私がやったことです:
オブジェクトを選択できるので、レイ コンピューティングは良さそうです。
これが私が結果で行うことです:
最後のステップを実行すると、次のようになります。
正規化された方向なし:
- 正投影カメラでOK
- 遠近法カメラでは機能しません
正規化された方向:
- 遠近法カメラでは機能しません
- 正投影カメラでOK
c++ - glm および cxx-prettyprint、clang: 関数 'operator <<' への呼び出しは、テンプレート定義にも表示されません
これらのライブラリを一緒に使用する人はいますか? cxx-prettyprintとglm。把握するのが難しいコンパイル時の問題が発生しています。
"SUITE" と "TEST" が混同されている場合、それはこのコードが を使用しているためですUnitTest++
。
Math.h には次のものが含まれています。
エラーは次のとおりです。
c++ - OpenGL シェイプがレンダリングされない
OpenGL で球をレンダリングしようとしています。残念ながら、画面には常に背景しか表示されません。カメラの向きを変えてみましたが、うまくいきませんでした (間違っているかもしれませんが)。任意の洞察をいただければ幸いです。
画面を更新するために OpenGL が呼び出す関数は次のとおりです。
そして船の定義: