首页 / 全部技能 / 内容创作 / isometric-animation
内容创作 · iart-ai/explainer-video-skills

isometric-animation

This skill should be used when the user asks to "make an isometric animation", "build a 2.5D isometric scene", "create an isometric infographic", "animate an exploded diagram", "do an isometric city/stack build", "show stacked layers in iso", "extrude blocks with depth", or "add a gentle camera drift to an iso scene". Covers CSS 3D transforms, SVG iso planes, and Three.js OrthographicCamera for true 3D iso — no build step.

风险提醒:橙色 · 评估后使用AI 侦查报告
作者 iart-aiGitHub iart-ai/explainer-video-skills ↗Stars 26许可 MIT(仓库根 LICENSE:MIT License / Copyright (c) 2026 iart.ai;.claude-plugin/plugin.json 声明 "license": "MIT",GitHub API license.spdx_id = MIT)commit 3e2d411b72
agent 宿主通常会约束 skill 执行权限;风险提醒为 AI 侦查观点,不构成质量或安全保证。第三方 skill 仅作拆解与展示,安装使用风险自负,版权归原作者。

1实现原理 · 为什么它能做到

投影先行:先在两套约定(true isometric 轴 ±30° / 2:1 dimetric 轴 ~26.57°)里选一套,之后绝不混用——轴系错了后面全错。

skills/isometric-animation/SKILL.md
Two conventions — pick one and never mix:
注:把「像不像 iso」压缩成一个几何选择,后续所有代码与检查项都挂在它上面。

用 CSS 3D 变换把任意平面推成 iso 地面:rotateX(60deg) rotateZ(45deg) 是标准 true-iso 组合,任何扁平 SVG/DOM(平面图、UI 稿、网格)放上去即成 iso 面,子元素用 translateZ 抬升。

skills/isometric-animation/SKILL.md
.iso-plane { transform: rotateX(60deg) rotateZ(45deg); }
注:这是它敢用「一个 div + 两个 rotate」替代 3D 引擎的原因:iso 本质是平面的仿射变形。

立体感靠每面独立着色:顶面最亮、左面中等、右面最暗,且全场光向固定——文中称之为让 iso 深度可信的最关键技巧。

