У меня проблема с моим вращением на моем 3D-объекте (он в java, но это не имеет большого значения)
Фон:
У меня есть простая 3d-модель, и выесли вы играете от первого лица, вы перемещаете мышь вверх, чтобы посмотреть вверх (IE Rotate по оси X 3D), и двигаете мышь вниз, чтобы смотреть вниз (Rotate в противоположном направлении)
Но:
У меня также есть клавиши со стрелками влево и вправо для поворота влево / вправо (который вращает ось Y 3D)
Теперь проблема заключается в том, когда я поворачиваюсь, когда я поворачиваюсь на x-ось больше не поворачивается, как ожидалось, т.е. если вы поворачиваетесь на 180 градусов, перемещая мышь вниз, вы на самом деле смотрите вверх, а если вы перемещаете мышь вверх, вы на самом деле смотрите вниз.
Какой поворот я могу выполнить на х /ось у, чтобы это исправить?
-Так как бы я ни повернулся, перемещение мыши вверх будет смотреть вверх, а перемещение мыши вниз -
Извините, я не могу объяснитьлучше, но если вам нужна дополнительная информация, просто оставьте комментарий.
Большое спасибо,
Вероятно, это простое преобразование, но я не могу думать: (
Часть кода вращения 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, камера будет смотреть вверх, когда мышь перемещается вверх и вниз, когда мышь перемещается вниз ??