使用GLM的潮湿相机?

问题描述 投票:-4回答:1

我已经阅读了有关阻尼的文章。基本上是平稳的相机运动。但是,我不确定如何使用C ++,OpenGL和GLM来实现阻尼。

请帮我看一小段示例代码。

c++ opengl glm-math
1个回答
0
投票

您可以实现惯性。这样会使您的相机平稳减速。为此,您可以将相机声明为对象。您可以这样做:

class Movable
{
        public:
        float x;
        float y;
        float z;
        float xmovement;
        float ymovement;
        float zmovement;
        float xrot;
        float yrot;
}
Movable camera;
//omitted code that handles camera acceleration itself
camera.x+=camera.xmovement;
camera.y+=camera.ymovement;
camera.z+=camera.zmovement;
camera.xmovement*=0.99f;
camera.ymovement*=0.99f;
camera.zmovement*=0.99f;
glm::mat4 ViewMatrix=glm::perspective(90f, 1.0f, 0.001f, 30.0f)*glm::lookAt(glm::vec3(camera.x, camera.y, camera.z), glm::vec3(camera.x+sin(xrot), camera.y+tan(yrot), camera.z+cos(xrot)), glm::vec3(0.0f, 1.0f, 0.0f));
//Then pass ViewMatrix into your Vertex Shader.

0.99常数修改为更高的值可以使相机停止得更慢,或者降低到可以更快地停止。请注意,相机可能永远不会真正停止。但是从某个角度来看,它的移动速度如此之慢,以至于不会引起注意。

© www.soinside.com 2019 - 2024. All rights reserved.