Giter Site home page Giter Site logo

scenerygraphics / sciview Goto Github PK

View Code? Open in Web Editor NEW
67.0 67.0 17.0 15.47 MB

sciview is a tool for visualization and interaction with ND image and mesh data

License: BSD 2-Clause "Simplified" License

Java 75.43% Shell 0.01% GLSL 0.39% Python 0.39% HTML 0.04% Kotlin 23.74%
3d fiji hacktoberfest image-processing imagej scenery sciview visualization

sciview's Issues

SciView update site wants to downgrade imglib2-* in my Fiji

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:

screen shot 2018-06-05 at 12 18 12

Isn't there an issue that SciView is coping more by mistake?

Vlado

PS: Thanks for SciView!

Trying to export a STL file throws a NullPointerException

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

  1. Run ImageJ
  2. Run SciView >Add>Box
  3. Run SciView>Export>STL_

Environment

  • Win 8.1 64-bit
  • JRE 1.8.0_152
  • Vulkan renderer (JVM -Dscenery.Renderer=VulkanRenderer)
  • Lenovo G50-70

Bounding box with units

Add the ability to enclose objects with bounding boxes that have tick marks indicating units.

Introduce SciView Object?

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.

Recording movies

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.

Scale bar

Scale bar for indicating the unit length (let's do this better than the old 3D viewer)

Orthogonal Views

Orthogonal views was another way of viewing an image in 3D. This might be easily achieved via textures and Scenery's Plane Node.

Use LUTs instead of scenery colormaps

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.

Skeleton graphs

Can we set something up to convert the result of a thin op into a skeleton graph?

This is done by AnalyzeSkeleton.

@rimadoma

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.

Resize bug

When I resize in SciView I get a tiling effect:

image

Menu bar independent of ImageJ

Curtis had some suggestions on how to make sure it also works within ImageJ, but first let's just get it working in standalone.

Visual discrepancy when using scenery's fitInto in conjunction with ops

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.

Transparency for meshes

Transparency for mesh rendering existed in the previous 3D Viewer. This requires a little more effort for the Scenery-based renderer due to shaders.

Bugs in 0.1.0

  • Tried to run convex hull on Robert's shell mesh (in main/resources) and got:
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

Compatibility with 3D_Viewer

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?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.