Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.BorderLayout;
- import java.awt.Dimension;
- import javax.swing.JPanel;
- import javax.swing.JFrame;
- import javax.swing.SwingUtilities;
- import vtk.*;
- public class VTKWindowInteractor extends JPanel {
- static {
- if (!vtkNativeLibrary.LoadAllNativeLibraries()) {
- for (vtkNativeLibrary lib : vtkNativeLibrary.values()) {
- if (!lib.IsLoaded()) {
- System.out.println(lib.GetLibraryName() + " not loaded");
- }
- }
- System.out.println("Make sure the search path is correct: ");
- System.out.println(System.getProperty("java.library.path"));
- }
- vtkNativeLibrary.DisableOutputWindow(null);
- }
- private vtkPanel renWin;
- private vtkRenderWindowInteractor renderWindowInteractor;
- private vtkPolyDataMapper mapper;
- private vtkActor coneActor;
- private vtkPlanes planes;
- private vtkBoxWidget boxWidget;
- public VTKWindowInteractor() {
- setLayout(new BorderLayout());
- renWin = new vtkPanel();
- add(renWin, BorderLayout.CENTER);
- renWin.setMinimumSize(new Dimension(50, 50));
- renWin.GetRenderer().SetBackground(0, 0, 0); // black
- renWin.GetRenderWindow().AddRenderer(renWin.GetRenderer());
- }
- public void render() {
- mapper = new vtkPolyDataMapper();
- vtkConeSource cone = new vtkConeSource();
- cone.SetHeight(3.0);
- cone.SetRadius(1.0);
- cone.SetResolution(10);
- mapper.SetInputConnection(cone.GetOutputPort());
- coneActor = new vtkActor();
- coneActor.SetMapper(mapper);
- renWin.GetRenderer().AddActor(coneActor);
- planes = new vtkPlanes();
- renderWindowInteractor = new vtkRenderWindowInteractor();
- renderWindowInteractor.SetRenderWindow(renWin.GetRenderWindow());
- boxWidget = new vtkBoxWidget();
- boxWidget.SetInteractor(renderWindowInteractor);
- boxWidget.SetPlaceFactor(1.25);
- boxWidget.PlaceWidget(coneActor.GetBounds());
- boxWidget.AddObserver("InteractionEvent", this, "executeClipping");
- renderWindowInteractor.Initialize();
- boxWidget.On();
- renWin.Render();
- renWin.resetCamera();
- renderWindowInteractor.Start();
- }
- public void executeClipping() {
- planes = new vtkPlanes();
- boxWidget.GetPlanes(planes);
- mapper.SetClippingPlanes(planes);
- planes.Delete();
- }
- public static final int WINDOW_WIDTH = 1000;
- public static final int WINDOW_HEIGHT = 500;
- public static void main(String[] args) {
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- VTKWindowInteractor _vtkRendererPanel = new VTKWindowInteractor();
- JFrame frame = new JFrame();
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.setTitle("......");
- frame.setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
- frame.setVisible(true);
- frame.setLayout(new BorderLayout());
- frame.add(_vtkRendererPanel);
- _vtkRendererPanel.render();
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement