私は最初に回転させたいオブジェクトを持っています(それは自分自身の中心です)。そしてそれをある点に翻訳します。私は、回転を保持するglm :: quatと、翻訳が必要なポイントを保持するglm :: vec3を持っています。glm回転と翻訳を組み合わせる
私は私のレンダリング機能...pvm = projectionMatrix*viewMatrix*modelmatrix;
glUniformMatrix4fv(pvmMatrixUniformLocation, 1, GL_FALSE, glm::value_ptr(pvm));
..andレンダリングで次に
glm::vec3 position;
glm::quat orientation;
glm::mat4 modelmatrix; <-- want to combine them both in here
modelmatrix = glm::translate(glm::toMat4(orientation),position);
...
私は回転を適用すると残念ながらオブジェクトだけ原点を中心に周回(遠く原点からの「位置」、軌道が大きくなる)。
ポジションのみを適用すると、うまく翻訳されます。回転のみを適用すると、原点にとどまり、中心(予想通り)で回転します。では、なぜ私はそれらを両方とも適用すると変わっていくのですか?私は何か基本的なものを欠いています
私はglm :: translateが関数の第1引数に変換を適用するという印象を受けました。ありがとうございました。 – Jubei
@准:マトリックスに翻訳を適用します。それはそれを右に掛けます。つまり、回転が最初に起こるようにするには、翻訳が*最初に行われることを意味します。 –
この回答をお寄せいただきありがとうございます。私は今日これに執着していますが、私が間違っていることを理解したにもかかわらず、機能が動作するはずであることを確認できませんでした。 –