scenerygraphics / sciview

sciview is a tool for visualization and interaction with ND image and mesh data
BSD 2-Clause "Simplified" License
68 stars 17 forks source link

Feedback from a user #222

Open ctrueden opened 5 years ago

ctrueden commented 5 years ago

From @neurolabusc via private mail:

Are there any instructions or YouTube videos on using SciView? I entered the SciView address to the Fiji Help->Update and it seemed to download a lot of files, but when I restarted I do not see SciView in the Plugins menu nor anywhere else. The web page suggests there should be a Demo->GameOfLife option, but I do not see any demo menu, and my ImageJ/Fiji menu has a lot more menus than shown on the Github web page.

Followed by:

I did get SciView running. Not sure if there were dialogs that were off screen (I think in low DPI mode, some of the dialogs are off the screen, and this makes it seem like the interface is not responsive), or if I have to run Help->Refresh menus even after restarting. 1. I do get errors that some JARS are not native, but frustratingly it does not tell me which jar. A web search suggests sometimes a MacOS specific version of input is installed, but mine looks OK (input-2.0.9.jar). 2. Closing the SciView window appears to lock up ImageJ a lot of errors appear and then ImageJ crashes 3. Some interactions with SciView seems to change the background for the ImageJ and SciView dialogs to black, which makes it impossible to read text or widgets. 4. The volume rendering does work. Neither setting the transfer function nor the color influences the volume being rendered. ``` [INFO] Reading available sites from https://imagej.net/ Started application as PID 26494 imagej-launcher version smaller or equal to non-working version (4.0.5 vs. 4.0.5), disabling Vulkan as rendering backend. Disable check by setting 'scenery.DisableLauncherVersionCheck' system property to 'true'. NodePublisher listening on tcp://127.0.0.1:6666 Initializing OpenGL Renderer... Loaded Deferred Shading (Deferred Shading, with HDR postprocessing and FXAA ClearGLWindow: GLProfile[GL4/GL4.hw] OpenGLRenderer: 852 x 662 on GeForce GTX 1070 with Max-Q Design/PCIe/SSE2, 4.5.0 NVIDIA 396.24 Creating render framebuffer GeometryBuffer for pass Scene (852x662) + attachment NormalsMaterial, RGBA_Float16 + attachment DiffuseAlbedo, RGBA_UInt8 + attachment ZBuffer, Depth32 Creating render framebuffer AOTemp1 for pass AO (852x662) + attachment Occlusion, R_UInt8 Creating render framebuffer AOTemp2 for pass AOBlurV (852x662) + attachment Occlusion, R_UInt8 Creating render framebuffer AOBuffer for pass AOBlurH (426x331) + attachment Occlusion, R_UInt8 Creating render framebuffer ForwardBuffer for pass DeferredLighting (852x662) + attachment Color, RGBA_Float16 Creating render framebuffer HDRBuffer for pass ForwardShading (852x662) + attachment Color, RGBA_Float16 + attachment Depth, Depth32 Creating render framebuffer FXAABuffer for pass HDR (852x662) + attachment Color, RGBA_UInt8 Creating render framebuffer Viewport for pass FXAA (852x662) Recreating framebuffers (852x662 Creating render framebuffer GeometryBuffer for pass Scene (852x662) + attachment NormalsMaterial, RGBA_Float16 + attachment DiffuseAlbedo, RGBA_UInt8 + attachment ZBuffer, Depth32 Creating render framebuffer AOTemp1 for pass AO (852x662) + attachment Occlusion, R_UInt8 Creating render framebuffer AOTemp2 for pass AOBlurV (852x662) + attachment Occlusion, R_UInt8 Creating render framebuffer AOBuffer for pass AOBlurH (426x331) + attachment Occlusion, R_UInt8 Creating render framebuffer ForwardBuffer for pass DeferredLighting (852x662) + attachment Color, RGBA_Float16 Creating render framebuffer HDRBuffer for pass ForwardShading (852x662) + attachment Color, RGBA_Float16 + attachment Depth, Depth32 Creating render framebuffer FXAABuffer for pass HDR (852x662) + attachment Color, RGBA_UInt8 Creating render framebuffer Viewport for pass FXAA (852x662) Reflections took 35 ms to scan 1 urls, producing 49 keys and 241 values Initialized 1 textures [ERROR] Could not find JAR with native libraries. [ERROR] Could not find JAR with native libraries. No custom key configuration found, using default keybindings. No custom key configuration found, using default keybindings. Recreating framebuffers (852x662 Creating render framebuffer GeometryBuffer for pass Scene (852x662) + attachment NormalsMaterial, RGBA_Float16 + attachment DiffuseAlbedo, RGBA_UInt8 + attachment ZBuffer, Depth32 Creating render framebuffer AOTemp1 for pass AO (852x662) + attachment Occlusion, R_UInt8 Creating render framebuffer AOTemp2 for pass AOBlurV (852x662) + attachment Occlusion, R_UInt8 Creating render framebuffer AOBuffer for pass AOBlurH (426x331) + attachment Occlusion, R_UInt8 Creating render framebuffer ForwardBuffer for pass DeferredLighting (852x662) + attachment Color, RGBA_Float16 Creating render framebuffer HDRBuffer for pass ForwardShading (852x662) + attachment Color, RGBA_Float16 + attachment Depth, Depth32 Creating render framebuffer FXAABuffer for pass HDR (852x662) + attachment Color, RGBA_UInt8 Creating render framebuffer Viewport for pass FXAA (852x662) Done initializing SciView ```
neurolabusc commented 5 years ago

