printed-curtain-render について
プリントカーテンのインタラクティブなプレビューを生成するスキルです。布のシミュレーションに画像や文字を配置したい制作者向けで、柄を布の座標に焼き込み、揺れや折り目、糸の動きに追従させます。
主な機能
- 01布キャンバスに画像や文字を配置
- 0240本のVerletストランドをシミュレーション
- 03布の変形に合わせて柄を変形
- 04持ち運び可能なローカルプレビューを生成
- 05ブラウザー上で一時的に画像を差し替え
活用シーン
- 01ブランド柄を印刷したカーテンをプレビュー
- 02画像のフィット、位置、寸法を調整
- 03複数行の文字と配色を設定
- 04ブラウザーでカーテンの操作を確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ vibe-motion/ skills --skill printed-curtain-renderインストール後、Claude Code で/printed-curtain-renderを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlassets/printed-curtain-template/controls.jscurtain.jsindex.htmlNOTICE.txtpoint.jsprint.jsrigidBody.jssegment.jssketch.jsstyle.cssscripts/create_printed_curtain.py詳細
プリントカーテンレンダー
ワークフロー
- 元画像、任意のテキスト行、パレット、出力ディレクトリを解決します。
- インストール済みのスキルディレクトリを解決し、
scripts/create_printed_curtain.pyを実行します。 VALIDATION=PASSとOUTPUT_HTML=<absolute path>が出力されるまで待ちます。- 出力ディレクトリを HTTP で配信し、ブラウザーで結果を確認します。
file://は使用しないでください。ブラウザーのキャンバスセキュリティにより、ローカルアートワークのピクセルをサンプリングできない場合があります。 - HTML の絶対パス、ローカルサーバーのコマンド、選択したアートワーク設定を返します。
クイックスタート
/usr/local/bin/python3 scripts/create_printed_curtain.py \
--image "/absolute/path/to/artwork.png" \
--text "VIBE MOTION" \
--output-dir "$(pwd)/out/printed-curtain"
インストール済みスキルの解決
このスキルコレクションのソースチェックアウトではなく、インストール済みのスキルのコピーを使用してください。
skill_dir=""
for base in "${AGENTS_HOME:-$HOME/.agents}" "${CLAUDE_HOME:-$HOME/.claude}" "${CODEX_HOME:-$HOME/.codex}"; do
if [ -d "$base/skills/printed-curtain-render" ]; then
skill_dir="$base/skills/printed-curtain-render"
break
fi
done
[ -n "$skill_dir" ] || { echo "printed-curtain-render skill not found under ~/.agents, ~/.claude, or ~/.codex"; exit 1; }
/usr/local/bin/python3 "$skill_dir/scripts/create_printed_curtain.py" \
--image "/absolute/path/to/artwork.png" \
--text "VIBE MOTION" \
--output-dir "$(pwd)/out/printed-curtain"
プレビュー
生成されたディレクトリを配信し、出力された URL を開きます。
/usr/local/bin/python3 -m http.server 8000 --directory "$(pwd)/out/printed-curtain"
- カーテン上でポインターを動かすと、個々の糸を押しのけます。
Hを押すと、ライブコントロールと画像ピッカーの表示を切り替えます。Rを押すと、布を再生成します。- PNG、JPEG、または WebP をキャンバスにドロップすると、ブラウザー内で一時的に画像が置き換わります。
カスタマイズ
--textを繰り返して、中央揃えのテキスト行を複数追加します。--image-fit contain|cover|stretchと、--image-x、--image-y、--image-width、--image-heightのアートボードコントロールを使って、1200×1600 の素材キャンバス上にアートワークを配置します。--text-y、--text-width、--text-height、--text-gap、--font-family、--font-weightを使って、文字組みを調整します。- CSS の16進数カラーを指定して、
--cloth-color、--ink-color、--background-colorを設定します。 --overwriteは、既存の出力ディレクトリ内にある生成済みファイルを更新する場合にのみ使用してください。無関係なファイルは保持されます。- 物理エンジンをフォークせずに、生成された
artwork.jsを編集して、画像レイヤーを細かく調整したり、行ごとの色を設定したりできます。
動作
- 同梱の p5.js シミュレーションと選択した画像を、ポータブルな出力ディレクトリにコピーします。ユーザーのアートワークをアップロードしたり、ネットワーク接続を必要としたりすることはありません。
- アートワークを布の素材座標に焼き込み、糸の上に浮かぶのではなく、糸とともに伸縮し、折り畳まれ、分離するようにします。
- 40本のベルレーストランドをシミュレートし、物理演算の負荷を抑えながら、表示される織り目を補間して密度の高いカーテンを描画します。
- ステージを中央揃えの3:4フレームに合わせ、ほかのウィンドウ形状でもアートワークの縦横比を維持します。
--overwriteが明示されていない場合、空でない出力ディレクトリへの出力を拒否します。--imageも--textも指定されていない場合は、テキストのみのVIBE MOTIONカーテンを生成します。
要件
- Python 3.9+
- Canvas をサポートする最新のブラウザー
ライセンス
同梱のカーテンエンジンは Jason Labbe の Dynamic ropes 2 を改変したもので、CC BY-SA 4.0 のライセンスが引き続き適用されます。元のソースの帰属表示を保持し、改変物も同じライセンスで公開してください。
コメント
Markdown 対応