Hello everyone,<br><br>I made a light program (in java but you could easily port it in C++ i think and i need someone to try in C++ to be sure that it&#39;s not a Java binding bug...) that use a vtkExtractSelectedFrustum but it does&#39;nt work : the output is always empty. Do you think the program is right ? If it is i think it&#39;s a bug so i will make a report.<br>
<br>package org.jcae.vtk.test;<br><br>import javax.swing.JFrame;<br>import vtk.vtkActor;<br>import vtk.vtkCanvas;<br>import vtk.vtkConeSource;<br>import vtk.vtkDataSetMapper;<br>import vtk.vtkExtractSelectedFrustum;<br>import vtk.vtkPolyDataMapper;<br>
<br>public class BugFrustum {<br><br>&nbsp;&nbsp;&nbsp; public static void main(String[] args)<br>&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; JFrame frame = new JFrame();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkCanvas canvas = new vtkCanvas();<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkExtractSelectedFrustum selector = new vtkExtractSelectedFrustum();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // create sphere geometry<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkConeSource cone = new vtkConeSource();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cone.SetHeight(3.0);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cone.SetRadius(1.0);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; cone.SetResolution(10);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // map to graphics objects<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkPolyDataMapper map = new vtkPolyDataMapper();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; map.SetInput(cone.GetOutput());<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // actor coordinates geometry, properties, transformation<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkActor aSphere = new vtkActor();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; aSphere.SetMapper(map);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; aSphere.GetProperty().SetColor(0, 0, 1); // color blue<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; aSphere.GetProperty().SetRepresentationToWireframe();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; canvas.GetRenderer().AddActor(aSphere);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; frame.add(canvas);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; frame.setSize(800, 600);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; frame.setVisible(true);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; selector.CreateFrustum(new double[] {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; -10.,-10.,-10.,1.0,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; -10.,-10.,10.,1.0,<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; -10.,10.,-10.,1.0,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; -10.,10.,10.,1.0,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 10.,-10.,-10.,1.0,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 10.,-10.,10.,1.0,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 10.,10.,-10.,1.0,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 10.,10.,10.,1.0,<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; });<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; selector.SetInput(cone.GetOutput());<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //UNCOMMENT TO CHECK THE BOUNDARIES<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //selector.ShowBoundsOn(); <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // UNCOMMENT TO SEE THAT THE frustum extractor doesn&#39;t work inside and outside the boundaries<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //selector.InsideOutOn();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; selector.Update();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkActor actorFrustum = new vtkActor();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkDataSetMapper mapFrustum = new vtkDataSetMapper();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; mapFrustum.SetInputConnection(selector.GetOutputPort());<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; actorFrustum.SetMapper(mapFrustum);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; canvas.GetRenderer().AddActor(actorFrustum);<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; canvas.lock();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; canvas.GetRenderer().ResetCamera();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; canvas.unlock();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //UNCOMMENT TO SEE THAT THE CONE IS IN THE BOUNDARIES<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //canvas.GetRenderer().RemoveActor(aSphere); <br>&nbsp;&nbsp;&nbsp; }<br>}<br><br clear="all"><br>-- <br>Julian Ibarz