The screenshot below shows a SciView volume rendering of the MNI152 image included with MRIcroGL. As I noted, I do not seem to be able to alter the transfer function (e.g. all the air outside the brain has the minimum intensity [0] but appears translucent rather than transparent).

Also note that I have set the Edit>Options>Appearance for my HiDPI mode (“Menu font size” 16 and “GUI scale” 2) to improve readability but these settings do not influence SciView (note tiny font size for SciView relative to ImageJ).

mni152

ctrueden commented 5 years ago

I cannot speak to the transfer function issue (maybe @kephale or @skalarproduktraum can), but regarding the font size: this might be because SciView's UI is built on Swing rather than AWT.

@neurolabusc Are you using Java 9+? Or Java 8?

neurolabusc commented 5 years ago

I downloaded the latest stable Fiji and then updated it from the Fiji GUI. Can I specify different versions of Java at launch, or are there development builds for different versions of Java?

The Plugins>Utilities>ImageJ Properties command reports the following

  java.version: 1.8.0_172
  java.vendor: Oracle Corporation
  os.name: Linux
  os.version: 4.15.0-38-generic
  os.arch: amd64
...
  IJ.getVersion: 2.0.0-rc-71/1.52r
  IJ.getFullVersion: 1.52r06
  IJ.javaVersion: 8
  IJ.isLinux: true
  IJ.isMacintosh: false
  IJ.isMacOSX: false
  IJ.isWindows: false
  IJ.is64Bit: true
....
ctrueden commented 5 years ago

Can I specify different versions of Java at launch

Yes, see instructions here. Essentially it boils down to using the --java-home command line parameter.

neurolabusc commented 5 years ago

I tried this, but whatever I launch ImageJ wants to look for files in a folder '/amd64' I can find the file /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so but not /usr/lib/jvm/java-11-openjdk-amd64/lib/amd64/server/libjvm.so

When I run $HOME/Fiji.app/ImageJ-linux64 --java-home /usr/lib/jvm/java-11-openjdk-amd64 I get Could not load Java library '/usr/lib/jvm/java-11-openjdk-amd64/lib/amd64/server/libjvm.so': /usr/lib/jvm/java-11-openjdk-amd64/lib/amd64/server/libjvm.so: cannot open shared object file: No such file or directory

Doing a web search I also tried

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
$HOME/Fiji.app/ImageJ-linux64

but this seems to have no effect, as I still get ImageJ running on Java 8.

It looks like this issue was first noted in June '18 but remains unresolved.

neurolabusc commented 5 years ago

Inspired by this issue I created a symlink to the library: sudo ln -s /usr/lib/jvm/java-11-openjdk-amd64/lib /usr/lib/jvm/java-11-openjdk-amd64/lib/amd64

