我的 3D 对象旋转有问题(它是用 java 编写的,但这并不重要)
的背景:
我有一个简单的 3D 模型,您是其中的第一人称玩家,您向上移动鼠标以向上看(即按 3D 的 x 轴旋转),向下移动鼠标以向下看(沿相反方向旋转)
But:
我还有左、右箭头键来左/右转动(旋转 3D 的 y 轴)
现在的问题是,当我转动时,当我按 x 轴旋转时,它不再按预期转动,即如果你转动 180 度,通过向下移动鼠标,你实际上会向上看,如果你向上移动鼠标,你实际上会向上看向下。
我可以在 x/y 轴上执行什么旋转来解决此问题?
-所以无论我转动了多少/多少,向上移动鼠标都会向上看,向下移动鼠标就会向下看。
抱歉,我无法更好地解释它,但如果您需要更多信息,请发表评论。
多谢,
这可能是一个简单的转换,但我想不出来:(
一些Java轮换代码:
鼠标向上/向下:
public void rotateXY(double radians, double Yradians)
{
vpTrans.getTransform(T3D);
Transform3D test = new Transform3D();
Transform3D testX = new Transform3D();
Transform3D testY = new Transform3D();
translate.set(lastXcord, lastYcord, lastZcord);
testX.rotX(radians);
testY.rotY(Yradians);
test.mul(testX, testY);
test.setTranslation(translate);
vpTrans.setTransform(test);
//System.out.println(test);
} // end of rotateXY()
左:(右类似,但角度变化时减号而不是加号)
public void run() {
Transform3D test = new Transform3D();
Transform3D rotX = new Transform3D();
Transform3D rotY = new Transform3D();
vpTrans.getTransform(T3D);
translate.set(lastXcord, lastYcord, lastZcord);
angle += 0.05;
trueangle += 0.05;
rotX.rotX(angle);
rotY.rotY(Yangle);
test.mul(rotX, rotY);
test.setTranslation(translate);
vpTrans.setTransform(test);
}
我需要添加什么转换/旋转,以便无论我的 y 轴如何,当鼠标上下移动时相机都会向上查找,当鼠标向下移动时相机都会向上查找?