我有一个圆形物体,我想沿着它自己的轴旋转一个扇形物体。围绕轴旋转物体
我可以改变任何方向的旋转,即dx, dy, dz
使用我的变换矩阵。
下它的代码:
Matrix4f matrix = new Matrix4f();
matrix.setIdentity();
Matrix4f.translate(translation, matrix, matrix);
Matrix4f.rotate((float) Math.toRadians(rx), new Vector3f(1,0,0), matrix, matrix);
Matrix4f.rotate((float) Math.toRadians(ry), new Vector3f(0,1,0), matrix, matrix);
Matrix4f.rotate((float) Math.toRadians(rz), new Vector3f(0,0,1), matrix, matrix);
Matrix4f.scale(new Vector3f(scale,scale,scale), matrix, matrix);
我的顶点代码:
vec4 worldPosition = transformationMatrix * vec4(position,1.0);
vec4 positionRelativeToCam = viewMatrix*worldPosition;
gl_Position = projectionMatrix *positionRelativeToCam;
Main Game Loop:
Object.increaseRotation(dxf,dyf,dzf);
但是,它不是沿着它自己的轴旋转。我在这里错过了什么? 我想要这样的东西。请帮助
见[4×4认识同质变换矩阵(http://stackoverflow.com/a/28084380/2521214)子弹**#5 **,并寻找本地之间差并在那里进行全球轮换。 – Spektre
@Spektre会在回答中解释需要做些什么改变我也面临类似问题 –
问题中的代码太少,而不是问题的出现位置。数学的应用是正确的。所以我的猜测是,转换矩阵无法正确加载到着色器的制服中。 – datenwolf