dimensional-drawing-motion について
`dimensional-drawing` のシートをアニメーション映像にするスキルです。図面やレイヤーを見せたい制作者向けに、時間駆動の単一 SVG シーンと Motion、ヘッドレスの描画手順を用意しています。
主な機能
- 01用意されたテンプレートからシートをアニメーション化
- 02カメラ移動で描画の進行を表現
- 03平面レイヤーを軸測図に変形
- 04Motion または Playwright と ffmpeg でレンダリング
- 05時間の関数として各フレームの属性を設定
活用シーン
- 01部品シートの描画アニメーションを作成
- 02分解されたレイヤー表示を紹介
- 03ヘッドレス手順で映像をレンダリング
- 04カメラのタイミング調整とキーフレーム確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ enesozturk/ dimensional-drawing --skill dimensional-drawing-motionインストール後、Claude Code で/dimensional-drawing-motionを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
adapters/claude-motion.mdadapters/headless/package.jsonplayer.htmlREADME.mdrender.mjstemplates/base.cssscene-dialog.js詳細
寸法図 → モーション
dimensional-drawing スキルで作成したシートをアニメーション化します。ペンでシートを描きながら、カメラがその上を移動するように見える映像です。図面と同じルールに従います。モノクロ、内容ではなくスロット、可変コード、ブランド表記なし。
templates/scene-dialog.js と templates/base.css から始めます。これが参照映像です(11 秒、1920×1080、60 fps)。これをベースに調整してください。白紙から始めないでください。
実行環境
| 環境 | 使用するもの |
|---|---|
| Motion アーティファクトタイプを使う claude.ai 上の Claude | adapters/claude-motion.md。これが主要な調整済みターゲットです。 |
| Claude 以外のエージェント/Claude を使わない場合 | adapters/headless/:Playwright で各フレームを描画し、ffmpeg でエンコードします。npm install を実行してから、node render.mjs --scene … --css … --out film.mp4 を実行します。 |
どちらの場合もシーンファイルは同じです。必要なのは小さな kit(seg, lerp, eo, ei, eio, clamp01, stage, h, css, scene)だけです。また、シーンは時間の純粋関数でなければなりません。render(t) は、前のフレームの状態ではなく、時間 t のみからすべてのプロパティを設定します。これにより、ヘッドレスレンダラーが任意のフレームに移動できます。
その他のアニメーションライブラリ(Remotion、Motion Canvas、GSAP、Lottie など)はテストされていません。シーンは純粋関数なので移植は可能ですが、まずライセンスを確認してください(Remotion は 3 人を超えるチームで会社ライセンスが必要です)。
演出(参考タイミング、秒)
シーン時間は t = t / 0.85 でスケーリングされるため、以下の数値は画面上で約 15%速く進みます。この係数を変更すると、映像全体を速くしたり遅くしたりできます。
- 0 – 2.3 · ヘッダーのクローズアップ。 図面の左上を約 4.4×で表示します。外枠が左上の角から描かれ、続いてリードサークル、X ボックス、タイトルスロット、ヘッダーの区切り線、ヘッダー寸法(S1、Z1、S5、H1)が描かれます。わずかにドリフトさせます(z 4.4 → 4.2)。
- 2.3 – 4.2 · 図面全体へ引きます。 ログズームで約 1.7×にします。移動中に、残りの図面を描きます。トレイルコントロール、ボディウェル、コンテンツスロット、ラベル/値スロット、フッターアクション、中心線、上/下/左/右の連鎖寸法、半径引出線、ボックス付き注記、詳細円、ビュータイトル。
- 4.2 – 7.2 · レイヤーが浮かび上がります。 カメラを、分解図がある左側へゆっくり移動させます。コンテナー → ボディ → スロットの複製を、平面図のマトリックスから軸測投影のマトリックスへ変形させ、各 Z 座標まで上昇させます。線を先に、塗りを後に描きます(塗りは
a+0.55からa+1.25にかけてフェードインします)。そうしないと、白い塗りが図面の上に一瞬表示されます。固定された下部レイヤー(ビューポート、スクリーン、シャドウ)は、これらの下に描きます。続いて引出線とレイヤーラベルを描きます。 - 7.2 – 9.2 · シート全体へ引きます。 ズームを 1.0 にします。シートの枠線を描き、続いて注記、表、詳細ビュー(ヘッダーコントロール、フッターアクション、ビューポートの配置、入れ子の角、フィールド、半径の詳細)を、それぞれ 0.3~0.5 秒で描きます。
- 9.2 – 終了 · 静止。 ごくゆっくり押し込み(z 0.998 → 0.988)、最終フレームが止まったように見えないようにします。
合計約 11 秒です。映像の長さは 8~15 秒にしてください。
テンプレートの仕組み
- 1つのSVG、1つのカメラ。 シートは
viewBox 0 0 1900 1060(描画幅の1700より広く、最終フレームが左右の余白なしで16:9を埋めるサイズ)で、init内で一度だけ描画されます。ラッパー.dw-camには、カメラキーDW_CAM = [{t, cx, cy, z}]からtranslate(960 − cx·z, 540 − cy·z) scale(z)が適用されます。イーズイン・イーズアウトと対数ズーム(exp(lerp(log z0, log z1, p)))で補間するため、ズームが滑らかに見えます。 - 登録。 グループを描画する前に
at(start, stagger, dur)を呼び出します。その後にmk()で作成した各要素には、ウィンドウ[start + i·stagger, … + dur]が設定されます。要素は描画順にグループ化します:輪郭 → 構造 → スロット → 寸法 → ラベル。 - 要素は2種類です。
d(描画):実線のストロークです。pathLength=1、strokeDasharray: 1 2、strokeDashoffset: 1 → 0をイーズイン・イーズアウトで適用します。塗りは最後の45%の間にフェードインします。f(フェード):テキスト、破線のスロット、中心線、包絡線、ハッチングです。不透明度をイーズアウトで変化させます。破線には破線アニメーションの手法を使えないため、フェードさせます。
- モーフグループ。
mg(z, start)は、行列をflat = [k,0,0,k,PX,PY](平面図)からiso = [.94s,.17s,−.34s,.47s,TX,TY]へ線形補間するグループを作成し、ty からz·vを差し引きます。グループの拡大縮小中もストローク幅が一定になるよう、各フレームで--u = 1/√|det M|を設定します。 - パフォーマンス。 値は1/400単位に量子化し、変化がない場合は更新をスキップします。モーフグループの塗りは一度だけ取得します。
新しいコンポーネントへの適用
- 図面シートのジオメトリ(平面図の原点
PX, PY、スケールk、r()/dimH()/dimV()/rad()/nb()/detailRef()/table()/notes()の呼び出し)をテンプレートのヘルパーを維持したままinitにコピーします。 - 新しい平面図に合わせて
at()のタイムラインを書き換えます。最も特徴的な角(ヘッダー、ハンドル、切り欠き)から始め、カメラを引きながら平面図の残りを描画します。 - 分解図のレイヤーを列挙します(下部の静的なレイヤーには
G(z)、持ち上がるレイヤーにはmg(z, start)を使います)。各レイヤーの間隔は0.1秒にします。 DW_CAMのカメラ位置を設定し直します:クローズアップ → 平面図の中心 → 分解図の中心 → シートの中心(950, 530、z ≈ 1)。- 重要な場面のフレームを確認します(シーン時間で0、1.2、2.4、3.3、4.6、5、5.9、6.6、8、10、11秒)。次の点を確認してください:要素が描画されず突然表示される、塗りが点滅する、移動中にラベルがフレーム外に出る、最初の1秒が慌ただしい。
- レンダリングします(Motion export、または
render.mjs)。
モーションのスタイルルール
- 一度に先導するのは1つだけです:視線はペンを追います。寸法線は対象の形状を描いた後、ラベルは引出線の後に表示します。
- カメラとストロークはイーズイン・イーズアウト、フェードはイーズアウトを使います。バウンス、オーバーシュート、色は使いません。
- 背景は白、線は
#111、グレーのみを使用します。大文字には Arimo/Helvetica を使い、文字サイズはシートと同じにします。 - 指示がない限り、音楽やナレーションは入れません。
映像の長さと、各場面で何を見せるかを1~2文で答えてください。