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.
		
		
		
		
		
			
		
			
				
					
					
						
							133 lines
						
					
					
						
							4.2 KiB
						
					
					
				
			
		
		
	
	
							133 lines
						
					
					
						
							4.2 KiB
						
					
					
				| package require vtk
 | |
| package require vtkinteraction
 | |
| 
 | |
| vtkRenderer ren1
 | |
| vtkRenderWindow renWin
 | |
|   renWin AddRenderer ren1
 | |
| vtkRenderWindowInteractor iren
 | |
|   iren SetRenderWindow renWin
 | |
| 
 | |
| vtkBMPReader bmpReader
 | |
|   bmpReader SetFileName "$VTK_DATA_ROOT/Data/masonry.bmp"
 | |
| vtkTexture texture
 | |
|   texture SetInputConnection [bmpReader GetOutputPort]
 | |
| 
 | |
| vtkPoints triangleStripPoints
 | |
|   triangleStripPoints SetNumberOfPoints 5
 | |
|   triangleStripPoints InsertPoint 0 0 1 0
 | |
|   triangleStripPoints InsertPoint 1 0 0 .5
 | |
|   triangleStripPoints InsertPoint 2 1 1 .3
 | |
|   triangleStripPoints InsertPoint 3 1 0 .6
 | |
|   triangleStripPoints InsertPoint 4 2 1 .1
 | |
| 
 | |
| vtkFloatArray triangleStripTCoords
 | |
|   triangleStripTCoords SetNumberOfComponents 2
 | |
|   triangleStripTCoords SetNumberOfTuples 5
 | |
|   triangleStripTCoords InsertTuple2 0 0 1 
 | |
|   triangleStripTCoords InsertTuple2 1 0 0 
 | |
|   triangleStripTCoords InsertTuple2 2 .5 1 
 | |
|   triangleStripTCoords InsertTuple2 3 .5 0 
 | |
|   triangleStripTCoords InsertTuple2 4 1 1 
 | |
| 
 | |
| vtkFloatArray triangleStripPointScalars
 | |
|   triangleStripPointScalars SetNumberOfTuples 5
 | |
|   triangleStripPointScalars InsertValue 0 1
 | |
|   triangleStripPointScalars InsertValue 1 0
 | |
|   triangleStripPointScalars InsertValue 2 0
 | |
|   triangleStripPointScalars InsertValue 3 0
 | |
|   triangleStripPointScalars InsertValue 4 0
 | |
| 
 | |
| vtkFloatArray triangleStripCellScalars
 | |
|   triangleStripCellScalars SetNumberOfTuples 1
 | |
|   triangleStripCellScalars InsertValue 0 1
 | |
| 
 | |
| vtkFloatArray triangleStripPointNormals
 | |
|   triangleStripPointNormals SetNumberOfComponents 3
 | |
|   triangleStripPointNormals SetNumberOfTuples 5
 | |
|   triangleStripPointNormals InsertTuple3 0 0 0 1
 | |
|   triangleStripPointNormals InsertTuple3 1 0 1 0
 | |
|   triangleStripPointNormals InsertTuple3 2 0 1 1
 | |
|   triangleStripPointNormals InsertTuple3 3 1 0 0
 | |
|   triangleStripPointNormals InsertTuple3 4 1 0 1
 | |
| 
 | |
| vtkFloatArray triangleStripCellNormals
 | |
|   triangleStripCellNormals SetNumberOfComponents 3
 | |
|   triangleStripCellNormals SetNumberOfTuples 1
 | |
|   triangleStripCellNormals InsertTuple3 0 0 0 1
 | |
| 
 | |
| vtkTriangleStrip aTriangleStrip
 | |
|   [aTriangleStrip GetPointIds] SetNumberOfIds 5
 | |
|   [aTriangleStrip GetPointIds] SetId 0 0
 | |
|   [aTriangleStrip GetPointIds] SetId 1 1
 | |
|   [aTriangleStrip GetPointIds] SetId 2 2
 | |
|   [aTriangleStrip GetPointIds] SetId 3 3
 | |
|   [aTriangleStrip GetPointIds] SetId 4 4
 | |
| 
 | |
| vtkLookupTable lut
 | |
|   lut SetNumberOfColors 5
 | |
|   lut SetTableValue 0 0 0 1 1
 | |
|   lut SetTableValue 1 0 1 0 1
 | |
|   lut SetTableValue 2 0 1 1 1
 | |
|   lut SetTableValue 3 1 0 0 1
 | |
|   lut SetTableValue 4 1 0 1 1
 | |
| 
 | |
| set masks "0 1 2 3 4 5 6 7 10 11 14 15 16 18 20 22 26 30"
 | |
| set i 0; set j 0 ; set k 0
 | |
| set types "strip triangle"
 | |
| foreach type $types {
 | |
|   foreach mask $masks {
 | |
|     vtkUnstructuredGrid grid$i
 | |
|       grid$i Allocate 1 1
 | |
|       grid$i InsertNextCell [aTriangleStrip GetCellType] [aTriangleStrip GetPointIds]
 | |
|       grid$i SetPoints triangleStripPoints
 | |
|     vtkGeometryFilter geometry$i
 | |
|       geometry$i SetInput grid$i
 | |
|     vtkTriangleFilter triangles$i
 | |
|       triangles$i SetInputConnection [geometry$i GetOutputPort]
 | |
|     vtkPolyDataMapper mapper$i
 | |
|     if {$type == "strip"} {mapper$i SetInputConnection [geometry$i GetOutputPort]}
 | |
|     if {$type == "triangle"} {mapper$i SetInputConnection [triangles$i GetOutputPort]}
 | |
|       mapper$i SetLookupTable lut
 | |
|       mapper$i SetScalarRange 0 4
 | |
|     vtkActor actor$i
 | |
|       actor$i SetMapper mapper$i
 | |
|   
 | |
|       if {[expr $mask & 1] != 0} {
 | |
|         [grid$i GetPointData] SetNormals triangleStripPointNormals
 | |
|       }
 | |
|       if {[expr $mask & 2] != 0} {
 | |
|         [grid$i GetPointData] SetScalars triangleStripPointScalars
 | |
|         mapper$i SetScalarModeToUsePointData
 | |
|       }
 | |
|       if {[expr $mask & 4] != 0} {
 | |
|         [grid$i GetPointData] SetTCoords triangleStripTCoords
 | |
|         actor$i SetTexture texture
 | |
|       }
 | |
|       if {[expr $mask & 8] != 0} {
 | |
|         [grid$i GetCellData] SetScalars triangleStripCellScalars
 | |
|         mapper$i SetScalarModeToUseCellData
 | |
|       }
 | |
|       if {[expr $mask & 16] != 0} {
 | |
|         [grid$i GetCellData] SetNormals triangleStripCellNormals
 | |
|       }
 | |
|     actor$i AddPosition [expr $j * 2] [expr $k * 2] 0
 | |
|     ren1 AddActor actor$i 
 | |
|     incr j
 | |
|     if {$j >= 6} {set j 0; incr k};
 | |
|     incr i
 | |
|   }
 | |
| }
 | |
| renWin SetSize 480 480
 | |
| ren1 SetBackground .7 .3 .1
 | |
| ren1 ResetCameraClippingRange
 | |
| 
 | |
| renWin Render
 | |
| 
 | |
| # render the image
 | |
| #
 | |
| iren AddObserver UserEvent {wm deiconify .vtkInteract}
 | |
| iren Initialize
 | |
| wm withdraw .
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 |