关于 threejs-earth-render
用于将 threejs-earth 项目渲染为 GIF 或 MP4 的技能,指导配置路线、运行脚本并获取输出文件。
主要功能
- 01将 Three.js 场景渲染为 GIF 或 MP4
- 02在 routeConfig.js 中自定义路线
- 03使用 Puppeteer 捕获帧
- 04使用 ffmpeg 编码输出
适用场景
- 01制作地球路线动画
- 02保留本地修改并渲染自定义路线
- 03指定输出路径并获取渲染文件
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ vibe-motion/ skills --skill threejs-earth-render安装后在 Claude Code 中输入/threejs-earth-render确认已加载。
附带文件scripts/capture_threejs_earth.mjsscripts/render_threejs_earth.py
详细介绍
Three.js 地球渲染
工作流
- 使用此技能中的
scripts/render_threejs_earth.py。 - 用户指定源代码检出目录时,传入
--workspace;否则使用当前目录。 - 用户指定 GIF/MP4 路径时,传入
--output;否则使用out/threejs-earth.gif。 - 对于自定义路线,先编辑
threejs-earth/src/routeConfig.js,然后使用--skip-update渲染,以保留本地修改。 - 运行脚本并等待完成。
- 返回脚本打印的最终输出绝对路径。
命令
/usr/local/bin/python3 scripts/render_threejs_earth.py \
--workspace "$(pwd)" \
--output "$(pwd)/out/threejs-earth.gif"
已安装技能的路径解析
使用已安装的技能副本,而不是源代码仓库检出目录:
skill_dir=""
for base in "${AGENTS_HOME:-$HOME/.agents}" "${CLAUDE_HOME:-$HOME/.claude}" "${CODEX_HOME:-$HOME/.codex}"; do
if [ -d "$base/skills/threejs-earth-render" ]; then
skill_dir="$base/skills/threejs-earth-render"
break
fi
done
[ -n "$skill_dir" ] || { echo "threejs-earth-render skill not found under ~/.agents, ~/.claude, or ~/.codex"; exit 1; }
/usr/local/bin/python3 "$skill_dir/scripts/render_threejs_earth.py" \
--workspace "$(pwd)" \
--output "$(pwd)/out/threejs-earth.gif"
行为
- 默认情况下,仓库源地址固定为
https://github.com/vibe-motion/threejs-earth.git。 - 如果
workspace/threejs-earth已存在,则复用;否则克隆仓库。 - 如果仓库已存在,则获取目标分支并快进更新,除非传入
--skip-update。 - 通过本地 HTTP 服务提供 Three.js 应用;不要使用
file://打开。 - 使用 Puppeteer,而不是 Remotion,因为这是基于浏览器的 3D 场景。
- 通过
window.__SCENE_3D_EXPORT__.setFrame(frame)定位每一帧,确保帧可独立复现。 - 捕获 PNG 帧序列,然后使用
ffmpeg编码为.gif或.mp4。 - 默认渲染为宽 448 px、帧率 30 fps 的 GIF。使用
--output-width 0可保留 2048 x 1152 的原始捕获尺寸。
项目说明
- 默认路线为
src/routeConfig.js中的杭州至巴黎。 - 使用
--render-scale 1时,应用会导出 2048 x 1152 的 16:9 场景;使用--render-scale 2时,则导出 4096 x 2304 的场景。 - 场景使用 Three.js 的 CDN 导入和本地高分辨率地球纹理资源,因此首次加载时需要网络连接。
要求
gitnodenpmffmpeg- 用于克隆/更新、CDN 导入和安装 Puppeteer 的网络连接
评论
支持 Markdown