<div dir="ltr"><div><div><div><div><div>Hello, <br><br></div>I try to use the marching cubes algorithm on a .raw image.<br></div>For that i use vtkVoxelModeler to specify the sample dimensions, the bounds etc ... And i get an exception:<br>
<br>Exception in thread "main" java.lang.UnsatisfiedLinkError: vtk.vtkMarchingCubes.VTKInit()J<br> at vtk.vtkMarchingCubes.VTKInit(Native Method)<br> at vtk.vtkObject.<init>(vtkObject.java:96)<br> at vtk.vtkAlgorithm.<init>(vtkAlgorithm.java:765)<br>
at vtk.vtkPolyDataAlgorithm.<init>(vtkPolyDataAlgorithm.java:163)<br> at vtk.vtkMarchingCubes.<init>(vtkMarchingCubes.java:127)<br> at fr.cea.v3d.tests.MeshVtk.<clinit>(MeshVtk.java:20)<br><br>
</div>Here is my code :<br><br>import java.lang.reflect.InvocationTargetException;<br><br>import javax.swing.SwingUtilities;<br><br>import vtk.vtkActor;<br>import vtk.vtkMarchingCubes;<br>import vtk.vtkMetaImageReader;<br>
import vtk.vtkPolyDataMapper;<br>import vtk.vtkRenderWindow;<br>import vtk.vtkRenderWindowInteractor;<br>import vtk.vtkRenderer;<br>import vtk.vtkVoxelModeller;<br><br>public class MeshVtk implements Runnable {<br><br> private static String filename = "ressources\\output_piston.xy.mhd";<br>
private static vtkVoxelModeller voxelModeller = new vtkVoxelModeller();<br> private static vtkMarchingCubes marchingcubes = new vtkMarchingCubes();<br> private static vtkRenderer renderer = new vtkRenderer();<br>
private static vtkRenderWindow renderWindow = new vtkRenderWindow();<br> private static vtkRenderWindowInteractor interactor = new vtkRenderWindowInteractor();<br> private static vtkPolyDataMapper mapper = new vtkPolyDataMapper();<br>
private static vtkActor actor = new vtkActor();<br> private static double bounds[];<br><br> public static void main(String[] args) {<br> try {<br> Class.forName("vtk.vtkPanel");<br> } catch (ClassNotFoundException e) {<br>
e.printStackTrace();<br> }<br><br> try {<br> SwingUtilities.invokeAndWait(new MeshVtk());<br> } catch (InvocationTargetException | InterruptedException e) {<br> e.printStackTrace();<br>
}<br> }<br><br> @Override<br> public void run() {<br> /* reader */<br> vtkMetaImageReader reader = new vtkMetaImageReader();<br> reader.SetFileName(filename);<br> <br> /* voxelModeller */<br>
reader.GetOutput().GetBounds(bounds); /* bounds */<br> for (int i = 0; i < 6; i += 2)<br> {<br> double range = bounds[i+1] - bounds[i]; /* range ([xmin,xmax],[ymin,ymax],[zmin,zmax])*/<br>
bounds[i] = bounds[i] - .1 * range;<br> bounds[i+1] = bounds[i+1] + .1 * range;<br> }<br><br> voxelModeller.SetSampleDimensions(50, 50, 50);<br> voxelModeller.SetModelBounds(bounds);<br>
voxelModeller.SetScalarTypeToFloat();<br> voxelModeller.SetMaximumDistance(.1);<br> <br> voxelModeller.SetInputConnection(reader.GetOutputPort());<br> <br> /* marching cubes */<br>
<br> marchingcubes.SetInputConnection(voxelModeller.GetOutputPort());<br> marchingcubes.ComputeNormalsOn();<br> marchingcubes.SetValue(0, 1);<br><br> renderer.SetBackground(.1, .2, .3);<br> <br>
renderWindow.AddRenderer(renderer);<br><br> interactor.SetRenderWindow(renderWindow);<br><br> mapper.SetInputConnection(marchingcubes.GetOutputPort());<br> <br> actor.SetMapper(mapper);<br>
<br> renderer.AddActor(actor);<br> <br> renderWindow.Render();<br> interactor.Start();<br><br> }<br><br>}<br><br></div>I hope somebody can help me to fix this.<br><br>
</div>Thanks !<br><div><div><div><br clear="all"><div><div><div><br>-- <br>Thibault Varacca<br>EFREI Promo 2014<br><div>06 60 53 11 35</div>
</div></div></div></div></div></div></div>