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's not a Java binding bug...) that use a vtkExtractSelectedFrustum but it does'nt work : the output is always empty. Do you think the program is right ? If it is i think it'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> public static void main(String[] args)<br> { <br> JFrame frame = new JFrame();<br> frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<br> vtkCanvas canvas = new vtkCanvas();<br>
vtkExtractSelectedFrustum selector = new vtkExtractSelectedFrustum();<br> <br> // create sphere geometry<br> vtkConeSource cone = new vtkConeSource();<br> cone.SetHeight(3.0);<br> cone.SetRadius(1.0);<br>
cone.SetResolution(10);<br> // map to graphics objects<br> vtkPolyDataMapper map = new vtkPolyDataMapper();<br> map.SetInput(cone.GetOutput());<br><br> // actor coordinates geometry, properties, transformation<br>
vtkActor aSphere = new vtkActor();<br> aSphere.SetMapper(map);<br> aSphere.GetProperty().SetColor(0, 0, 1); // color blue<br> aSphere.GetProperty().SetRepresentationToWireframe();<br> canvas.GetRenderer().AddActor(aSphere);<br>
<br> frame.add(canvas);<br> frame.setSize(800, 600);<br> frame.setVisible(true);<br> <br> selector.CreateFrustum(new double[] {<br> -10.,-10.,-10.,1.0,<br> -10.,-10.,10.,1.0,<br>
-10.,10.,-10.,1.0,<br> -10.,10.,10.,1.0,<br> 10.,-10.,-10.,1.0,<br> 10.,-10.,10.,1.0,<br> 10.,10.,-10.,1.0,<br> 10.,10.,10.,1.0,<br> });<br> <br>
selector.SetInput(cone.GetOutput());<br> //UNCOMMENT TO CHECK THE BOUNDARIES<br> //selector.ShowBoundsOn(); <br> // UNCOMMENT TO SEE THAT THE frustum extractor doesn't work inside and outside the boundaries<br>
//selector.InsideOutOn();<br> selector.Update();<br> vtkActor actorFrustum = new vtkActor();<br> vtkDataSetMapper mapFrustum = new vtkDataSetMapper();<br> mapFrustum.SetInputConnection(selector.GetOutputPort());<br>
actorFrustum.SetMapper(mapFrustum);<br> canvas.GetRenderer().AddActor(actorFrustum);<br><br> canvas.lock();<br> canvas.GetRenderer().ResetCamera();<br> canvas.unlock();<br> //UNCOMMENT TO SEE THAT THE CONE IS IN THE BOUNDARIES<br>
//canvas.GetRenderer().RemoveActor(aSphere); <br> }<br>}<br><br clear="all"><br>-- <br>Julian Ibarz