mcpField
S
scenario-maya-animation

scenario-maya-animation

github.com/scenario-labsクリエイティブ・メディア1.2k176 回インストール1 日前に更新
リポジトリ

scenario-maya-animation について

アニメーター向けのMayaアニメーションスキルで、ショット計画、ブロッキング、スプライン調整、表情アニメーション、仕上げを扱います。フレーム単位の分析と、プレイブラストまたはヘッドレス画像のレビューを組み合わせます。

主な機能

  1. 01フレーム単位のビートとタイミング計画
  2. 02各コントロールのポーズブロッキング
  3. 03アニメーションカーブの調整と評価
  4. 04軌跡、接地、ホールドの分析
  5. 05表情とリップシンクの作成

活用シーン

  1. 01キャラクターショットの計画とブロッキング
  2. 02ジャンプのタイミングと着地の確認
  3. 03動きのオーバーラップとホールドの調整
  4. 04台詞と表情のアニメーション

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/scenario-labs/skills --skill scenario-maya-animation

インストール後、Claude Code で/scenario-maya-animationを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
critique.md
expert-notes.md
gui-paths.md
procedures.md
sources.md
scripts/
mx_anim.py

詳細

Maya アニメーション(アニメーター)

熟練したアニメーションでは、すべてのフレームが選択です。カメラから見て絵として読み取れるポーズ、意図的に配置されたホールドとスナップ、設計された間隔、抵抗と受け止める停止によって示される重さが求められます。大きな要素から小さな要素へ(ストーリー、体、顔、ディテール)と進めます。まだ読み取れない段階にディテールを加えてはいけません。エージェントはスクラブできないため、測定(ワールドとスクリーン上の軌跡、間隔、ホールド、接地、弾道フィット、オーバーラップの遅れ)を行い、完了と判断する前にプレイブラストまたはヘッドレスシートを確認します。ここに記載された同系統のスキルが利用可能なスキルにない場合は、ユーザーにインストールを依頼してください (npx skills add scenario-labs/skills --skill <name>)。無人で作業する場合は、ツールのスキーマに従って進め、不足している点を明示してください。

必須の背景知識: scenario-maya-expert(実行チャンネル、レビューの反復、2027年版の落とし穴)。

ツールキット:scripts/mx_anim.py。分析と画像処理のレイヤーは純粋な Python で、オフラインで動作しました。

