我有這個腳本來獲取實體的MVP,全部以glm爲單位。我希望物體根據它用於運動的方向值進行旋轉,但在視覺上,物體的旋轉速度要慢上百倍。這必須是準確的,以便在視覺上正確地表示方向。但我不是專家,仍然只是學習,並試圖讓我的頭腦,所以再次,希望聰明的人可以幫助我? :)如何在OpenGL中使用GLM正確計算旋轉
void Entity::turnRight()
{
m_Orientation += m_TurnSpeed;
}
轉彎速度是0.02默認
然後拿到MVP:
m_Direction[0] = cos(0.0f) * sin(m_Orientation);
m_Direction[1] = sin(0.0f);
m_Direction[2] = cos(0.0f) * cos(m_Orientation);
glm::mat4 projectionMatrix = glm::perspective(90.0f, (GLfloat)640/(GLfloat)480, 0.001f, 60.0f);
glm::mat4 translationMatrix = glm::translate(glm::mat4(), glm::vec3(m_Position[0], m_Position[1], m_Position[2]));
glm::mat4 Rotation = glm::rotate(glm::mat4(), (m_Orientation/m_TurnSpeed), glm::vec3(0, 1, 0));
m_MVP = (projectionMatrix * viewMatrix * glm::mat4() * translationMatrix * Rotation);
這一切就是真的......玩家旋轉和平移正常,但在視覺上,它是關閉的,就像它轉向的方式小於實際的方向值(m_Orientation)
我在那裏不計算什麼?
在此先感謝!
如果您每秒調用60次turnRight(),我預計完成一個整圈需要5秒鐘的時間。那是你得到的嗎? –
不,實際中的玩家在網格本身做了整整一圈的時候,在一個地方轉了一百萬次,大約需要一分鐘左右的時間,所以我認爲我錯過了一次計算 – GDN9
您打了多少次電話在網格完成一個圓之前使用'turnRight()'? –