You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.0 KiB
65 lines
2.0 KiB
2 years ago
|
#!/usr/bin/env python
|
||
|
|
||
|
# This example demonstrates how to use implicit modelling.
|
||
|
|
||
|
import vtk
|
||
|
from vtk.util.misc import vtkGetDataRoot
|
||
|
from vtk.util.colors import red, peacock
|
||
|
VTK_DATA_ROOT = vtkGetDataRoot()
|
||
|
|
||
|
# Create lines which serve as the "seed" geometry. The lines spell the
|
||
|
# word "hello".
|
||
|
reader = vtk.vtkPolyDataReader()
|
||
|
reader.SetFileName(VTK_DATA_ROOT + "/Data/hello.vtk")
|
||
|
lineMapper = vtk.vtkPolyDataMapper()
|
||
|
lineMapper.SetInputConnection(reader.GetOutputPort())
|
||
|
lineActor = vtk.vtkActor()
|
||
|
lineActor.SetMapper(lineMapper)
|
||
|
lineActor.GetProperty().SetColor(red)
|
||
|
|
||
|
# Create implicit model with vtkImplicitModeller. This computes a
|
||
|
# scalar field which is the distance from the generating geometry. The
|
||
|
# contour filter then extracts the geoemtry at the distance value 0.25
|
||
|
# from the generating geometry.
|
||
|
imp = vtk.vtkImplicitModeller()
|
||
|
imp.SetInputConnection(reader.GetOutputPort())
|
||
|
imp.SetSampleDimensions(110, 40, 20)
|
||
|
imp.SetMaximumDistance(0.25)
|
||
|
imp.SetModelBounds(-1.0, 10.0, -1.0, 3.0, -1.0, 1.0)
|
||
|
contour = vtk.vtkContourFilter()
|
||
|
contour.SetInputConnection(imp.GetOutputPort())
|
||
|
contour.SetValue(0, 0.25)
|
||
|
impMapper = vtk.vtkPolyDataMapper()
|
||
|
impMapper.SetInputConnection(contour.GetOutputPort())
|
||
|
impMapper.ScalarVisibilityOff()
|
||
|
impActor = vtk.vtkActor()
|
||
|
impActor.SetMapper(impMapper)
|
||
|
impActor.GetProperty().SetColor(peacock)
|
||
|
impActor.GetProperty().SetOpacity(0.5)
|
||
|
|
||
|
# Create the usual graphics stuff.
|
||
|
# Create the RenderWindow, Renderer and both Actors
|
||
|
ren = vtk.vtkRenderer()
|
||
|
renWin = vtk.vtkRenderWindow()
|
||
|
renWin.AddRenderer(ren)
|
||
|
iren = vtk.vtkRenderWindowInteractor()
|
||
|
iren.SetRenderWindow(renWin)
|
||
|
|
||
|
# Add the actors to the renderer, set the background and size
|
||
|
ren.AddActor(lineActor)
|
||
|
ren.AddActor(impActor)
|
||
|
ren.SetBackground(1, 1, 1)
|
||
|
renWin.SetSize(600, 250)
|
||
|
|
||
|
camera = vtk.vtkCamera()
|
||
|
camera.SetClippingRange(1.81325, 90.6627)
|
||
|
camera.SetFocalPoint(4.5, 1, 0)
|
||
|
camera.SetPosition(4.5, 1.0, 6.73257)
|
||
|
camera.SetViewUp(0, 1, 0)
|
||
|
camera.Zoom(0.8)
|
||
|
ren.SetActiveCamera(camera)
|
||
|
|
||
|
iren.Initialize()
|
||
|
renWin.Render()
|
||
|
iren.Start()
|