スタンス(専門知識による差分)

  • ショットごとにワークフローを選び、情報がそろったらブロッキングを終えます。 Neistadt:演技にはポーズ・トゥ・ポーズ、流れにはストレート・アヘッドまたはエクストリームを使います。主要な5つのカテゴリ(メイン、予備動作、オーバーシュートとフォロースルー、ブレークダウン、ホールド)がすべてそろったら、ブロッキングは完了です。Elver は物理的なショットを最初からスプラインで作ります。Camporota はまず2つのボックスでタイミングを確かめます。
  • Maya は「世界で最悪のインビトゥイナー」です(Newman)。 キーを設定します。速い動作にはキーを密に、ゆっくりした動作には2~4フレーム間隔で設定します。スプラインに移行できるかはテストで判断します。範囲をスプラインにして再生し、動きがぼやけたら、ポーズを増やしてステップに戻します。ネイティブの Set Key は隣接するカーブの形を変えます(Wade)。キーを挿入し、カーブの差分で確かめ、スプライン化する前にすべてのコントロールでキーを共有します。
  • 重さは抵抗、次に解放、そして受け止める停止で表現します。 Wade:キャラクターの力を示す前に、何に抗っているか(遅れ、静止状態からの加速)を見せます。力強さはフレーム数で表現します。Elver:上下の動きを増やしすぎると、重さではなく風船のように見えます。重さとは、落下を急に受け止める動き、大きめのスクワッシュ中のホールド、残る揺れです。重い空気の動きには重力に忠実な物理を使います[追加された物理表現]。Wade の重みのある頂点では、軽い体やカートゥーン調の体にハングを加えます。
  • 足と背骨が、あらゆる体重移動(ジャンプ、ホップ、着地、持ち上げ)を伝えます。 Camporota:しゃがむ動きでは毎回、足のロールをアニメーションさせます。圧縮が伝わります。大きく落下するときは、背骨が腰に遅れてついていき、腕だけが下がります。最初のパスでは予備動作を大げさにしすぎるので、少し抑えます。接地は「ほぼ1フレームで」平らになります。Elver:空中に出る最初のフレームでは、つま先が地面を離れた位置を向きます。
  • カメラ空間で、動きの速さを確認して判断します。 Elver:モーション軌跡では完璧な3Dの弧に見えても、画面上ではうまくいかないことがあります。Lazare:目は最も大きな動きに向かうので、焦点ではないキャラクターは「適切に静止」させます。ショットカメラを通して軌跡を投影し、指標を見る前にプレイブラストを確認します。
  • ベースレイヤーがアニメーションであり、モーキャプは貴重です。 Newman:レイヤーは、マーカーキーと保護キーを使う期間限定の実験です。そのレイヤー上のカーブを整えてはいけません。Smart Bake でマージしてから整えます(Elver:後半の全体調整や加算的な震えだけに使い、その後ベイクします)。モーキャプでは依頼された不具合だけを修正します。さもないと修正が連鎖し、「手付けでもモーキャプでもない」状態になります。マージ後に Euler フィルターを適用し、キーを削除して極値だけを残します。
  • リップシンクでは言葉ではなく音をアニメーションさせます。 Santos:まず顎だけを動かす(マペットパス)ことで、その後、90%の精度を担う主要な5つ(顎、両口角、上唇、下唇)を動かします。調音位置に合わせて先行させ、両唇音はそのフレームに合わせます。Lazare:セリフ全体の再生が遅れている場合に限り、すべての口のキーを1~2フレーム早めます。
  • 仕上げは優先順位をつけて行い、レビューは大きな要素から細部へ進めます。 Elver は指摘事項に順位をつけ、効果のある箇所に時間をかけ、接地するすべてのフレームに責任を持ちます。Newman は「意図」「メカニクス」「演技」「統合」で評価します。プレイブラストだけでは、ゲームでの手触りは証明できません。

まず確認すること

入力これによって計画が変わる理由指示がない場合のデフォルト
スタイルと用途つぶし、停止、参考素材への忠実度:カートゥーン調では大きく押しつぶし、実写ではポーズのつぶしと間のない動きが必要です(Elver)。VFXでは参考素材に近づけます(Neistadt)。リアルな長編映画のクオリティ
フレームレートタイミングの数値、currentUnit24 fps(film)
重さと力抵抗するフレーム数と、乗り越えるフレーム数(Wade:まず両方の数値を決めます)重い動き:抵抗の拍は2フレーム以上、間を空けない
リグコントロール名、IK/FK、スペース、フットロール属性(listAttr(keyable=True) で一度マッピングします)手はIK、ショット内でIK/FKやスペースを切り替えない(Newman)
カメラ固定されたショットカメラだけを基準に判断します。ゲームではすべてのアングルとゲームエンジンも必要です。ショットカメラを作成して固定します
参考素材、音声動きの目印(接地、踏み切り、頂点、着地、まばたき、視線移動)がリズムを作り、その後に動きを強調します(Neistadt)。指示内容から拍のリストを作成します
ゲームの基準値アニメーション前に速度と高さを丸めた数値で合意します(Newman)。ルートモーションかその場での動きかも決めます(Epic)。その場での動き、基準値シートを依頼します

