[vtkusers] handle

Stephen mailinglists at icaril.eclipse.co.uk
Wed Aug 8 10:37:49 EDT 2007


dear all,

I have been attempting to color lines according to scalar values to no 
avail, an example of my code in Java is appended below. At the moment I 
can only get the actor to appear by setting the color on the actor, 
ideally I want the color determined by the scalar value to conserve the 
number of actors I need to create.

Does anyone know of an example that would illustrate how to do this 
properly?

regards

Stephen




import vtk.*;

public class Lines {
 
    public static void main( String [] args ){
        
        System.loadLibrary("vtkCommonJava");
        System.loadLibrary("vtkFilteringJava");
        System.loadLibrary("vtkIOJava");
        System.loadLibrary("vtkImagingJava");
        System.loadLibrary("vtkGraphicsJava");
        System.loadLibrary("vtkRenderingJava");       
        System.loadLibrary("vtkHybridJava");   
        System.loadLibrary("vtkWidgetsJava");   
        

        vtkRenderer ren = new vtkRenderer();
        vtkRenderWindow renWin = new vtkRenderWindow();
        renWin.AddRenderer(ren);
        vtkRenderWindowInteractor iren = new vtkRenderWindowInteractor();
        iren.SetRenderWindow(renWin);         
                

        vtkLineSource ls1 = new vtkLineSource();
        vtkLineSource ls2 = new vtkLineSource();
        
        
        ls1.SetPoint1(  0, 0, 0 );
        ls1.SetPoint2(  0, 0, 10 );
        ls1.SetResolution(4);
        ls2.SetPoint1( new double[] { 0, 0, 10} );
        ls2.SetPoint2( new double[] { 10, 10, 10} );
        ls1.SetResolution(4);
        ls2.SetResolution(4);
 
        vtkAppendPolyData polyDataCln = new vtkAppendPolyData();
        
        polyDataCln.AddInput( ls1.GetOutput());
        polyDataCln.AddInput( ls2.GetOutput());


    vtkLookupTable scalarLUT = new vtkLookupTable();
        scalarLUT.Build();   
    scalarLUT.SetTableValue(1 , 1, 0, 1, 0);
        scalarLUT.SetTableValue(2 , 0, 0, 0, 1);


   
        
        vtkIntArray colors = new vtkIntArray();
        colors.SetNumberOfTuples(2); // two lines to color
        colors.SetNumberOfComponents(1);// one scalar value for each line
        colors.SetLookupTable(scalarLUT);
        colors.InsertComponent(0 , 0 , 1);//setting scalar value 1 for 
line 1
        colors.InsertComponent(1 , 0 , 2);//setting scalar value 1 for 
line 2
        
        
        polyDataCln.GetOutput().GetPointData().SetScalars( colors );
 
        vtkPolyDataMapper glyphMapper = new vtkPolyDataMapper();
       
                
        
        glyphMapper.SetInput( polyDataCln.GetOutput() );
        glyphMapper.SetLookupTable( scalarLUT );
        glyphMapper.SetScalarRange( 0 , 2 );
        glyphMapper.ScalarVisibilityOn();
       
        
        vtkActor actor = new vtkActor();
        actor.SetMapper( glyphMapper );
        actor.GetProperty().SetLineWidth( 6 );
        actor.GetProperty().SetColor( 0,0.8,0);//if this line is 
commented out nothing is visible
        
        ren.AddActor( actor );
        
        ren.ResetCamera();
        ren.GetActiveCamera().SetFocalPoint( 0 , 0, 5);
        ren.GetActiveCamera().SetPosition( 0 , 50, 5);
        ren.GetActiveCamera().ComputeViewPlaneNormal();
        ren.GetActiveCamera().SetViewUp(1,0, 0);
        ren.GetActiveCamera().OrthogonalizeViewUp();
        ren.GetActiveCamera().Azimuth(60);
        ren.GetActiveCamera().Roll(0);
        ren.GetActiveCamera().Dolly(2);
        ren.ResetCameraClippingRange();        
        ren.SetBackground(1, 1, 1);
        renWin.SetSize(750, 400);

        iren.Initialize();
        renWin.Render();
        iren.Start();

    }
}





More information about the vtkusers mailing list