bene51 / 3dscript Goto Github PK
View Code? Open in Web Editor NEWCreate 3D/4D animations using a natural language-based syntax
Home Page: https://bene51.github.io/3Dscript
License: BSD 2-Clause "Simplified" License
Create 3D/4D animations using a natural language-based syntax
Home Page: https://bene51.github.io/3Dscript
License: BSD 2-Clause "Simplified" License
Hi,
I have just installed your great-looking package into ImageJ. I have tried to follow the Quickstart example with T1 Head data, as specified on the ImageJ website for this package:
However, when I run Interactive Animation
, I get the following exception:
(Fiji Is Just) ImageJ 2.0.0-rc-69/1.52p; Java 1.8.0_172 [64-bit]; Linux 4.15.0-66-generic; 300MB of 39417MB (<1%)
java.lang.RuntimeException: Native exception: Unable to get platform id in /home/bschmid/3D_Animation/3D_Animation_Native/Raycaster.cpp (line 73)
at animation3d.renderer3d.OpenCLRaycaster.initRaycaster16(Native Method)
at animation3d.renderer3d.OpenCLRaycaster.(OpenCLRaycaster.java:85)
at animation3d.renderer3d.Renderer3D.(Renderer3D.java:27)
at animation3d.main.InteractiveRaycaster.run(InteractiveRaycaster.java:151)
at ij.plugin.filter.PlugInFilterRunner.processOneImage(PlugInFilterRunner.java:266)
at ij.plugin.filter.PlugInFilterRunner.(PlugInFilterRunner.java:114)
at ij.IJ.runUserPlugIn(IJ.java:232)
at ij.IJ.runPlugIn(IJ.java:193)
at ij.Executer.runCommand(Executer.java:137)
at ij.Executer.run(Executer.java:66)
at java.lang.Thread.run(Thread.java:748)
The exception provides my runtime environment too.
It seems that the animation3d package has a hard-coded path in it, which obv will not exist on my machine.
Cheers,
Steve J. West
Hello,
I've noticed that if I render a timelapse using the code below (based on the zebrafish example in the gallery), I get many duplicated frames in the resulting animation. In this particular case there were ~30 duplicated frames out of 150 frames.
At frame 0:
- change timepoint to 0
From frame 0 to frame 150 change timepoint to 150
However, if I simply change the timepoint at frame 0 to 1
instead of 0
, the resulting animation has no duplicated frames (except for the first one) and works as expected.
At frame 0:
- change timepoint to 1
From frame 0 to frame 150 change timepoint to 150
Not sure if it's a bug, but maybe it is worth mentioning in the wiki or gallery? I ran into this when I tried to compare two different renderings frame-by-frame and could not because there were random duplicated frames in the animations.
Thanks!
Bruno
Hi Bene,
just tried running the Fiji plugin, resulted in a crash however:
Thread 35 Crashed:: Java: Interactive Animation
0 libsystem_kernel.dylib 0x00007fff733a7b86 __pthread_kill + 10
1 libsystem_pthread.dylib 0x00007fff7345dc50 pthread_kill + 285
2 libsystem_c.dylib 0x00007fff733111c9 abort + 127
3 libjvm.dylib 0x0000000110542a8d os::abort(bool) + 25
4 libjvm.dylib 0x000000011066acd2 VMError::report_and_die() + 2304
5 libjvm.dylib 0x00000001105446d2 JVM_handle_bsd_signal + 1131
6 libjvm.dylib 0x0000000110540917 signalHandler(int, __siginfo*, void*) + 47
7 libsystem_platform.dylib 0x00007fff73452b3d _sigtramp + 29
8 ??? 0x0000000110064c20 initialPoolContent + 57360
9 com.apple.opencl 0x00007fff4ed63413 0x7fff4ed44000 + 128019
10 com.apple.opencl 0x00007fff4ed46ffb clCreateProgramWithSource + 88
11 libOpenCLRaycaster.jnilib 0x000000013e0bba4d Raycaster<unsigned short>::setKernel(char const*) + 189
12 libOpenCLRaycaster.jnilib 0x000000013e0bb93f Raycaster<unsigned short>::init_opencl() + 511
13 libOpenCLRaycaster.jnilib 0x000000013e0bbdac Raycaster<unsigned short>::Raycaster(int, int, int, int, int, int) + 140
14 libOpenCLRaycaster.jnilib 0x000000013e0bc213 Raycaster<unsigned short>::Raycaster(int, int, int, int, int, int) + 67
15 libOpenCLRaycaster.jnilib 0x000000013e0beebb RaycasterJNI<unsigned short>::RaycasterJNI(JNIEnv_*, int, int, int, int, int, int) + 475
16 libOpenCLRaycaster.jnilib 0x000000013e0bef56 RaycasterJNI<unsigned short>::RaycasterJNI(JNIEnv_*, int, int, int, int, int, int) + 86
17 libOpenCLRaycaster.jnilib 0x000000013e0bfaf0 Java_animation3d_renderer3d_OpenCLRaycaster_initRaycaster16 + 128
18 ??? 0x0000000111081667 0 + 4580709991
19 ??? 0x00000001110712bd 0 + 4580643517
20 ??? 0x00000001110712bd 0 + 4580643517
21 ??? 0x00000001110712bd 0 + 4580643517
22 ??? 0x0000000111071302 0 + 4580643586
23 ??? 0x00000001110712bd 0 + 4580643517
24 ??? 0x00000001110712bd 0 + 4580643517
25 ??? 0x0000000111071040 0 + 4580642880
26 ??? 0x0000000111071040 0 + 4580642880
27 ??? 0x00000001110712bd 0 + 4580643517
28 ??? 0x0000000111071302 0 + 4580643586
29 ??? 0x00000001110697a7 0 + 4580612007
30 libjvm.dylib 0x00000001103a4b3a JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*) + 1710
31 libjvm.dylib 0x00000001103a52de JavaCalls::call_virtual(JavaValue*, KlassHandle, Symbol*, Symbol*, JavaCallArguments*, Thread*) + 356
32 libjvm.dylib 0x00000001103a548a JavaCalls::call_virtual(JavaValue*, Handle, KlassHandle, Symbol*, Symbol*, Thread*) + 74
33 libjvm.dylib 0x00000001103ffdb1 thread_entry(JavaThread*, Thread*) + 124
34 libjvm.dylib 0x0000000110624a2f JavaThread::thread_main_inner() + 155
35 libjvm.dylib 0x000000011062612a JavaThread::run() + 450
36 libjvm.dylib 0x00000001105432f6 java_start(Thread*) + 246
37 libsystem_pthread.dylib 0x00007fff7345b33d _pthread_body + 126
38 libsystem_pthread.dylib 0x00007fff7345e2a7 _pthread_start + 70
39 libsystem_pthread.dylib 0x00007fff7345a425 thread_start + 13
I started looking around in the repo a bit -- could it be that the OpenCL kernel is missing? I could not find the kernel.cl
file referenced by Raycaster.cpp
. If that's the case then it's probably the reason for the crash.
Hi,
I was thinking that the project would gain visibility if added to the list of update sites in the Fiji updater.
It would also make the installation more straightforward.
See https://github.com/imagej/list-of-update-sites
OS: Mac OS Mojave
Java: 1.8.0
Issue: In the contrast tab of the Interactive Raycaster, setting the alpha row to 0.0 -- 2.0 -- 0.0 by dragging the right blue vertical marker onto the left one causes the plugin to throw an exception (see below). I could replicate this with the T1 head example volume.
setBoundingBox(0.0, 0.0, 100.0, 5.0) 0.0, 0.0, 100.0, 5.0 0.0, 0.0, 100.0, 5.0 setBoundingBox(-193.0, 0.0, 193.0, 5.0) -193.0, 0.0, 193.0, 5.0 -193.0, 0.0, 193.0, 5.0 setBoundingBox(0.0, 0.0, 256.0, 5.0) 0.0, 0.0, 256.0, 5.0 0.0, 0.0, 256.0, 5.0 setBoundingBox(0.0, 0.0, 256.0, 5.0) 0.0, 0.0, 256.0, 5.0 0.0, 0.0, 256.0, 5.0 setBoundingBox(0.0, 0.0, 129.0, 5.0) 0.0, 0.0, 129.0, 5.0 0.0, 0.0, 129.0, 5.0 *** changed default scalebar length to 100.0, pwOut = 1.5000015497207642 javax.swing.JPanel[,0,0,402x736,invalid,layout=java.awt.GridBagLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] javax.swing.JPanel[,0,0,402x736,layout=java.awt.GridBagLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] javax.swing.JPanel[,0,0,402x736,layout=java.awt.GridBagLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] javax.swing.JPanel[,0,0,402x736,layout=java.awt.GridBagLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] javax.swing.JPanel[,0,0,402x736,layout=java.awt.GridBagLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] javax.swing.JPanel[,0,0,402x736,layout=java.awt.GridBagLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] javax.swing.JPanel[,0,0,402x736,layout=java.awt.GridBagLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] closing setBoundingBox(0.0, 0.0, 100.0, 5.0) 0.0, 0.0, 100.0, 5.0 0.0, 0.0, 100.0, 5.0 setBoundingBox(-193.0, 0.0, 193.0, 5.0) -193.0, 0.0, 193.0, 5.0 -193.0, 0.0, 193.0, 5.0 setBoundingBox(0.0, 0.0, 256.0, 5.0) 0.0, 0.0, 256.0, 5.0 0.0, 0.0, 256.0, 5.0 setBoundingBox(0.0, 0.0, 256.0, 5.0) 0.0, 0.0, 256.0, 5.0 0.0, 0.0, 256.0, 5.0 setBoundingBox(0.0, 0.0, 129.0, 5.0) 0.0, 0.0, 129.0, 5.0 0.0, 0.0, 129.0, 5.0 *** changed default scalebar length to 100.0, pwOut = 1.5000015497207642 javax.swing.JPanel[,0,0,402x736,invalid,layout=java.awt.GridBagLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] closing setBoundingBox(0.0, 0.0, 100.0, 5.0) 0.0, 0.0, 100.0, 5.0 0.0, 0.0, 100.0, 5.0 setBoundingBox(-193.0, 0.0, 193.0, 5.0) -193.0, 0.0, 193.0, 5.0 -193.0, 0.0, 193.0, 5.0 setBoundingBox(0.0, 0.0, 256.0, 5.0) 0.0, 0.0, 256.0, 5.0 0.0, 0.0, 256.0, 5.0 setBoundingBox(0.0, 0.0, 256.0, 5.0) 0.0, 0.0, 256.0, 5.0 0.0, 0.0, 256.0, 5.0 setBoundingBox(0.0, 0.0, 129.0, 5.0) 0.0, 0.0, 129.0, 5.0 0.0, 0.0, 129.0, 5.0 *** changed default scalebar length to 50.0, pwOut = 0.7500007748603821 javax.swing.JPanel[,0,0,402x736,layout=java.awt.GridBagLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = f(66) AutoActivationListener.actionPerformed(): calling doCompletion() refreshPopupWindow getAlreadyEnteredText Current line = f *f* alreadyEntered: f getCompletionsImpl getAlreadyEnteredText Current line = f *f* return completions: [From frame ] getAlreadyEnteredText Current line = f *f* alreadyEntered: f AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = (20) AutoActivationListener.actionPerformed(): calling doCompletion() refreshPopupWindow getAlreadyEnteredText Current line = From frame *From frame * alreadyEntered: EMPTY getCompletionsImpl getAlreadyEnteredText Current line = From frame *From frame * return completions: [0] getAlreadyEnteredText Current line = From frame *From frame * alreadyEntered: EMPTY EditorPane: insertUpdate(): lastCharacter = <(3c) AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = >(3e) EditorPane: insertUpdate(): lastCharacter = r(72) AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = r(72) AutoActivationListener.actionPerformed(): calling doCompletion() refreshPopupWindow getAlreadyEnteredText Current line = From frame r *From frame r* alreadyEntered: EMPTY getCompletionsImpl getAlreadyEnteredText Current line = From frame r *From frame r* return completions: [0] getAlreadyEnteredText Current line = From frame r *From frame r* alreadyEntered: EMPTY EditorPane: insertUpdate(): lastCharacter = <(3c) AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = >(3e) EditorPane: insertUpdate(): lastCharacter = o(6f) AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = o(6f) AutoActivationListener.actionPerformed(): calling doCompletion() refreshPopupWindow getAlreadyEnteredText Current line = From frame ro *From frame ro* alreadyEntered: EMPTY getCompletionsImpl getAlreadyEnteredText Current line = From frame ro *From frame ro* return completions: [0] getAlreadyEnteredText Current line = From frame ro *From frame ro* alreadyEntered: EMPTY EditorPane: insertUpdate(): lastCharacter = <(3c) AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = >(3e) EditorPane: insertUpdate(): lastCharacter = m(6d) AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = m(6d) AutoActivationListener.actionPerformed(): calling doCompletion() refreshPopupWindow getAlreadyEnteredText Current line = From frame rom *From frame rom* alreadyEntered: EMPTY getCompletionsImpl getAlreadyEnteredText Current line = From frame rom *From frame rom* return completions: [0] getAlreadyEnteredText Current line = From frame rom *From frame rom* alreadyEntered: EMPTY EditorPane: insertUpdate(): lastCharacter = <(3c) AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = >(3e) EditorPane: insertUpdate(): lastCharacter = 1(31) AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = 1(31) EditorPane: insertUpdate(): lastCharacter = 0(30) AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = 0(30) EditorPane: insertUpdate(): lastCharacter = (20) AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = (20) AutoActivationListener.actionPerformed(): calling doCompletion() refreshPopupWindow getAlreadyEnteredText Current line = From frame 0 *From frame 0 * alreadyEntered: getCompletionsImpl getAlreadyEnteredText Current line = From frame 0 *From frame 0 * return completions: [to frame ] getAlreadyEnteredText Current line = From frame 0 *From frame 0 * alreadyEntered: EditorPane: insertUpdate(): lastCharacter = t(74) AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = (20) AutoActivationListener.actionPerformed(): calling doCompletion() refreshPopupWindow getAlreadyEnteredText Current line = From frame 0 to frame *From frame 0 to frame * alreadyEntered: EMPTY getCompletionsImpl getAlreadyEnteredText Current line = From frame 0 to frame *From frame 0 to frame * return completions: [0] getAlreadyEnteredText Current line = From frame 0 to frame *From frame 0 to frame * alreadyEntered: EMPTY EditorPane: insertUpdate(): lastCharacter = <(3c) AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = >(3e) EditorPane: insertUpdate(): lastCharacter = 2(32) AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = 2(32) EditorPane: insertUpdate(): lastCharacter = 0(30) AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = 0(30) EditorPane: insertUpdate(): lastCharacter = 0(30) AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = 0(30) EditorPane: insertUpdate(): lastCharacter = (20) AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = (20) AutoActivationListener.actionPerformed(): calling doCompletion() refreshPopupWindow getAlreadyEnteredText Current line = From frame 0 to frame 200 *From frame 0 to frame 200 * ** alreadyEntered: getCompletionsImpl getAlreadyEnteredText Current line = From frame 0 to frame 200 *From frame 0 to frame 200 * ** return completions: [rotate by , translate , zoom by a factor of , reset transformation , change ] getAlreadyEnteredText Current line = From frame 0 to frame 200 *From frame 0 to frame 200 * ** alreadyEntered: EditorPane: insertUpdate(): lastCharacter = r(72) AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = (20) AutoActivationListener.actionPerformed(): calling doCompletion() refreshPopupWindow getAlreadyEnteredText Current line = From frame 0 to frame 200 rotate by *From frame 0 to frame 200 rotate by * *rotate by * alreadyEntered: EMPTY getCompletionsImpl getAlreadyEnteredText Current line = From frame 0 to frame 200 rotate by *From frame 0 to frame 200 rotate by * *rotate by * return completions: [0] getAlreadyEnteredText Current line = From frame 0 to frame 200 rotate by *From frame 0 to frame 200 rotate by * *rotate by * alreadyEntered: EMPTY EditorPane: insertUpdate(): lastCharacter = <(3c) AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = >(3e) EditorPane: insertUpdate(): lastCharacter = 3(33) AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = 3(33) EditorPane: insertUpdate(): lastCharacter = 6(36) AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = 6(36) EditorPane: insertUpdate(): lastCharacter = 0(30) AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = 0(30) EditorPane: insertUpdate(): lastCharacter = (20) AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = (20) AutoActivationListener.actionPerformed(): calling doCompletion() refreshPopupWindow getAlreadyEnteredText Current line = From frame 0 to frame 200 rotate by 360 *From frame 0 to frame 200 rotate by 360 * *rotate by 360 * alreadyEntered: getCompletionsImpl getAlreadyEnteredText Current line = From frame 0 to frame 200 rotate by 360 *From frame 0 to frame 200 rotate by 360 * *rotate by 360 * return completions: [degrees ] getAlreadyEnteredText Current line = From frame 0 to frame 200 rotate by 360 *From frame 0 to frame 200 rotate by 360 * *rotate by 360 * alreadyEntered: EditorPane: insertUpdate(): lastCharacter = d(64) AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = (20) AutoActivationListener.actionPerformed(): calling doCompletion() refreshPopupWindow getAlreadyEnteredText Current line = From frame 0 to frame 200 rotate by 360 degrees *From frame 0 to frame 200 rotate by 360 degrees * *rotate by 360 degrees * ** alreadyEntered: getCompletionsImpl getAlreadyEnteredText Current line = From frame 0 to frame 200 rotate by 360 degrees *From frame 0 to frame 200 rotate by 360 degrees * *rotate by 360 degrees * ** return completions: [horizontally , vertically , around ] getAlreadyEnteredText Current line = From frame 0 to frame 200 rotate by 360 degrees *From frame 0 to frame 200 rotate by 360 degrees * *rotate by 360 degrees * ** alreadyEntered: EditorPane: insertUpdate(): lastCharacter = h(68) AutoActivationListener.insertUpdate AutoActivationListener.insertUpdate(): timer restarted AutoActivationListener.actionPerformed() AutoActivationListener.actionPerformed(): last character = (20) AutoActivationListener.actionPerformed(): calling doCompletion() refreshPopupWindow getAlreadyEnteredText Current line = From frame 0 to frame 200 rotate by 360 degrees horizontally *From frame 0 to frame 200 rotate by 360 degrees horizontally * *rotate by 360 degrees horizontally * *horizontally * ** alreadyEntered: getCompletionsImpl getAlreadyEnteredText Current line = From frame 0 to frame 200 rotate by 360 degrees horizontally *From frame 0 to frame 200 rotate by 360 degrees horizontally * *rotate by 360 degrees horizontally * *horizontally * ** return completions: [(none) , linear , ease-in-out , ease-in , ease-out , ease ] refreshPopupWindow getAlreadyEnteredText Current line = From frame 0 to frame 200 rotate by 360 degrees horizontally *From frame 0 to frame 200 rotate by 360 degrees horizontally * *rotate by 360 degrees horizontally * *horizontally * ** alreadyEntered: *From frame 0 to frame 200 rotate by 360 degrees horizontally* *rotate by 360 degrees horizontally* *horizontally* ** setBoundingBox(0.0, 0.0, 100.0, 5.0) 0.0, 0.0, 100.0, 5.0 0.0, 0.0, 100.0, 5.0 javax.swing.JPanel[,0,0,402x736,invalid,layout=java.awt.GridBagLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] javax.swing.JPanel[,0,0,402x736,layout=java.awt.GridBagLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] javax.swing.JPanel[,0,0,402x736,layout=java.awt.GridBagLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] javax.swing.JPanel[,0,0,402x736,invalid,layout=java.awt.GridBagLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] javax.swing.JPanel[,0,0,402x736,layout=java.awt.GridBagLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] javax.swing.JPanel[,0,0,402x736,layout=java.awt.GridBagLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] javax.swing.JPanel[,0,0,402x736,layout=java.awt.GridBagLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] javax.swing.JPanel[,0,0,402x736,layout=java.awt.GridBagLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] Exception in thread "AWT-EventQueue-0" java.lang.ArithmeticException: / by zero at animation3d.gui.ContrastPanel$DoubleSliderCanvas.paintBuffer(ContrastPanel.java:723) at animation3d.gui.DoubleBuffer.paintComponent(DoubleBuffer.java:34) at javax.swing.JComponent.paint(JComponent.java:1056) at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210) at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579) at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502) at javax.swing.RepaintManager.paint(RepaintManager.java:1272) at javax.swing.JComponent._paintImmediately(JComponent.java:5158) at javax.swing.JComponent.paintImmediately(JComponent.java:4969) at javax.swing.RepaintManager$4.run(RepaintManager.java:831) at javax.swing.RepaintManager$4.run(RepaintManager.java:814) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814) at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789) at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738) at javax.swing.RepaintManager.access$1200(RepaintManager.java:64) at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) 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:74) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) 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) Exception in thread "AWT-EventQueue-0" java.lang.ArithmeticException: / by zero at animation3d.gui.ContrastPanel$DoubleSliderCanvas.paintBuffer(ContrastPanel.java:723) at animation3d.gui.DoubleBuffer.paintComponent(DoubleBuffer.java:34) at javax.swing.JComponent.paint(JComponent.java:1056) at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210) at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579) at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502) at javax.swing.RepaintManager.paint(RepaintManager.java:1272) at javax.swing.JComponent._paintImmediately(JComponent.java:5158) at javax.swing.JComponent.paintImmediately(JComponent.java:4969) at javax.swing.RepaintManager$4.run(RepaintManager.java:831) at javax.swing.RepaintManager$4.run(RepaintManager.java:814) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814) at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789) at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738) at javax.swing.RepaintManager.access$1200(RepaintManager.java:64) at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) 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:74) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) 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)
After using 3Dscript successfully about a month ago, it now crashes, either as soon as I enable light, or just upon changing the channel. The plugin freezez and has to be restarted.
Exception in thread "3D-Animation rendering thread" java.lang.RuntimeException: OpenCL error 4294967245: CL_INVALID_ARG_SIZE in H:\fijiplugins\3D_Animation\3D_Animation_Native\Raycaster.cpp (line 436) at animation3d.renderer3d.OpenCLRaycaster.cast(Native Method) at animation3d.renderer3d.OpenCLRaycaster.project(OpenCLRaycaster.java:240) at animation3d.renderer3d.Renderer3D.render(Renderer3D.java:133) at animation3d.gui.RenderingThread.render(RenderingThread.java:115) at animation3d.gui.RenderingThread.loop(RenderingThread.java:65) at animation3d.gui.RenderingThread$1.run(RenderingThread.java:49)
I installed 3Dscript on a fresh Fiji from the romulus.oice... update site.
System information:
Win 10 Enterprise (64bit).
Intel Xeon CPU E5-1630 v4 3.70GHz
128GB RAM
Radeon RX 580, 8GB dedicated memory
And while I'm here; thanks for creating and sharing this plugin, it's amazing.
I try to open a file that I know can be opened in 3DViewer on another computer (much weaker than the one I am currently working on) and it's not working... First I was getting an error about an outdated graphics card error but that got fixed. We have a NVIDIA Quadro K2200 graphics card. The error I get is attached as a picture. Does someone know why this happens? I have obviously updated Fiji.
I'd like to make an animation that will be shown looped.
After cropping, rotating and zooming in to different parts of the sample I'd like to just -reset transformation
in a last step of the animation to go back to the starting state.
I couldn't find a way of doing this smootly, e.g. just do
From frame X to frame Y:
- reset transformation
- change channel 1 bounding box x to (0.0, 2202.0)
- change channel 1 bounding box y to (0.0, 1468.0)
- change channel 1 bounding box z to (0.0, 1054.0)
and have the animation smoothly go back to the starting state.
How can I achieve this?
OS: MacOS Mojave
Java: 1.8.0
Issue:
When using the animation script editor, typing the initial letter to select a word from the popup lists causes the word to be immediately inserted twice at some occations, i.e. when typing c for channel after to frame NNN. The line will then look like this:
from frame 0 to frame 400 change channel channel ...
It would be nice if BookmarkPanel.java had methods that could be invoked programmatically from third party plugins for the functions exposed in the GUI as loadBookmarks() and saveBookmarks().
Basically loadBookmarks(String bookmarkPath) and saveBookmarks(String bookmarkPath)
Jerome.
OS: MacOS and Windows 7/10
When cutting off the ROI of a dataset with more than 1 colour not all the channels get cropped, even if the option is ticked (usually it fails to crop the 1st channel).
Also, when trying to cutoff single channels, if channel1 is selected, channel 2 will be cut, if channel 2 is selected then channel 3 is cut. For channel 3 it cuts channel 3
I would like to generate a movie which involves some zooming in and out of the dataset.
My goal would be that the sample is shown exactly the same way at the beginning of the animation and at the end of the animation, to facilitate showing the movie in a looped way.
I thought that I can achieve this with the script below [1], e.g. zoom in a bit and zoom out again.
From frame 0 to frame 1:
- zoom by a factor of 1.5
From frame 2 to frame 3:
- zoom by a factor of 0.75
But this doesn't give me the desired result, e.g. frame 0 and frame 3 don't show the sample at the same zoom level.
How can I achieve to show the sample in exactly the same state at the start and end of the movie?
[1]: My 'real' script involves much more, but this is boiled down to the bare essentials :)
the project does not have a pom....
can I still somehow use it in own java projects?
I need more video memory to render large datasets, we typically use an RTX2080Ti, but we have two of these, if I combine them can 3Dscript utilize memory from both, or will it be limited to the memory of one (11GB)?
As I understood it, right now, alpha can only be set in the form of a curve that is 0% (no transparency) at some minimal voxel intensitiesand 100% (max. transparency) at some maximum voxel intensities. Additionally, the curve can be made non linear by defining a gamma value.
There seems to be no way to - for example - invert this curve (i.e. make dark stuff transparent and bright stuff opaque) or set it to some fixed value for all voxel intensities. Also, one cannot define a starting and stop value for the transparency.
It would be very nice to have some more flexibility when it comes to alpha LUTs.
As a starting point, an optional definition of alpha_start and alpha_end would be a big help already.
As a second step, a way of defining several nodes for the alpha value with defined interpolation would be great, for example like this:
At frame 0 change all channels' alpha at intensity 500 to 10%
At frame 0 change all channels' alpha at intensity 600 to 20%
At frame 0 change all channels' alpha at intensity 800 to 40%
At frame 0 change all channels' alpha interpolation to linear (cubic, gamma-like, etc.)
The crème de la crème would be a way of additionally defining different colors not only for different channels but for different intensity ranges. That way one could, together with the more flexible alpha mapping, define tissue ranges in 1-channel-only-images and make them look different (i.e. intensities A to B = soft tissue = reddish color, intensities C to D = bone = whitish color, etc.)
Hi Bene,
3Dscript stopped working in one of our Linux workstations. We didn't make any changes to the system except for Fiji updates. CLIJ still works fine with the GPU, so it seems specific to 3Dscript. Maybe it's related to the latest March updates?
The plugin fails with the following error:
(Fiji Is Just) ImageJ 2.9.0/1.53t; Java 1.8.0_322 [64-bit]; Linux 3.10.0-1062.4.3.el7.x86_64; 643MB of 93994MB (<1%)
java.lang.RuntimeException: OpenCL error 4294967245: CL_INVALID_ARG_SIZE in /3Dscript/3D_Animation_Native/Raycaster.cpp (line 624)
at animation3d.renderer3d.OpenCLRaycaster.cast(Native Method)
at animation3d.renderer3d.OpenCLRaycaster.project(OpenCLRaycaster.java:317)
at animation3d.renderer3d.Renderer3D.render(Renderer3D.java:151)
at animation3d.gui.RenderingThread.<init>(RenderingThread.java:38)
at animation3d.main.InteractiveRaycaster.run(InteractiveRaycaster.java:174)
at ij.plugin.filter.PlugInFilterRunner.processOneImage(PlugInFilterRunner.java:266)
at ij.plugin.filter.PlugInFilterRunner.<init>(PlugInFilterRunner.java:114)
at ij.IJ.runUserPlugIn(IJ.java:239)
at ij.IJ.runPlugIn(IJ.java:203)
at ij.Executer.runCommand(Executer.java:152)
at ij.Executer.run(Executer.java:70)
at java.lang.Thread.run(Thread.java:750)
And this is the GPU information identified by CLIJ:
Available CL backends:
* net.haesleinhuepf.clij.clearcl.backend.jocl.ClearCLBackendJOCL@381eec20
Functional backend:net.haesleinhuepf.clij.clearcl.backend.jocl.ClearCLBackendJOCL@26b54469
Best backend:net.haesleinhuepf.clij.clearcl.backend.jocl.ClearCLBackendJOCL@32e159e0
Used CL backend: net.haesleinhuepf.clij.clearcl.backend.jocl.ClearCLBackendJOCL@662ed2bf
ClearCL: ClearCLBase [mClearCLBackendInterface=net.haesleinhuepf.clij.clearcl.backend.jocl.ClearCLBackendJOCL@662ed2bf, mPeerPointer=null]
Number of platforms:1
[0] NVIDIA CUDA
Number of devices: 1
Available devices:
[0] GeForce GTX TITAN X
NumberOfComputeUnits: 24
Clock frequency: 1076
Version: 1.2
Extensions: cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_fp64 cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll cl_nv_copy_opts cl_khr_gl_event cl_nv_create_buffer cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_device_uuid
GlobalMemorySizeInBytes: 12805668864
LocalMemorySizeInBytes: 49152
MaxMemoryAllocationSizeInBytes: 3201417216
MaxWorkGroupSize: 1024
Compatible image types: [SignedNormalizedInt8, SignedNormalizedInt16, UnsignedNormalizedInt8, UnsignedNormalizedInt16, SignedInt8, SignedInt16, SignedInt32, UnsignedInt8, UnsignedInt16, UnsignedInt32, HalfFloat, Float]
Best GPU device for images: GeForce GTX TITAN X
Best largest GPU device: GeForce GTX TITAN X
Best CPU device: GeForce GTX TITAN X
Any hints of what could be the issue?
Thanks!
Bruno
When trying to open a dataset in 3Dscript, I get the following error in the log:
java.lang.RuntimeException: Native exception: Unable to get platform id in H:\fijiplugins\3D_Animation\3D_Animation_Native\Raycaster.cpp (line 73) at animation3d.renderer3d.OpenCLRaycaster.initRaycaster8(Native Method) at animation3d.renderer3d.OpenCLRaycaster.<init>(OpenCLRaycaster.java:83) at animation3d.renderer3d.Renderer3D.<init>(Renderer3D.java:27) at animation3d.main.InteractiveRaycaster.run(InteractiveRaycaster.java:130) at ij.plugin.filter.PlugInFilterRunner.processOneImage(PlugInFilterRunner.java:266) at ij.plugin.filter.PlugInFilterRunner.<init>(PlugInFilterRunner.java:114) at ij.IJ.runUserPlugIn(IJ.java:230) at ij.IJ.runPlugIn(IJ.java:192) at ij.Executer.runCommand(Executer.java:137) at ij.Executer.run(Executer.java:66) at java.lang.Thread.run(Thread.java:745)
I have a Nvidia Titan RTX, running on windows. Is it just that this GPU is not supported or is there something else I could try to make it work?
OS: Windows 7
Java: 1.8.0
When starting a new render process, some variables from the Interactive Raycaster GUI seem to be used during the rending (i.e. the cropping), but some like the initial rotation do not seem to be used. If this is intentional, there should be some sort of indicator which variables have to be manually set for the animation (e.g. via At frame 0 rotateby 90 degrees
) and which are taken from the GUI settings.
Hello 3Dscript team,
I have trouble starting 3DScript on our Windows machine with NVIDIA Quadro RTX 500.
When I start with a 3D stacj, it gives the following error:
`
(Fiji Is Just) ImageJ 2.1.0/1.53c; Java 1.8.0_172 [64-bit]; Windows Server 2016 10.0; 3603MB of 174537MB (2%)
java.lang.RuntimeException: Native exception: Error building OpenCL kernel. Please start from the command line to see detailed error messages in H:\fijiplugins\3D_Animation\Release_2020-07-20\3Dscript\3D_Animation_Native\Raycaster.cpp (line 528)
at animation3d.renderer3d.OpenCLRaycaster.setKernel(Native Method)
at animation3d.renderer3d.OpenCLRaycaster.(OpenCLRaycaster.java:106)
at animation3d.renderer3d.Renderer3D.(Renderer3D.java:28)
at animation3d.renderer3d.Renderer3D.(Renderer3D.java:24)
at animation3d.main.InteractiveRaycaster.run(InteractiveRaycaster.java:151)
at ij.plugin.filter.PlugInFilterRunner.processOneImage(PlugInFilterRunner.java:265)
at ij.plugin.filter.PlugInFilterRunner.(PlugInFilterRunner.java:114)
at ij.IJ.runUserPlugIn(IJ.java:237)
`
Here is the dump of oclDeviceQuery.exe utility. Any ideas what can be wrong?
oclDeviceQuery.exe Starting...
OpenCL SW Info:
CL_PLATFORM_NAME: NVIDIA CUDA
CL_PLATFORM_VERSION: OpenCL 1.2 CUDA 11.1.70
OpenCL SDK Revision: 7027912OpenCL Device Info:
1 devices found supporting OpenCL:
Device Quadro RTX 5000
CL_DEVICE_NAME: Quadro RTX 5000
CL_DEVICE_VENDOR: NVIDIA Corporation
CL_DRIVER_VERSION: 456.43
CL_DEVICE_VERSION: OpenCL 1.2 CUDA
CL_DEVICE_OPENCL_C_VERSION: OpenCL C 1.2
CL_DEVICE_TYPE: CL_DEVICE_TYPE_GPU
CL_DEVICE_MAX_COMPUTE_UNITS: 48
CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS: 3
CL_DEVICE_MAX_WORK_ITEM_SIZES: 1024 / 1024 / 64
CL_DEVICE_MAX_WORK_GROUP_SIZE: 1024
CL_DEVICE_MAX_CLOCK_FREQUENCY: 1815 MHz
CL_DEVICE_ADDRESS_BITS: 64
CL_DEVICE_MAX_MEM_ALLOC_SIZE: 4096 MByte
CL_DEVICE_GLOBAL_MEM_SIZE: 16384 MByte
CL_DEVICE_ERROR_CORRECTION_SUPPORT: no
CL_DEVICE_LOCAL_MEM_TYPE: local
CL_DEVICE_LOCAL_MEM_SIZE: 48 KByte
CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE: 64 KByte
CL_DEVICE_QUEUE_PROPERTIES: CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE
CL_DEVICE_QUEUE_PROPERTIES: CL_QUEUE_PROFILING_ENABLE
CL_DEVICE_IMAGE_SUPPORT: 1
CL_DEVICE_MAX_READ_IMAGE_ARGS: 256
CL_DEVICE_MAX_WRITE_IMAGE_ARGS: 32
CL_DEVICE_SINGLE_FP_CONFIG: denorms INF-quietNaNs round-to-nearest round-to-zero round-to-inf fmaCL_DEVICE_IMAGE 2D_MAX_WIDTH 32768
2D_MAX_HEIGHT 32768
3D_MAX_WIDTH 16384
3D_MAX_HEIGHT 16384
3D_MAX_DEPTH 16384CL_DEVICE_EXTENSIONS: cl_khr_global_int32_base_atomics
cl_khr_global_int32_extended_atomics
cl_khr_local_int32_base_atomics
cl_khr_local_int32_extended_atomics
cl_khr_fp64
cl_khr_byte_addressable_store
cl_khr_icd
cl_khr_gl_sharing
cl_nv_compiler_options
cl_nv_device_attribute_query
cl_nv_pragma_unroll
cl_nv_d3d10_sharing
cl_khr_d3d10_sharing
cl_nv_d3d11_sharing
cl_nv_copy_opts
cl_khr_gl_event
cl_nv_create_buffer
cl_khr_int64_base_atomics
cl_khr_int64_extended_atomics
cl_kernel_attribute_nvCL_DEVICE_COMPUTE_CAPABILITY_NV: 7.5
NUMBER OF MULTIPROCESSORS: 48
MapSMtoCores SM 7.5 is undefined (please update to the latest SDK)!
NUMBER OF CUDA CORES: 4294967248
CL_DEVICE_REGISTERS_PER_BLOCK_NV: 65536
CL_DEVICE_WARP_SIZE_NV: 32
CL_DEVICE_GPU_OVERLAP_NV: CL_TRUE
CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV: CL_TRUE
CL_DEVICE_INTEGRATED_MEMORY_NV: CL_FALSE
CL_DEVICE_PREFERRED_VECTOR_WIDTH_ CHAR 1, SHORT 1, INT 1, LONG 1, FLOAT 1, DOUBLE 1
2D Image Formats Supported (75)
Channel Order Channel Type
1 CL_R CL_FLOAT
2 CL_R CL_HALF_FLOAT
3 CL_R CL_UNORM_INT8
4 CL_R CL_UNORM_INT16
5 CL_R CL_SNORM_INT16
6 CL_R CL_SIGNED_INT8
7 CL_R CL_SIGNED_INT16
8 CL_R CL_SIGNED_INT32
9 CL_R CL_UNSIGNED_INT8
10 CL_R CL_UNSIGNED_INT16
11 CL_R CL_UNSIGNED_INT32
12 CL_A CL_FLOAT
13 CL_A CL_HALF_FLOAT
14 CL_A CL_UNORM_INT8
15 CL_A CL_UNORM_INT16
16 CL_A CL_SNORM_INT16
17 CL_A CL_SIGNED_INT8
18 CL_A CL_SIGNED_INT16
19 CL_A CL_SIGNED_INT32
20 CL_A CL_UNSIGNED_INT8
21 CL_A CL_UNSIGNED_INT16
22 CL_A CL_UNSIGNED_INT32
23 CL_RG CL_FLOAT
24 CL_RG CL_HALF_FLOAT
25 CL_RG CL_UNORM_INT8
26 CL_RG CL_UNORM_INT16
27 CL_RG CL_SNORM_INT16
28 CL_RG CL_SIGNED_INT8
29 CL_RG CL_SIGNED_INT16
30 CL_RG CL_SIGNED_INT32
31 CL_RG CL_UNSIGNED_INT8
32 CL_RG CL_UNSIGNED_INT16
33 CL_RG CL_UNSIGNED_INT32
34 CL_RA CL_FLOAT
35 CL_RA CL_HALF_FLOAT
36 CL_RA CL_UNORM_INT8
37 CL_RA CL_UNORM_INT16
38 CL_RA CL_SNORM_INT16
39 CL_RA CL_SIGNED_INT8
40 CL_RA CL_SIGNED_INT16
41 CL_RA CL_SIGNED_INT32
42 CL_RA CL_UNSIGNED_INT8
43 CL_RA CL_UNSIGNED_INT16
44 CL_RA CL_UNSIGNED_INT32
45 CL_RGBA CL_FLOAT
46 CL_RGBA CL_HALF_FLOAT
47 CL_RGBA CL_UNORM_INT8
48 CL_RGBA CL_UNORM_INT16
49 CL_RGBA CL_SNORM_INT16
50 CL_RGBA CL_SIGNED_INT8
51 CL_RGBA CL_SIGNED_INT16
52 CL_RGBA CL_SIGNED_INT32
53 CL_RGBA CL_UNSIGNED_INT8
54 CL_RGBA CL_UNSIGNED_INT16
55 CL_RGBA CL_UNSIGNED_INT32
56 CL_BGRA CL_UNORM_INT8
57 CL_BGRA CL_SIGNED_INT8
58 CL_BGRA CL_UNSIGNED_INT8
59 CL_ARGB CL_UNORM_INT8
60 CL_ARGB CL_SIGNED_INT8
61 CL_ARGB CL_UNSIGNED_INT8
62 CL_INTENSITY CL_FLOAT
63 CL_INTENSITY CL_HALF_FLOAT
64 CL_INTENSITY CL_UNORM_INT8
65 CL_INTENSITY CL_UNORM_INT16
66 CL_INTENSITY CL_SNORM_INT16
67 CL_LUMINANCE CL_FLOAT
68 CL_LUMINANCE CL_HALF_FLOAT
69 CL_LUMINANCE CL_UNORM_INT8
70 CL_LUMINANCE CL_UNORM_INT16
71 CL_LUMINANCE CL_SNORM_INT16
72 CL_BGRA CL_SNORM_INT8
73 CL_BGRA CL_SNORM_INT16
74 CL_ARGB CL_SNORM_INT8
75 CL_ARGB CL_SNORM_INT16
3D Image Formats Supported (75)
Channel Order Channel Type
1 CL_R CL_FLOAT
2 CL_R CL_HALF_FLOAT
3 CL_R CL_UNORM_INT8
4 CL_R CL_UNORM_INT16
5 CL_R CL_SNORM_INT16
6 CL_R CL_SIGNED_INT8
7 CL_R CL_SIGNED_INT16
8 CL_R CL_SIGNED_INT32
9 CL_R CL_UNSIGNED_INT8
10 CL_R CL_UNSIGNED_INT16
11 CL_R CL_UNSIGNED_INT32
12 CL_A CL_FLOAT
13 CL_A CL_HALF_FLOAT
14 CL_A CL_UNORM_INT8
15 CL_A CL_UNORM_INT16
16 CL_A CL_SNORM_INT16
17 CL_A CL_SIGNED_INT8
18 CL_A CL_SIGNED_INT16
19 CL_A CL_SIGNED_INT32
20 CL_A CL_UNSIGNED_INT8
21 CL_A CL_UNSIGNED_INT16
22 CL_A CL_UNSIGNED_INT32
23 CL_RG CL_FLOAT
24 CL_RG CL_HALF_FLOAT
25 CL_RG CL_UNORM_INT8
26 CL_RG CL_UNORM_INT16
27 CL_RG CL_SNORM_INT16
28 CL_RG CL_SIGNED_INT8
29 CL_RG CL_SIGNED_INT16
30 CL_RG CL_SIGNED_INT32
31 CL_RG CL_UNSIGNED_INT8
32 CL_RG CL_UNSIGNED_INT16
33 CL_RG CL_UNSIGNED_INT32
34 CL_RA CL_FLOAT
35 CL_RA CL_HALF_FLOAT
36 CL_RA CL_UNORM_INT8
37 CL_RA CL_UNORM_INT16
38 CL_RA CL_SNORM_INT16
39 CL_RA CL_SIGNED_INT8
40 CL_RA CL_SIGNED_INT16
41 CL_RA CL_SIGNED_INT32
42 CL_RA CL_UNSIGNED_INT8
43 CL_RA CL_UNSIGNED_INT16
44 CL_RA CL_UNSIGNED_INT32
45 CL_RGBA CL_FLOAT
46 CL_RGBA CL_HALF_FLOAT
47 CL_RGBA CL_UNORM_INT8
48 CL_RGBA CL_UNORM_INT16
49 CL_RGBA CL_SNORM_INT16
50 CL_RGBA CL_SIGNED_INT8
51 CL_RGBA CL_SIGNED_INT16
52 CL_RGBA CL_SIGNED_INT32
53 CL_RGBA CL_UNSIGNED_INT8
54 CL_RGBA CL_UNSIGNED_INT16
55 CL_RGBA CL_UNSIGNED_INT32
56 CL_BGRA CL_UNORM_INT8
57 CL_BGRA CL_SIGNED_INT8
58 CL_BGRA CL_UNSIGNED_INT8
59 CL_ARGB CL_UNORM_INT8
60 CL_ARGB CL_SIGNED_INT8
61 CL_ARGB CL_UNSIGNED_INT8
62 CL_INTENSITY CL_FLOAT
63 CL_INTENSITY CL_HALF_FLOAT
64 CL_INTENSITY CL_UNORM_INT8
65 CL_INTENSITY CL_UNORM_INT16
66 CL_INTENSITY CL_SNORM_INT16
67 CL_LUMINANCE CL_FLOAT
68 CL_LUMINANCE CL_HALF_FLOAT
69 CL_LUMINANCE CL_UNORM_INT8
70 CL_LUMINANCE CL_UNORM_INT16
71 CL_LUMINANCE CL_SNORM_INT16
72 CL_BGRA CL_SNORM_INT8
73 CL_BGRA CL_SNORM_INT16
74 CL_ARGB CL_SNORM_INT8
75 CL_ARGB CL_SNORM_INT16oclDeviceQuery, Platform Name = NVIDIA CUDA, Platform Version = OpenCL 1.2 CUDA 11.1.70, SDK Revision = 7027912, NumDevs = 1, Device = Quadro RTX 5000
System Info:
Local Time/Date = 14:17:43, 11/9/2020
CPU Arch: 9
CPU Level: 6of CPU processors: 40
Windows Build: 9200
Windows Ver: 6.2 (Windows Vista / Windows 7)[oclDeviceQuery.exe] test results...
PASSED
Thanks in advance for your help,
Eugene
Hello Bene, is there a way to change the timepoint of the 3D Animation window in the interactive mode?
I often want to check how the contrast and transformations look in earlier or later timepoints, but the only way I managed to do so is to render an animation with the text-based editor using the change timepoint
command. Once the rendering is finished that timepoint will be set on the main 3D Animation window, and I can check the parameters.
However, this feels a bit awkward, perhaps there is an easier way? The most intuitive would be a timepoint setting in the Interactive Raycaster gui to quickly set it.
Cheers!
Bruno
I changed the background color of Fiji as the manual said through Image/Color/Color Picker. However, the background color of 3DScript didn't change at all. My Fiji is updated with version 1.53c. Does anyone know what's wrong? Thanks a lot!
OS: MacOS Mojave
Java: 1.8.0.
Issue: Changing the lower border of the alpha slider in the contrast tab causes instant update of the render preview window, but changing the upper border does bot. For a change of the upper border to be displayed, the render window first has to be focused (i.e. clicked on).
The 3Dscript installation on Fiji went on smoothly and I could open a 3D dataset easily with it. However, when I tried to open the same dataset with ClearVolume (which was there in my Fiji plugin even before 3Dscript was added), it crashed.
ClearVolume threw an error of authentication
Device name: ClearCLDevice [mClearCLPlatform=ClearCLPlatform [name=NVIDIA CUDA], name=GeForce GTX 1070 Ti]
javax.mail.AuthenticationFailedException: 534-5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbsw ..... (cutting the log short)
I shall try to re-install both plugins again. Hoping both of them can work together on the same machine.
(I'm using windows 10 PC and using the plugins with Fiji.)
Hello,
is 3Dscript available on the SciJava Maven repository? https://maven.scijava.org/
If I search there for "animation3d", I am unable to find any libraries. Publishing your libraries to the Maven repository would allow other software tools to utilize 3Dscript functions.
Thank you!
PS: If you need any help with the upload to the SciJava Maven, feel free to ask me.
Hello,
I am running your script in an Ubuntu (20.04) machine with a "NVIDIA Corporation GP104GL [Quadro P4000]" graphic card. I also have the latest version of the graphic card driver installed. However I keep getting this error:
(Fiji Is Just) ImageJ 2.1.0/1.53c; Java 1.8.0_172 [64-bit]; Linux 5.15.0-46-generic; 33453MB of 381590MB (8%)
java.lang.RuntimeException: Native exception: Cannot find any OpenCL capable GPU. Does your graphics card support OpenCL? You might want to try installing the newest drivers. in /3Dscript/3D_Animation_Native/Raycaster.cpp (line 81)
at animation3d.renderer3d.OpenCLRaycaster.initRaycaster16(Native Method)
at animation3d.renderer3d.OpenCLRaycaster.<init>(OpenCLRaycaster.java:101)
at animation3d.renderer3d.Renderer3D.<init>(Renderer3D.java:28)
at animation3d.renderer3d.Renderer3D.<init>(Renderer3D.java:24)
at animation3d.main.InteractiveRaycaster.run(InteractiveRaycaster.java:158)
at ij.plugin.filter.PlugInFilterRunner.processOneImage(PlugInFilterRunner.java:265)
at ij.plugin.filter.PlugInFilterRunner.<init>(PlugInFilterRunner.java:114)
at ij.IJ.runUserPlugIn(IJ.java:237)
at ij.IJ.runPlugIn(IJ.java:198)
at ij.Executer.runCommand(Executer.java:150)
at ij.Executer.run(Executer.java:68)
at java.lang.Thread.run(Thread.java:748)
I also installed nvidia-opencl-dev
, but that did not help. Any suggestion on how I can solve this issue?
Thank your for your time.
Is it possible to use 3DScript with BigDataViewer files?
Thanks,
Adam
currently, the viewer window has the same aspect ratio as the input stack. It would be nice to allow arbitrary width and height.
Jerome.
Is the viewer here different/better/faster than the old one that is shipped with Fiji as "3D Viewer".
Specifically, running below code was sometimes slow (several seconds) for me:
final long start = System.currentTimeMillis();
final Image3DUniverse univ = new Image3DUniverse();
univ.show();
final Content content = univ.addMesh( objectMask, new Color3f( 1.0f, 1.0f, 1.0f ), "object at level " + ll, 250, new boolean[]{ true, true, true }, 1 );
Utils.log( "Computed mesh and created 3D display in " + (System.currentTimeMillis() - start) + " ms" );
I thus wonder whether the code in this repo might be faster?
3Dscript was nominated to be featured on the https://fiji.sc front page. But for that, it needs a page on the https://imagej.net wiki.
See discussion at:
https://forum.image.sc/t/which-fiji-plugins-should-be-featured-on-the-front-page/25168/14
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.