ワークフロー

  1. 数値で計画します。 ビートごとのフレーム数、各ビートの主役、キーとなるカテゴリ、接触、 ウィンドウ(しゃがみ、押し、空中、衝撃)、スタイルを決めます。A.store_plan(plan)。物理的なショット: A.air_frames(rise, drop)で空中時間を割り当てます。台詞:サブテキストと動詞を含むフレーズ、 ルール化した音(M、B、P、F、V、L、T、D)、2~4個の要所(Santos、Wade)。ゲート:フレーム数の合計が 合っていること。
  2. セットアップします。 fps、範囲、サウンド、ショットカメラを固定し、タンジェントのデフォルト値を確認します(2027 notes)。ゲート: mx_validate.validate(profile="shot", rules={"fps": 24})で失敗がないこと。
  3. プロキシパス(大きく速い動き、またはカメラに制約される動き)。 A.proxy_boxes()で、 キーを設定して移動と傾きを付け、空中の動きにはA.ballistic_keys()を使い、回転は1~2フレーム遅らせます(Camporota)。最初の予備動作は 大きすぎることが多いため、A.scale_curve(root, "translateY", 0.8, rest_y, time=crouch)を使います。ゲート: プロキシに対してA.evaluate_gates()を実行します(ballistic、catch、resistance、push_fastest)。 proxy_curves.pngを確認します。
  4. ブロッキング、ステップ補間。 A.set_key_defaults("blocking")を設定し、A.key_pose(pose, f, fill=ctrls)で すべてのポーズのすべてのコントロールにキーを設定します。パス:メイン、予備動作、オーバーシュート、ブレイクダウン(隣接するキーを優先し、50/50にはしない)、ホールド(A.key_hold())。 A.share_keys(ctrls)を使います。ニュートラルなリグのポーズから動作を始めてはいけません(Neistadt)。しゃがみポーズ:足のロールにキーを設定し、背骨を引きずり、腕を垂らします(Camporota)。 ゲート:すべてのキーのカテゴリが揃っていること。ステップ補間のプレイブラスト(GUI)またはtracks.pngを確認し、読み取れるストーリーを書き出してからシルエットをチェックします。
  5. スプラインパス1、コア。 snap = A.snapshot(ctrls)(バッファカーブ)を取得し、COG、背骨、脚のみに A.to_spline()を適用します。顔、目、指はステップ補間のままにします(Camporota、Santos)。空中の動きは重力に忠実にし、 ハードランディングではタンジェントを崩し(Newman)、接地した足は平らにします。動きが柔らかすぎる場合:A.restore(snap)を実行し、ポーズを追加します。以降のキーはすべて: A.insert_key()を実行してから、サンプリングしたスナップショットに対してA.curve_diff()を確認し、2つのセグメントの外側なら問題ありません (P4)。ゲート:A.run_gates(plan)のballistic、hang、catch、slide、 penetration、foot_roll、spine_drag、heel_to_flatが合格すること。ホールド中にA.overshoots()がないこと。
  6. スプラインパス2、オーバーラップ。 腕、頭、二次動作:まず相関する連鎖をまとめて編集し(Newman)、その後、連鎖に沿って A.offset_keys()で1~2フレームずらします。ゲート:overlapの遅れがすべてゼロではないこと。 pose_to_pose_tellが低いこと。カメラ内のトラックがきれいであること。
  7. ショットに顔がある場合は、顔を作業します。 まず体、次にマスク(目、眉)、最後に口の順にします。マペットの 顎はA.mouth_keys(phonemes)でキーを設定し、五大要素、舌、接続にはA.copy_curve()を使います(鼻孔は口角より1フレーム遅らせ、減衰させます)。 目はリニアにし、2フレームの視線移動を付けます。まばたきは、開くときより速く閉じます。ゲート:A.jaw_report()、A.lip_lag()とA.audio_envelope()の照合、A.blink_report()、 A.transitions()を確認し、要所のクローズアップを確認します。
  8. 優先順位を付けてポリッシュします。 優先度が最も高い指摘から、一度に1セクションずつ修正します。接触と速い動きは1コマ単位で調整し、 すべての踏み切りで足を離します。衝撃には押し込むスクワッシュと長めのホールドを付けます。ポップは弧に沿った3 フレームとオーバーシュートにします。A.retime()でセクションを引き締め、動くホールドを付けます。最終版の前に モーションブラーを使ったレンダーを作成します(いずれもElver)。ゲート:すべてのゲートに合格すること(peel_off、impact_holdを含む)。レイヤーを統合し、サブフレームがなく、Eulerをフィルター処理し、最終プレイブラストに対するcritique.mdを用意します。

バリエーション。 サイクル:3フレームごとにポーズを作り、ポリッシュの前にA.cycle()でループさせます。サイクル内のオフセットで周期を維持します。 ゲームクリップ:メトリクス、A.cycle_speed()、ループの継ぎ目、ルートルールを確認してから、scenario-maya-pipeline-scriptingを使います。モーションキャプチャ:手順P12。リターゲット:P13。重量のあるインタラクション:P9。

