Volume rendering, implemented in Unity3D. Want to support the project? Donate a small sum to Save The Children(https://www.savethechildren.net/) or another charity, and send me a message, and I will be greatly motivated!
This release introduces shadow volumes, transfer function editor zoom, and other improvements.
Added support for shadow volumes, which can make your visualisations look a lot better (more similar to isosurface rendering mode).
The shadow volumes are updated in realtime, in a compute shader.
Note: if enabling this makes performance bad, try enabling DLSS (HDRP) or FidelityFX (URP) and reduce the render scale.
Do you find it hard to fine-tune your TFs? Then this feature might help! You can now zoom in on transfer functions in the editor, either by using the mouse wheel or the new zoom sliders.
You can now adjust the sampling rate, to get better performance on low-end devices, or better quality on high-end devices.
High sampling rate: Looks better, but slower Low sampling rate: Faster, but with more visual artifacts
Alpha correction has also been implemented, to make sure changing the sampling rate doesn't have unwanted effects on the visual result.
Enabling tricubic interpolation can make your visualisations look a lot better, but it comes with a performance cost.
However, in this has now been optimised for direct volume rendering. Performance can be up to 3 times faster, depending on the transfer function (less for TFs with non-zero alpha on low densities).
This release mainly contains bug-fixes and other improvements. More features are planned, and some already in progress. Hopefully I'll be able to release something soon.
In other news, work has started on a Godot plugin based on this one! It has the most important features, such as dataset import (with SimpleItk, so DICOM, NRRD, etc.) and a transfer function editor.
Godot is a 100% free and open source 3D/game engine, which now also has support for C# scripting. While Unity is great for game development, Godot offers some things Unity doesn't, such as the ability to create multiple windows in a single application (may be useful for volume rendering applications).
You can find the plugin here: https://github.com/riccardolops/GodotVolumetricRendering
Thanks to @riccardolops for making it !
NOTE: The orientation of imported DICOM datasets will be different after upgrading. They should now have the Y axis increasing towards the head (no longer up-side-down).
Datasets can now be imported asynchronously in the background. See new "Async" methods in the importer factories.
In the editor, datasets are imported async by default.
Progress reporting has also been added to the importers.
Original PR by SitronX
You can now import datasets as assets, simply by dragging and dropping the files into the assets folder (single-file datasets only) or right clicking in the project hierarchy and selecting "Volume Rendering" -> "Import".
See dataset import documentation for more info.
You can now make sphere cutouts by using the newly added sphere cutout tool.
See cross section tools documentation for more info.
Original PR by SitronX
The documentation has been updated. All features should now be documented. You can view the documentation here, or download the PDF version here. I recommend the markdown-version, which has links.
VolumeRaycaster
utility class, for finding intersections with dataset (#143)New features:
New features:
To enable SimpleITK, simply open the "Settings" window and click "Enable SImpleITK">
For more information the SimpleITK integration, see the SimpleITK documentation.
Eary ray termination can be enabled by disabling "back-to-front direct volume rendering" under "other settings" on the object: This will setting will hopefully be removed after some more testing, and front-to-back (with early ray termination?) will be default.