mcpField
B
blender-asset-qa

blender-asset-qa

github.com/el4cteoクリエイティブ・メディア569134 回インストール2 週間前に更新
リポジトリ

blender-asset-qa について

blender-asset-qaは、納品前の3Dアセットを検査するBlenderスキルです。プロファイル別のメッシュ自動検査に必須の目視確認を組み合わせ、検出内容の解釈と修正方法も案内します。

主な機能

  1. 01プロファイル別のメッシュ検査
  2. 02ジオメトリとトポロジーの問題を検出
  3. 03複数の表示モードでアセットを確認
  4. 04検出内容と修正方法を説明
  5. 05三角ポリゴン数と許容した警告を報告

活用シーン

  1. 01納品前にゲームアセットを検査
  2. 02分離したパーツやメッシュの交差を発見
  3. 03トポロジーと表面のシェーディングを確認
  4. 04印刷やRobloxのメッシュ要件を検証

MCP 対応

ライブでの目視確認では、MCPのlook機能を使い、対象を角度別、マテリアルまたはソリッド、ワイヤーフレーム表示で確認します。ヘッドレス確認には付属の画像レンダリングスクリプトを使います。

インストール

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

$npx skills add https://github.com/el4cteo/blender-skills --skill blender-asset-qa

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

同梱ファイル

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

scripts/
_bpyx.py
qa_check.py
review_shots.py

詳細

アセット QA(レビューゲート)

生成または編集したメッシュが正しいと決めつけないでください。まず数値で確認し、その後、目視で確認します。

手順

  1. 自動チェック:1つのアセットに属するオブジェクトをまとめて渡します。 scripts/qa_check.py -- --objects Body Head Hat --profile game プロファイル:game(デフォルト)、render(許容範囲が広い)、print(水密性が必須)、roblox(1メッシュあたり20kトライアングル、水密性、Nゴンなし、影響数≤4)。
  2. errors のすべての項目を修正(下表を参照)してから、"pass": true になるまで再実行します。各警告は修正するか、理由をユーザーに伝えたうえで明示的に許容する必要があります。
  3. 必ず目視で確認します。
    • ライブ:対象に対して、MCP の look を mode="angles" で実行し、material/solid シェーディングと wireframe の両方で確認します。内部を見るには xray を使用します。
    • ヘッドレス:scripts/review_shots.py -- --objects ... --mode random を実行します(オブジェクトごとに色が異なるため、分離したパーツが見つけやすくなります)。続けて、トポロジー確認のために --mode wire を実行します。返された PNG を開きます。
  4. 報告する内容:オブジェクトごとのトライアングル数、修正した問題、残る許容済みの警告。

各検出項目の意味 → 修正方法

検出項目原因修正方法
zfighting A<->B--eps(1 mm)以内で同じ方向を向いた2つの面が重なっている隠れた重複面を削除するか、法線方向に2~5 mm以上ずらすか、ブーリアン/結合を行います
back_to_back反対向きの法線を持つ面が接触している(箱同士が面で接着している状態)隠れた面を削除します(無駄なトライアングルやベイク時のアーティファクトの原因になります)
floating--tol 以内に他のパーツと接触していない島/オブジェクト接触するように移動(スナップ)するか、ブリッジするか、結合してマージします。意図的に浮かせている場合(火花、UI)は、個別に確認します
enclosed他のパーツの内部に完全に収まり、接触していないパーツ(目、内部機構)通常は問題ありません。意図したものか確認します
inside_out_islands閉じたパーツの法線が内側を向いているそのパーツに対して mesh.normals_make_consistent(inside=False) を実行します
inconsistent_normals_edges隣接する面の向きが互いに逆になっている法線を再計算します。解消しない場合は、非多様体の継ぎ目を探します
nonmanifold_edges / wire_edges1つのエッジに3面以上が接続されている、または孤立したエッジがある余分な面を溶解/削除し、delete_loose を実行します
boundary_edges穴が開いている(プリント/Roblox/ベイクに不適)穴を埋める(fill_holes/edge_face_add)か、ふたをします
degenerate_faces / zero_length_edgesジオメトリが潰れているdissolve_degenerate(threshold=1e-4) を実行します
duplicate_verts継ぎ目が溶接されていないremove_doubles(threshold=1e-4)(距離でマージ)を実行します。その後、UV の継ぎ目を確認します
ngons5辺以上の面がある該当箇所を三角形化/四角形化します。変形しない平坦なハードサーフェス面に限り、Nゴンを使用できます
未適用/負のスケールオブジェクトのトランスフォームtransform_apply(rotation=True, scale=True) を実行します。負のスケールはエクスポート時に法線を反転させます
uv_maps: 0 / 面積ゼロの UV/重複UV 展開がない、または不適切blender-retopology-uv
ウェイトなし/影響数が4を超えるスキニングblender-character-rigging(weights_check.py)
ground_z ≠ 0アセットが浮いている、または沈んでいる原点を底面に移動し、z = 0 に設定します(小道具)

スクリプトだけでは完全に判断できない手動チェック

  • シルエットとプロポーション:目標のカメラ距離で確認します。参照画像や実際のサイズ(ob.dimensions)と比較します。
  • シェーディングのアーティファクト:ハードエッジでのスムージング(シャープエッジ/ウェイト付き法線が必要)や、曲面の極でのピンチングを確認します。
  • 不自然に見える交差(脚が座面に食い込むなど):パーツ同士が「接続」されていても確認します。
  • 内部/隠れたジオメトリ:トライアングルを無駄にしていないか確認します(xray を使用)。
  • 変形:リグを極端なポーズ(肘140°、膝150°、肩を上げた状態)にし、ボリュームが潰れていないか確認します。
  • マテリアルの割り当て:すべての面に意図したマテリアルが割り当てられ、デフォルトのグレーのスロットが残っていないことを確認します。

調整

  • --eps は Z ファイティングの距離です。大規模な環境シーンでは 0.005 まで上げ、小さなジュエリーでは 0.0002 まで下げてください。
  • --tol は分離したパーツの接触許容値です。大きなキットバッシュでは上げてください。
  • --no-modifiers はベースメッシュをチェックします。デフォルトでは、エクスポート対象となる評価済みの結果(モディファイア適用後)がチェックされます。
  • --max-tris(300k)を超えると、Z ファイティングと浮遊のチェックはスキップされます。高ポリゴンのソースは、パーツごとにチェックしてください。

コメント