scenerygraphics / sciview Goto Github PK
View Code? Open in Web Editor NEWsciview is a tool for visualization and interaction with ND image and mesh data
License: BSD 2-Clause "Simplified" License
sciview is a tool for visualization and interaction with ND image and mesh data
License: BSD 2-Clause "Simplified" License
To alert about changes on the update site
Hi,
running update Fiji today I spotted that SciView update site was attempting to downgrade some imglib2 stuff... only caught my attention because I would expect imglib2/coreFiji update site to update the imglib2 stuff. See attached screen shot:
Isn't there an issue that SciView is coping more by mistake?
Vlado
PS: Thanks for SciView!
@skalarproduktraum, select does shoot spheres when debugRaycast is indicated, but it doesnt hit objects that are already in the scene. It does return the debug spheres along the ray, just not preexisting objects.
No matter how you create a view with a mesh (add your own programmatically, run SciView>Add Box...), trying to export an STL file causes a NullPointerException at https://github.com/scenerygraphics/SciView/blob/master/src/main/java/sc/iview/io/ExportSTL.java#L30 because there are no viewers in DefaultSciViewService.
Steps to reproduce
Environment
Add the ability to enclose objects with bounding boxes that have tick marks indicating units.
Would it be worth it to make a SciView Object/Element/Node type? It would inherit from a Scenery Node, but be able to generate its own IJ2 dialogs for creation/adding, editing, and deleting based on its state and the state of the scenegraph. It could also be used for default implementations of SciJava Event handling, and other SciJava and ImageJ integration.
The scene can currently be animated via rotation. However, the screenshot mechanism leaves much to be desired for creating a proper movie that captures every frame.
We are going to need to be able to render ellipsoid shapes
The ability to convert between meshes and ROIs
Scale bar for indicating the unit length (let's do this better than the old 3D viewer)
This was needed somewhere (if it actually gives the desired results):
https://imagej.nih.gov/ij/developer/api/ij/IJ.html#getClassLoader--
We need a tool for easily measuring distances in 3D
What about treating the iteration of the GoL demo as an animation?
Use the scijava-common IOPlugin for MeshIO
https://github.com/scijava/scijava-common/blob/master/src/main/java/org/scijava/io/IOPlugin.java
Save the history of interactions with ThreeDViewer
Orthogonal views was another way of viewing an image in 3D. This might be easily achieved via textures and Scenery's Plane Node.
The original 3D viewer allowed for the highlighting of regions with point groups: http://132.187.25.13/ij3d/?category=Documentation&page=devdoc/HighlightPoints
Add the ability to change the axis, and angle of rotation
Perhaps add pathing/waypointing?
Open 2 3DVs, close the most recent one, then try to run a command from menu
This is partially depending on a picker to select objects, which can subsequently be modified by the application of relevant ops.
I believe that LUTs can be transferred to scenery by converting the LUT into a GenericTexture, then using material.textures.put("normal","fromBuffer:[transferTextureName]") with transferTextureName as the name of the GenericTexture.
Debug messages should be printed using LogService.debug(String)
instead of System.out.println(String)
so that they can be hidden.
At least a slider to switch between channels if not displaying multi-channel images
Can we set something up to convert the result of a thin op into a skeleton graph?
This is done by AnalyzeSkeleton.
Maybe this isn't a SciView feature, but we care about this a bit because we started solving for skeletons using a purely graph-based approach.
Curtis had some suggestions on how to make sure it also works within ImageJ, but first let's just get it working in standalone.
Allow volumes to be updated after being loaded.
BDV's indicator of scene orientation runs on top of the 2D Graphics obtained from a JPanel, so this also involves the JPanel wrapping of ThreeDViewer
This isn't an issue, but I wanted to document this somewhere.
If you do something like:
msh.fitInto( 15.0f, true );
Then call an op like convex hull on msh
The convex hull will not look like a convex hull. This is because fitInto only alters the rendering, not the underlying mesh.
See IJ forum post: http://forum.imagej.net/t/problem-with-bioformats-plugin/4854/3
Especially repositories
Measuring surface areas by accounting for multiple elements of the scene. In a way this is kind of like image calculator but with meshes.
Reference forum post: http://forum.imagej.net/t/surface-area-measurements-in-bonej/5420/2
Manipulation of objects, such as rotation, translation, would be nice.
I am confirming (bonej-org/BoneJ2#86) the OpenGL black screen with the 0.2.4-SNAPSHOT of scenery when running basic tests from SciView.
The Vulkan failure to compile also exists (with enforcer on).
When the enforcer is skipped, Vulkan renders (no black screen like in OpenGL). However, when toggling to VR this error comes up: scenerygraphics/scenery#135
Transparency for mesh rendering existed in the previous 3D Viewer. This requires a little more effort for the Scenery-based renderer due to shaders.
Displaying data that changes over time, see http://132.187.25.13/ij3d/?category=Documentation&page=devdoc/4DViewer
This is a bigger question involving Scenery and ClearVolume.
java.lang.IndexOutOfBoundsException
at java.nio.Buffer.checkIndex(Buffer.java:540)
at java.nio.DirectFloatBufferU.get(DirectFloatBufferU.java:253)
at graphics.scenery.HasGeometry$DefaultImpls.recalculateNormals(HasGeometry.kt:825)
at graphics.scenery.Mesh.recalculateNormals(Mesh.kt:14)
at sc.iview.process.MeshConverter.toScenery(MeshConverter.java:85)
at sc.iview.SciView.addMesh(SciView.java:724)
at sc.iview.ops.ConvexHull.run(ConvexHull.java:66)
at org.scijava.command.CommandModule.run(CommandModule.java:199)
at org.scijava.module.ModuleRunner.run(ModuleRunner.java:168)
at org.scijava.module.ModuleRunner.call(ModuleRunner.java:127)
at org.scijava.module.ModuleRunner.call(ModuleRunner.java:66)
at org.scijava.thread.DefaultThreadService$3.call(DefaultThreadService.java:238)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
When voxelizing a mesh, 2 images are shown instead of 1.
When loading the shell mesh, then voxelizing it, and reimporting as isosurface, I got:
java.lang.ClassCastException: net.imglib2.type.numeric.integer.UnsignedByteType cannot be cast to net.imglib2.type.logic.BitType
at net.imglib2.type.logic.BitType.compareTo(BitType.java:55)
at net.imagej.ops.threshold.apply.ApplyThresholdComparable.compute(ApplyThresholdComparable.java:56)
at net.imagej.ops.threshold.apply.ApplyThresholdComparable.compute(ApplyThresholdComparable.java:46)
at net.imagej.ops.special.computer.BinaryComputerOp.compute(BinaryComputerOp.java:93)
at net.imagej.ops.map.MapIterableToIterable.compute(MapIterableToIterable.java:58)
at net.imagej.ops.map.MapIterableToIterable.compute(MapIterableToIterable.java:47)
at net.imagej.ops.threshold.apply.ApplyConstantThreshold.compute(ApplyConstantThreshold.java:73)
at net.imagej.ops.threshold.apply.ApplyConstantThreshold.compute(ApplyConstantThreshold.java:50)
at net.imagej.ops.threshold.AbstractApplyThresholdIterable.compute(AbstractApplyThresholdIterable.java:52)
at net.imagej.ops.threshold.AbstractApplyThresholdIterable.compute(AbstractApplyThresholdIterable.java:43)
at net.imagej.ops.special.hybrid.UnaryHybridCF.calculate(UnaryHybridCF.java:61)
at net.imagej.ops.special.hybrid.UnaryHybridCF.run(UnaryHybridCF.java:71)
at net.imagej.ops.special.hybrid.UnaryHybridCF.run(UnaryHybridCF.java:97)
at org.scijava.command.CommandModule.run(CommandModule.java:199)
at net.imagej.ops.OpEnvironment.run(OpEnvironment.java:944)
at net.imagej.ops.OpEnvironment.run(OpEnvironment.java:156)
at net.imagej.ops.threshold.ThresholdNamespace.apply(ThresholdNamespace.java:82)
at sc.iview.io.ImportIsosurface.run(ImportIsosurface.java:67)
at org.scijava.command.CommandModule.run(CommandModule.java:199)
at org.scijava.module.ModuleRunner.run(ModuleRunner.java:168)
at org.scijava.module.ModuleRunner.call(ModuleRunner.java:127)
at org.scijava.module.ModuleRunner.call(ModuleRunner.java:66)
at org.scijava.thread.DefaultThreadService$3.call(DefaultThreadService.java:238)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Edit @skalarproduktraum: Changed to task list
for slicing through the scene
The 3D viewer in SNT is getting on everybody's nerves, as it now stalls half-way through the most simple operation. Before I look into it (I will spending the next months fixing SNT), I was wondering if we should start using ThreeDViewer. Do you have any advice on this? Are there any plans to make the ThreeDViewer backward compatible with the legacy 3D_Viewer?
It should be possible to manipulate an object's properties, such as colors, textures, etc..
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.