View Issue Details Jump to Notes ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0008317VTK(No Category)public2008-12-18 11:142016-08-12 09:55
ReporterJNaresh 
Assigned ToKitware Robot 
PrioritynormalSeverityminorReproducibilityhave not tried
StatusclosedResolutionmoved 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version 
Summary0008317: Rendering is slow compared to Java3D
DescriptionI have created a scene with 10x10x10 spheres. I am using VTK with java wrapper. When I try to rotate the model, the rendering is sluggish compared to Java3D. I have attached the sample code below.

//-----Imports----------------------------------------------------------------
import javax.swing.JFrame;

import vtk.vtkActor;
import vtk.vtkLight;
import vtk.vtkPolyDataMapper;
import vtk.vtkProperty;
import vtk.vtkRenderer;
import vtk.vtkRenderWindowPanel;
import vtk.vtkSphereSource;


/**
 * This class renders multiple spheres in VTK window. This can be used
 * for stress testing Java3D.
 */
public class MultipleSpheres
{
   /**
    * Number of spheres in X direction.
    */
   private int m_nX = 10;

   /**
    * Number of spheres in Y direction.
    */
   private int m_nY = 10;

   /**
    * Number of spheres in Z direction.
    */
   private int m_nZ = 10;

   /**
    * RenderWindow panel.
    */
   private vtkRenderWindowPanel m_zPanel;

   /**
    * Reference to JFrame.
    */
   private JFrame m_zFrame;

   static
   {
      System.loadLibrary("vtkCommonJava");
      System.loadLibrary("vtkFilteringJava");
      System.loadLibrary("vtkIOJava");
      System.loadLibrary("vtkImagingJava");
      System.loadLibrary("vtkGraphicsJava");
      System.loadLibrary("vtkRenderingJava");
      System.loadLibrary("vtkInfovisJava");
      System.loadLibrary("vtkViewsJava");

   } // static

   /**
    * Constructs MultipleSpheres object.
    *
    * @param ascArg Array of command line arguments.
    */
   public MultipleSpheres( String [] ascArg )
   {
      for( int i = 0; i < ascArg.length; i++ )
      {
         if ( ascArg[i].equalsIgnoreCase("-nx") && (i+1) < ascArg.length )
         {
            m_nX = Integer.parseInt(ascArg[++i]);
         }
         else if ( ascArg[i].equalsIgnoreCase("-ny") &&
                   (i+1) < ascArg.length )
         {
            m_nY = Integer.parseInt(ascArg[++i]);
         }
         else if ( ascArg[i].equalsIgnoreCase("-nZ") &&
                   (i+1) < ascArg.length )
         {
            m_nZ = Integer.parseInt(ascArg[++i]);
         }
      }

      buildUI();
      buildScene();

      m_zFrame.setVisible(true);

   } // Constructor MultipleSpheres

   /**
    * Builds the UI.
    */
   private void buildUI()
   {
      m_zPanel = new vtkRenderWindowPanel();
      m_zPanel.GetRenderWindow().SwapBuffersOn();

      m_zFrame = new JFrame("MultipleSpheres");
      m_zFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      m_zFrame.add("Center", m_zPanel);
      m_zFrame.setSize(500, 500);

   } // buildUI

   /**
    * Builds the scene.
    */
   private void buildScene()
   {
      vtkSphereSource zSphere = new vtkSphereSource();
      zSphere.SetThetaResolution(100);
      zSphere.SetPhiResolution(50);
      zSphere.SetRadius(1.0);

      vtkPolyDataMapper zPolyDataMapper = new vtkPolyDataMapper();
      zPolyDataMapper.SetInputConnection(zSphere.GetOutputPort());

      vtkProperty zProperty = new vtkProperty();
      zProperty.SetColor(1.0, 0.3882, 0.2784);
      zProperty.SetDiffuse(0.7);
      zProperty.SetSpecular(0.4);
      zProperty.SetSpecularPower(30);

      vtkRenderer zRenderer = m_zPanel.GetRenderer();

      double dX = -m_nX;
      for( int i = 0; i < m_nX; i++ )
      {
         double dY = -m_nY;
         for( int j = 0; j < m_nY; j++ )
         {
            double dZ = -m_nZ;
            for( int k = 0; k < m_nZ; k++ )
            {
               System.out.println("X: " + dX + ", Y: " + dY +
                                  ", Z: " + dZ);
               vtkActor zActor = new vtkActor();
               zActor.SetMapper(zPolyDataMapper);
               zActor.SetProperty(zProperty);
               zActor.SetPosition(dX, dY, dZ);

               zRenderer.AddActor(zActor);

               dZ += 2.0;
            }

            dY += 2.0;
         }

         dX += 2.0;
      }

      vtkLight zLight1 = new vtkLight();
      zLight1.SetFocalPoint(1.875, 0.6125, 0);
      zLight1.SetPosition(0.875, 1.6125, 1);
      zRenderer.AddLight(zLight1);

      vtkLight zLight2 = new vtkLight();
      zLight2.SetFocalPoint(1.875, 0.6125, 0);
      zLight2.SetPosition(9, 9, -9);
      zRenderer.AddLight(zLight2);

      vtkLight zLight3 = new vtkLight();
      zLight3.SetFocalPoint(1.875, 0.6125, 0);
      zLight3.SetPosition(0.875, -9, -9);
      zRenderer.AddLight(zLight3);

      zRenderer.GetActiveCamera().SetFocalPoint(0, 0, 0);
      zRenderer.GetActiveCamera().SetPosition(0, 0, 1);
      zRenderer.GetActiveCamera().SetViewUp(0, 1, 0);
      zRenderer.GetActiveCamera().ParallelProjectionOn();
      zRenderer.ResetCamera();
// zRenderer.GetActiveCamera().SetParallelScale(1.5);

   } // buildScene

   /**
    * Main function.
    *
    * @param ascArg Array of command line arguments.
    */
   public static void main( String ascArg[] )
   {
      MultipleSpheres zMultSpheres = new MultipleSpheres(ascArg);

   } // main

} // Class MultipleSpheres
TagsNo tags attached.
Project
Type
Attached Files

 Relationships

  Notes
(0037049)
Kitware Robot (administrator)
2016-08-12 09:55

Resolving issue as `moved`.

This issue tracker is no longer used. Further discussion of this issue may take place in the current VTK Issues page linked in the banner at the top of this page.

 Issue History
Date Modified Username Field Change
2008-12-18 11:14 JNaresh New Issue
2011-06-16 13:11 Zack Galbreath Category => (No Category)
2016-08-12 09:55 Kitware Robot Note Added: 0037049
2016-08-12 09:55 Kitware Robot Status expired => closed
2016-08-12 09:55 Kitware Robot Resolution open => moved
2016-08-12 09:55 Kitware Robot Assigned To => Kitware Robot


Copyright © 2000 - 2018 MantisBT Team