@vibe-motion/threejs-earth-render
@vibe-motion/threejs-earth-render — AI coding skill
No skills found in this collection.
SKILL.md
| name | threejs-earth-render |
| description | Clone or update https://github.com/vibe-motion/threejs-earth and render the Three.js Earth route animation with Puppeteer frame capture. Use when users ask for 三维地球航线动画, Three.js Earth, 地球飞线, globe route animation, or exporting an Earth GIF/MP4/PNG sequence. |
Three.js Earth Render
Workflow
- Use
scripts/render_threejs_earth.pyfrom this skill. - Pass
--workspacewhen the user specifies where the source checkout should live; otherwise use the current directory. - Pass
--outputwhen the user specifies a GIF/MP4 path; otherwise useout/threejs-earth.gif. - For customized routes, edit
threejs-earth/src/routeConfig.jsfirst and render with--skip-updateso local edits are preserved. - Run the script and wait for completion.
- Return the final absolute output path printed by the script.
Command
/usr/local/bin/python3 scripts/render_threejs_earth.py \
--workspace "$(pwd)" \
--output "$(pwd)/out/threejs-earth.gif"
Installed Skill Resolution
Use the installed skill copy, not the source repo checkout:
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"
Behavior
- Repository source is fixed to
https://github.com/vibe-motion/threejs-earth.gitby default. - Reuse
workspace/threejs-earthif it exists; otherwise clone it. - If the repo already exists, fetch and fast-forward the target branch unless
--skip-updateis passed. - Serve the Three.js app through a local HTTP server; do not open it with
file://. - Use Puppeteer, not Remotion, because this is a browser-based 3D scene.
- Seek each frame through
window.__SCENE_3D_EXPORT__.setFrame(frame)so frames are independently reproducible. - Capture a PNG frame sequence, then encode
.gifor.mp4withffmpeg. - Default render is a 30 fps GIF at 448 px wide. Use
--output-width 0to keep the native 2048 x 1152 capture.
Project Notes
- Default route is Hangzhou to Paris in
src/routeConfig.js. - The app exports a 16:9 scene at 2048 x 1152 for
--render-scale 1and 4096 x 2304 for--render-scale 2. - The scene uses CDN imports for Three.js and local high-resolution Earth texture assets, so network access is required on first load.
Requirements
gitnodenpmffmpeg- network access for clone/update, CDN imports, and Puppeteer installation
Loading...
Select a file to preview
Analyzing security...
Checking scan reports and verification data.
Bill of Materials
Everything this skill can do — files, network, commands, and more.
No demos yet. To add one, ask your AI agent: "Submit a demo for @vibe-motion/threejs-earth-render" — or upload via the API.
To add a demo, ask your AI agent: "Submit a demo for @vibe-motion/threejs-earth-render"
No eval data yet. Eval results are published via the SkillSafe API.