数値

値基準出典
重力 1.703 cm/frame^2 (981/576)24 fps、シーンの単位は cm物理学 [追加]
3 フレームごとの歩行キー:接地 1、ダウン 4、パス 7、アップ 10、接地 13;1 から 25 までループ24 フレームサイクルCamporota
タッチダウンから足裏が平らになるまで約 1 フレーム、最大 2 フレーム;歩行時の腕のオフセットは 0、1、2、頭部は 1各ステップと着地Camporota;body digest
回転は移動に対して 1~2 フレーム遅れるプロキシとボディCamporota
速い動作では 1 フレームごと、遅い動作では 2~4 フレーム間隔でキーを設定ブロッキングNewman
まばたき:閉じる 2 フレーム/開く 4 フレーム(または 3/5;目が大きい場合はさらに 1 フレーム)フレームElver
視線移動は 2 フレーム、リニア;眉はまぶたより 1~2 フレーム先行し、5 フレーム先行は避けるフレームElver
キレのある動き:弧を描く 3 フレームに小さなオーバーシュートを加え、1 フレームだけにはしないフレームElver
全体的なリップシンクのずれは 1~2 フレーム早める;フレーム 1 でほぼ全開にする速度が速く遅れている場合Lazare
主要な 5 つの形状でリップシンクの 90% を表現;あごと口角で 50~60%コントロールSantos, Elver
ゲーム内速度:歩行 2、走行 4~6、全力疾走 12~15 m/sデフォルメされたプレイヤーNewman
プレイブラストの既定スケールは 0.5:percent=100 を渡すアクティブビューMaya 2027 Help

品質ゲート

測定可能(A.run_gates(plan);純粋ロジックは A.evaluate_gates)。プラン内のあらゆるジャンプ、ホップ、着地、重心移動が対象です: fps;重量感のある空中時間の g_ratio は 0.8~1.25、滞空時間の超過は最大 1 フレーム、水平速度は一定;受け止め動作(2 フレーム以内に落下速度の 60% 以上を減速し、減速は回復動作より短くする)、その後、最下点で 3 フレーム以上静止;最も速いのは蹴り出し;重量感のある抵抗のビートは 3 フレーム以上静止;すべてのしゃがみ動作で足が回転し、脊椎は腰に遅れる;タッチダウン時は 2 フレーム以内に足裏を平らにする;離陸時のつま先は踏み切り位置から 30 度以内;接地した足の移動は最大 0.2 cm/frame、貫通は 0.5 cm 未満;着地前に伸ばす;衝撃以外でポップさせない;オーバーラップに遅れをつける;動作中の終端ホールド;スプライン化後、予告動作は 90% 未満;サブフレームを使わない;仕上げ段階ではレイヤーを使わない。[追加] しきい値はツールキットの既定値です。視覚的な確認: A.review_images(plan, out)(ヘッドレス:curves.png はレーンを積み重ねて表示、tracks.png はオニオンスキンのポーズ付きカメラスペーストラック);GUI では A.playblast_pack()(ショットカメラとライトなしのシルエット)およびステッププレビューのプレイブラストを使用します。フレームを時間順に読み、数値を見る前に初見での読み取り結果を記述します(critique.md)。

よくある間違い

