mcpField
B
blender-facial-shapekeys

blender-facial-shapekeys

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

blender-facial-shapekeys について

Blenderで顔のリグやシェイプキーを作成するアーティスト向けのスキルです。ARKitやビゼーム、補正シェイプ、各種形式へのエクスポートを扱います。

主な機能

  1. 01ARKit 52とOculusビゼームの作成
  2. 02シェイプキーの分割とミラー
  3. 03未完成キーのレポート
  4. 04任意のコントローラープロパティとドライバー
  5. 05補正シェイプと組み合わせシェイプ
  6. 06エンジン別のエクスポート案内

活用シーン

  1. 01ゲームやVTuber用の表情作成
  2. 02モーションキャプチャ用ブレンドシェイプの作成
  3. 03Blenderでの映画向けフェイシャルリグ構築

インストール

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

$npx skills add https://github.com/el4cteo/blender-skills --skill blender-facial-shapekeys

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

同梱ファイルscripts/_bpyx.pyscripts/shapekeys.py

詳細

フェイシャルリグとシェイプキー

実行モデルについては blender-core をご覧ください。ボディリグについては blender-character-rigging をご覧ください。

アプローチを選ぶ

アプローチ用途備考
ブレンドシェイプ(ARKit 52)ゲーム、VTuber、モーションキャプチャ(iPhone/Live Link Face)、Web/VRM業界標準の交換用セットです。各シェイプをスカルプトします
ボーン(顎、目、まぶた、眉、唇)スタイライズされた表現、低メモリ、モバイル顎と目をボーンで表現するのは、ほぼ常に適切です
ハイブリッドほとんどの商用ゲーム用の頭部顎/目/舌はボーンで、それ以外の柔らかい部分にはブレンドシェイプを使います
Rigify face(human メタリグ)Blender 内での映画品質のキーフレームアニメーション顔のボーンが100本以上あり、ゲームエンジンには負荷が大きいです

手順(ブレンドシェイプ)

  1. 頭部メッシュの目と口の周りには、きれいなループが必要です(blender-retopology-uv)。目、歯、舌は別オブジェクトにし、ボーンにペアレントするか、ウェイトを設定します。
  2. scripts/shapekeys.py -- --mesh Head --create arkit(15種類のOculusビゼームの場合は --create visemes)を実行すると、適切な名前が付いた空のキーが作成されます。
  3. 各キーをスカルプトします(ライブの場合は、アクティブなキーでスカルプトモードを使用し、use_shape_key_edit_mode を設定します)。左右対称の表情は片側だけスカルプトし、その後 --split eyeBlink を実行すると、X=0をまたいで滑らかにブレンドされる eyeBlinkLeft/Right が作成されます(--falloff m)。
  4. --mirror browDownLeft を実行すると、browDownRight が作成されます(トポロジーに依存しないミラー)。
  5. --report を実行すると、未スカルプトのキー、キーごとの最大オフセット、不足しているARKit名が一覧表示されます。すべてのキーが動き、余分なものが残っていない場合にのみ、シェイプは完成です。
  6. オプション:--drivers FaceCtrl を実行すると、各キーを駆動する0~1のカスタムプロパティを持つコントローラーが追加され、Blenderでキーフレームを設定できるようになります。
  7. look で極端な値と組み合わせ(jawOpen + mouthSmile、eyeBlink + eyeSquint)を確認します。2つのキーの積で駆動する補正用の組み合わせキーで修正します。

シェイプキーのルール

  • シェイプは Basisからの差分 です。キーを作成した後にBasisのトポロジーを変更しないでください(頂点を追加または削除すると、すべてのキーが壊れます)。
  • 1つのキーにつき動作は1つです。フェイスキーに頭部や首の動きを含めないでください(それらはボーンで動かします)。まぶたは眼球の表面に沿って滑らせ、眼球を突き抜けないようにします(まぶたと眼球のZファイティングは blender-asset-qa で確認します)。
  • 範囲は0~1です。誇張した表現には slider_max を大きくできますが、エンジンでは0~1にクランプされます。
  • 相対キー(デフォルトの use_relative=True)のみがエクスポートされます。
  • 仕様に従って正確な名前を付けます(大文字と小文字を区別します)。EyeBlink_L ではなく eyeBlinkLeft を使います。エンジンは名前でマッピングします。
  • サブディビジョンを適用したメッシュのキーは、レベル0でスカルプトし、サブディビジョンモディファイアーはシェイプキーの後に維持します(いずれにせよ、先に評価されます)。
  • シェイプキーがあるメッシュにはモディファイアーを適用できません。変形モディファイアーには modifier_apply_as_shapekey を使うか、キーの作成前に適用します。

補正シェイプと組み合わせシェイプ

  • ボーンポーズの補正:ポーズを付けた状態でスカルプトし、TRANSFORMS 変数(ROT_X、LOCAL_SPACE、0~1にマッピング)で駆動します。
  • 組み合わせ:ドライバーの SCRIPTED 式 a*b を使い、2つのキーの値(SINGLE_PROP key_blocks["jawOpen"].value)から駆動するキー jawOpen_mouthSmile を作成します。単純な式ではPythonの自動実行は不要です。

エンジンに関する注意

  • Unity:FBXブレンドシェイプを使います。Model importerで Blend Shape Normals を Calculate に設定します(または、スムージングがエクスポートされている場合は Import に設定します)。ARKit名はAR Foundationの顔トラッキングサンプルにマッピングされます。
  • Unreal:モーフターゲット("Import Morph Targets")を使います。Live Link Face/MetaHuman AnimatorはARKit名を使用し、Pose Assetがカーブをマッピングします。リーフボーンは使いません。
  • Roblox dynamic heads:Roblox固有の名前を使ったFACSベースのポーズを、ヘッドリグのアニメーションフレームとして作成します(Creator Hub「Dynamic heads」の仕様)。公式Blenderテンプレートから作成します。ARKitスカルプトは、名前を変更またはマッピングして再利用できます。頭部は4,000トライアングル以下にします。
  • VRM/Web(three-vrm、ReadyPlayerMe風):ARKit 52とビゼームをglTFモーフターゲットとして使います(export_morph=True)。シェーディングに必要な場合のみモーフノーマルのエクスポートを有効にします(サイズが2倍になります)。
  • エクスポート前に未使用のキーを削除します。頂点ごとにキーの分だけメモリを消費します(glTFのスパースアクセサーが役立ちます)。

注意点

  • ob.shape_key_add(from_mix=False) は Basis をコピーします。from_mix=True は現在のミックスを焼き込みます(組み合わせには便利ですが、意図せず実行すると危険です)。
  • shape_key_mirror(use_topology=False) には、X 軸に対称なメッシュが必要です。アクティブなキーに対して実行してください(スクリプトが処理します)。
  • シェイプキーのドライバー変数では、メッシュではなく Key ID(ob.data.shape_keys)を使います。fc = kb.driver_add("value")。

コメント