DiAna for 3D colocalization and distance analysis

Hi,

There is an useful article DiAna, an ImageJ tool for object-based 3D co-localization and distance analysis published on Methods which is very attractive to us these days.

I tried to use this plugin doing the colocalization on 3D images. After performing the colocalisation measures on the segmented images, I can add objects in “ROI Selections & Localisation” window into RoiManager3D 3.83 by using
"Add to 3DManager". The RoiManager could do many analysis except “3D viewer”. That action does not show 3D image but popup messages on Fiji console:

Getting universes
3D [dev] 1.6.0-scijava-2-pre11-daily-experimental daily

Universes opened 0
Universe ij3d.Image3DUniverse@5c820e79 
nFrames = 1
org.scijava.java3d.IllegalRenderingStateException: Java 3D ERROR : OpenGL 1.2 or better is required (GL_VERSION=1.1)
	at org.scijava.java3d.JoglPipeline.setupCanvasProperties(JoglPipeline.java:8083)
	at org.scijava.java3d.JoglPipeline.createNewContext(JoglPipeline.java:6440)
	at org.scijava.java3d.Canvas3D.createNewContext(Canvas3D.java:4602)
	at org.scijava.java3d.Canvas3D.createNewContext(Canvas3D.java:2376)
	at org.scijava.java3d.Renderer.doWork(Renderer.java:881)
	at org.scijava.java3d.J3dThread.run(J3dThread.java:271)
Exception occurred in RenderingErrorListener:
java.lang.RuntimeException
	at ij3d.ImageWindow3D$ErrorListener.errorOccurred(ImageWindow3D.java:330)
	at org.scijava.java3d.VirtualUniverse.notifyRenderingErrorListeners(VirtualUniverse.java:1198)
	at org.scijava.java3d.NotificationThread.processNotifications(NotificationThread.java:86)
	at org.scijava.java3d.NotificationThread.run(NotificationThread.java:104)
org.scijava.java3d.IllegalRenderingStateException: Java 3D ERROR : OpenGL 1.2 or better is required (GL_VERSION=1.1)
	at org.scijava.java3d.JoglPipeline.setupCanvasProperties(JoglPipeline.java:8083)
	at org.scijava.java3d.JoglPipeline.access$600(JoglPipeline.java:89)
	at org.scijava.java3d.JoglPipeline$ContextQuerier.init(JoglPipeline.java:8711)
	at org.scijava.java3d.JoglPipeline$QueryCanvas.doQuery(JoglPipeline.java:8618)
	at org.scijava.java3d.JoglPipeline$QueryCanvas.access$100(JoglPipeline.java:8566)
	at org.scijava.java3d.JoglPipeline.createQueryContext(JoglPipeline.java:6562)
	at org.scijava.java3d.Canvas3D.createQueryContext(Canvas3D.java:4609)
	at org.scijava.java3d.Canvas3D.createQueryContext(Canvas3D.java:3606)
	at org.scijava.java3d.Renderer.doWork(Renderer.java:461)
	at org.scijava.java3d.J3dThread.run(J3dThread.java:271)

I checked the 3D viewer is the latest version 4.0.1. Is it the same problem about 3D viewer described previously? Please have a look at the “3D ImageJ Suite” download site. It described at “Download” part:

ImageJ 1.47 or later is required. Java3D is also required, check that 3D Viewer is working.
NEW From version 3.83 and later the new version 4.0.1 of 3D_Viewer is required (please remove the 3D_Viewer plugin provided by ImageJ and replace it by this version, just unzip the file in the plugins directory)…

The latest 3D viewer on my Win x64 is unable to display 3D stack, so it caused the colocalized objects can not be shown on 3D viewer. Am I correct? I appreciate any information which could assiust me.

Best,
chin

Hi @chin,

the very first part of the error message says

So, could you quickly check if your graphics hardware supports OpenGL 1.2 ? Alternatively, you could try to run your analysis on another computer with a proper graphics card. I would like to ask you to check that, just to ensure that the issue is actually an issue in the software, not in the hardware.

Best,
Robert

Hi Chin,

Thanks for your comment about our new plugin, hope it will be useful for you. Do not hesitate if you have questions or comments. About the 3D viewer as stated by @haesleinhuepf it looks like you need to upgrade your graphics driver.

Best,

Thomas

Hi @haesleinhuepf & @ThomasBoudier,

Thanks for the prompt reply.

