vtk java voxel rendering -


hi guys,

does knows, why code in java compiles, error appears:

"an unrecoverable stack overflow has occurred. # # fatal error has been detected java runtime environment: # #  exception_stack_overflow (0xc00000fd) @ pc=0x5d05b377, pid=4576, tid=4888 # # jre version: 6.0_20-b02 # java vm: java hotspot(tm) client vm (16.3-b01 mixed mode windows-x86 ) # problematic frame: # c  [vtkvolumerendering.dll+0x2eb377] # # error report file more information saved as: # d:\programme\eclipse-workspace\bachelorarbeit_01\hs_err_pid4576.log # # if submit bug report, please visit: #   http://java.sun.com/webapps/bugreport/crash.jsp # crash happened outside java virtual machine in native code. # see problematic frame report bug." 

here java source code copied c++ code here: http://permalink.gmane.org/gmane.comp.lib.vtk.user/35844

import vtk.vtkimagedata; import vtk.vtkunstructuredgrid; import vtk.vtkpolydatamapper; import vtk.vtkactor; import vtk.vtkrenderwindow; import vtk.vtkrenderwindowinteractor; import vtk.vtkrenderer; import vtk.vtkpoints; import vtk.vtkvolume; import vtk.vtkvoxel; import vtk.vtkdatasettrianglefilter; import vtk.vtkunstructuredgridvolumeraycastmapper; import vtk.vtkpiecewisefunction; import vtk.vtkvolumeproperty; import vtk.vtkcolortransferfunction; import vtk.vtkextractedges; import vtk.vtkdoublearray; import vtk.vtkcelldata;  public class visualizer {      public visualizer()     {          int nbvoxels = 3*3*3;         int voxelsize = 1;          vtkpoints voxelpoints = new vtkpoints();         voxelpoints.setnumberofpoints(8*nbvoxels);         voxelpoints.setdatatypetodouble();          vtkunstructuredgrid grid = new vtkunstructuredgrid();         grid.allocate(nbvoxels, voxelsize);          vtkvoxel voxel = new vtkvoxel();          int count = 0;         int posx = 0;         int posy = 0;         int posz = 0;          ( int v=0; v<nbvoxels ; v++ )         {                 voxelpoints.insertpoint(count*8+0, posx, posy, posz);                 voxelpoints.insertpoint(count*8+1, posx+voxelsize,  posy, posz);                 voxelpoints.insertpoint(count*8+2, posx, posy+voxelsize, posz);                 voxelpoints.insertpoint(count*8+3, posx+voxelsize,  posy+voxelsize, posz);                 voxelpoints.insertpoint(count*8+4, posx, posy, posz+voxelsize);                 voxelpoints.insertpoint(count*8+5, posx+voxelsize, posy, posz+voxelsize);                 voxelpoints.insertpoint(count*8+6, posx, posy+voxelsize, posz+voxelsize);                 voxelpoints.insertpoint(count*8+7, posx+voxelsize, posy+voxelsize, posz+voxelsize);                  voxel.getpointids().setid(0, count*8+0);                 voxel.getpointids().setid(1, count*8+1);                 voxel.getpointids().setid(2, count*8+2);                 voxel.getpointids().setid(3, count*8+3);                 voxel.getpointids().setid(4, count*8+4);                 voxel.getpointids().setid(5, count*8+5);                 voxel.getpointids().setid(6, count*8+6);                 voxel.getpointids().setid(7, count*8+7);                  grid.insertnextcell(11, voxel.getpointids());                  count++;                  posx += voxelsize;                 if ( posx == 3*voxelsize )                 {                         posx = 0;                         posy += voxelsize;                         if ( posy == 3*voxelsize )                         {                                 posy = 0;                                 posz += voxelsize;                         }                 }         }         grid.setpoints(voxelpoints);          //extract edges unstructured grid         vtkextractedges edges = new vtkextractedges();         edges.setinput(grid);          vtkpolydatamapper gridmapper = new vtkpolydatamapper();         gridmapper.setinput(edges.getoutput());          vtkactor gridactor = new vtkactor();         gridactor.setmapper(gridmapper);         gridactor.getproperty().setcolor(0.0,0.0,0.0);          vtkdoublearray colourpts = new vtkdoublearray();         for(int i=0; < nbvoxels; i++)                 colourpts.insertnextvalue(i);          vtkcelldata celldata = grid.getcelldata();         celldata.setnumberoftuples(nbvoxels);         celldata.setscalars(colourpts);        //create transfer function mapping scalar value color         vtkcolortransferfunction fcolor = new vtkcolortransferfunction();          (int idx = 0; idx < nbvoxels; idx++)         {                         fcolor.addrgbpoint(colourpts.getvalue(idx),1, 0, 0);         }          vtkpiecewisefunction fopacity = new vtkpiecewisefunction();         fopacity.addpoint(0, 1);         fopacity.addpoint(nbvoxels, 1);          vtkvolumeproperty volprop = new vtkvolumeproperty();         volprop.setcolor(fcolor);         volprop.setscalaropacity(fopacity);          vtkdatasettrianglefilter filter = new vtkdatasettrianglefilter();         filter.setinput(grid);          vtkunstructuredgridvolumeraycastmapper vrcm = new vtkunstructuredgridvolumeraycastmapper();         vrcm.setinput(filter.getoutput());          vtkvolume volume = new vtkvolume();         volume.setmapper(vrcm);         volume.setproperty(volprop);          vtkrenderer renderer = new vtkrenderer();         vtkrenderwindow renderwindow = new vtkrenderwindow();         renderwindow.addrenderer(renderer);          vtkrenderwindowinteractor renderwindowinteractor = new vtkrenderwindowinteractor();         renderwindowinteractor.setrenderwindow(renderwindow);          renderer.addactor(volume);         renderer.addactor(gridactor);         renderer.setbackground(1,1,1);         //renderer.resetcamera();          renderwindow.render();         renderwindowinteractor.start();           }  } 

thanks help!

david

the message

the crash happened outside java virtual machine in native code.

should give indication error happening outside of java looking @ java code of little help.

the typical cause of stack overflow (regardless of language) recursive call never reaches base case , hence never starts tracking. reason each call method causes return address (reference) placed on stack, more calls made more return addresses stored until there no more space on stack.

did quick google happening in vtkvolumerendering.dll @ other times , found if it's help.

link here in case above didn't work :)

http://vtk.1045678.n5.nabble.com/vtkfixedpointvolumeraycastmapper-problem-in-java-td1244838.html


Comments

Popular posts from this blog

c++ - How do I get a multi line tooltip in MFC -

asp.net - In javascript how to find the height and width -

c# - DataTable to EnumerableRowCollection -