c++ - 如何让我的 OpenGL 相机旋转 360 度

标签 c++ opengl camera

我目前正在研究我的实体移动,但我注意到相机只有大约 180 度的“视角”,并且不会转过这个位置。尝试在达到阈值或其他任何原因后转动,会使相机转动得非常慢,并且需要很长时间才能返回。我希望能够 360 度环游世界。这可能吗?我有一个简短的 gif 来演示

在 gif 的末尾,很明显运动开始减慢并停止。

如果有人可以帮助我解决这背后的数学问题,或者为什么会发生这种情况,我们将不胜感激。我在网上四处寻找,找不到任何相关内容。

    case GLUT_KEY_LEFT:
        base->camera->angle += 3.0f;
        break;

    case GLUT_KEY_RIGHT:
        base->camera->angle -= 3.0f;

        break;


camera->lookat->z = sin(camera->angle);
camera->lookat->x = cos(camera->angle);


gluLookAt(camera->position->getX(), camera->position->getY(), camera->position->getZ(),
            camera->lookat->getX(), camera->lookat->getY(), camera->lookat->getZ(),
            camera->up->getX(), camera->up->getY(), camera->up->getZ());//camera

最佳答案

您的观察计算需要考虑相机的位置。

由于您要使相机围绕其位置旋转,因此您需要:

camera->lookat->z = camera->position->getZ() + sin(camera->angle);
camera->lookat->x = camera->position->getX() + cos(camera->angle);

关于c++ - 如何让我的 OpenGL 相机旋转 360 度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29452725/

相关文章:

c++ - C++静态库中的模板方法

c++ - Boost asio 异步读写

c++ - 清除具有重叠内容的像素

android - 相机和图库 Intent 获取图像并复制到android中的另一个文件夹中

camera - LibGDX 平铺 : Moving camera causes tiles to stutter/blur/wave

c++ - 移动后未绘制 SFML 形状

C++ - 如何从头到尾遍历列表?

c++ - 为什么我的三角形在镶嵌后不显示? OpenGL

c++ - 如何更新 GLSL 中的统一变量

android - 如果用户以代号拒绝访问相机,您可以从代码中找出答案