关于 anatomy-reveal
用于制作按真实尺寸构建、可拆解的 3D 物体插图和动画影片的 Agent 技能及项目模板。它指导从研究或解析物体,到几何建模、页面构建、渲染和交付的流程。
主要功能
- 01由凸面部件构建几何体
- 02按尺寸重建物体
- 03交互式解剖页面
- 04动画影片时间线与渲染
- 05检查部件穿插和画面
适用场景
- 01制作可拆解的物体插图
- 02构建可旋转的 3D 解剖页面
- 03制作产品拆解动画
- 04将名称或图片转为几何模型
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ annnguyentt/ anatomy-reveal-skill --skill anatomy-reveal安装后在 Claude Code 中输入/anatomy-reveal确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.gitignoreREADME.mdLICENSETHIRD_PARTY_NOTICES.mdreferences/inputs.mdlook.mdobject.mdobjects.mdshots.mdscripts/new-project.mjstemplate/.gitignoretemplate/kit/iso-kit.mjstube.mjsLICENSElathe.mjsturn-build.mjsaudit.mjsturn.mjstemplate/motion/build.mjsencode.mjslook.cssscan.mjsrender.mjstimeline.mjstemplate/object/build.mjsscene.mjsscan-apart.mjsfilm.mjsshots.mjstest-page.mjs详细介绍
Anatomy Reveal
该物体绝不是现成的 3D 模型,也不是描摹出来的图片。它按照真实尺寸逐个部件构建,使用 Anatomy kit 的 3D 模式(template/kit):
- 每块面板、螺丝、旋钮、玻璃部件和电路板都是独立的凸实体;
- 每个部件根据其朝向光线的角度,以四种色调着色;
- 各部件的绘制顺序通过分离平面求解。
由于该物体由真实几何体构成,同一个模型可以转向任意角度、拆解,并驱动两种输出。
template/ 是一个完整可运行的项目。其示例是一台带内置研磨机的双锅炉意式浓缩咖啡机(82 个部件),但整个流程并非专为咖啡机设计:无论用户说出或展示什么物体,都可以用同样的方式处理。每次任务都从模板开始,然后替换物体。
构建前请阅读:
references/inputs.md:如何从照片或名称获取尺寸、特征和部件清单。references/objects.md:如何拆解各种物体,以及如何用凸部件构建弯曲、有机、柔软和大型形状。references/object.md:如何构建物体,使其能转向任意角度并干净地拆解。references/shots.md:影片的节拍、时间线格式、缓动和取景。references/look.md:纸张质感、材质和线条粗细。
输入:两种情况
A. 用户上传了物体图片。
- 研究其轮廓、比例、材质、颜色、表面装饰、可见控件、接口和标记,以及任何会移动的部件。
- 如果能判断产品型号,也要像情况 B 那样查找其真实尺寸和内部结构。否则,根据已知尺寸的特征估算大小,并说明你的假设。
- 图片仅供参考。将每个形状、颜色和装饰都重建为几何体:绝不要描摹、嵌入图片,也不要将像素贴到任何物体上。
B. 用户只说出物体名称。
- 调查真实产品:
- 以毫米为单位的整体尺寸和主要子部件尺寸;
- 材质和配色方案;
- 所有可见控件、接口和标记;
- 它如何打开、折叠、滑动或转动;
- 内部结构(拆解资料是最佳来源)。
- 如有网络搜索功能,请使用。若没有,则依据已有知识,并列出你的假设。
- 如果名称有歧义(例如某个型号系列或有多个世代),请选择最常见的版本,并说明是哪一个。
无论哪种情况,在构建任何几何体之前,都要先整理一份简短规格,包含尺寸、特征清单、按组件分组的部件清单,以及影片中会移动的一两个特征。如果有任何不确定之处,请先展示给用户。
工作流
-
估算规模。 一个对象属于“Hero”级别:包含 100–150 个部件,对象制作约需 2–4 小时,影片制作约需 1 小时。先告知用户,再开始制作。尽早让对象在测试页面上渲染出来,然后在此基础上继续完善。
-
收集案例 A 或 B 所需的信息(见
references/inputs.md)。 -
搭建项目骨架:
node <skill>/scripts/new-project.mjs <dir>。该命令会复制template/、安装puppeteer-core并构建示例,以验证工具链在这台机器上可用。 -
构建对象,在
object/geometry.mjs中遵循references/object.md里的规则:- 使用凸面板构成中空外壳;
- 爆炸视图中的组件应让外部部件先展开;
- 为特征分组(铰链、转动、滑动);
- 为每个镜头设置锚点;
- 将标记绘制为面平面。
反复迭代,并查看制作的每张图像:
node object/test-page.mjs --light;node object/shots.mjs object/test-light.html out/t/a '{"yaw":-35,"pitch":12}' '{"yaw":-35,"pitch":20,"apart":1}';- 从五个视角(正面、背面、顶部、底部、侧面)运行
node object/scan-apart.mjs <yaw> <pitch>,直到每次检查都显示部件之间没有穿透,也没有强制选取。
-
描述对象,在
object/film.mjs中填写。示意图页面和影片会从这个文件中读取所有对象专属信息:FILM:标题、场景半径(约为最大尺寸的 0.8 ×,单位为 mm)、易于理解的标签和边界框;FIGURE:页面标题、起始视角、图例键和说明文字(填入{parts}、{assemblies});FEATURE_DEFAULTS和FEATURE_KEYS:每个可动特征、其页面上的键,以及对应的值或步长;featureValues和featureTravel:特征与分组的映射关系,以及部件的移动距离。
-
示意图页面。 运行
node object/build.mjs和--light,生成object/figure.html和object/figure-light.html。通过 HTTP 提供该文件夹,并在浏览器中查看。 -
选择时长和画幅比例。 如果用户没有说明,询问用户(默认 10 s、9:16),然后运行
node motion/build.mjs --duration <seconds> --ratio <9:16|4:5|1:1|16:9>构建影片页面(3–60 s)。急速摇镜头保持原时长;缓慢移动和停留镜头则拉长或压缩。对于约 12 s 以上的影片,应增加节拍(添加更多细节镜头),而不是只延长时长。 -
编排镜头,在
motion/timeline.mjs中逐个设计节拍(见references/shots.md):- 使用
node motion/render.mjs poses '[…]' out/p为每个镜头渲染画面,并凭视觉挑选; - 使用
node motion/render.mjs stills 0,1.2,2.3,3.5,4.6,5.6,7.9,10 out/s检查时序; node motion/scan.mjs必须报告每一帧都没有问题。
- 使用
-
渲染:
node motion/render.mjs blur out/blur --step 4 --most 40,然后运行node motion/encode.mjs out/blur out/<name>.mp4。- 渲染时会根据画面的移动距离为每一帧设定动态模糊程度:急速摇镜头最多使用 40 个子帧,停留镜头使用 1 个。
- 每秒影片约需 2 分钟渲染。请在后台运行,并避免在这台机器上进行其他浏览器操作。
-
检查 MP4 文件本身。 提取帧(
ffmpeg -i out/<name>.mp4 -vsync 0 out/check/f_%03d.png),从中挑选十余帧制作联系表,并进行查看。 -
交付: MP4 文件、两个示意图页面和项目文件夹。说明哪些内容尚未验证。影片没有声音;可提出使用用户提供的音轨为其剪辑。
规则
- 仅限几何体。 用户、网络或生成器提供的图像都不会出现在图形或影片中。雕刻、花饰或印刷图案等装饰均以绘制方式呈现:在表面平面上使用 SVG,或制作凸起部件。
- 忠于实物。 使用真实的毫米尺寸、真实的按钮和螺丝数量,以及真实的开合方式。细节来自真实部件,绝不靠噪点。
- 部件只能凸起,不能凹陷。 如果一对部件无法分离,构建过程会拒绝它们:移动或拆分部件。
- 一镜到底。 通过甩镜切换主体(约 0.24 s);停留时画面仍持续漂移;只有最后半秒保持静止。
- 纸张质感。 影片以工具包浅色主题的暖白纸张为底绘制:墨线轮廓、四种色调填充。除非用户另有要求,否则保持此风格。
- 默认使用中性标记。 为部件添加通用标签(SoC、表冠、电池)。只有用户要求忠实复刻时,才绘制制造商徽标或商标。
文件
| 路径 | 说明 |
|---|---|
scripts/new-project.mjs | 将模板复制到新文件夹,安装依赖,并构建示例。 |
template/kit/ | Anatomy 工具包(MIT),包含额外材质(glass、pcb、sensor、signal、porcelain、lavender、knit、coffee、bean、milk、smoke)以及 turn.mjs 中的两个调试钩子。 |
template/object/geometry.mjs | 物体:部件、组、拆解组件、特征姿态、锚点。 |
template/object/scene.mjs | 投影、构建、orient()(视图空间中的 yaw、pitch、roll)、explodeValues()。 |
template/object/film.mjs | 页面和影片读取的所有物体专属信息:标题、场景半径、标签、边界、特征通道和关键帧。 |
template/object/build.mjs、live.js | 交互式解剖页面。 |
template/object/test-page.mjs、shots.mjs、scan-apart.mjs、capture.mjs | 基础测试页面、设定姿态的屏幕截图、拆解穿透扫描、页面捕获。 |
template/motion/timeline.mjs | 关键帧、缓动、标签、--duration 背后的重新定时逻辑,以及 --ratio 背后的取景逻辑。 |
template/motion/build.mjs、look.css | 影片页面:frame(t)、pose(state)、speed(t)。 |
template/motion/render.mjs、encode.mjs、scan.mjs | 静帧、姿态、自适应模糊渲染;帧平均与 H.264 编码;逐帧顺序检查。 |
template/scripts/browser.mjs | 在 macOS、Linux 或 Windows 上查找 Chrome、Chromium 或 Edge(可通过 CHROME_PATH 覆盖)。 |