diff --git a/CameraAnimation.py b/CameraAnimation.py new file mode 100644 index 0000000000..13479823c6 --- /dev/null +++ b/CameraAnimation.py @@ -0,0 +1,24 @@ + +from PyQt5.QtCore import QVariantAnimation, QEasingCurve +from PyQt5.QtGui import QVector3D + +from UM.Math.Vector import Vector + +class CameraAnimation(QVariantAnimation): + def __init__(self, parent = None): + super().__init__(parent) + self._camera_tool = None + self.setDuration(500) + self.setEasingCurve(QEasingCurve.InOutQuad) + + def setCameraTool(self, cameraTool): + self._camera_tool = cameraTool + + def setStart(self, start): + self.setStartValue(QVector3D(start.x, start.y, start.z)) + + def setTarget(self, target): + self.setEndValue(QVector3D(target.x, target.y, target.z)) + + def updateCurrentValue(self, value): + self._camera_tool.setOrigin(Vector(value.x(), value.y(), value.z())) diff --git a/PrinterApplication.py b/PrinterApplication.py index 63a9617b57..db03237eae 100644 --- a/PrinterApplication.py +++ b/PrinterApplication.py @@ -11,6 +11,7 @@ from UM.Scene.Selection import Selection from PlatformPhysics import PlatformPhysics from BuildVolume import BuildVolume +from CameraAnimation import CameraAnimation from PyQt5.QtCore import pyqtSlot, QUrl, Qt, pyqtSignal from PyQt5.QtGui import QColor @@ -64,6 +65,9 @@ class PrinterApplication(QtApplication): camera.setPerspective(True) camera.lookAt(Vector(0, 0, 0), Vector(0, 1, 0)) + self._camera_animation = CameraAnimation() + self._camera_animation.setCameraTool(self.getController().getTool('CameraTool')) + controller.getScene().setActiveCamera('3d') self.showSplashMessage('Loading interface...') @@ -79,6 +83,7 @@ class PrinterApplication(QtApplication): if self._engine.rootObjects: self.closeSplash() + self.exec_() self.saveMachines() @@ -91,7 +96,9 @@ class PrinterApplication(QtApplication): if not self.getController().getActiveTool(): self.getController().setActiveTool('TranslateTool') - self.getController().getTool('CameraTool').setOrigin(Selection.getSelectedObject(0).getGlobalPosition()) + self._camera_animation.setStart(self.getController().getTool('CameraTool').getOrigin()) + self._camera_animation.setTarget(Selection.getSelectedObject(0).getGlobalPosition()) + self._camera_animation.start() else: if self.getController().getActiveTool(): self.getController().setActiveTool(None)