当前位置:  开发笔记 > 编程语言 > 正文

OpenGL围绕一个点旋转相机

如何解决《OpenGL围绕一个点旋转相机》经验,为你挑选了2个好方法。

在OpenGL中,我试图围绕一个点旋转相机,相机距离点距离r并且在旋转时面向点.换句话说,我希望相机沿着圆心圆周从中心移动半径为r,相机在圆周的任何一点都面向中心.

让我们说在3d空间中圆的中心是(3,0,3);

我试过了:

// move to center of circle    
glTranslatef(-3, 0, -3)
// move a distance away from the circle
glTranslatef(0, 0, r);
// rotate along the y "up" axis
glRotatef(CameraAngle, 0, 1, 0);

其中CameraAngle是围绕圆圈移动的度数.

我的最终结果是相机仍然沿着原点旋转,而不是圆圈的中心.任何人都可以帮我解决这个问题吗?谢谢!



1> Alnitak..:

你需要:

围绕原点旋转相机然后翻译它(*)

要么:

用于gluLookAt使相机指向圆圈的中心

(*)旋转功能通常围绕原点旋转.要围绕另一个点旋转,P您必须:

翻译(-P)

回转

翻译(P)



2> neoedmund..:

这有点令人困惑,但我认为你应该:

// move camera a distance r away from the center
glTranslatef(0, 0, -r);

// rotate 
glRotatef(angley, 0, 1, 0);
glRotatef(anglex, 1, 0, 0);

// move to center of circle    
glTranslatef(-cx, -cy, -cz)

请注意,不得更改订单.

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有