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。如报告交互问题,请附上复现步骤以及浏览器/设备详情。