나는 C에서 내 자신의 게임 엔진을 구현하고있어 ++와 내가 여기 도움이 필요, 나는 게임 개체가GLM 회전 사원 수는 객체
변형,의 방향 속성은 사원 수와 나는 그것을를 회전하려면 Y 축의 각도입니다.
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;
}
행렬 만이 (적어도 나에게) 좋아 보인다, 나는 규모의 행렬이 내가 뭔가를하고 있었다 어떻게 든 할 수 있는지 확인하는 곱셈을 형성 제거. 그러나, 그것은 아무것도 고칠 didnt합니다.
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