I was able to launch ImageJ with this command $HOME/Fiji.app/ImageJ-linux64 --default-gc --java-home /usr/lib/jvm/java-11-openjdk-amd64

The base ImageJ seems to load fine (though a lot of errors were reported in the Console log, most seem to be related to SciJava) and the Bio-Formats module was able to load a NIfTI volume without problems. However choosing Plugins->SciView caused ImageJ to crash right after the splash screen.

[ERROR]: Cannot locate JRE jar in /usr/lib/jvm/java-11-openjdk-amd64
[ERROR] Cannot create plugin: class='org.scijava.ui.swing.script.languagesupport.JavaLanguageSupportPlugin', priority=0.0, enabled=true, pluginType=LanguageSupportPlugin
java.lang.IllegalArgumentException: info cannot be null
    at org.fife.rsta.ac.java.JarManager.addClassFileSource(JarManager.java:157)
    at org.fife.rsta.ac.java.JarManager.addCurrentJreClassFileSource(JarManager.java:193)
    at org.scijava.ui.swing.script.languagesupport.JavaLanguageSupportPlugin.<init>(JavaLanguageSupportPlugin.java:56)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at java.base/java.lang.Class.newInstance(Class.java:584)
    at org.scijava.plugin.PluginInfo.createInstance(PluginInfo.java:306)
    at org.scijava.plugin.DefaultPluginService.createInstance(DefaultPluginService.java:237)
    at org.scijava.plugin.DefaultPluginService.createInstances(DefaultPluginService.java:226)
    at org.scijava.plugin.DefaultPluginService.createInstancesOfType(DefaultPluginService.java:217)
    at org.scijava.plugin.AbstractSingletonService.initInstances(AbstractSingletonService.java:138)
    at org.scijava.plugin.AbstractSingletonService.getInstances(AbstractSingletonService.java:77)
    at org.scijava.plugin.SingletonService.lambda$initialize$0(SingletonService.java:97)
    at org.scijava.object.ObjectIndex.resolvePending(ObjectIndex.java:388)
    at org.scijava.object.ObjectIndex.get(ObjectIndex.java:133)
    at org.scijava.object.DefaultObjectService.getObjects(DefaultObjectService.java:87)
    at org.scijava.display.DefaultDisplayService.getDisplays(DefaultDisplayService.java:166)
    at org.scijava.ui.DefaultUIService.showUI(DefaultUIService.java:159)
    at org.scijava.ui.DefaultUIService.showUI(DefaultUIService.java:142)
    at org.scijava.AbstractGateway.launch(AbstractGateway.java:104)
    at net.imagej.Main.main(Main.java:55)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at net.imagej.launcher.ClassLauncher.launch(ClassLauncher.java:279)
    at net.imagej.launcher.ClassLauncher.run(ClassLauncher.java:186)
    at net.imagej.launcher.ClassLauncher.main(ClassLauncher.java:77)
[INFO] Reading available sites from https://imagej.net/
ctrueden commented 5 years ago

@neurolabusc Thanks for the detailed feedback.

``` java.lang.IllegalArgumentException: info cannot be null at org.fife.rsta.ac.java.JarManager.addClassFileSource(JarManager.java:157) at org.fife.rsta.ac.java.JarManager.addCurrentJreClassFileSource(JarManager.java:193) at org.scijava.ui.swing.script.languagesupport.JavaLanguageSupportPlugin.(JavaLanguageSupportPlugin.java:56) ```

Fixed with scijava/script-editor@3899427ac930c534911284f7d3cf46d79371fed0.

Inspired by this [issue](https://github.com/imagej/imagej/issues/155) I created a symlink to the library: ``` sudo ln -s /usr/lib/jvm/java-11-openjdk-amd64/lib /usr/lib/jvm/java-11-openjdk-amd64/lib/amd64 ```

@stelfrich and I believe we fixed this with imagej/imagej-launcher@1049eac6ec9931b1e98bcecc078865a5bca78afd.

It will probably be a few days before these changes propagate to the ImageJ Updater.