mcpField
B
blender-workflow-recipes

blender-workflow-recipes

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

blender-workflow-recipes について

Blenderで3Dアセットを制作する人向けのワークフローレシピ集です。ゲーム用プロップ、キャラクター、環境、製品レンダーなどの作業別に手順をまとめ、各段階の品質確認やクリーンアップ、ベイク、エクスポートを扱います。

主な機能

  1. 01ゲーム用プロップの高・低ポリ手順
  2. 02キャラクターのリギングとアニメーション出力
  3. 03Robloxアセットの制作手順
  4. 04生成アセットの整理と品質確認
  5. 05プロシージャル環境と製品レンダー

活用シーン

  1. 01ゲーム用プロップの制作と出力
  2. 02アニメーション用キャラクターメッシュの準備
  3. 03生成・取得モデルの整理と最適化
  4. 04製品ターンテーブルや環境レンダーの作成

インストール

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

$npx skills add https://github.com/el4cteo/blender-skills --skill blender-workflow-recipes

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

詳細

ワークフローレシピ

S = スキルフォルダーです。すべての .py は python S/blender-core/scripts/run_in_blender.py --blend F.blend S/<skill>/scripts/<x>.py -- ... でヘッドレス実行するか、MCP からインポートして run() を実行することでライブ実行できます(blender-core を参照)。ゲート = 続行する前に停止して修正します。各ステージの後に保存します(--save)。

1. ゲーム用プロップ、ミッドポリ(高速、ベイクなし)

  1. 実寸でブロックアウトします(blender-hardsurface-modeling)。ゲート:ob.dimensions とリファレンスを比較します。
  2. ベベル前にブロックアウトの UV を作成します(Bevel/Boolean モディファイアーは UV を引き継ぎます):uv_pack.py --objects SM_X --method seams --seams-from-sharp 60 → texel_density.py --res 2048 --set 512
  3. apply_stack.py --objects SM_X --preset midpoly [--cutters ...](ライブ状態を維持します。エクスポート用コピーにのみ --apply --triangulate を指定します)
  4. マテリアル:build_pbr_material.py --preset ... またはタイリング/トリムテクスチャを使用します。
  5. ゲート:qa_check.py --objects SM_X --profile game に合格し、さらに look(角度、マテリアル+ワイヤーフレーム)を確認します。
  6. mesh_stats.py --budget <platform> → make_lods.py --objects SM_X --rename
  7. export_asset.py --preset <engine> --objects SM_X_LOD0 SM_X_LOD1 ... ゲート:再インポート後の寸法/GLB の概要を確認します。

2. ゲーム用プロップ、ハイポリからベイク済みローポリへ(高品質)

  1. ハイポリ:ハードサーフェスでは --preset subd を使用するか、スカルプト(sculpt_ops.py)を行い、X_high と命名します。
  2. ローポリ:auto_retopo.py --objects X_high --tris N --method planar|decimate|quadriflow を実行するか、手動で作成します。SM_X に名前を変更します。
  3. uv_pack.py --objects SM_X --method seams --seams-from-sharp 60 --margin-px 16
  4. ゲート:SM_X(game)と X_high(render プロファイル、反転したパーツなし)の両方に対して qa_check.py を実行します。
  5. bake_maps.py --low SM_X --high X_high --maps normal ao curvature id --pack-orm [--directx for Unreal]
  6. build_pbr_material.py --name M_X --textures //textures --objects SM_X(+テクスチャリングでベースカラー/ラフネスを設定します)。
  7. ゲート:マテリアルシェーディングで look を確認し(継ぎ目/波打ちなし)、レシピ 1 の手順 6~7 に進みます。

3. ゲームキャラクター(スカルプトまたは AI メッシュからアニメーション付きエクスポートへ)

  1. ソースメッシュ(スカルプト/generate_3d/スキャン)を実際の身長で作成し、-Y 方向を向かせ、足を Z=0 に配置します。qa_check.py --profile render を実行します。
  2. auto_retopo.py --method quadriflow --tris 20000 を実行します(またはヒーローキャラクターの場合は、エッジフローのルールを守って手動でリトポロジーします)。uv_pack.py --method min_stretch を実行します。
  3. bake_maps.py --low Body --high Body_src --maps normal ao basecolor を実行します(ソースにカラー/マテリアルがある場合は、エミッションオーバーライドを使ってベースカラーをベイクします)。
  4. rigify_build.py --add basic_human --fit Body を実行し、関節を配置して(X 線表示で確認)、--metarig META_Body --generate を実行します。
  5. bind_mesh.py --armature RIG_Body --meshes Body → stress_poses.py --armature RIG_Body → look(mode="frames") を実行します。ゲート:肘/膝/肩が潰れていないことを確認します。ウェイトを修正します。
  6. rigify_build.py --rig RIG_Body --game-skeleton → rig_check.py --armature GAME_RIG_Body --profile unity|unreal
  7. RIG_Body 上でアニメーションを作成します(blender-animation)→ bake_action.py --source RIG_Body --target GAME_RIG_Body [--root-motion xy --hips spine]
  8. export_asset.py --preset unity_skeletal|unreal_skeletal --objects GAME_RIG_Body を実行します(メッシュは子として含まれます)。ゲート:GLB/FBX の概要にスキンとすべてのクリップが表示されることを確認します。エンジン内でスケールを確認します。

