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.
84 lines
2.6 KiB
84 lines
2.6 KiB
2 years ago
|
#!/usr/bin/env python
|
||
|
|
||
|
# This example demonstrates the use of vtkAssembly. In an assembly,
|
||
|
# the motion of one actor affects the position of other actors.
|
||
|
|
||
|
import vtk
|
||
|
|
||
|
# Create four parts: a top level assembly (in this case, a
|
||
|
# vtkCylinder) and three primitives (using vtkSphereSource,
|
||
|
# vtkCubeSource, and vtkConeSource). Set up mappers and actors for
|
||
|
# each part of the assembly to carry information about material
|
||
|
# properties and associated geometry.
|
||
|
sphere = vtk.vtkSphereSource()
|
||
|
sphereMapper = vtk.vtkPolyDataMapper()
|
||
|
sphereMapper.SetInputConnection(sphere.GetOutputPort())
|
||
|
sphereActor = vtk.vtkActor()
|
||
|
sphereActor.SetMapper(sphereMapper)
|
||
|
sphereActor.SetOrigin(2, 1, 3)
|
||
|
sphereActor.RotateY(6)
|
||
|
sphereActor.SetPosition(2.25, 0, 0)
|
||
|
sphereActor.GetProperty().SetColor(1, 0, 1)
|
||
|
|
||
|
cube = vtk.vtkCubeSource()
|
||
|
cubeMapper = vtk.vtkPolyDataMapper()
|
||
|
cubeMapper.SetInputConnection(cube.GetOutputPort())
|
||
|
cubeActor = vtk.vtkActor()
|
||
|
cubeActor.SetMapper(cubeMapper)
|
||
|
cubeActor.SetPosition(0.0, .25, 0)
|
||
|
cubeActor.GetProperty().SetColor(0, 0, 1)
|
||
|
|
||
|
cone = vtk.vtkConeSource()
|
||
|
coneMapper = vtk.vtkPolyDataMapper()
|
||
|
coneMapper.SetInputConnection(cone.GetOutputPort())
|
||
|
coneActor = vtk.vtkActor()
|
||
|
coneActor.SetMapper(coneMapper)
|
||
|
coneActor.SetPosition(0, 0, .25)
|
||
|
coneActor.GetProperty().SetColor(0, 1, 0)
|
||
|
|
||
|
# top part of the assembly
|
||
|
cylinder = vtk.vtkCylinderSource()
|
||
|
cylinderMapper = vtk.vtkPolyDataMapper()
|
||
|
cylinderMapper.SetInputConnection(cylinder.GetOutputPort())
|
||
|
cylinderMapper.SetResolveCoincidentTopologyToPolygonOffset()
|
||
|
cylinderActor = vtk.vtkActor()
|
||
|
cylinderActor.SetMapper(cylinderMapper)
|
||
|
cylinderActor.GetProperty().SetColor(1, 0, 0)
|
||
|
|
||
|
# Create the assembly and add the 4 parts to it. Also set the origin,
|
||
|
# position and orientation in space.
|
||
|
assembly = vtk.vtkAssembly()
|
||
|
assembly.AddPart(cylinderActor)
|
||
|
assembly.AddPart(sphereActor)
|
||
|
assembly.AddPart(cubeActor)
|
||
|
assembly.AddPart(coneActor)
|
||
|
assembly.SetOrigin(5, 10, 15)
|
||
|
assembly.AddPosition(5, 0, 0)
|
||
|
assembly.RotateX(15)
|
||
|
|
||
|
# Create the Renderer, RenderWindow, and RenderWindowInteractor
|
||
|
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(assembly)
|
||
|
ren.AddActor(coneActor)
|
||
|
ren.SetBackground(0.1, 0.2, 0.4)
|
||
|
renWin.SetSize(200, 200)
|
||
|
|
||
|
# Set up the camera to get a particular view of the scene
|
||
|
camera = vtk.vtkCamera()
|
||
|
camera.SetClippingRange(21.9464, 30.0179)
|
||
|
camera.SetFocalPoint(3.49221, 2.28844, -0.970866)
|
||
|
camera.SetPosition(3.49221, 2.28844, 24.5216)
|
||
|
camera.SetViewAngle(30)
|
||
|
camera.SetViewUp(0, 1, 0)
|
||
|
ren.SetActiveCamera(camera)
|
||
|
|
||
|
iren.Initialize()
|
||
|
renWin.Render()
|
||
|
iren.Start()
|