Somakine——基于 Three.js 的交互式解剖查看器
原作者: andyme
原始链接: Somakine — an interactive anatomy viewer built with Three.js
说明:原文为 Three.js 论坛项目展示帖,正文未附代码片段,因此无“核心代码”可直接保留。下文为忠实编译,并附项目关键架构及源码入口。
大家好,
我想分享 Somakine,一个使用 Three.js 构建的开源 TypeScript 框架与交互式解剖查看器。
Playground 使用真实的 BodyParts3D 4.0 肌肉骨骼几何数据。你可以:
- 旋转、平移或移动整个场景
- 切换解剖图层,如骨骼、肌肉、关节、韧带和肌腱
- 按解剖区域过滤
- 选中并聚焦单个结构
- 检查侧面感知的语义选择
- 在英文与中文标签之间切换
- 基于当前场景生成 TypeScript、React 或 Vue 集成代码
该项目拆分为几个可复用层:
- 数据层:负责规范化解剖 ID、关系、标签和覆盖范围
- 数据包:具有明确的资产来源与许可信息
- Three.js 查看器:用于加载、拾取、选择、样式化、相机适配和变换
- 框架集成:支持 React 和 Vue
我构建 Somakine 的原因是解剖类应用常常重复实现标识、关系、几何加载和资产来源等能力。目标是让这个“身体层”可复用,而把实际产品体验留给宿主应用。
感谢关注!
三个核心优化要点
-
分层解耦与模块复用
将解剖数据、几何加载、Three.js 渲染和前端框架集成分离为独立层。数据层管理 ID、关系与标签,查看器层处理拾取/选择/变换,框架层负责 React/Vue 注入。这避免了每个解剖应用重复实现相同底层逻辑,显著提升可维护性与开发效率。 -
按需加载与交互聚焦
通过“按解剖区域过滤”和“图层切换”实现场景内容的动态裁剪;选中并聚焦单个结构时,可只对目标对象进行精细渲染与相机适配,降低整体渲染负担,改善交互流畅度。 -
资产来源与许可显式化
数据包层明确记录资产出处(provenance)和许可证(licensing),不仅便于合规审计,也利于缓存、版本管理与按需分发,避免重复下载,提升加载性能与数据可信度。
GLSL/WebGL 专业术语检查
- Three.js:基于 WebGL 的 JavaScript 3D 图形库,不翻译。
- WebGL:Web Graphics Library,网页图形库,浏览器端 3D 渲染 API。
- GLSL:OpenGL Shading Language,OpenGL 着色语言。原文未直接出现,但 Three.js 自定义材质与着色器常涉及。
- picking:拾取/选取,通常借助射线检测实现对象选择。
- selection:选择集/选中状态。
- styling:样式化,此处指对选中或特定对象应用视觉样式。
- camera fitting:相机适配/取景适配,自动调整相机使目标结构完整可见。
- transforms:变换,指平移、旋转、缩放等空间操作。
- canonical anatomy IDs:规范化解剖标识。
- musculoskeletal geometry:肌肉骨骼几何。
- asset provenance:资产来源/出处。
- framework integrations:框架集成。
- BodyParts3D 4.0:保留原名,为人体解剖几何数据集。
- TypeScript / React / Vue:保留英文,不做翻译。
原文未直接包含 GLSL 代码,但项目基于 WebGL 渲染管线,上述术语在集成与扩展时应保持准确的中英文对照,避免在技术文档中混淆。
