VR 三维切片渲染漫游

项目概述
本项目是基于 Unity 的 DICOM/PNG 切片体数据加载、缓存、三维体渲染、正交三视图浏览与 XR 浏览插件。项目既可作为独立示例场景运行,也可集成到现有 Unity 工程中。
项目依赖 NuGet For Unity、Odin Serializer、FellowOakDicom 等 package,依赖 .NET Framework 脚本运行时,使用 Odin Serializer 缓存元数据和序列化二进制数据,FellowOakDicom 读取 DICOM 文件与标签。系统兼容 OpenXR Plugin 1.10 以适配 VR 设备,并提供基于 XR Interaction Toolkit 的可选适配工具。目标部署平台为 Windows PC,可通过 SteamVR/ALVR 等路径串流至 Apple Vision Pro 查看渲染结果。
数据可靠支持能力为 ≤ 1024 × 512 × 300 的切片体数据,最大支持能力为 ≤ 2048 × 1024 × 500 的切片体数据。对于超大体数据,插件采用按 Z 轴分段的 Texture3D 组织方式,避免单个 Texture3D 或单个托管数组超过 GPU 与 .NET 运行时限制。
本项目提供以下核心能力:
- DICOM 序列导入、排序、窗宽窗位映射与 R8 体纹理生成;
- PNG 序列导入、自然排序、RGBA 体纹理生成与用户自定义体素间距;
- 体数据分段缓存,可在源数据未变化时复用缓存并减少重复解析成本;
- 横断 (Axial)、冠状 (Coronal)、矢状 (Sagittal) 三视图联动显示;
- 任意平面实时裁切控制器,支持在三维体渲染中保留指定半空间;
- 基于 Raymarching 的三维体显示,支持灰度 DICOM 体和彩色 PNG 体;
- XR 辅助配置菜单,可为对象自动添加抓取与 UI 射线交互相关组件。
演示视频
演示使用 PICO 4 Ultra;扫描数据均来自网络公开数据库(VHP 和 TCIA)。
使用说明
支持 Unity 2022.x ~ 2023.x。建议通过 VR 进行交互。
📁 数据目录
- 将 DICOM 或 PNG 序列放入
Game/StreamingAssets下的独立子目录。 - 一个目录仅放置一套体数据序列,避免混合不同主体或不同尺寸的数据。
- PNG 序列请使用自然排序的命名,例如
slice_0001.png、slice_0002.png。 - DICOM 数据优先保留完整的
ImagePositionPatient、ImageOrientationPatient、PixelSpacing、WindowCenter和WindowWidth标签。
⚙️ 集成流程
- (可选)安装可选依赖:OpenXR Plugin 与 XR Interaction Toolkit(详见 VR 配置参考)。
- 导入
OmnisDCM.unitypackage(或复制插件目录)。 - 将体数据放入
StreamingAssets。 - 根据目标平台配置普通相机或 XR Origin。
- 在场景中放入
Volume.prefab,在 Inspector 面板中配置 DCM/PNG 文件夹名和以及参数。 - (可选)放入
Ortho Canvas.prefab和Ortho Pivot.prefab,启用三视图联动。 - (可选)放入
Slice.prefab,启用任意平面裁切。
👓 VR 配置参考
- 在 Unity Package Manager 中安装或确认已安装
OpenXR Plugin。 - 在
Project Settings > XR Plug-in Management中启用 OpenXR。 - 按目标运行环境配置 OpenXR Feature 和 Interaction Profile。
- 若需要使用抓取或 XR UI,请安装
XR Interaction Toolkit。 - 在场景中创建 XR Origin、左右手 Controller 或 Hand 相关输入对象。
- 导入
OmnisDCM.unitypackage插件(或复制插件目录)。 - 将 Assets/OmnisDCM 下的 Volume、Ortho Pivot、Ortho Canvas、Slice 等 prefab 放入场景。
- 若需要抓取某个体数据、切片控制器或 UI 面板,请在 Hierarchy 中选中目标对象,执行
GameObject/Omnis/XR/Setup XR Grab Support。 - 若需要 XR 射线点击 Canvas,请在 Hierarchy 中选中 Canvas 对象,执行
GameObject/Omnis/XR/Setup Tracked Device Graphic Raycaster。 - 对需要从 Overlay 切换为 World Space 的 Canvas,可挂载
CanvasRenderModeSwitch并右键 Inspector 脚本执行Switch Render Mode,使 Canvas 进入世界空间并绑定主相机。 - 运行后通过 XR 控制器或手部交互查看、移动或切换体数据与切片 UI。
下载方式
未开放仓库或下载链接,如有需要可与本人联系。