opensim-gui icon indicating copy to clipboard operation
opensim-gui copied to clipboard

Marker trail display does not work (get UnsatisfiedLinkError)

Open tkuchida opened this issue 6 years ago • 4 comments

Steps to reproduce

  • File -> Preview Experimental Data...
  • Select Gait10dof18musc\ExperimentalData\subject01_walk.trc
  • In Navigator, navigate to ExperimentalData_1 > subject01_walk.trc > Markers
  • Right-click R.ASIS and select "Toggle Trail Display"

Expected result

  • Trail display is toggled. Here's the result in 3.3:

Actual result

:red_circle: :cry:

java.lang.UnsatisfiedLinkError: vtk.vtkAppendPolyData.VTKInit()J
	at vtk.vtkAppendPolyData.VTKInit(Native Method)
	at vtk.vtkObject.(vtkObject.java:97)
	at vtk.vtkAlgorithm.(vtkAlgorithm.java:386)
	at vtk.vtkPolyDataAlgorithm.(vtkPolyDataAlgorithm.java:78)
	at vtk.vtkAppendPolyData.(vtkAppendPolyData.java:82)
	at org.opensim.view.motions.MotionDisplayer.createTrail(MotionDisplayer.java:964)
	at org.opensim.view.motions.MotionDisplayer.toggleTrail(MotionDisplayer.java:936)
	at org.opensim.view.experimentaldata.AnnotatedMotion.toggleObjectTrail(AnnotatedMotion.java:261)
	at org.opensim.view.experimentaldata.ExperimentalObjectDisplayShowTrailAction.performAction(ExperimentalObjectDisplayShowTrailAction.java:42)
	at org.openide.util.actions.CallableSystemAction$1.run(CallableSystemAction.java:130)
	at org.openide.util.actions.ActionInvoker$1.run(ActionInvoker.java:95)
	at org.openide.util.actions.ActionInvoker.doPerformAction(ActionInvoker.java:116)
	at org.openide.util.actions.ActionInvoker.invokeAction(ActionInvoker.java:99)
	at org.openide.util.actions.CallableSystemAction.actionPerformed(CallableSystemAction.java:127)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
	at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:842)
	at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:886)
	at java.awt.Component.processMouseEvent(Component.java:6533)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
	at java.awt.Component.processEvent(Component.java:6298)
	at java.awt.Container.processEvent(Container.java:2237)
	at java.awt.Component.dispatchEventImpl(Component.java:4889)
	at java.awt.Container.dispatchEventImpl(Container.java:2295)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4526)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467)
	at java.awt.Container.dispatchEventImpl(Container.java:2281)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
	at java.awt.EventQueue$4.run(EventQueue.java:733)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
	at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159)
[catch] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Environment and GUI version

AppVeyor artifact OpenSim-587ee9d9-2018-03-21.zip

Notes

If it isn't possible to provide this functionality, the "Toggle Trail Display" item should not be displayed.

tkuchida avatar Apr 09 '18 23:04 tkuchida

@jimmyDunne Will investigate how valuable this feature is to users.

jenhicks avatar Apr 10 '18 17:04 jenhicks

I use this feature whenever I am scaling a model. I use the trail to help determine a time range over which to average frames from the static pose. I choose as wide of a time frame as possible through which the markers move very little, and the trails help with this.

chrisdembia avatar Apr 11 '18 23:04 chrisdembia

Thanks for the feedback @chrisdembia I'll think of a way to restore this capability. In essence we moved from making custom visualization/artifacts (which were convenient to users) to a more streamlined approach that lets components draw themselves. Will see what I can do and if it fits in 4.0.

aymanhab avatar Apr 12 '18 00:04 aymanhab

It's fine with me if we put this off for now.

chrisdembia avatar Apr 12 '18 18:04 chrisdembia