間違いどのように見えるか修正方法
ポーズを入れる前にスプライン化する動きがぼやける、腕が胴体を通って補間されるA.restore(snap)を実行し、ブレークダウンをステップ補間で追加する
全身を同じフレームで均等に動かす浮ついた動き、「ポーズを決めている」ように見える隣接するフレームやホールドを活用し、チェーンに沿ってoffset_keysを適用する
初回のアンティシペーションをそのまま残すしゃがみがアクションを目立たなくする静止値を基準に、A.scale_curve(..., time=crouch)を適用する
胴体を腰に固定し、しゃがむときに腕を後ろに振る硬く、ありきたりなアンティシペーション背骨を腰より遅らせ、腕だけを下げる
しゃがみで足裏が平ら、離陸時につま先が前を向き、着地時に平らになるのが遅い圧縮感が弱い、踏み込みがない、足音が強いフットロールを使う。つま先を離陸地点の後ろに向け、1~2フレーム以内に足裏を平らにする
重い体に様式化された滞空を適用する頂点で浮ついて見えるballistic_keysを使い、頂点をフラットにし、接地の接線を崩す
力を入れる前の抵抗がない発泡スチロールのように軽く見える踏み込む前に2フレーム以上、力む動きを入れる
対称的に沈む、またはスクワッシュからすぐ跳ね返る着地が軽く見える急に受け止め、ホールドを長くし、オーバーシュートを1回入れ、ゆっくり回復させる
スプライン化されたカーブに対してSまたは素のsetKeyframeを使う隣接キーが再形成され、ホールドがずれるA.insert_keyの後にA.curve_diffを実行する
ホールドを通してスプライン補間するホールドがずれていくkey_holdのピラーを使い、両側をフラットまたはプラトーにする
3D軌跡でアークを確認する軌跡はきれいだが、画面上のアークが崩れているcamera_trackのピクセルトラックを使う
音に合わせてリップシンクのキーを打つ再生速度を上げると遅れる音ごとに先行させてから、全体をシフトする

引き継ぎ

scenario-maya-riggingおよびscenario-maya-deformationから受け取るもの:参照されたリグ(インポートはしません)、クリーンなvalidate(profile="rig")、IK/FK、スペース、フットロールの属性を含むコントロール一覧、可動域のプレイブラストです。リグの問題(膝の飛び、スペースの反転)はフレームを記したメモとともに差し戻します。scenario-maya-lighting-renderingにショットを納品する際は、新しい保存済みバージョン、クリーンなvalidate(profile="shot")、統合済みレイヤー、削除済みヘルパー(A.delete_helpers())、失敗項目のないrun_gatesのJSON、エージェントが確認した最終プレイブラスト、未検証の項目を含めます。scenario-maya-pipeline-scriptingにゲーム用クリップを納品する際は、クリップごとにベイクしたスケルトン、クリップ名と範囲(ブックマーク)、ルートのルール(その場での動作またはルートモーション)、ループの継ぎ目と速度のレポートを含めます。

Maya 2027 の注意事項

  • デフォルトのタンジェントは、あるドキュメントページでは「Auto Span (Legacy)」、別のページでは「Clamped」です。次のクエリで確認してください: keyTangent(q=True, g=True, itt=True). 「Lock/Free Tangent Weight」は「Tangent Length」に、「Butterworth」は「Smooth Filter (Butterworth)」に変更されました。
  • Time Slider > Enable Stepped Preview。スクリプトでは A.stepped_preview() が同じ機能を提供します。Dope Sheet の Time Snap は 2025.1 以降オフになっており、scaleKey ではサブフレームが残ります:A.snap_subframes().
  • Ghost Editor と Motion Trail Editor は Visualize の下にあります。スキンメッシュをゴースト表示するには Cached Playback が必要です(モーションブラー、Trax、従来型ダイナミクスを使用すると無効になります)。
  • Playblast にはモデルパネルが必要です(GUI では mx_bridge 経由)。mayapy では review_images または Arnold の静止画を使用してください。
  • Sequencer(旧 Camera Sequencer):すべてのカメラをロックしてください。HumanIK のベイクは専用ウィンドウから行い、Bake Simulation は使いません。Time Editor のクリップとアニメーションレイヤーは混在できません。Blue Pencil は Grease Pencil に置き換えられました。

参考資料

  • references/expert-notes.md:専門家ごとの原則と数値、タイムスタンプ、判断条件が記載されています。方針を選ぶときやメモを書くときに読み込んでください。
  • references/procedures.md:mx_anim API と、テストパスを含む完全な手順が記載されています。コードを書く前に読み込んでください。
  • references/critique.md:レビュー基準(初見時の読みやすさ、4つの分類)、監督用語、メモの形式が記載されています。各ゲートで読み込んでください。
  • references/gui-paths.md:メニュー、ホットキー、エディター設定が記載されています。コンピューター操作エージェントまたは人間が使う際に読み込んでください。
  • references/sources.md:すべての情報源、認証情報、URL、最適なタイムスタンプが記載されています。

コメント