threejs-earth-render について
threejs-earth プロジェクトを GIF または MP4 にレンダリングするスキルです。ルート設定からスクリプトの実行、出力ファイルの確認までを案内します。
主な機能
- 01Three.js シーンの GIF・MP4 出力
- 02routeConfig.js でのルート設定
- 03Puppeteer によるフレーム撮影
- 04ffmpeg によるエンコード
活用シーン
- 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が指定されていなければ、対象ブランチをフェッチしてファストフォワードします。 - Three.js アプリはローカル HTTP サーバー経由で配信します。
file://で開かないでください。 - ブラウザベースの 3D シーンなので、Remotion ではなく Puppeteer を使用します。
window.__SCENE_3D_EXPORT__.setFrame(frame)を使用して各フレームに移動し、フレームを個別に再現できるようにします。- PNG の連番をキャプチャしてから、
ffmpegで.gifまたは.mp4にエンコードします。 - デフォルトのレンダリングは幅 448 px、30 fps の GIF です。ネイティブ解像度の 2048 x 1152 でキャプチャするには
--output-width 0を使用します。
プロジェクトに関する注意事項
- デフォルトのルートは、
src/routeConfig.jsに設定された杭州からパリまでです。 - アプリは、
--render-scale 1では 2048 x 1152、--render-scale 2では 4096 x 2304 の 16:9 シーンを書き出します。 - シーンでは Three.js の CDN インポートとローカルの高解像度地球テクスチャアセットを使用するため、初回読み込み時にはネットワークアクセスが必要です。
要件
gitnodenpmffmpeg- クローン/更新、CDN インポート、Puppeteer のインストールに必要なネットワークアクセス
コメント
Markdown 対応