[vtkusers] Fw: cutter for vtkGlyph3D

alex Dowson alexdowson at hotmail.com
Wed Apr 25 00:38:53 EDT 2012


Hi

In Cutter code there is problem 

cutter.SetInput(pdb.GetInput())
should be
cutter.SetInput(pdb.GetOutput())


Alex



From: zhixiu li 
Sent: Wednesday, April 25, 2012 9:35 AM
To: alex Dowson 
Subject: Re: [vtkusers] cutter for vtkGlyph3D

Here is my code.
PDB format is a format for protein structure.
Basicly it has n atoms and each atom has x.y,z coordinate. It is like a network. I attach a pdb file for you~
The visualization of the pdb is fine. The only thing is the cutting doesn't work

Thank you very much!


 
import vtk
import sys
 

pdb = vtk.vtkPDBReader()
pdb.SetFileName(sys.argv[1])
pdb.SetHBScale(1.0)
pdb.SetBScale(1.0)
pdb.Update()

#create a plane to cut,here it cuts in the XZ direction (xz normal=(1,0,0);XY =(0,0,1),YZ =(0,1,0)
plane=vtk.vtkPlane()
plane.SetOrigin(0,0,0)
plane.SetNormal(10,0,0)
 
#create cutter
cutter=vtk.vtkCutter()
cutter.SetCutFunction(plane)
cutter.SetInput(pdb.GetInput())
cutter.Update()
cutterMapper=vtk.vtkPolyDataMapper()
cutterMapper.SetInputConnection(cutter.GetOutputPort())
 
#create plane actor
planeActor=vtk.vtkActor()
planeActor.GetProperty().SetColor(1.0,0.8,0)
planeActor.GetProperty().SetLineWidth(2)
planeActor.SetMapper(cutterMapper)
 
 
#create renderers and add actors of plane and cube
ren = vtk.vtkRenderer()
ren.AddActor(planeActor)


#creat atom sphere
sphere = vtk.vtkSphereSource()
sphere.SetCenter(0, 0, 0)
sphere.SetRadius(1)
sphere.SetThetaResolution(10)
sphere.SetPhiResolution(10)

glyph = vtk.vtkGlyph3D()
glyph.SetInputConnection(pdb.GetOutputPort())
glyph.SetOrient(1)
glyph.SetColorMode(1)
# // glyph.ScalingOn()
glyph.SetScaleMode(2)
glyph.SetScaleFactor(.25)
glyph.SetSourceConnection(sphere.GetOutputPort())

atomMapper = vtk.vtkPolyDataMapper()
atomMapper.SetInputConnection(glyph.GetOutputPort())
atomMapper.ImmediateModeRenderingOn()
atomMapper.UseLookupTableScalarRangeOff()
atomMapper.ScalarVisibilityOn()
atomMapper.SetScalarModeToDefault()

atom = vtk.vtkLODActor()
atom.SetMapper(atomMapper)
atom.GetProperty().SetRepresentationToSurface()
atom.GetProperty().SetInterpolationToGouraud()
atom.GetProperty().SetAmbient(0.15)
atom.GetProperty().SetDiffuse(0.85)
atom.GetProperty().SetSpecular(0.1)
atom.GetProperty().SetSpecularPower(30)
atom.GetProperty().SetSpecularColor(1, 1, 1)
atom.SetNumberOfCloudPoints(30000)
ren.AddActor(atom)


#connection between atoms
tube = vtk.vtkTubeFilter()
tube.SetInputConnection(pdb.GetOutputPort())
tube.SetNumberOfSides(10)
tube.CappingOff()
tube.SetRadius(0.2)
tube.SetVaryRadius(0)
tube.SetRadiusFactor(10)

bondMapper = vtk.vtkPolyDataMapper()
bondMapper.SetInputConnection(tube.GetOutputPort())
bondMapper.ImmediateModeRenderingOn()
bondMapper.UseLookupTableScalarRangeOff()
bondMapper.ScalarVisibilityOff()
bondMapper.SetScalarModeToDefault()

bond = vtk.vtkLODActor()
bond.SetMapper(bondMapper)
bond.GetProperty().SetRepresentationToSurface()
bond.GetProperty().SetInterpolationToGouraud()
bond.GetProperty().SetAmbient(0.15)
bond.GetProperty().SetDiffuse(0.85)
bond.GetProperty().SetSpecular(0.1)
bond.GetProperty().SetSpecularPower(30)
bond.GetProperty().SetSpecularColor(1, 1, 1)
bond.GetProperty().SetDiffuseColor(1.0000, 0.8941, 0.70981)

ren.AddActor(bond)

#Add renderer to renderwindow and render
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren)
renWin.SetSize(600, 600)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
ren.SetBackground(0,0,0)
renWin.Render()
iren.Start()



