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
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/outR: 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 shadingCinematicStandard: gradient-based cinematic shadingCinematicAmbientOcclusion: cinematic shading with local ambient occlusionCinematicHybrid: cinematic shading with volumetric shadowing and scattering blend
Notes:
CinematicAmbientOcclusionandCinematicHybridare significantly more expensive thanUnlit/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, andcinematicAoSamplesare recommended.
VolView Porting
This Unity project was developed alongside Kitware VolView as a reference for cinematic volume rendering workflows and parameter tuning.
VolViewis not a runtime dependency of this Unity viewer.VolViewkeeps 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
sampleFileNameto a volume - Use
Generate Segmentation Volumefrom theSimpleITKVolumeLoadercomponent menu on theVolumeobject - The generated file is saved in
Assets/StreamingAssets/Sampleand assigned automatically
Overlay behavior:
- The color map is loaded from
StreamingAssetswithsegmentationColorMapFileName.txt - Text format:
label,name,(r,g,b)orlabel,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.
- Downloads last month
- -
