mcpField
S
scenario-maya-modeling

scenario-maya-modeling

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

scenario-maya-modeling について

ハードサーフェス、有機モデル、プロップ制作を対象とする、Agent向けのMayaモデリングスキルです。トポロジーの指針とスクリプト検査を組み合わせ、品質確認と引き渡しを支援します。

主な機能

  1. 01目的に沿ったトポロジー設計
  2. 02ブロックアウトから納品までの手順
  3. 03スクリプトによる形状監査と検証
  4. 04ハイライトとシルエットのレビュー
  5. 05ゲーム、サブディビジョン、変形の検査

活用シーン

  1. 01ゲーム用プロップメッシュの制作
  2. 02クローズアップ用サブディビジョンモデルの準備
  3. 03アセット引き渡し前のトポロジー確認

インストール

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

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

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

同梱ファイル

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

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

詳細

Maya モデリング(ハードサーフェス、有機的な形状、小道具)

エキスパートによるモデリングとは、目的のあるトポロジーを作ることです。各ループはシルエット、ハイライト、ベイク、UV シーム、または関節のために存在し、モデルは後工程で次の担当者がクリーンアップする必要のない状態で渡されます。エージェントは大きな形状から細部へ進み、ツールキットで各段階を計測し、金属のハイライトをレンダリングしてからサーフェスを確認します。ここで挙げた同系列のスキルが利用可能なスキルにない場合は、ユーザーにインストールを依頼してください(npx skills add scenario-labs/skills --skill <name>)。無人で作業を進める場合は、ツールのスキーマに基づいて進め、不足している点を明記します。

必須の背景知識: scenario-maya-expert(実行チャネル、レビューループ、2027 年版の注意点)。 ツールキット:scripts/mx_modeling.py (sys.path[:0] = ["<skills>/scenario-maya-modeling/scripts", "<skills>/scenario-maya-expert/scripts"]; import mx_modeling as MM)。 mx_audit、mx_validate、mx_review、mx_run と併用します。Maya ではまだ実行していません: 純 Python レイヤーのオフラインテストには合格していますが、Maya の呼び出しはすべて tests/code/maya-modeling/run_all.sh での実行待ちです。

方針(エキスパートとの差分)

  • まず目的、次に密度。 CAD やブーリアンの静止画ならクリーンなトポロジーを省略できる場合がありますが、ゲーム、アニメーション、クローズアップではそうはいきません(Mario Elementza [00:00:32])。最小密度は最も狭い特徴、つまり「2 つのエッジ間の最短距離」です [00:17:19]。その後、カメラからの距離で判断します。密度が低い場合はエッジを迂回させ、わずかにピンチさせる必要があります(背景)。密度が高い場合はどちらも不要です(ヒーローのクローズアップ)[01:09:20] [01:39:46]。実際のコストは頂点数です。UV シーム、ハードエッジ、マテリアルによって頂点が分割されます。UV シーム上のハードエッジは追加コストがかかりません(Polycount)。
  • クリーンな未カット形状を作ってから切り込みます。 平面では切る前にオフセットします。オフセットしたリングがサポートループになります。曲面ではディテールを加える前にサポートループを切ります(Mario [00:16:13] [00:38:16] [01:19:49])。
  • 均一なグリッドを保ち、二重にしません。ループが証明になります。 隣り合うクワッドの比率は 2:1 未満にします(Mario [00:08:31])。途切れるループは未解決の領域を示し、突然行き止まりになるループは隠れた二重押し出しを示します [00:18:57] [00:39:22]。
  • 三角形は取り除き、解決し、戻します。N ゴンは使いません。 ケージでは三角形を取り除いて残りを解決し、金属テストに耐える場所に限り 1 つだけ戻します。平面は許容しますが、曲面や変形する領域では許容しません(Mario [00:20:36] [00:29:59];Jessica Dru Johnson [01:12:33])。ゲーム用ローポリでは、三角形によってループを局所的に終端させます(On Mars [00:10:29])。クリーンアップで修正するのは、ラミナ、非多様体、長さゼロのジオメトリだけです。N ゴンは手作業で処理します(FlippedNormals ToWRH4IXF7A [00:11:15] [00:11:50])。
  • シリンダーは四分割し、キャップはクワッドにして、ループはリングのみとします(Mario [00:57:43] [01:12:04] [01:14:16];Pixar OpenSubdiv:高バレンスのファンは使用しません)。
  • エッジを保持する方法は最終用途に合わせて選び、サブディビジョンは 1 か所で行います。 Arnold は Smooth Mesh Preview の状態を自身のイテレーションに重ねてレンダリングするため、保存時には毎回プレビューをオフにします(Arnold subdivision doc;FlippedNormals [00:24:00])。クリースはエクスポート時に失われます(antCGi RlNnp4qQIrU [00:28:12])。
  • 変形用トポロジーはモデラーの責任です。 関節ごとにコントロールを 1 つ、サポートループを 2 つ配置します(Jessica [01:15:51])。アイソレーションループでコントロールを囲み [01:14:11]、変形するサーフェスにポールを置きません(antCGi QW8w15J00Ok [00:09:58])。設定を同一にした 2 つのトポロジーを曲げて修正を実証します(antCGi x07USYlvu2o [00:16:24])。
  • 衛生管理は納品条件です。 修復より作り直しを優先し、短く一意な名前を付け、レンダリング統計はデフォルトのままにします。両面ライティングは反転した面を隠します(FlippedNormals [00:08:31] [00:18:16] [00:02:35] [00:20:47])。