On Tue, Apr 24, 2012 at 11:48 PM, alex Dowson <alexdowson at hotmail.com> wrote:

  Hi

  Check you PDBReader FileName path . If is not locating file then output will be empty and you will get this error due to empty output. Also I still donot know
  what is PDB format so is it triangulated polydata ?


  Alex



  From: zhixiu li 
  Sent: Wednesday, April 25, 2012 9:14 AM
  To: alex Dowson 
  Subject: Re: [vtkusers] cutter for vtkGlyph3D

  Thank you.
  But after I tried your method,I got this kind of error:
  ERROR: In ..\..\vtk-5.8.0\Filtering\vtkExecutive.cxx, line 377
  vtkStreamingDemandDrivenPipeline (02B1D470): Attempt to get input information vector from input port index 0 for algorithm vtkPDBReader(02B1D150), which has 0 input ports.

  ERROR: In ..\..\vtk-5.8.0\Filtering\vtkExecutive.cxx, line 377
  vtkStreamingDemandDrivenPipeline (02B1D470): Attempt to get input information vector from input port index 0 for algorithm vtkPDBReader(02B1D150), which has 0 input ports.

  ERROR: In ..\..\vtk-5.8.0\Filtering\vtkExecutive.cxx, line 377
  vtkStreamingDemandDrivenPipeline (02B1D470): Attempt to get input information vector from input port index 0 for algorithm vtkPDBReader(02B1D150), which has 0 input ports.

  ERROR: In ..\..\vtk-5.8.0\Filtering\vtkDemandDrivenPipeline.cxx, line 727
  vtkStreamingDemandDrivenPipeline (02B360A8): Input port 0 of algorithm vtkStructuredGridOutlineFilter(02B24EB0) has 0 connections but is not optional.

  ERROR: In ..\..\vtk-5.8.0\Filtering\vtkDemandDrivenPipeline.cxx, line 727
  vtkStreamingDemandDrivenPipeline (02B33170): Input port 0 of algorithm vtkStructuredGridGeometryFilter(02B32C00) has 0 connections but is not optional.

  ERROR: In ..\..\vtk-5.8.0\Filtering\vtkDemandDrivenPipeline.cxx, line 727
  vtkStreamingDemandDrivenPipeline (02B2FEB8): Input port 0 of algorithm vtkCutter(02B2BE00) has 0 connections but is not optional.

  ERROR: In ..\..\vtk-5.8.0\Filtering\vtkDemandDrivenPipeline.cxx, line 727
  vtkStreamingDemandDrivenPipeline (02B360A8): Input port 0 of algorithm vtkStructuredGridOutlineFilter(02B24EB0) has 0 connections but is not optional.

  ERROR: In ..\..\vtk-5.8.0\Filtering\vtkDemandDrivenPipeline.cxx, line 727
  vtkStreamingDemandDrivenPipeline (02B33170): Input port 0 of algorithm vtkStructuredGridGeometryFilter(02B32C00) has 0 connections but is not optional.

  ERROR: In ..\..\vtk-5.8.0\Filtering\vtkDemandDrivenPipeline.cxx, line 727
  vtkStreamingDemandDrivenPipeline (02B2FEB8): Input port 0 of algorithm vtkCutter(02B2BE00) has 0 connections but is not optional.



  On Tue, Apr 24, 2012 at 11:38 PM, alex Dowson <alexdowson at hotmail.com> wrote:

    Hi

    You can try like this

    plane = vtk.vtkPlane()
    plane.SetOrigin(0,0,0) 

    plane.SetNormal(0.17, 0, 0.9579)
    planeCut = vtk.vtkCutter()

    planeCut.SetInput(pdb.GetOutput())
    planeCut.SetCutFunction(plane) 




    From: zhixiu li 
    Sent: Wednesday, April 25, 2012 8:48 AM
    To: vtkusers 
    Subject: Re: [vtkusers] cutter for vtkGlyph3D

    Sorry, I didn't say it clearly.
    I read the pdb by
    pdb = vtk.vtkPDBReader()
    pdb.SetFileName(sys.argv[1])

    And I want to cut the pdb by the plain and its cutter

    plane = vtk.vtkPlane()
    plane.SetOrigin(??????????????????????what should I put in here)
    plane.SetNormal(0.17, 0, 0.9579)
    planeCut = vtk.vtkCutter()
    planeCut.SetInput(????????????????????what should I put in here)
    planeCut.SetCutFunction(plane)


    Thank you!



    On Tue, Apr 24, 2012 at 11:04 PM, zhixiu li <zhixiuli at gmail.com> wrote:

      Dear ALL,
      I have a pdb file and I want to use the pdbreader to read the pdb file. And use use vtkGlyph3D for each atom (each points ) of the pdb. I want to use a plain to cut this pdb and show the cutting plain of the pdb. How do I combine vtkCutter and vtkGlyph3D to achieve the aim? Thank you. 



----------------------------------------------------------------------------
    _______________________________________________
    Powered by www.kitware.com

    Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

    Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

    Follow this link to subscribe/unsubscribe:
    http://www.vtk.org/mailman/listinfo/vtkusers


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20120425/fe40fea1/attachment.htm>


More information about the vtkusers mailing list