Render Triangle Files Using VTK

The tcl script renactors.tcl uses the Visualization Toolkit to render triangle files created from cross-section data using the Marching Cubes algorithm. Make Your Own Visible Woman describes how to use this script. The script is broken into several sections:

Get the Interactor User Interface

source vtkInt.tcl

Get Some Useful Colors

source colors.tcl

Define a Proc to Create an Actor Pipeline

proc mkname {a b} {return $a$b}

# proc to make actors
# create pipeline
proc MakeActor { name r g b} {
#
    set FileName  [eval mkname $name .vtk]
    set reader  [eval mkname $name PolyDataReader]
    vtkPolyDataReader $reader
       $reader SetFileName $FileName
    set mapper [eval mkname $name PolyDataMapper]
    vtkPolyDataMapper $mapper
        $mapper SetInput [$reader GetOutput];
        $mapper ScalarVisibilityOff;
        $mapper ImmediateModeRenderingOn
    set actor [ eval mkname $name Actor]
    set backProp [eval mkname $name BackProperty]
    vtkProperty $backProp
        $backProp SetDiffuseColor $r $g $b
        $backProp SetDiffuse .2
    vtkActor $actor
        $actor SetMapper $mapper
        eval [$actor GetProperty] SetDiffuseColor $r $g $b
        eval [$actor GetProperty] SetSpecularPower 50
        eval [$actor GetProperty] SetSpecular .5
        eval [$actor GetProperty] SetDiffuse .8
        $actor SetBackfaceProperty $backProp
    return $actor
}

Normal Rendering Setup

# Now create the RenderWindow, Renderer and Interactor
#
vtkRenderer ren1
vtkRenderWindow renWin
    renWin AddRenderer ren1
vtkRenderWindowInteractor iren
    iren SetRenderWindow renWin

Make The Actors

# Add the actors to the renderer.

$ren1 AddActor [eval MakeActor bone $ivory]
$ren1 AddActor [eval MakeActor skin $flesh]

Render the Actors

ren1 SetBackground 0.2 0.3 0.4;
renWin SetSize 450 450;
[ren1 GetActiveCamera] SetViewUp 0 -1 0;
[ren1 GetActiveCamera] Azimuth 180;
iren Initialize;

# render the image
#
iren SetUserMethod {wm deiconify .vtkInteract};

# prevent the tk window from showing up then start the event loop
wm withdraw .

---------------

Questions / Comments

Bill Lorensen (lorensen@crd.ge.com)

Last Updated: Friday, 01-May-98 07:40:43