开源三维解剖探索器:2,234个可选择的BodyParts3D网格

Hacker News Top 工具

摘要

这是一个使用React和Three.js构建的开源交互式三维解剖探索器,具有2,234个可选择的网格和解剖系统,用于教育可视化。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/09/09 12:48

ashemag/human-atlas

来源:https://github.com/ashemag/human-atlas

人体图谱

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

探索在线演示 (https://human-atlas-seven.vercel.app)

探索

  • 直接在人体模型上进行环绕、缩放和结构选择。
  • 切换单个系统或使用骨骼和器官预设。
  • 从组装好的解剖视图切换到每个可见部件的间距化库存视图。
  • 搜索解剖学名称和来源标识符。
  • 隔离选定结构并查看其详细信息。
  • 在移动设备上使用紧凑型控制面板和详细信息面板。

本地运行

需要 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.mjsnode scripts/compress-models.mjs。简化过程对每个结构使用 0.2% 的相对误差限制。

部署

将此仓库作为 Vite 项目导入 Vercel。包含的 vercel.json 配置了 npm cinpm run builddist 输出目录。也可以由静态主机托管。

许可

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

欢迎提交问题和拉取请求。对于交互问题,请提供重现步骤和浏览器/设备详情。

相似文章

@gdb:使用ChatGPT构建互动教育工具

X AI KOLs Following

Greg Brockman 重点介绍了一位开发者使用 Three.js 和 GPT 5.6 Sol,通过 vibe coding 从一张设计图片开始构建的 3D 人体解剖学教育应用。

SAM 3D Body:鲁棒的全人体网格恢复

Papers with Code Trending

SAM 3D Body 是一个可提示的3D人体网格恢复模型,采用新颖的参数化表示(MHR)和编码器-解码器架构,实现了最先进的性能并具备强泛化能力。该模型支持辅助提示,并且是开源的。