skills/isometric-animation/SKILL.md
.block .top { background:#3a9bff; } /* lit */
注:SVG 版本同样用亮/中/暗三个多边形,规则可跨 CSS 与 SVG 平移。

场景由四种可复用构件搭出:堆叠 Z 层(卡片/楼层)、挤出块(面 + 着色)、iso 网格、爆炸视图(共享 --gap 变量统一开合)。

skills/isometric-animation/SKILL.md
Keep one shared `--gap` variable so the whole stack opens/closes together.
注:共享变量让「装配/爆炸」成为同一个数值的双向播放,而不是两套动画。

运动规则被写成禁令以维持 iso 可信度:抬升只能沿 Z(禁缩放假高度)、相机漂移必须小而慢、错峰必须按物理位置(自底向上)而非 DOM 顺序。

skills/isometric-animation/SKILL.md
**Lift along Z, never scale** to fake height — scaling breaks parallel projection.
注:这类「禁令式」条目是本文档的主要风格:把常见的假 depth 错误前置封堵。

需要真遮挡、真阴影或 3D 旋转时升级到 Three.js OrthographicCamera:等值 position 给出经典 30° 视角,正交相机保持远处不缩小;PerspectiveCamera 明确不是 iso。

skills/isometric-animation/SKILL.md
cam.position.set(10, 10, 10); // equal X,Y,Z → classic iso vantage
注:升级路径写明了判据(occlude / shadows / rotate in 3D),不是「想更强就用 Three.js」。

交付 = 单文件 HTML + 一条主时间轴 + ?t=N 冻结;验证要检的是投影本身(轴角是否对、Z 序与遮挡、有无 z-fighting、有无意外透视缩小),而不是「有没有动起来」。

skills/isometric-animation/SKILL.md
**INSPECT the projection, not just "did it animate":
注:把验收焦点从「动效存在」移到「几何正确」,与同 pack 的 diagram-animation 同源但检查项完全不同。

平行投影纪律贯穿全文:CSS 场景必须 perspective:none(或极大),Three.js 必须用正交相机——否则小 perspective 会被读成倾斜 3D 卡片而非 iso。

skills/isometric-animation/SKILL.md
Keep `perspective` OFF (or very large) — iso is parallel projection, so far objects must NOT shrink.
注:把「投影类型」提升为输出契约里的硬条件,而非风格偏好。

2核心能力

01两套投影约定(true iso ±30° / 2:1 dimetric ~26.57°)+ 网格↔屏幕坐标互转公式
02平面→iso 面(CSS 3D 变换,含 matrix3d 预乘等价写法;标签用反旋回正做 billboard)
03挤出块三面着色(CSS 与 SVG 两版;SVG 以绘制顺序代替深度缓冲解决遮挡与 z-fighting)
04堆叠 Z 层与自底向上 build(按 --z 物理顺序错峰,而非 DOM 顺序)
05爆炸视图:共享 --gap 变量统一开合(装配/爆炸是同一数值的双向播放)
06iso 网格:平面画线后交给 iso-plane 变形,再以 stroke-dashoffset 逐条画出
07相机漂移 / 指针视差 / hover 沿 Z 抬升(幅度小而慢,避免暴露平面本质)
08Three.js OrthographicCamera 真 3D iso 场景(单 progress 值驱动 build,可被 ?t 冻结用于确定性截图)

3外部依赖

类型依赖
clinpx / Playwright(无头截图)
cliffmpeg(contact-sheet.sh 拼图)
clinpx -y playwright(仓库根 seek-shot.sh 内部)
networkjsDelivr CDN:three.js(reference 里钉的是 0.160 具体版本)
networkjsDelivr CDN:gsap ESM(未钉版本,走 +esm 浮动入口)
package第三方库/能力:Three.js、GSAP;CSS 3D 与内联 SVG 路线零依赖

4风险提醒 风险提醒:橙色 · 评估后使用

风险提醒:橙色 · 评估后使用
  • 复核回路引入远程包与浏览器二进制 — 跑一次验证即从 npm 拉 playwright 并下载 Chromium;离线/内网环境会失败,且属供应链接触面。可改用本地已装的 Playwright/浏览器或人工截图完成同一回路。
  • gsap 走浮动 CDN 入口 — 交付 HTML 里 `gsap/+esm` 未钉版本(three.js 已钉 0.160),上游发新版可能改变成品行为;建议把两者都钉到具体版本或内联进单文件。
  • CSS 3D 的 Z 序陷阱 — 文档自己承认 CSS 3D 会 z-fighting 并建议大量小块改用 SVG 绘制顺序;但选择判据(「多少块算多」)仍需使用者自行拿捏,块数上升时容易踩到闪烁/穿插。
  • 跨目录引用悬空 — `scripts/` 在仓库根;只安装 skills/isometric-animation 时截图/拼图辅助不可用,需装整个 repo。
  • 投影数学需人工核对 — 轴角与 matrix3d 常量无自动化断言,验证仍靠冻结帧肉眼比对;批量产出时应自加几何校验(如取两条地面线量角度)。
风险提醒:橙色,评估后使用。判级对象是 skill 自身目录(skills/isometric-animation/:SKILL.md + references/ + 0 字节 README.md;目录内无脚本、无凭证、不写盘)。触发橙档的是它规定的复核回路与交付形态:① SKILL.md 的 Verify loop 直接内联 `npx playwright screenshot …`,所引用的仓库根 helper `scripts/seek-shot.sh` 内部是 `npx -y playwright screenshot`——npx 从 npm registry 取包并首次下载 Chromium 二进制,落入分级范式「依赖第三方插件、镜像、远程包」(同作者 pack 先例:logo-animation 同因判橙);② 交付物在浏览器端从 cdn.jsdelivr.net 取 three.js(钉 0.160)与 gsap(浮动版本)——产物期引用,按批4 细则不计为执行期外发,仅列明。skill 本身不读凭证/env、不调业务 API、不采集、不绕过防护,故非红档。触发条件:只有真正跑复核回路(截图/拼图)时才发生远程拉取;纯写 HTML 或人工在浏览器查看不触发。

5第二遍独立确认

  • [ok] 外部依赖调用点复核(npx playwright / ffmpeg / three.js / gsap) — SKILL.md Verify loop 内确有 `npx playwright screenshot --wait-for-timeout=500 "file://$PWD/iso.html?t=1.2" frame-mid.png`;仓库根 scripts/seek-shot.sh 与 contact-sheet.sh 分别为 npx playwright 与 ffmpeg;reference 第 7 节确有 `import * as THREE from "https://cdn.jsdelivr.net/npm/[email protected]/build/three.module.js";` 与 `import gsap from "https://cdn.jsdelivr.net/npm/gsap/+esm";`。四条均落地。
  • [ok] 投影主张与代码对账 — `rotateX(60deg) rotateZ(45deg)` 与 reference 给出的 matrix3d 预乘常量(0.707 / 0.409 / 0.816)自洽:cos30≈0.866…、sin30=0.5 与 0.707/0.409 的推导一致,能把地面轴压到屏幕 ±30°;Three.js 用的确为 OrthographicCamera 且 position 三分量相等(10,10,10)→ 经典 iso 视角。未见「用 PerspectiveCamera 冒充 iso」的自相矛盾。
  • [ok] 无凭证 / 无 env / 无业务 API 反查 — 两个文档与三个仓库脚本中无 API_KEY/token/secret/.env 读取、无 curl/wget、无 fetch 到业务端点;唯一远程动作是包管理器与 CDN 静态资源。判 orange 的依据是「远程包/镜像」,不含凭据读取。
  • [ok] 目录资产面清点 — skills/isometric-animation/ 下仅 SKILL.md(178 行)、references/ 一份 253 行 cookbook、0 字节 README.md;无 scripts/、无模板、无数据文件——「纯指令 + 内联代码片段」结论成立。
  • [discrepancy] CDN 依赖的版本纪律差异 — 同一份 reference 内两种取法并存:three.js 钉到 0.160(可复现),gsap 走 `+esm` 浮动入口(上游发新版本即变)。这不是错误,但使「同一份 HTML 长期行为一致」的保证只覆盖 three.js 一侧;已在 verdict.risks 中标注。
  • [discrepancy] 跨引用可解析性 — SKILL.md 引用的 `scripts/seek-shot.sh`、`scripts/contact-sheet.sh` 位于仓库根,单装本 skill 目录会悬空(需装整个 repo);正文把「成为视频的一部分」的路径交回同 repo 的 Remotion 路线(remotion still 验证),该技法的归属 skill(remotion-video)不在本 repo 的 5 个 skill 中。
  • [ok] 功能声明 vs 实际能力 — frontmatter 宣称覆盖 CSS 3D transforms / SVG iso planes / Three.js OrthographicCamera 且强调 no build step;正文 Build-tool choice 与 reference 第 1–7 节逐条兑现,交付确为单文件 HTML(CDN 方式),无夸大。

6结论

  • 把「iso 对不对」定义成可检查的几何判据(轴角、垂直保持、无透视收缩、单光向着色),验收不再依赖主观判断
  • 用两个 rotate 就把任意平面特征做成 iso 面,不必引入 3D 引擎——复杂度与产出比很高
  • 把最常见的假深度错误前置封堵(沿 Z 抬升而非缩放、perspective 必须关)
  • 爆炸/装配被建模成同一个共享变量的双向播放,而不是两套反向动画
  • 适合:适合把结构关系可视化得有「体量感」的场景:堆叠层/楼层/技术栈塔、挤出块信息图、爆炸视图(拆解与装配)、iso 网格地图式版面,以及需要轻微相机漂移/视差让静图「活起来」的 2.5D 插画;三档实现(CSS 3D / 内联 SVG / Three.js 正交)可按「块数 × 是否需要真遮挡」选型。
    不适合:不适合需要真实透视与景深(电影感相机运动)的场景——它刻意禁止透视;不适合大量动态几何体或物理模拟(应走 Three.js 常规/WebGL 路线,本 skill 只到正交 iso);也不适合以文字排版为主、几何体极少的版面(用不上它的投影纪律)。
    安装 agent 直装可复制
    ① 本站镜像 更新 2026-09-28
    方式 A · 人下载镜像包下载 isometric-animation.tar.gz
    sha256: 0e7ea0aa5a9ac077…
    方式 B · JSON 格式安装指南,复制给 agent
    安装指南
    agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
    ② 上游 GitHub · 原始来源
    能访问 GitHub?直接去上游安装(实时版,可能已更新)GitHub 原始 ↗
    本页镜像锁定 commit 3e2d411b72;上游为实时仓库。
    来源信息 GitHub 原始
    作者 / 仓库iart-ai / iart-ai/explainer-video-skills
    Stars26
    最近推送2026-06-22
    本 skill commit3e2d411b72
    许可MIT(仓库根 LICENSE:MIT License / Copyright (c) 2026 iart.ai;.claude-plugin/plugin.json 声明 "license": "MIT",GitHub API license.spdx_id = MIT)
    本站信息
    收录日期2026-09-06
    分类内容创作
    侦查报告AI 侦查 · 2 遍 · 2026-09-06
    本站镜像与 GitHub 原始是不同来源:本站锁定 commit 快照经 /r2 分发;GitHub 为实时上游,内容可能已更新。
    同分类邻近