最初に確認すること

入力変更する内容指定がない場合のデフォルト
用途エッジ保持方式、三角測量、法線エンジン名が挙がっていればゲーム(PC/コンソール)、それ以外はオフライン SubD
ポリゴン数の予算削減量リードに確認します。それまでは On Mars の基準を目安にします(手榴弾クラスのプロップ):画面上で大きく見えるヒーロープロップは 20k~30k tris、画面の 10~15%を占めるセカンダリまたはターシャリのプロップは「かなり少なく」(数値の指定なし)、背景は 10k または 5k。tris とエンジン上の頂点数を報告し、保持するエッジそれぞれの理由を説明します
カメラ距離保持する最小幅の特徴、密度と方向転換のバランス、角の丸み中景。プレイヤーが近づける距離です[レポートに記載する前提]
変形関節あたりのループ数、ウェイト付き法線を使わない、対称性プロップではなし。キャラクターではあり
サイズ、単位ベベル幅、テクセル計算実寸を cm で指定し、接地させます。Z-up のエンジンでも Maya シーンは Y-up のままにします(FBX のエクスポートまたはインポート時に軸が変換されます)
ピボットエンジンへの配置原点を底面の中心にします。レベルを角でスナップする場合は角にします(Epic)
テクスチャセット重ね合わせ、ミラーリング、UV22048、固有の UV(UV は scenario-maya-retopology-uv に属します)

ワークフロー

