Volume Rendering Viewer (Unity + SimpleITK)
Unity-based medical volume rendering viewer with SimpleITK loading, orthogonal MPR views, ROI editing, interactive 3D controls, cinematic volume rendering modes, and BraTS tumor segmentation overlay support.
Demo
Volume Rendering Viewer Unity Demo
Environment
Unity Editor: 6000.3.6f1
Sentis: 2.5.0
SimpleITK: 2.5.3
ITK: 5.4.5
Platform: macOS (arm64) / Windows (x86-64) / Android (arm64-v8a)
Controls
The viewer uses a 2x2 panel layout: ABC views, 3D view
Keyboard:
E / Q: Global zoom in/out
R: Reset volume rotation/scale, ROI, and zoom to the initial state
Mouse in 2D panes (A/B/C):
Mouse wheel: Move slice position on the pane axis
Drag ROI handles (overlay points): Adjust ROI box
Mouse in the 3D pane (bottom-right):
Left-click drag: Arcball-style 3D rotation
Mouse wheel: Global zoom
Rendering Modes
The SimpleITKVolumeRenderer component now exposes the following 3D rendering modes in the Inspector:
Unlit: transfer-function-based Direct Volume Rendering (DVR)
Isosurface: thresholded surface shading
CinematicStandard: gradient-based cinematic shading
CinematicAmbientOcclusion: cinematic shading with local ambient occlusion
CinematicHybrid: cinematic shading with volumetric shadowing and scattering blend
Notes:
CinematicAmbientOcclusion and CinematicHybrid are significantly more expensive than Unlit / Isosurface.
Desktop GPUs (macOS / Windows) are the intended target for the heavier cinematic modes.
Android can still run the same shader path, but lower maxSteps, cinematicShadowMaxSteps, and cinematicAoSamples are recommended.
VolView Porting
This Unity project was developed alongside
Kitware VolView as a reference for cinematic volume rendering workflows and parameter tuning.
VolView is not a runtime dependency of this Unity viewer.
VolView keeps its own Apache-2.0 license .
Sample Data
Default sample path: Assets/StreamingAssets/Sample
Example formats: .mhd/.zraw, .nrrd, DICOM folder
Segmentation
This viewer can either load a pre-generated segmentation volume or generate one in the Unity Editor.
Editor generation:
Put the volumes in Assets/StreamingAssets/Sample
Set sampleFileName to a volume
Use Generate Segmentation Volume from the SimpleITKVolumeLoader component menu on the Volume object
The generated file is saved in Assets/StreamingAssets/Sample and assigned automatically
Overlay behavior:
The color map is loaded from StreamingAssets with segmentationColorMapFileName.txt
Text format: label,name,(r,g,b) or label,name,(r,g,b,a)
Segmentation Example:
This project uses the MONAI Model Zoo brats_mri_segmentation bundle and runs the exported ONNX model in Unity with Unity Sentis.
Model: brats_mri_segmentation
Architecture: SegResNet
Input: 4 aligned 3D MRI volumes (T1c, T1, T2, FLAIR)
Task: brain tumor subregion segmentation
Output: tumor core, whole tumor, and enhancing tumor
Reference: https://github.com/Project-MONAI/model-zoo/tree/dev/models/brats_mri_segmentation
Note: this is a research/demo workflow and not for diagnostic use
License
[volumerendering-viewer-unity] © 2026 Unity Technologies
Licensed under the Unity Companion License for Unity-dependent projects (see
https://unity3d.com/legal/licenses/unity_companion_license ).
Unless expressly provided otherwise, the Software under this license is made available strictly on an "AS IS" BASIS WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. Please review the license for details on these and other terms and conditions.