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.
82 lines
2.4 KiB
82 lines
2.4 KiB
//
|
|
// This example shows how to add an observer to a Java program. It extends
|
|
// the Step1/Java/Cone.java Java example (see that example for information on
|
|
// the basic setup).
|
|
//
|
|
// VTK uses a command/observer design pattern. That is, observers watch for
|
|
// particular events that any vtkObject (or subclass) may invoke on
|
|
// itself. For example, the vtkRenderer invokes a "StartEvent" as it begins
|
|
// to render. Here we add an observer that invokes a command when this event
|
|
// is observed.
|
|
//
|
|
//
|
|
// Show how to add an observer to the Cone example
|
|
//
|
|
|
|
// we import the vtk wrapped classes forst
|
|
import vtk.*;
|
|
|
|
// then we define our class
|
|
public class Cone2 {
|
|
// in the static contructor we load in the native code
|
|
// The libraries must be in your path to work
|
|
static {
|
|
System.loadLibrary("vtkCommonJava");
|
|
System.loadLibrary("vtkFilteringJava");
|
|
System.loadLibrary("vtkIOJava");
|
|
System.loadLibrary("vtkImagingJava");
|
|
System.loadLibrary("vtkGraphicsJava");
|
|
System.loadLibrary("vtkRenderingJava");
|
|
}
|
|
|
|
// Define the callback
|
|
public void myCallback()
|
|
{
|
|
System.out.println("Starting a render");
|
|
}
|
|
|
|
// now the main program
|
|
public static void main (String []args) {
|
|
//
|
|
// Now we create the pipeline as usual, see Cone.java in Step1 for details
|
|
//
|
|
vtkConeSource cone = new vtkConeSource();
|
|
cone.SetHeight( 3.0 );
|
|
cone.SetRadius( 1.0 );
|
|
cone.SetResolution( 10 );
|
|
|
|
vtkPolyDataMapper coneMapper = new vtkPolyDataMapper();
|
|
coneMapper.SetInputConnection( cone.GetOutputPort() );
|
|
vtkActor coneActor = new vtkActor();
|
|
coneActor.SetMapper( coneMapper );
|
|
|
|
vtkRenderer ren1 = new vtkRenderer();
|
|
ren1.AddActor( coneActor );
|
|
ren1.SetBackground( 0.1, 0.2, 0.4 );
|
|
|
|
// Add the observer here, the first argument is the event name
|
|
// the second argument is the instance to invoke the method on
|
|
// the third argument is which method to invoke
|
|
Cone2 me = new Cone2();
|
|
ren1.AddObserver("StartEvent",me,"myCallback");
|
|
|
|
// setup the window
|
|
vtkRenderWindow renWin = new vtkRenderWindow();
|
|
renWin.AddRenderer( ren1 );
|
|
renWin.SetSize( 300, 300 );
|
|
|
|
//
|
|
// now we loop over 360 degreeees and render the cone each time
|
|
//
|
|
int i;
|
|
for (i = 0; i < 360; ++i)
|
|
{
|
|
// render the image
|
|
renWin.Render();
|
|
// rotate the active camera by one degree
|
|
ren1.GetActiveCamera().Azimuth( 1 );
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|