各ステージはヘッドレスの mx_run ジョブで、プレビューをオフにして新しいバージョンを保存します。GUI ブリッジはプレイブラストとインタラクティブツールに使用します(代替手段は references/procedures.mdを参照)。コンポーネントリストをステージ間で引き継ぐ場合は、MM.component_record と MM.carry_components のみを使用し、名前や、トポロジ編集前に読み取ったインデックスは使用しません(P18)。

  1. セッションとブリーフ。 cmds.about(version=True)(Smart Bevel は 2027.1 と 2027.2 で変更)、単位は cm、Y 軸を上方向に設定し、ブリーフは数値で記述します(P1)。GATE:前提条件を文書化します。
  2. 実寸でのブロックアウト。 プリミティブは作成時に名前を付け、グリッド上に立たせ、規約に従ってピボットを設定し、フリーズしてヒストリを削除します(P2)。GATE:mx_audit でフリーズ済みであること、default_name または duplicate_short_name がないこと、寸法が 2% 以内であること[追加]を確認し、シルエットとクレイのシートをリファレンスと比較します。
  3. プライマリフォームとクリーンなグリッド。 最も幅の狭い特徴(溝、くぼみの壁、隙間)とその幅を書き留めます。その近くのグリッド間隔はその幅に合わせ、残りはそれに合わせてバランスを取ります。カメラからの距離に応じて、コーナーごとに密度を上げるか、エッジを流すかを決めます。最大のクワッドを閉じてバランスを取り、ループを追加してストレステストします(Mario[00:10:11])。カーブには Edit Edge Flow を使用します(antCGi[00:16:04])。GATE:サポートループを追加する前に MM.balance(m)["edges_over_limit"] == 0 を満たすこと。MM.cage_report(m) で、N ゴンが 0 であること、カーブ上の三角形がすべて削除されているか、ハイライトレビューで問題ないと確認されていること、ワイヤーシート上でループが連続していることを確認します。
  4. セカンダリフォーム。 MM.extrude(faces, offset_cm=...) を実行してからくぼませます(P3。空の押し出しは拒否されます)。開口部は 1 つのクワッドから作成します。シリンダーには MM.cylinder_sides_for と MM.build_quad_cylinder を使用します(P4)。開口部を作る前にサポートループを切ります。または、マニホールドメッシュに polyCBoolOp を適用し、その後 Smart Bevel を使用します(P5)。GATE:長さ 0 のエッジ、重複ペア、非マニホールドをすべて 0 にします。
  5. 適用先に応じたエッジ保持:
    • SubD のヒーローアセット、またはベイク用のハイポリで、ポータブルにする場合:サポートループ(オフセットリング、ベベル付きキューブのコーナールーティング、Mario[00:44:24])。
    • Maya、Arnold、または USD で SubD を維持する場合:クリースを 1 つの方法で使用し、値はレンダーレベル以下にします(MM.crease、MM.crease_report、P6)。
    • ゲーム用ローポリ:MM.bevel による面取り(ブーリアン後は Smart Bevel、クリーンなクワッドには旧式の Fractional)に加え、MM.weighted_normals を使用します。または、UV シーム上のハードエッジとベイクした法線マップを使用します(Polycount)。
    • CAD またはブーリアン由来のままにする場合のみ:Smart Bevel を使用し、リトポロジーは行いません。GATE:MM.cage_report(cage)["ready_to_smooth"](ハードエッジ 0。ファセット状のパッチもハードエッジです。Mario[01:28:38]。ファンキャップなし。6 個以上のポールには根拠があること)。MM.highlight_review(..., subdiv=n) で、すべてのカットを横切るストライプが連続していることを確認します。ベベルの problems が空であること、crease_report がクリーンであることを確認します。
  6. ゲーム用ローポリとベイク準備(P10)。ハイポリから MM.smooth_copy を作成します。ケージを複製し、エッジを削除する方法のみでローポリにします(シルエットから離れたエッジには MM.flat_edges を適用し、ループは三角形で終わらせます)。丸いコーナーではエッジを丸め、間隔を均等にし、頂点に 1 本配置します(On Mars[00:12:50][00:26:34])。ボディに接するパーツは溶接するか、隠れた面を削除します(Polycount:連続したローポリ)。MM.shrink_wrap、MM.set_hard_by_angle(low, 45) を実行します。ベイクとエクスポート用に MM.triangulated_copy(low, toward=high) を作成します。GATE:MM.deviation を記録し、シルエットが重なり合っていること、三角形数が予算内であること、エンジンでの頂点数が報告されていること、各独立シェル(polyEvaluate(shell=True))に根拠があること、diagonals_wrong_after == 0 を確認します。
  7. キャラクター:変形チェック(P13)。手首と足首を横切るループ、カウントを一致させたまぶたと唇、頬の下を通る口角のループ、中立表情を用意します(antCGi、Jessica[01:00:30])。GATE:MM.bend_test で反転がなく、以前のトポロジに対するデグレードもないことを確認します。restored が true であることを確認します。
  8. クリーンアップと引き渡し(P14、P15)。MM.cleanup_technical、MM.inverted_shells、MM.handoff_report(roots, out, to=...)、mx_validate.validate(profile="model", fix=SAFE_FIXES + ("render_stats",)) を実行し、再度レポートを生成して、新しいバージョンを保存します。GATE:レポートが ok、クリーンアップが ok、反転シェルが 0、プレビューがオフ、保留項目に名前が付いていること、シートが開いていることを確認します。

数値

