CylinderExample
Repository source: CylinderExample
Description¶
This example creates a minimal visualization program, demonstrating VTK's basic rendering and pipeline creation.
Note
This original C++ source code for this example is here.
Other languages
See (Cxx), (Python), (PythonicAPI)
Question
If you have a question about this example, please use the VTK Discourse Forum
Code¶
CylinderExample.java
import vtk.vtkActor;
import vtk.vtkCylinderSource;
import vtk.vtkNamedColors;
import vtk.vtkNativeLibrary;
import vtk.vtkPolyDataMapper;
import vtk.vtkRenderer;
import vtk.vtkRenderWindow;
import vtk.vtkRenderWindowInteractor;
// Then we define our class.
public class CylinderExample {
private static final long serialVersionUID = 1L;
// -----------------------------------------------------------------
// Load VTK library and print which library was not properly loaded
static {
if (!vtkNativeLibrary.LoadAllNativeLibraries()) {
for (vtkNativeLibrary lib : vtkNativeLibrary.values()) {
if (!lib.IsLoaded()) {
System.out.println(lib.GetLibraryName() + " not loaded");
}
}
}
vtkNativeLibrary.DisableOutputWindow(null);
}
// -----------------------------------------------------------------
// now the main program
public static void main(String args[]) {
vtkNamedColors colors = new vtkNamedColors();
// Here is how you create your own named color.
double bkgColor[];
bkgColor = new double[]{0.1, 0.2, 0.4, 1.0};
// This corresponds to the unsigned char array
// {26, 51, 102, 255} seen in C++ code for setting
// colors not in vtkNamedColors.
colors.SetColor("BkgColor", bkgColor);
// Now we use our own named color.
double bkg[] = new double[4];
colors.GetColor("BkgColor", bkg);
//For Actor Color
double actorColor[] = new double[4];
colors.GetColor("Tomato", actorColor);
//Renderer Background Color
// This creates a polygonal cylinder model with eight circumferential facets
// (i.e, in practice an octagonal prism).
vtkCylinderSource cylinder = new vtkCylinderSource();
cylinder.SetResolution(8);
// The actor is a grouping mechanism: besides the geometry (mapper), it
// also has a property, transformation matrix, and/or texture map.
// Here we set its color and rotate it around the X and Y axes.
vtkPolyDataMapper cylinderMapper = new vtkPolyDataMapper();
cylinderMapper.SetInputConnection(cylinder.GetOutputPort());
vtkActor cylinderActor = new vtkActor();
cylinderActor.SetMapper(cylinderMapper);
cylinderActor.GetProperty().SetColor(actorColor);
cylinderActor.RotateX(30.0);
cylinderActor.RotateY(-45.0);
// The renderer generates the image
// which is then displayed on the render window.
// It can be thought of as a scene to which the actor is added
vtkRenderer ren = new vtkRenderer();
ren.AddActor(cylinderActor);
ren.ResetCamera();
ren.GetActiveCamera().Zoom(1.5);
ren.SetBackground(bkg);
// The render window is the actual GUI window
// that appears on the computer screen
vtkRenderWindow renWin = new vtkRenderWindow();
renWin.AddRenderer(ren);
renWin.SetSize(300, 300);
renWin.SetWindowName("Cylinder");
// The render window interactor captures mouse events
// and will perform appropriate camera or actor manipulation
// depending on the nature of the events.
vtkRenderWindowInteractor iren = new vtkRenderWindowInteractor();
iren.SetRenderWindow(renWin);
renWin.Render();
iren.Initialize();
// This starts the event loop and as a side effect causes an initial render.
iren.Start();
}
}