def initialize(self): # Bring used components self.registerVtkWebProtocol(protocols.vtkWebMouseHandler()) self.registerVtkWebProtocol(protocols.vtkWebViewPort()) self.registerVtkWebProtocol(protocols.vtkWebViewPortImageDelivery()) # Update authentication key to use self.updateSecret(_WebMolecule.authKey) # Create default pipeline (Only once for all the session) if not self.view: self.reader = vtk.vtkCMLMoleculeReader() #self.reader.SetFileName('/home/cjh/work/VTKData/Data/porphyrin.cml') self.mapper = vtk.vtkMoleculeMapper() self.mapper.SetInputConnection(self.reader.GetOutputPort()) self.mapper.UseBallAndStickSettings() self.actor = vtk.vtkActor() self.actor.SetMapper(self.mapper) self.renderer = vtk.vtkRenderer() self.window = vtk.vtkRenderWindow() self.window.AddRenderer(self.renderer) interactor = vtk.vtkRenderWindowInteractor() interactor.SetRenderWindow(self.window) interactor.GetInteractorStyle().SetCurrentStyleToTrackballCamera() self.renderer.AddActor(self.actor) self.renderer.SetBackground(1, 1, 1) # VTK Web application specific _WebMolecule.view = self.window self.Application.GetObjectIdMap().SetActiveObject( "VIEW", self.window)
def create_structure(self): import vtk # REQUIRES VTK < 9.0!!! # molecule mol = vtk.vtkMolecule() # hardcoded structure CO2 a1 = mol.AppendAtom(6, 0.0, 0.0, 0.0) a2 = mol.AppendAtom(8, 0.0, 0.0, -1.0) a3 = mol.AppendAtom(8, 0.0, 0.0, 1.0) mol.AppendBond(a2, a1, 1) mol.AppendBond(a3, a1, 1) # hardcoded cell, cubic 10x10x10 vector = vtk.vtkMatrix3x3() vector.DeepCopy([10, 0, 0, 0, 10, 0, 0, 0, 10]) mol.SetLattice(vector) # Change lattice origin so molecule is in the centre mol.SetLatticeOrigin(vtk.vtkVector3d(-5.0, -5.0, -5.0)) # Create a mapper and actor mapper = vtk.vtkMoleculeMapper() mapper.SetInputData(mol) actor = vtk.vtkActor() actor.SetMapper(mapper) self.fbo.addActors([actor]) self.fbo.update()
def load(self, inchikey): self.reader = vtk.vtkCMLMoleculeReader() #self.reader.SetFileName('/home/cjh/work/VTKData/Data/porphyrin.cml') self.mapper = vtk.vtkMoleculeMapper() self.mapper.SetInputConnection(self.reader.GetOutputPort()) self.mapper.UseBallAndStickSettings() self.actor = vtk.vtkActor() self.actor.SetMapper(self.mapper) self.renderer = vtk.vtkRenderer() self.window = vtk.vtkRenderWindow() self.window.AddRenderer(self.renderer) interactor = vtk.vtkRenderWindowInteractor() interactor.SetRenderWindow(self.window) interactor.GetInteractorStyle().SetCurrentStyleToTrackballCamera() self.renderer.AddActor(self.actor) self.renderer.SetBackground(1, 1, 1) # VTK Web application specific _WebMolecule.view = self.window # VTK Web application specific _WebMolecule.view = self.window self.Application.GetObjectIdMap().SetActiveObject("VIEW", self.window) try: path = converter.inchikey_to_cml_file(inchikey) self.reader.SetFileName(path) self.reader.Update() bounds = [0, 0, 0, 0, 0, 0] self.mapper.GetBounds(bounds) os.remove(path) self.renderer.ResetCamera(bounds) self.renderer.GetActiveCamera().Zoom(1.5) except: print traceback.format_exc()
def main(): filename = get_program_parameters() cml_source = vtk.vtkCMLMoleculeReader() cml_source.SetFileName(filename) molmapper = vtk.vtkMoleculeMapper() molmapper.SetInputConnection(cml_source.GetOutputPort()) molmapper.UseBallAndStickSettings() colors = vtk.vtkNamedColors() actor = vtk.vtkActor() actor.SetMapper(molmapper) actor.GetProperty().SetDiffuse(.7) actor.GetProperty().SetSpecular(.5) actor.GetProperty().SetSpecularPower(20.0) renderer = vtk.vtkRenderer() renderer.AddActor(actor) render_window = vtk.vtkRenderWindow() render_window.AddRenderer(renderer) render_window_interactor = vtk.vtkRenderWindowInteractor() render_window_interactor.SetRenderWindow(render_window) render_window.SetSize(640, 480) render_window.Render() renderer.GetActiveCamera().Zoom(2.0) renderer.SetBackground(colors.GetColor3d("Silver")) # Finally render the scene render_window.SetMultiSamples(0) render_window.GetInteractor().Initialize() render_window.GetInteractor().Start()
atom_points.SetNumberOfPoints(nat) vectors = vtk.vtkFloatArray() vectors.SetNumberOfComponents(3) vectors.SetNumberOfTuples(nat) for i in range(nat): a = coordinates[i] atom_points.InsertPoint(i, a[0], a[1], a[2]) vectors.SetTuple(i, gradients[i]) grid = vtk.vtkUnstructuredGrid() grid.SetPoints(atom_points) grid.GetPointData().SetVectors(vectors) molMapper = vtk.vtkMoleculeMapper() molMapper.SetInputData(molecule) molActor = vtk.vtkActor() molActor.SetMapper(molMapper) arrow = vtk.vtkArrowSource() glyph = vtk.vtkGlyph3D() glyph.SetInputData(grid) glyph.SetSourceConnection(arrow.GetOutputPort()) glyph.SetScaleModeToScaleByVector() glyph.SetScaleFactor(30.0) glyphMapper = vtk.vtkPolyDataMapper() glyphMapper.SetInputConnection(glyph.GetOutputPort())