値設定相対値/出典
隣接する四角形のサイズ2:1 未満ベースグリッド基準、サポートループを除く(Mario [00:08:31])
最小密度間隔 = 最も狭いフィーチャーそれに合わせて残りのバランスを取る(Mario [00:17:19])
円柱の側面数20, 24, 28, 324 の倍数、カットに合わせて配置(Mario [01:12:04])
ケージ上の丸いフィーチャー主役は約 6 スパン、背景は 4OpenSubdiv
バレンス4 は通常、6 以上は注意、GPU の上限は約 27OpenSubdiv
目に見える丸い角の半径エッジ2~3 本以上、間隔を均等にし、頂点に 1 本配置On Mars [00:25:29] [00:26:34]
ジョイントあたりのループ制御用 1 本 + サポート用 2 本、指関節は 3 本Jessica [01:15:51] [01:17:34]
クリースMaya の値 N はクリースを N 段階にする。5 を超えることはまれ。変位下では 10 で破綻するMaya Help; OpenSubdiv
スマートベベル幅はワールド単位。深さ 1 は面取り、0.5 は丸み。セグメント 1 はハード、2~3 が一般的Maya 2027 Help
従来のベベルのデフォルト比率指定、セグメント 1、深さ 1、スムージング角 30。ボックスの角ではセグメント 2Maya 2027 Help; FlippedNormals [00:18:18]
メカニカルなローポリのハードエッジ約 45 度を超える箇所、および UV シーム上Polycount
グレネードの予算ケージ 61k、ローポリ 24k。「ポリゴン」は三角形数のおよそ半分On Mars [00:04:21] [00:21:31]
シートの占有率表面 cm² x (px/cm)² / マップ px²(10.24 の場合、12,800 cm² は 2048² の 32%)計算 [追加]
サブディビジョンのコストレベルごとにポリゴン数が x4。プレビューレベルと Arnold の反復回数は累積するArnold doc

品質ゲート

測定可能なメッシュごとのチェック: mx_audit.verdict(mx_audit.audit(m, texture_size=2048), "game" | "film" | "subd", max_tris=budget) に error がなく、各 GATE で指定された MM チェックも合格していること。シーン: mx_validate.validate(profile="model") に fail がないこと。両方を合わせて MM.handoff_report を使用します。視覚チェックは毎回実施します:mx_review.review シート(シルエットと参照の比較、クレイ、ワイヤーループ、法線); MM.highlight_review で focus= を指定し、すべてのカットをクローズアップで確認します(折れ、暗い筋、揺らぎはピンチングの兆候です。Mario のフレーム 00:12:45、01:38:42)。ハイポリとローポリのシルエットを並べて比較します。GUI セッションでは、 両面ライティングをオフにするか、バックフェースカリングを使用します。判断には references/critique.md を参照してください。

よくある間違い

間違い見た目修正方法
空の押し出しループが途中で止まる。スムーズプレビューでは折れ目ができるMM.extrude はこれを拒否します。mx_audit で長さ 0 のエッジを確認します
円柱の垂直カットハイライトが揺れる側面数を増やして作り直すか、一度スムーズします
ファン状のキャップキャップの中央にくぼみができるcage_report でファン状のポールを確認します。MM.build_quad_cylinder を使用します
ケージにハードエッジが残っているスムーズ化するとパッチがファセット状になるcage_report のハードエッジが 0 になるまで polySoftEdge(angle=180) を実行します
テッセレーションを有効にした状態でクリーンアップ不規則な三角形分割MM.cleanup_technical を使用し、n ゴンは手動で処理します
保存時にプレビューが有効で、Arnold の反復も多いファイルが重くなり、レンダリングが極端に遅くなるMM.subdiv_setup を一か所にまとめます。mx_validate で smooth_preview を確認します
FBX アセットにクリースがあるエンジン内でシャープさが失われるベベルを適用するか、スムーズ化したコピーを出荷します
変形するメッシュにウェイト付き法線を設定スキニング中にシェーディングが固定されたままになる静的メッシュのみに使用します
UV シームのハードエッジが無効頂点数が増えるが、効果がないハードエッジにシームを設定します(hard_edge_components)
シェル全体が裏返っている両面ライティングがオフだと黒く、オンだと正常に見えるMM.inverted_shells で確認し、反転します
溶接せずに V スナップするスムーズプレビューでシームができるターゲット溶接を使用します。coincident_vertices を確認します
上側の角は丸く、下側は鋭いベイクにアーティファクトが出るローにエッジ半径を設定し、頂点側にも 1 つ設定します
ローが浮いている、またはパーツが交差しているベイクの抜け、重複エラー、隠れた面での UV 空間の浪費MM.shrink_wrap を使用し、パーツを溶接するか隠れた面を削除します
エンジンが対角線を選ぶ谷ではなく稜線になり、シェーディングがジグザグになるMM.triangulated_copy(toward=high) を使用し、三角形分割した状態でエクスポートします
編集後にコンポーネント ID を再利用する間違ったエッジが削除され、シルエットが失われるMM.carry_components はこれを拒否します。再導出してください
手足のループがらせん状で、胸にポールがあるウェイトが不明瞭になり、キンクが発生する同心円状のループにし、ポールの位置を変更します

