我有一个适用于相机和游戏对象的3D世界。当相机“渲染”时,它将矩阵定位在相机的位置。为此,我调用以下代码:
gl.glMultMatrixf(rotationArray,0);
gl.glTranslatef(position.getX(), position.getY(), position.getZ());
现在,当每个对象都被渲染时,我会为每个对象调用它。 (请注意,我正确地推送和弹出矩阵)
gl.glTranslatef(position.getX(), position.getY(), position.getZ());
gl.glMultMatrixf(rotationArray,0);
现在我的问题开始发挥作用,当我将模型带入世界时,我需要某些网格物体不在0,0,0点附近,而是在不同点附近。我有一个名为Mesh的对象,它有一个子网格的ArrayList。每个网格(和子网格)都有一个轴点位置。 (x,y和z浮点数)。
我在哪里翻译基础,所以我绕指定点转移?我尝试了各种各样的组合,没有任何作用!
示例:
gl.glTranslatef(position.getX(), position.getY(), position.getZ());
gl.glMultMatrixf(rotationArray,0);
gl.glTranslatef(pivotPoint.getX(),pivotPoint.getY(),pivotPoint.getZ());
我试过
gl.glTranslatef(pivotPoint.getX(),pivotPoint.getY(),pivotPoint.getZ());
gl.glMultMatrixf(rotationArray,0);
gl.glTranslatef(position.getX(), position.getY(), position.getZ());
答案 0 :(得分:1)
这归结为绕任意点旋转。传统上,当您旋转对象时,通常会围绕对象的中心旋转它,但在这种情况下,您有一个单独的轴心点。
围绕任意点旋转对象的过程是: