-/*******************************************************************************\r
- * Copyright (c) 2012, 2013 Association for Decentralized Information Management in\r
- * Industry THTH ry.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * which accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Contributors:\r
- * VTT Technical Research Centre of Finland - initial API and implementation\r
- *******************************************************************************/\r
-package org.simantics.g3d.vtk.shape;\r
-\r
-import javax.vecmath.Matrix4d;\r
-import javax.vecmath.Point3d;\r
-\r
-import org.simantics.g3d.math.MathTools;\r
-import org.simantics.utils.threads.AWTThread;\r
-import org.simantics.utils.threads.ThreadUtils;\r
-\r
-import vtk.vtkActor;\r
-import vtk.vtkAssembly;\r
-import vtk.vtkAxes;\r
-import vtk.vtkConeSource;\r
-import vtk.vtkLinearTransform;\r
-import vtk.vtkMatrix4x4;\r
-import vtk.vtkPolyDataMapper;\r
-import vtk.vtkProp3D;\r
-import vtk.vtkRenderer;\r
-import vtk.vtkTextActor;\r
-import vtk.vtkTubeFilter;\r
-\r
-public class axesActor extends vtkAssembly implements IvtkVisualObject{\r
-\r
- private vtkRenderer ren;\r
- private double axisLength = 0.8;\r
- private vtkTextActor xactor, yactor, zactor;\r
- private vtkActor tubeActor;\r
- private vtkActor xconeActor;\r
- private vtkActor yconeActor;\r
- private vtkActor zconeActor;\r
- private boolean rendered = false;\r
-\r
- public axesActor(vtkRenderer _ren) {\r
- super();\r
- ren = _ren;\r
- createAxes();\r
- }\r
- \r
- public axesActor(vtkRenderer _ren, double axisLength) {\r
- super();\r
- ren = _ren;\r
- this.axisLength = axisLength;\r
- createAxes();\r
- }\r
-\r
- public void createAxes() {\r
- vtkAxes axes = new vtkAxes();\r
- axes.SetOrigin(0, 0, 0);\r
- axes.SetScaleFactor(axisLength);\r
-\r
- xactor = new vtkTextActor();\r
- yactor = new vtkTextActor();\r
- zactor = new vtkTextActor();\r
-\r
- xactor.SetInput("X");\r
- yactor.SetInput("Y");\r
- zactor.SetInput("Z");\r
-\r
-// xactor.SetTextScaleModeToViewport();\r
-// yactor.SetTextScaleModeToViewport();\r
-// zactor.SetTextScaleModeToViewport();\r
- xactor.SetTextScaleModeToNone();\r
- yactor.SetTextScaleModeToNone();\r
- zactor.SetTextScaleModeToNone();\r
- \r
- xactor.GetTextProperty().SetColor(0.0, 0.0, 0.0);\r
- xactor.GetTextProperty().ShadowOff();\r
- xactor.GetTextProperty().ItalicOff();\r
- xactor.GetTextProperty().BoldOff();\r
-\r
- yactor.GetTextProperty().SetColor(0.0, 0.0, 0.0);\r
- yactor.GetTextProperty().ShadowOff();\r
- yactor.GetTextProperty().ItalicOff();\r
- yactor.GetTextProperty().BoldOff();\r
-\r
- zactor.GetTextProperty().SetColor(0.0, 0.0, 0.0);\r
- zactor.GetTextProperty().ShadowOff();\r
- zactor.GetTextProperty().ItalicOff();\r
- zactor.GetTextProperty().BoldOff();\r
- \r
- xactor.GetTextProperty().Delete();\r
- yactor.GetTextProperty().Delete();\r
- zactor.GetTextProperty().Delete();\r
-\r
- xactor.SetMaximumLineHeight(0.25);\r
- yactor.SetMaximumLineHeight(0.25);\r
- zactor.SetMaximumLineHeight(0.25);\r
- \r
- xactor.SetPickable(0);\r
- yactor.SetPickable(0);\r
- zactor.SetPickable(0);\r
-\r
- vtkTubeFilter tube = new vtkTubeFilter();\r
- tube.SetInput(axes.GetOutput());\r
- tube.SetRadius(0.05 * axisLength);\r
- tube.SetNumberOfSides(8);\r
-\r
- vtkPolyDataMapper tubeMapper = new vtkPolyDataMapper();\r
- tubeMapper.SetInput(tube.GetOutput());\r
-\r
- tubeActor = new vtkActor();\r
- tubeActor.SetMapper(tubeMapper);\r
- tubeActor.PickableOff();\r
-\r
- int coneRes = 12;\r
- double coneScale = 0.3 * axisLength;\r
-\r
- // --- x-Cone\r
- vtkConeSource xcone = new vtkConeSource();\r
- xcone.SetResolution(coneRes);\r
- vtkPolyDataMapper xconeMapper = new vtkPolyDataMapper();\r
- xconeMapper.SetInput(xcone.GetOutput());\r
- xconeActor = new vtkActor();\r
- xconeActor.SetMapper(xconeMapper);\r
- xconeActor.GetProperty().SetColor(1, 0, 0);\r
- xconeActor.SetScale(coneScale, coneScale, coneScale);\r
- xconeActor.SetPosition(axisLength, 0.0, 0.0);\r
- xconeActor.SetPickable(0);\r
-\r
- // --- y-Cone\r
- vtkConeSource ycone = new vtkConeSource();\r
- ycone.SetResolution(coneRes);\r
- vtkPolyDataMapper yconeMapper = new vtkPolyDataMapper();\r
- yconeMapper.SetInput(ycone.GetOutput());\r
- yconeActor = new vtkActor();\r
- yconeActor.SetMapper(yconeMapper);\r
- yconeActor.GetProperty().SetColor(1, 1, 0);\r
- yconeActor.RotateZ(90);\r
- yconeActor.SetScale(coneScale, coneScale, coneScale);\r
- yconeActor.SetPosition(0.0, axisLength, 0.0);\r
- yconeActor.SetPickable(0);\r
-\r
- // --- z-Cone\r
- vtkConeSource zcone = new vtkConeSource();\r
- zcone.SetResolution(coneRes);\r
- vtkPolyDataMapper zconeMapper = new vtkPolyDataMapper();\r
- zconeMapper.SetInput(zcone.GetOutput());\r
- zconeActor = new vtkActor();\r
- zconeActor.SetMapper(zconeMapper);\r
- zconeActor.GetProperty().SetColor(0, 1, 0);\r
- zconeActor.RotateY(-90);\r
- zconeActor.SetScale(coneScale, coneScale, coneScale);\r
- zconeActor.SetPosition(0.0, 0.0, axisLength);\r
- zconeActor.SetPickable(0);\r
-\r
- \r
- this.AddPart(tubeActor);\r
- this.AddPart(xconeActor);\r
- this.AddPart(yconeActor);\r
- this.AddPart(zconeActor);\r
- \r
- tube.GetOutput().Delete();\r
- xcone.GetOutput().Delete();\r
- ycone.GetOutput().Delete();\r
- zcone.GetOutput().Delete();\r
- axes.GetOutput().Delete();\r
- axes.Delete();\r
- tubeMapper.Delete();\r
- tube.Delete();\r
- xcone.Delete();\r
- ycone.Delete();\r
- zcone.Delete();\r
- xconeMapper.Delete();\r
- yconeMapper.Delete();\r
- zconeMapper.Delete();\r
- \r
- xconeActor.GetProperty().Delete();\r
- yconeActor.GetProperty().Delete();\r
- zconeActor.GetProperty().Delete();\r
- }\r
- \r
- public void addToRenderer() {\r
- if (rendered)\r
- return;\r
- rendered = true;\r
- \r
- ren.AddActor2D(xactor);\r
- ren.AddActor2D(yactor);\r
- ren.AddActor2D(zactor);\r
- \r
- \r
- ren.AddActor(this);\r
- }\r
- \r
- public void removeFromRenderer() {\r
- if (!rendered)\r
- return;\r
- rendered = false;\r
- ren.RemoveActor2D(xactor);\r
- ren.RemoveActor2D(yactor);\r
- ren.RemoveActor2D(zactor);\r
- ren.RemoveActor(this);\r
- }\r
- \r
- public boolean isRendered() {\r
- return rendered;\r
- }\r
-\r
- public void setAxesVisibility(boolean ison) {\r
- this.SetVisibility(ison ? 1 : 0);\r
- xactor.SetVisibility(ison ? 1 : 0);\r
- yactor.SetVisibility(ison ? 1 : 0);\r
- zactor.SetVisibility(ison ? 1 : 0);\r
- }\r
- \r
- private boolean labelVisible = true;\r
- \r
- public void setLabelVisibility(boolean ison) {\r
- xactor.SetVisibility(ison ? 1 : 0);\r
- yactor.SetVisibility(ison ? 1 : 0);\r
- zactor.SetVisibility(ison ? 1 : 0);\r
- labelVisible = ison;\r
- if (labelVisible)\r
- updateTextLoc();\r
- }\r
- \r
- Matrix4d m = new Matrix4d();\r
- double mat[] = new double[16];\r
- Point3d x = new Point3d();\r
- Point3d y = new Point3d();\r
- Point3d z = new Point3d();\r
- \r
- private void updateTextLoc() {\r
- if (!labelVisible)\r
- return;\r
- xactor.GetPositionCoordinate().SetCoordinateSystemToWorld();\r
- yactor.GetPositionCoordinate().SetCoordinateSystemToWorld();\r
- zactor.GetPositionCoordinate().SetCoordinateSystemToWorld();\r
- \r
- GetMatrix(mat);\r
- MathTools.set(m, mat);\r
- x.set(axisLength, 0,0);\r
- y.set(0,axisLength, 0);\r
- z.set(0,0,axisLength);\r
- \r
- m.transform(x);\r
- m.transform(y);\r
- m.transform(z);\r
- xactor.GetPositionCoordinate().SetValue(x.x, x.y, x.z);\r
- yactor.GetPositionCoordinate().SetValue(y.x, y.y, y.z);\r
- zactor.GetPositionCoordinate().SetValue(z.x, z.y, z.z);\r
- \r
- xactor.GetPositionCoordinate().Delete();\r
- yactor.GetPositionCoordinate().Delete();\r
- zactor.GetPositionCoordinate().Delete();\r
- }\r
- \r
- @Override\r
- public void SetPickable(int id0) {\r
- super.SetPickable(id0);\r
- tubeActor.SetPickable(id0);\r
- xconeActor.SetPickable(id0);\r
- yconeActor.SetPickable(id0);\r
- zconeActor.SetPickable(id0);\r
-\r
- }\r
- \r
- @Override\r
- public void SetOrientation(double id0, double id1, double id2) {\r
- super.SetOrientation(id0, id1, id2);\r
- updateTextLoc();\r
- }\r
- \r
- @Override\r
- public void RotateWXYZ(double id0, double id1, double id2, double id3) {\r
- super.RotateWXYZ(id0, id1, id2, id3);\r
- updateTextLoc();\r
- }\r
- \r
- @Override\r
- public void SetPosition(double[] id0) {\r
- super.SetPosition(id0);\r
- updateTextLoc();\r
- }\r
- \r
- @Override\r
- public void SetPosition(double id0, double id1, double id2) {\r
- super.SetPosition(id0, id1, id2);\r
- updateTextLoc();\r
- }\r
- \r
- @Override\r
- public void SetOrientation(double[] id0) {\r
- super.SetOrientation(id0);\r
- updateTextLoc();\r
- }\r
- \r
- @Override\r
- public void SetScale(double id0) {\r
- super.SetScale(id0);\r
- updateTextLoc();\r
- }\r
- \r
- @Override\r
- public void SetScale(double id0, double id1, double id2) {\r
- super.SetScale(id0, id1, id2);\r
- updateTextLoc();\r
- }\r
- \r
- @Override\r
- public void SetScale(double[] id0) {\r
- super.SetScale(id0);\r
- updateTextLoc();\r
- }\r
- \r
- @Override\r
- public void SetUserMatrix(vtkMatrix4x4 id0) {\r
- super.SetUserMatrix(id0);\r
- updateTextLoc();\r
- }\r
- \r
- @Override\r
- public void SetUserTransform(vtkLinearTransform id0) {\r
- super.SetUserTransform(id0);\r
- updateTextLoc();\r
- }\r
- \r
- @Override\r
- public void Delete() {\r
- ren.RemoveActor(xactor);\r
- ren.RemoveActor(yactor);\r
- ren.RemoveActor(zactor);\r
- ren.RemoveActor(tubeActor);\r
- ren.RemoveActor(xconeActor);\r
- ren.RemoveActor(yconeActor);\r
- ren.RemoveActor(xconeActor);\r
- xactor.Delete();\r
- yactor.Delete();\r
- zactor.Delete();\r
- tubeActor.Delete();\r
- xconeActor.Delete();\r
- yconeActor.Delete();\r
- zconeActor.Delete();\r
- super.Delete();\r
- }\r
-\r
- public void dispose() {\r
- ThreadUtils.asyncExec(AWTThread.getThreadAccess(), new Runnable() {\r
- \r
- @Override\r
- public void run() {\r
- removeFromRenderer();\r
- Delete();\r
- }\r
- });\r
- }\r
- \r
- @Override\r
- public vtkProp3D getVtkProp() {\r
- return this;\r
- }\r
- \r
-}\r
+/*******************************************************************************
+ * Copyright (c) 2012, 2013 Association for Decentralized Information Management in
+ * Industry THTH ry.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * VTT Technical Research Centre of Finland - initial API and implementation
+ *******************************************************************************/
+package org.simantics.g3d.vtk.shape;
+
+import javax.vecmath.Matrix4d;
+import javax.vecmath.Point3d;
+
+import org.simantics.g3d.math.MathTools;
+import org.simantics.utils.threads.AWTThread;
+import org.simantics.utils.threads.ThreadUtils;
+
+import vtk.vtkActor;
+import vtk.vtkAssembly;
+import vtk.vtkAxes;
+import vtk.vtkConeSource;
+import vtk.vtkLinearTransform;
+import vtk.vtkMatrix4x4;
+import vtk.vtkPolyDataMapper;
+import vtk.vtkProp3D;
+import vtk.vtkRenderer;
+import vtk.vtkTextActor;
+import vtk.vtkTubeFilter;
+
+public class axesActor extends vtkAssembly implements IvtkVisualObject{
+
+ private vtkRenderer ren;
+ private double axisLength = 0.8;
+ private vtkTextActor xactor, yactor, zactor;
+ private vtkActor tubeActor;
+ private vtkActor xconeActor;
+ private vtkActor yconeActor;
+ private vtkActor zconeActor;
+ private boolean rendered = false;
+
+ public axesActor(vtkRenderer _ren) {
+ super();
+ ren = _ren;
+ createAxes();
+ }
+
+ public axesActor(vtkRenderer _ren, double axisLength) {
+ super();
+ ren = _ren;
+ this.axisLength = axisLength;
+ createAxes();
+ }
+
+ public void createAxes() {
+ vtkAxes axes = new vtkAxes();
+ axes.SetOrigin(0, 0, 0);
+ axes.SetScaleFactor(axisLength);
+
+ xactor = new vtkTextActor();
+ yactor = new vtkTextActor();
+ zactor = new vtkTextActor();
+
+ xactor.SetInput("X");
+ yactor.SetInput("Y");
+ zactor.SetInput("Z");
+
+// xactor.SetTextScaleModeToViewport();
+// yactor.SetTextScaleModeToViewport();
+// zactor.SetTextScaleModeToViewport();
+ xactor.SetTextScaleModeToNone();
+ yactor.SetTextScaleModeToNone();
+ zactor.SetTextScaleModeToNone();
+
+ xactor.GetTextProperty().SetColor(0.0, 0.0, 0.0);
+ xactor.GetTextProperty().ShadowOff();
+ xactor.GetTextProperty().ItalicOff();
+ xactor.GetTextProperty().BoldOff();
+
+ yactor.GetTextProperty().SetColor(0.0, 0.0, 0.0);
+ yactor.GetTextProperty().ShadowOff();
+ yactor.GetTextProperty().ItalicOff();
+ yactor.GetTextProperty().BoldOff();
+
+ zactor.GetTextProperty().SetColor(0.0, 0.0, 0.0);
+ zactor.GetTextProperty().ShadowOff();
+ zactor.GetTextProperty().ItalicOff();
+ zactor.GetTextProperty().BoldOff();
+
+ xactor.GetTextProperty().Delete();
+ yactor.GetTextProperty().Delete();
+ zactor.GetTextProperty().Delete();
+
+ xactor.SetMaximumLineHeight(0.25);
+ yactor.SetMaximumLineHeight(0.25);
+ zactor.SetMaximumLineHeight(0.25);
+
+ xactor.SetPickable(0);
+ yactor.SetPickable(0);
+ zactor.SetPickable(0);
+
+ vtkTubeFilter tube = new vtkTubeFilter();
+ tube.SetInputData(axes.GetOutput());
+ tube.SetRadius(0.05 * axisLength);
+ tube.SetNumberOfSides(8);
+
+ vtkPolyDataMapper tubeMapper = new vtkPolyDataMapper();
+ tubeMapper.SetInputData(tube.GetOutput());
+
+ tubeActor = new vtkActor();
+ tubeActor.SetMapper(tubeMapper);
+ tubeActor.PickableOff();
+
+ int coneRes = 12;
+ double coneScale = 0.3 * axisLength;
+
+ // --- x-Cone
+ vtkConeSource xcone = new vtkConeSource();
+ xcone.SetResolution(coneRes);
+ vtkPolyDataMapper xconeMapper = new vtkPolyDataMapper();
+ xconeMapper.SetInputData(xcone.GetOutput());
+ xconeActor = new vtkActor();
+ xconeActor.SetMapper(xconeMapper);
+ xconeActor.GetProperty().SetColor(1, 0, 0);
+ xconeActor.SetScale(coneScale, coneScale, coneScale);
+ xconeActor.SetPosition(axisLength, 0.0, 0.0);
+ xconeActor.SetPickable(0);
+
+ // --- y-Cone
+ vtkConeSource ycone = new vtkConeSource();
+ ycone.SetResolution(coneRes);
+ vtkPolyDataMapper yconeMapper = new vtkPolyDataMapper();
+ yconeMapper.SetInputData(ycone.GetOutput());
+ yconeActor = new vtkActor();
+ yconeActor.SetMapper(yconeMapper);
+ yconeActor.GetProperty().SetColor(1, 1, 0);
+ yconeActor.RotateZ(90);
+ yconeActor.SetScale(coneScale, coneScale, coneScale);
+ yconeActor.SetPosition(0.0, axisLength, 0.0);
+ yconeActor.SetPickable(0);
+
+ // --- z-Cone
+ vtkConeSource zcone = new vtkConeSource();
+ zcone.SetResolution(coneRes);
+ vtkPolyDataMapper zconeMapper = new vtkPolyDataMapper();
+ zconeMapper.SetInputData(zcone.GetOutput());
+ zconeActor = new vtkActor();
+ zconeActor.SetMapper(zconeMapper);
+ zconeActor.GetProperty().SetColor(0, 1, 0);
+ zconeActor.RotateY(-90);
+ zconeActor.SetScale(coneScale, coneScale, coneScale);
+ zconeActor.SetPosition(0.0, 0.0, axisLength);
+ zconeActor.SetPickable(0);
+
+
+ this.AddPart(tubeActor);
+ this.AddPart(xconeActor);
+ this.AddPart(yconeActor);
+ this.AddPart(zconeActor);
+
+ tube.GetOutput().Delete();
+ xcone.GetOutput().Delete();
+ ycone.GetOutput().Delete();
+ zcone.GetOutput().Delete();
+ axes.GetOutput().Delete();
+ axes.Delete();
+ tubeMapper.Delete();
+ tube.Delete();
+ xcone.Delete();
+ ycone.Delete();
+ zcone.Delete();
+ xconeMapper.Delete();
+ yconeMapper.Delete();
+ zconeMapper.Delete();
+
+ xconeActor.GetProperty().Delete();
+ yconeActor.GetProperty().Delete();
+ zconeActor.GetProperty().Delete();
+ }
+
+ public void addToRenderer() {
+ if (rendered)
+ return;
+ rendered = true;
+
+ ren.AddActor2D(xactor);
+ ren.AddActor2D(yactor);
+ ren.AddActor2D(zactor);
+
+
+ ren.AddActor(this);
+ }
+
+ public void removeFromRenderer() {
+ if (!rendered)
+ return;
+ rendered = false;
+ ren.RemoveActor2D(xactor);
+ ren.RemoveActor2D(yactor);
+ ren.RemoveActor2D(zactor);
+ ren.RemoveActor(this);
+ }
+
+ public boolean isRendered() {
+ return rendered;
+ }
+
+ public void setAxesVisibility(boolean ison) {
+ this.SetVisibility(ison ? 1 : 0);
+ xactor.SetVisibility(ison ? 1 : 0);
+ yactor.SetVisibility(ison ? 1 : 0);
+ zactor.SetVisibility(ison ? 1 : 0);
+ }
+
+ private boolean labelVisible = true;
+
+ public void setLabelVisibility(boolean ison) {
+ xactor.SetVisibility(ison ? 1 : 0);
+ yactor.SetVisibility(ison ? 1 : 0);
+ zactor.SetVisibility(ison ? 1 : 0);
+ labelVisible = ison;
+ if (labelVisible)
+ updateTextLoc();
+ }
+
+ Matrix4d m = new Matrix4d();
+ double mat[] = new double[16];
+ Point3d x = new Point3d();
+ Point3d y = new Point3d();
+ Point3d z = new Point3d();
+
+ private void updateTextLoc() {
+ if (!labelVisible)
+ return;
+ xactor.GetPositionCoordinate().SetCoordinateSystemToWorld();
+ yactor.GetPositionCoordinate().SetCoordinateSystemToWorld();
+ zactor.GetPositionCoordinate().SetCoordinateSystemToWorld();
+
+ GetMatrix(mat);
+ MathTools.set(m, mat);
+ x.set(axisLength, 0,0);
+ y.set(0,axisLength, 0);
+ z.set(0,0,axisLength);
+
+ m.transform(x);
+ m.transform(y);
+ m.transform(z);
+ xactor.GetPositionCoordinate().SetValue(x.x, x.y, x.z);
+ yactor.GetPositionCoordinate().SetValue(y.x, y.y, y.z);
+ zactor.GetPositionCoordinate().SetValue(z.x, z.y, z.z);
+
+ xactor.GetPositionCoordinate().Delete();
+ yactor.GetPositionCoordinate().Delete();
+ zactor.GetPositionCoordinate().Delete();
+ }
+
+ @Override
+ public void SetPickable(int id0) {
+ super.SetPickable(id0);
+ tubeActor.SetPickable(id0);
+ xconeActor.SetPickable(id0);
+ yconeActor.SetPickable(id0);
+ zconeActor.SetPickable(id0);
+
+ }
+
+ @Override
+ public void SetOrientation(double id0, double id1, double id2) {
+ super.SetOrientation(id0, id1, id2);
+ updateTextLoc();
+ }
+
+ @Override
+ public void RotateWXYZ(double id0, double id1, double id2, double id3) {
+ super.RotateWXYZ(id0, id1, id2, id3);
+ updateTextLoc();
+ }
+
+ @Override
+ public void SetPosition(double[] id0) {
+ super.SetPosition(id0);
+ updateTextLoc();
+ }
+
+ @Override
+ public void SetPosition(double id0, double id1, double id2) {
+ super.SetPosition(id0, id1, id2);
+ updateTextLoc();
+ }
+
+ @Override
+ public void SetOrientation(double[] id0) {
+ super.SetOrientation(id0);
+ updateTextLoc();
+ }
+
+ @Override
+ public void SetScale(double id0) {
+ super.SetScale(id0);
+ updateTextLoc();
+ }
+
+ @Override
+ public void SetScale(double id0, double id1, double id2) {
+ super.SetScale(id0, id1, id2);
+ updateTextLoc();
+ }
+
+ @Override
+ public void SetScale(double[] id0) {
+ super.SetScale(id0);
+ updateTextLoc();
+ }
+
+ @Override
+ public void SetUserMatrix(vtkMatrix4x4 id0) {
+ super.SetUserMatrix(id0);
+ updateTextLoc();
+ }
+
+ @Override
+ public void SetUserTransform(vtkLinearTransform id0) {
+ super.SetUserTransform(id0);
+ updateTextLoc();
+ }
+
+ @Override
+ public void Delete() {
+ ren.RemoveActor(xactor);
+ ren.RemoveActor(yactor);
+ ren.RemoveActor(zactor);
+ ren.RemoveActor(tubeActor);
+ ren.RemoveActor(xconeActor);
+ ren.RemoveActor(yconeActor);
+ ren.RemoveActor(xconeActor);
+ xactor.Delete();
+ yactor.Delete();
+ zactor.Delete();
+ tubeActor.Delete();
+ xconeActor.Delete();
+ yconeActor.Delete();
+ zconeActor.Delete();
+ super.Delete();
+ }
+
+ public void dispose() {
+ ThreadUtils.asyncExec(AWTThread.getThreadAccess(), new Runnable() {
+
+ @Override
+ public void run() {
+ removeFromRenderer();
+ Delete();
+ }
+ });
+ }
+
+ @Override
+ public vtkProp3D getVtkProp() {
+ return this;
+ }
+
+}