围绕固定轴旋转场景

我正在寻找一种方法来移动我的场景,这样当我向前/向后/向左翻译时,它可以直接在屏幕上向上/向下/向左/向右移动。 目前它是这样做,直到我旋转(除了360以外的任何东西)。 旋转后,上/下/左/右向旋转方向移动。 我需要它在屏幕上直接上/下/左/右移动。 我一直在绞尽脑汁尝试各种不同的matrix旋转和乘法,但我无法得到它。 最重要的是 – 我需要它保持一个0,0,0的旋转轴,所以无论我滚动多远,旋转中心总是靠近屏幕的中间。 我可以很容易地在场景中心旋转,并将其转换成我想要的forms(翻译为合作,旋转,回转,到位),但是我需要这个轴保持固定。 否则,旋转的中心可能在某个地方的屏幕外。

图1.显示模型(场景)的起始位置。 图2.模型视图旋转45度。 图3.减小z值导致模型沿z移出 – 这是我不想要的。 图4我需要模型直回(在z和x之间)。

我尝试过使用sin / cos规则,试图将顶点沿着不希望的位置(图3)和期望的位置(图4)之间的圆弧翻转回去,但是mathclosures并且过程是混乱的。 我只知道那里必须有一个干净/简单的解决scheme。 我在Java(JOGL)中编码,并将模型视图和投影matrix传递给顶点着色器。 此外,我不使用弃用的function(无开始/结束/ glRotate等)。

有谁知道matrix乘法,将完成这个?

为了显示