を変形させ、その配向性は、四元数であり、私はそれ回転したいですY軸の度数です。GLMが、私はゲームオブジェクトを持って、私はC++で自分のゲームエンジンを実装していると私はここに助けが必要、</p> <p>オブジェクト
だから、私が持っている:
currentAngle += 0.01; // currentAngle is a member variable, so yes i initialized it
quat q(currentAngle, vec3(0, 1, 0));
myGameObject->SetOrientation(q);
GameObject::SetOrientation(quat q)
{
myOrientation = q;
}
が、ゲームオブジェクトの回転に伴って、それはまた、(変形)スケーリングします。だから私は、私は変換行列に
myModelMatrix = Math::CreateTransformationMatrix(
transformation->GetPosition(),
transformation->GetOrientation(),
transformation->GetScale());
mat4& Math::CreateTransformationMatrix(vec3& translation, quat& orientation, vec3& scaleSize)
{
mat4 translate = glm::translate(glm::mat4(), translation);
mat4 rotate = glm::toMat4(orientation);
mat4 scale = glm::scale(glm::mat4(), scaleSize);
return translate * rotate * scale;
}
を適用していますどのように確認されたが、それは(少なくとも私には)OKに見えますが、私はスケール行列が何らかの形で私はそれで何かをやっていたかどうかを確認するための乗算を形成取り除きます。しかし、それは何も修正しませんでした。
私も試してみました:
quat q(currentAngle, vec3(0, 1, 0));
quat orientation = myGameObject->GetOrientation();
orientation = orientation *q;
myGameObject->SetOrientation(orientation);
しかし、それはどちらかの作業をdidntの。 私はシェイダーのコードもチェックしましたが、私は問題はありません。
これは私がシェーダに行列を送る方法です:
glUseProgram(progarmId);1
glUniformMatrix4fv(uniforms[name], 1, GL_FALSE, glm::value_ptr(matrix));
私はTrueに3番目のパラメータを変更し、投影図の行列乗算の順序を交換しようと、それが動作didntのいずれか:/
だから、みんな...私は間違って何をすることができますか?私はアイディアがありません:/
どこで、どのように 'myOrientation'フィールドである私がやっていた
中古? – meowgoesthedog
@ myowgoesthedog myOrientationへのミューテータはmyGameObject-> GetOrientation()です.Math :: CreateTransformationMatrixの呼び出しで使用されます – Camilo