引き継ぎ

  • scenario-maya-expert からブリーフを受け取ります。scenario-zbrush-expert からスカルプトを受け取ります(スケールを確認してください。ZBrush には単位がありません。向きとロックされた法線も確認してください)。scenario-3d から生成メッシュを受け取ります(参照用、またはベイクするハイポリのみ)。
  • scenario-maya-retopology-uv(UV、ベイク準備)への納品物:新しいバージョンの <asset>_model_v###.ma、_geo メッシュを含む <asset>_GRP(ゲーム用の SM_ や UCX_ などのエンジン名)、ケージ、フローターを分離し、AO 用に castsShadows をオフにした <asset>_high(Polycount)、作成済みの場合はローポリ、UV が保留中であることを示す handoff_<to>.json、UV カット用のハードエッジリスト、確認したシート。三角形化後もマニフォールドである必要があります。Unfold3D は非マニフォールドメッシュを受け付けず、三角形化したコピーを展開します(P17)。
  • scenario-maya-rigging(変形対応)への納品物:to="rigging" に適したクリーンな状態(X 軸対称、法線のロックなし、ヒストリーなし)、接地して中央に配置、目は分離して前方を向き、対称パーツは結合済み、bend_test の数値(antCGi e74K チェックリスト)。
  • scenario-maya-lookdev(フィルム向け SubD)への納品物:サブディビジョンを一か所に設定し、クリースセットに名前と値を設定、プレビューはオフ。FBX のエクスポート先は scenario-maya-pipeline-scripting です。

Maya 2027 の注意事項

  • Smart Bevel(polySmartBevel、2027):Width はワールド単位、Depth profile、Filter のデフォルトは Selected Edges です。出力は 2027.0、.1、.2 で異なります。フラグは調査するまで不明です(MM.bevel が attr_map を記録します)。ボックスの角での動作は未検証です。2 セグメントのルールは従来のベベルに由来するため、problems の集計を確認してください。従来のベベルは「legacy bevel」です。2025 以降、Filter 属性と交差部分のみをベベルするブーリアン処理が追加されています。
  • Shift を押しながらドラッグする操作は「Shift Extrude」(2025)です。Smart Extrude は重なった面を結合しますが、Edit Mesh > Extrude は結合しません。ブーリアン:polyBoolean(2023)、3ds Max エンジン(2025.3)、Volume モード(2026)。
  • Smooth Mesh Preview は OpenSubdiv Catmull-Clark です。Crease Tool と Crease Sets はコンポーネントごとに排他的です。
  • 新規シーンのデフォルトは OpenPBR Surface です。ハイライトのレビューでは aiStandardSurface を使用します。
  • Reduce はデシメーションであり、リトポロジーではありません。Quad Draw はインタラクティブ操作専用です。
  • FBX のインポートではユーザー法線を取り込めます(2027)。インポートした法線はロックされている場合があります(Mesh Display > Unlock Normals)。
  • macOS のキー:Ctrl は Control、Alt は Option です。

参考資料

  • references/procedures.md:テストパスを含む P1 から P18 までの全コードです。モデリングコードを書く前に読み込んでください。
  • references/critique.md:評価基準です。各ゲートで、また報告前に読み込んでください。
  • references/expert-notes.md:各エキスパートの推論、タイムスタンプ、意見の相違を記載しています。未経験のアセットタイプや判断に迷う場合に読み込んでください。
  • references/gui-paths.md:GUI またはコンピューター操作セッション用のメニューとホットキーです。
  • references/sources.md:情報源、認証情報、最適なタイムスタンプです。

コメント