4. Roblox

  • MeshPart プロップ:レシピ 1 をベースに、QA で --profile roblox を指定します(20k トライアングル以下、ウォータータイト、N ゴンなし、UV は 0~1 の範囲で 1 セット)。グレースケールマップを個別に用意し(ORM は使用しません)、export_asset.py --preset roblox(FBX)または roblox_gltf でエクスポートします。テクスチャは 1024²(PBR)です。
  • 剛体アクセサリー:4k トライアングル以下とし、R15 の _Att 名に一致するアタッチメントポイントのエンプティを用意し、--preset roblox を指定します。
  • レイヤード衣服:Roblox の公式ケージテンプレートから始めます。<Name>_InnerCage/<Name>_OuterCage を作成します(ケージの頂点数/順序/UV は絶対に変更しません)。R15 ボーンにスキンを設定し、インフルエンスは 4 以下、Root にはウェイトを設定しません。Studio の Accessory Fitting Tool で検証します。
  • アバターのボディ:15 個の _Geo パーツ、R15 スケルトン、アタッチメント、アウターケージを用意し、トライアングル数を 10,742 以下にします。最初に blender-export-pipelines/references/roblox.md を読みます。
  • アップロード:複数アセットのアップロードには Studio の AssetService:CreateAssetAsync を使用します。

5. AI 生成/ダウンロードしたアセットのクリーンアップ

  1. インポート(import_asset / generate_3d / file)。実寸にスケールし(world_bounding_box)、原点を底面に合わせ、地面を z=0 に設定して、transform_apply を実行します。
  2. scene_audit.py --fix purge scale → qa_check.py --profile game を実行します。よくある検出項目:非多様体、重複頂点、法線が反転した島状部分、浮遊する破片、Z ファイティングを起こすシェル。
  3. 修正:make_lods.py --cleanup(マージ/縮退/ルーズ要素の処理)を実行し、法線を再計算して、浮遊する破片を削除します(トポロジーがひどい場合は sculpt_ops.py から remesh を実行)。その後、auto_retopo.py --method decimate で予算に収めます。
  4. UV が分断されている場合は再 UV 展開し(uv_pack.py)、オリジナルから再ベイクします(bake_maps.py --high original)。
  5. 確認条件:QA に合格し、look で確認すること。生成メッシュは、レビューせずにリリースしないでください。

6. プロシージャル環境

  1. 地形/地面メッシュを作成し、次に gn_builder.py --spec scatter.json --apply Ground --set Density=... Seed=... で樹木を散布します(レシピは blender-geometry-nodes/references/recipes.md を参照)。
  2. 散布するアセットには、LOD を設定した最適化済みのプロップ(レシピ 1)を使用します。インスタンス化に対応したエンジンでは、インスタンスを維持してください(実体化しない)(export_gpu_instances)。
  3. 確認条件:評価後の結果に対して mesh_stats.py を実行し、ゲームプレイカメラの高さから look で確認します。

7. Web/AR アセット

レシピ 1 または 2 を使用し、--budget web の予算(≤30k トライアングル、マテリアル 1~2 個、テクスチャ 2k)に収めます → export_asset.py --preset web(meshopt + WebP)を実行します → 必要に応じて gltf-transform optimize --texture-compress ktx2 を実行します。iOS AR 用の USDZ:--preset usd --out x.usdz。確認条件:GLB の概要(サイズ < 5 MB)と Khronos PBR Neutral のルックデブの一致。

8. 製品ショット/ターンテーブル

  1. 実測値を使ってマテリアルを作成し(build_pbr_material.py --preset)、Z ファイティング/浮遊するパーツの QA を行います(クローズアップでは特に目立ちます)。
  2. レンダリング解像度を設定してから、turntable.py --objects Product --rig studio --backdrop --frames 120 --lens 85 を実行します。
  3. render_batch.py --preset preview --frames 1 → レビュー → --preset product --frames 1-120 --format PNG を実行してエンコードするか、--format MP4 を使用します。
  4. 確認条件:ファイアフライや白飛びしたハイライトがないこと(AgX / Khronos PBR Neutral)。また、製品が背景に接地していること(接地影)。

9. ムード/天候ショット(雨の夜、雪の朝、霧の夜明け)

  1. カメラを設置し、実寸スケールでシーンを作成します。まず主要アセットの QA を行います(濡れた反射や雪によって、Z ファイティングや隙間が目立ちます)。
  2. scene_mood.py --time night --fog-visibility 250(または --mood cyberpunk|horror|underwater|desert)を実行します。実際の色温度に合わせて、実用光源(街灯、窓、ネオン)を追加します。
  3. 天候:precipitation.py --type rain --intensity heavy --ground <ground/roofs> → surface_weather.py --objects <surfaces> --wetness 0.7 --puddles 0.4 --ripples 1 --streaks 0.5 → lightning.py --flashes 2。雪の場合:--type snow + --snow 0.8 --snow-depth 0.06。
  4. 確認条件:最終アスペクト比で render_batch.py --preset preview --frames <mid>,<flash> を実行します。雨が認識でき(逆光で照らされている)、水たまりに光が反射し、夜景のコントラストが保たれている必要があります。その後、ループ全体をレンダリングします(フレーム範囲 = 降水ループ)。

コメント