java vtk绘制不同颜色片
利用java绘制出不同颜色片的展示:
import vtk.*;
public class Test1_PolyDataAttribute {
static {
if (!vtkNativeLibrary.LoadAllNativeLibraries()) {
for (vtkNativeLibrary lib : vtkNativeLibrary.values()) {
if (!lib.IsLoaded()) {
System.out.println(lib.GetLibraryName() + " not loaded");
}
}
}
vtkNativeLibrary.DisableOutputWindow(null);
}
public static void main(String[] args) {
vtkPlaneSource gridSource = new vtkPlaneSource();
gridSource.SetXResolution(3);
gridSource.SetYResolution(3);
gridSource.Update();
vtkPolyData grid = gridSource.GetOutput();
vtkFloatArray cellScalars = new vtkFloatArray();
vtkFloatArray cellVectors = new vtkFloatArray();
cellVectors.SetNumberOfComponents(3);
for (int i = 0; i < 9; i++)
{
cellScalars.InsertNextValue(i + 1);
cellVectors.InsertNextTuple3(0.0, 0.0, 1.0);
}
grid.GetCellData().SetScalars(cellScalars);
grid.GetCellData().SetVectors(cellVectors);
vtkLookupTable lut = new vtkLookupTable();
lut.SetNumberOfTableValues(10);
lut.Build();
lut.SetTableValue(0 , 0 , 0 , 0, 1);
lut.SetTableValue(1, 0.8900, 0.8100, 0.3400, 1);
lut.SetTableValue(2, 1.0000, 0.3882, 0.2784, 1);
lut.SetTableValue(3, 0.9608, 0.8706, 0.7020, 1);
lut.SetTableValue(4, 0.9020, 0.9020, 0.9804, 1);
lut.SetTableValue(5, 1.0000, 0.4900, 0.2500, 1);
lut.SetTableValue(6, 0.5300, 0.1500, 0.3400, 1);
lut.SetTableValue(7, 0.9804, 0.5020, 0.4471, 1);
lut.SetTableValue(8, 0.7400, 0.9900, 0.7900, 1);
lut.SetTableValue(9, 0.2000, 0.6300, 0.7900, 1);
vtkPolyDataMapper mapper = new vtkPolyDataMapper();
mapper.SetInputData(grid);//使用网格单元属性数据
mapper.SetScalarRange(0, 9);
mapper.SetLookupTable(lut);
vtkActor actor = new vtkActor();
actor.SetMapper(mapper);
vtkRenderer renderer = new vtkRenderer();
renderer.AddActor(actor);
renderer.SetBackground(1.0,1.0,1.0);
vtkRenderWindow renderWindow = new vtkRenderWindow();
renderWindow.AddRenderer(renderer);
renderWindow.SetSize( 640, 480 );
renderWindow.Render();
renderWindow.SetWindowName("PolyDataAttribute");
vtkRenderWindowInteractor renderWindowInteractor = new vtkRenderWindowInteractor();
renderWindowInteractor.SetRenderWindow(renderWindow);
renderWindow.Render();
renderWindowInteractor.Start();
}
}