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.
90 lines
2.4 KiB
90 lines
2.4 KiB
package require vtk
|
|
package require vtkinteraction
|
|
package require vtktesting
|
|
|
|
#
|
|
# Demonstrate the use of clipping and capping on polyhedral data
|
|
#
|
|
|
|
# create a sphere and clip it
|
|
#
|
|
vtkSphereSource sphere
|
|
sphere SetRadius 1
|
|
sphere SetPhiResolution 10
|
|
sphere SetThetaResolution 10
|
|
vtkPlane plane
|
|
plane SetOrigin 0 0 0
|
|
plane SetNormal -1 -1 0
|
|
vtkClipPolyData clipper
|
|
clipper SetInputConnection [sphere GetOutputPort]
|
|
clipper SetClipFunction plane
|
|
clipper GenerateClipScalarsOn
|
|
clipper GenerateClippedOutputOn
|
|
clipper SetValue 0
|
|
vtkPolyDataMapper clipMapper
|
|
clipMapper SetInputConnection [clipper GetOutputPort]
|
|
clipMapper ScalarVisibilityOff
|
|
|
|
vtkProperty backProp
|
|
eval backProp SetDiffuseColor $tomato
|
|
vtkActor clipActor
|
|
clipActor SetMapper clipMapper
|
|
eval [clipActor GetProperty] SetColor $peacock
|
|
clipActor SetBackfaceProperty backProp
|
|
|
|
# now extract feature edges
|
|
vtkFeatureEdges boundaryEdges
|
|
boundaryEdges SetInputConnection [clipper GetOutputPort]
|
|
boundaryEdges BoundaryEdgesOn
|
|
boundaryEdges FeatureEdgesOff
|
|
boundaryEdges NonManifoldEdgesOff
|
|
|
|
vtkCleanPolyData boundaryClean
|
|
boundaryClean SetInputConnection [boundaryEdges GetOutputPort]
|
|
|
|
vtkStripper boundaryStrips
|
|
boundaryStrips SetInputConnection [boundaryClean GetOutputPort]
|
|
boundaryStrips Update
|
|
|
|
vtkPolyData boundaryPoly
|
|
boundaryPoly SetPoints [[boundaryStrips GetOutput] GetPoints]
|
|
boundaryPoly SetPolys [[boundaryStrips GetOutput] GetLines]
|
|
|
|
vtkTriangleFilter boundaryTriangles
|
|
boundaryTriangles SetInput boundaryPoly
|
|
|
|
vtkPolyDataMapper boundaryMapper
|
|
boundaryMapper SetInputConnection [boundaryTriangles GetOutputPort]
|
|
|
|
vtkActor boundaryActor
|
|
boundaryActor SetMapper boundaryMapper
|
|
eval [boundaryActor GetProperty] SetColor $banana
|
|
|
|
# Create graphics stuff
|
|
#
|
|
vtkRenderer ren1
|
|
vtkRenderWindow renWin
|
|
renWin AddRenderer ren1
|
|
vtkRenderWindowInteractor iren
|
|
iren SetRenderWindow renWin
|
|
|
|
# Add the actors to the renderer, set the background and size
|
|
#
|
|
ren1 AddActor clipActor
|
|
ren1 AddActor boundaryActor
|
|
ren1 SetBackground 1 1 1
|
|
ren1 ResetCamera
|
|
[ren1 GetActiveCamera] Azimuth 30
|
|
[ren1 GetActiveCamera] Elevation 30
|
|
[ren1 GetActiveCamera] Dolly 1.2
|
|
ren1 ResetCameraClippingRange
|
|
|
|
renWin SetSize 300 300
|
|
iren Initialize
|
|
|
|
# render the image
|
|
#
|
|
iren AddObserver UserEvent {wm deiconify .vtkInteract}
|
|
|
|
# prevent the tk window from showing up then start the event loop
|
|
wm withdraw .
|
|
|