【发布时间】:2011-12-07 01:08:11
【问题描述】:
我的 3D 对象的旋转有问题(它在 java 中,但没关系)
背景:
我有一个简单的 3d 模型,你是第一人称玩家,你将鼠标向上移动以查看(即按 3D 的 x 轴旋转)并向下移动鼠标以向下查看(向相反方向旋转方向)
但是:
我也有左右箭头键来左/右转(旋转 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 轴如何,当鼠标上下移动时,相机都会向上看??
【问题讨论】:
-
我可能在某些时候在解释中混淆了 X/Y 轴,但希望你能明白!
标签: java vector 3d matrix rotation