ESC
开源 1 分钟阅读

human-atlas:开源 3D 解剖浏览器,支持 2,234 个可选 BodyParts3D 网格、系统分层、搜索与爆炸视图

human-atlas 是一个基于 React、Three.js 和 shadcn/ui 构建的开源交互式 3D 解剖浏览器,将 BodyParts3D 成年男性参考模型拆分为 2,234 个可单独选择的网格,支持 15 个解剖系统分层浏览、3,432 个命名概念搜索及爆炸视图展示。代码采用 MIT 许可证,解剖数据遵循 CC BY 4.0,仅作教育用途。

来源:GitHub

Human Atlas

一个基于 React、Three.js 和 shadcn/ui 构建的交互式 3D 解剖浏览器。它将 BodyParts3D 成年男性参考模型拆分为 2,234 个可单独选择的网格,提供 15 个解剖系统的分层浏览,并支持搜索 3,432 个命名概念。

在线演示

探索功能

  • 环绕、缩放并直接在人体模型上选择结构。
  • 切换单个解剖系统,或使用骨骼和器官预设。
  • 从组装完整的解剖视图切换到所有可见部件的间隔排列清单。
  • 搜索解剖名称和源标识符。
  • 隔离选定的结构并查看其详细信息。
  • 在移动设备上使用紧凑的控件和详情面板。

本地运行

需要 Node.js 22.13 或更高版本。无需 API 密钥或账号。

npm ci
npm run dev

打开 http://localhost:3016。要构建静态站点,运行 npm run build;输出位于 dist/ 目录。

验证

npm run check
node scripts/validate-atlas.mjs
node scripts/validate-interactions.mjs
npm run build

验证涵盖网格缓冲区、名称与概念归属、桌面端和移动端宽高比下互不重叠的爆炸布局、搜索与检查契约,以及点按与拖拽的区分处理。浏览器交互测试已覆盖选择、系统控件、搜索、隔离、旋转,以及 390×844、320×568 和 844×390 三种布局。手机端控件不会遮挡爆炸视图清单,被隔离的结构也能适配详情面板上方或旁边的空间。尚未在实体设备上进行性能测试,也未在真实多点触控硬件上测试。

解剖数据

当前查看器使用 BodyParts3D 4.0,即成年男性参考解剖数据,采用 CC BY 4.0 许可证。它并不涵盖所有人体结构或个体变异。单个源网格与命名概念是不同的,一个概念可能包含多个网格。描述内容将系统层面的总体背景与单个器官的解释区分开来。

几何体为浏览器性能做了简化,同时保留了所有源网格。打包后的模型包含 2,288,268 个三角形,压缩后的几何体下载大小约为 33 MB。完整的致谢、来源链接和改编细节见 ATTRIBUTION.md。

这是一个教育用途的浏览器,不是诊断或手术工具。

工作原理

几何体被合并为批次。每个结构通过 GPU 纹理控制平移、可见性和选中状态,同时组件几何体支持精确拾取。爆炸布局只排列可见部件。渲染仅在场景变化时更新;环绕控制保持流畅响应,而无需数千次单独的绘制调用。

可选的 WebMCP 工具在兼容的浏览器中提供解剖搜索和检查功能。可见界面在没有这些工具的情况下也能正常工作。

重建几何体

仓库中已包含可在浏览器中使用的几何体,重建是可选的:获取官方 BodyParts3D OBJ 归档和英文元数据表,准备合并后的概念与显示系统映射,运行 scripts/convert-anatomy.py,然后运行 node scripts/optimize-anatomy.mjs 和 node scripts/compress-models.mjs。简化采用每个结构 0.2% 的相对误差限制。

部署

将本仓库作为 Vite 项目导入 Vercel。自带的 vercel.json 已配置 npm ci、npm run build 和 dist 输出目录。它也可以由静态主机提供服务。

许可证

原始应用代码以 MIT 许可证 发布。解剖数据有其自己的 CC BY 4.0 许可证;重新分发时请保留署名信息。第三方依赖保留其各自的许可证。

欢迎提交 Issue 和 Pull Request。如报告交互问题,请附上复现步骤以及浏览器/设备详情。