After changing to the other two Win10 x64, one is equipped nvidia GeForce GTX 680 with the latest driver, I obtained the messages when using the “3D viewer” on RoiManager3D:

Getting universes
3D [dev] 1.6.0-scijava-2-pre11-daily-experimental daily

Universes opened 0
Universe ij3d.Image3DUniverse@2c0a6ebd 
Getting universes
Universes opened 1
Universe ij3d.Image3DUniverse@2c0a6ebd 
Getting universes
Universes opened 1
Universe ij3d.Image3DUniverse@2c0a6ebd 
Getting universes
Universes opened 1
Universe ij3d.Image3DUniverse@2c0a6ebd 
nFrames = 1
org.scijava.java3d.IllegalRenderingStateException: Java 3D ERROR : OpenGL 1.2 or better is required (GL_VERSION=1.1)
	at org.scijava.java3d.JoglPipeline.setupCanvasProperties(JoglPipeline.java:8083)
	at org.scijava.java3d.JoglPipeline.createNewContext(JoglPipeline.java:6440)
	at org.scijava.java3d.Canvas3D.createNewContext(Canvas3D.java:4602)
	at org.scijava.java3d.Canvas3D.createNewContext(Canvas3D.java:2376)
	at org.scijava.java3d.Renderer.doWork(Renderer.java:881)
	at org.scijava.java3d.J3dThread.run(J3dThread.java:271)
Exception occurred in RenderingErrorListener:
java.lang.RuntimeException
	at ij3d.ImageWindow3D$ErrorListener.errorOccurred(ImageWindow3D.java:330)
	at org.scijava.java3d.VirtualUniverse.notifyRenderingErrorListeners(VirtualUniverse.java:1198)
	at org.scijava.java3d.NotificationThread.processNotifications(NotificationThread.java:86)
	at org.scijava.java3d.NotificationThread.run(NotificationThread.java:104)

The second PC with an AMD Radeon R9 290X when running “3D viewer” with RoiManager3D, I got messages:

Getting universes
3D [dev] 1.6.0-scijava-2-pre11-daily-experimental daily

Universes opened 0
Universe ij3d.Image3DUniverse@29ce1c4f 
nFrames = 1
com.jogamp.opengl.GLException: J3D-Renderer-1: createImpl ctx !ARB but ARB is used, profile > GL2 requested (OpenGL >= 3.1). Requested: GLProfile[GL4bc/GL4bc.hw], current: 1.1 (Compat profile, compat[], hardware) - 1.1.0
	at jogamp.opengl.windows.wgl.WindowsWGLContext.createImpl(WindowsWGLContext.java:404)
	at jogamp.opengl.GLContextImpl.makeCurrentWithinLock(GLContextImpl.java:765)
	at jogamp.opengl.GLContextImpl.makeCurrent(GLContextImpl.java:648)
	at jogamp.opengl.GLContextImpl.makeCurrent(GLContextImpl.java:586)
	at org.scijava.java3d.JoglPipeline.createNewContext(JoglPipeline.java:6412)
	at org.scijava.java3d.Canvas3D.createNewContext(Canvas3D.java:4602)
	at org.scijava.java3d.Canvas3D.createNewContext(Canvas3D.java:2376)
	at org.scijava.java3d.Renderer.doWork(Renderer.java:881)
	at org.scijava.java3d.J3dThread.run(J3dThread.java:271)
Exception occurred in RenderingErrorListener:
java.lang.RuntimeException
	at ij3d.ImageWindow3D$ErrorListener.errorOccurred(ImageWindow3D.java:330)
	at org.scijava.java3d.VirtualUniverse.notifyRenderingErrorListeners(VirtualUniverse.java:1198)
	at org.scijava.java3d.NotificationThread.processNotifications(NotificationThread.java:86)
	at org.scijava.java3d.NotificationThread.run(NotificationThread.java:104)

I think the both drivers for nvidia and amd are the latest ones and the openGL are supposed to >1.2.

Hopefully, these data could give you some ideas.

Best,
chin

Hi @chin

there is a potential solution posted here on github:

May you try this out?

Best,
Robert

Hi Robert,

Thanks for the information.

I referred the solution you mentioned and tried to use @aschain fixed fiji-win64.exe, then 3D viewer works. It’s luck the the problems is not from the hardware itself. I look forward to seeing the formal update of Fiji.

Best,
chin

1 Like