From 58e8664dd37bca5a2d813984b47589f697cf747e Mon Sep 17 00:00:00 2001 From: Evett Date: Fri, 13 Jul 2018 13:34:36 +0100 Subject: [PATCH 1/2] added orbit method --- Wrappers/Python/ccpi/viewer/CILViewer.py | 54 +++++++++++++++++++++++- 1 file changed, 52 insertions(+), 2 deletions(-) diff --git a/Wrappers/Python/ccpi/viewer/CILViewer.py b/Wrappers/Python/ccpi/viewer/CILViewer.py index a0e5fa05..7aa3bfc5 100644 --- a/Wrappers/Python/ccpi/viewer/CILViewer.py +++ b/Wrappers/Python/ccpi/viewer/CILViewer.py @@ -18,7 +18,6 @@ import numpy import math from vtk.util import numpy_support - SLICE_ORIENTATION_XY = 2 # Z SLICE_ORIENTATION_XZ = 1 # Y SLICE_ORIENTATION_YZ = 0 # X @@ -560,4 +559,55 @@ def setColourWindowLevel(self, window, level): self.ren.Render() self.renWin.Render() - + def createAnimation(self, viewer, FrameCount=10, + InitialCameraPosition=None, FocalPoint=None, + ClippingRange=None, AngleRange = 360, ViewUp = None): + if InitialCameraPosition is None: + InitialCameraPosition = viewer.getCamera().GetPosition() + if FocalPoint is None: + FocalPoint = viewer.getCamera().GetFocalPoint() + if ClippingRange is None: + ClippingRange = (0,500) + if ViewUp is None: + ViewUp = (0,0,1) + if FrameCount is None: + FrameCount = 100 + #Setting locked values for camera position + locX = InitialCameraPosition[0] + locY = InitialCameraPosition[1] + locZ = InitialCameraPosition[2] + + #Setting camera position + viewer.getCamera().SetPosition(InitialCameraPosition) + viewer.getCamera().SetFocalPoint(FocalPoint) + + #Setting camera viewup + viewer.getCamera().SetViewUp(ViewUp) + + #Set camera clipping range + viewer.getCamera().SetClippingRange(ClippingRange) + + #Defining distance from camera to focal point + r = numpy.sqrt(((InitialCameraPosition[2]-FocalPoint[2])**2) + +(InitialCameraPosition[1]-FocalPoint[1])**2) + print('Radius (distance from camera to focal point): {}'.format(r)) + + camera = vtk.vtkCamera() + camera.SetPosition(InitialCameraPosition) + camera.SetFocalPoint(FocalPoint) + camera.SetViewUp(ViewUp) + viewer.getRenderer().SetActiveCamera(camera) + + if CreateAnimation == True: + #Animating the camera + for x in range(FrameCount): + angle = ((numpy.pi)*2/100)*x + NewLocationX = r*(numpy.sin(angle))+FocalPoint[0] + NewLocationY = r*(numpy.cos(angle))+FocalPoint[1] + NewLocationZ = r*(numpy.cos(angle))+FocalPoint[2] + NewLocation = (NewLocationX, NewLocationY, locZ) + viewer.getCamera().SetPosition(NewLocation) + + #Rendering and saving the render + viewer.getRenderer().Render() + viewer.saveRender('test_{}'.format(x)) \ No newline at end of file From 81236449d42a896c8c6add20ebb85971c3ad875a Mon Sep 17 00:00:00 2001 From: Corkey2 Date: Fri, 13 Jul 2018 16:21:26 +0100 Subject: [PATCH 2/2] fixed missing variable --- Wrappers/Python/ccpi/viewer/CILViewer.py | 26 ++++++++++++------------ 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Wrappers/Python/ccpi/viewer/CILViewer.py b/Wrappers/Python/ccpi/viewer/CILViewer.py index 7aa3bfc5..d852feae 100644 --- a/Wrappers/Python/ccpi/viewer/CILViewer.py +++ b/Wrappers/Python/ccpi/viewer/CILViewer.py @@ -598,16 +598,16 @@ def createAnimation(self, viewer, FrameCount=10, camera.SetViewUp(ViewUp) viewer.getRenderer().SetActiveCamera(camera) - if CreateAnimation == True: - #Animating the camera - for x in range(FrameCount): - angle = ((numpy.pi)*2/100)*x - NewLocationX = r*(numpy.sin(angle))+FocalPoint[0] - NewLocationY = r*(numpy.cos(angle))+FocalPoint[1] - NewLocationZ = r*(numpy.cos(angle))+FocalPoint[2] - NewLocation = (NewLocationX, NewLocationY, locZ) - viewer.getCamera().SetPosition(NewLocation) - - #Rendering and saving the render - viewer.getRenderer().Render() - viewer.saveRender('test_{}'.format(x)) \ No newline at end of file + + #Animating the camera + for x in range(FrameCount): + angle = ((numpy.pi)*2/100)*x + NewLocationX = r*(numpy.sin(angle))+FocalPoint[0] + NewLocationY = r*(numpy.cos(angle))+FocalPoint[1] + NewLocationZ = r*(numpy.cos(angle))+FocalPoint[2] + NewLocation = (NewLocationX, NewLocationY, locZ) + viewer.getCamera().SetPosition(NewLocation) + + #Rendering and saving the render + viewer.getRenderer().Render() + viewer.saveRender('test_{}'.format(x)) \ No newline at end of file