複数のブレンドシェイプを合成した新しいシェイプキーを追加し、新しいメッシュとして保存するUnityエディタ拡張です。
係数を指定できるため、たとえば「瞳を小さくする」シェイプキーから「瞳を大きくする」シェイプキーを作ったり、0~100の範囲外に設定したウェイトを正規化することも可能です。
開発経緯としては、VRChat Avatars 3.0 のまばたき用シェイプキーが1つしか指定できない問題への対策が発端ですが、他の用途にも汎用的に用いることができます。
Unity 2019.4 以降
Releasesページ より最新版の BlendShapeCombiner-vX.X.X.unitypackage
をダウンロードし、Unityにインポートする
-
インポート先プロジェクトの
Packages/manifest.json
をテキストエディタ等で開く -
dependencies
オブジェクト内に以下の要素を追加"com.github.chigirits.blendshapecombiner": "https://github.com/chigirits/BlendShapeCombiner.git",
-
シーンにモデルを配置してください。
-
「メニュー/Chigiri/Create BlendShapeCombiner」を選択すると、ヒエラルキーのトップレベルに BlendShapeCombiner が配置されます。
-
BlendShapeCombiner の
Target
に、操作対象となる SkinnedMeshRenderer(アバターの表情に適用する場合、一般的には Body オブジェクト)を指定してください。
このとき、対象にアタッチされているメッシュがSource Mesh
に自動的にセットされ、new_key
という新規シェイプキーが追加されます。 -
New Keys
リストタブから一つの行(ここではnew_key
)を選択すると、選択中の新規シェイプキーの詳細設定が下部(Detail of selected New Key)に表示されます。Name
テキストフィールド(デフォルト値new_key
が入力されている箇所)を、これから作成したい新規シェイプキーの名前に変更してください。次に、その下の各プルダウンから合成元のシェイプキーを選択してください。- スケール係数(右端にあるテキストボックスの数値)を
1
以外にすることで、効果のかかり具合を調整することができます(後述のスケール係数を参照)。 - 合成元となるシェイプキーの数を増減するには、
Source Keys
リストタブの右下にある+
-
を押してください(削除する際は事前に対象行を選択してください)。 - 作成する新規シェイプキー自体を増減するには、
New Keys
リストタブの右下にある+
-
を押してください(削除する際は事前に対象行を選択してください)。
- スケール係数(右端にあるテキストボックスの数値)を
-
Process And Save As...
ボタンを押して、生成された新しいメッシュを保存してください。保存が完了すると、
Target
の SkinnedMeshRenderer に新しいメッシュがアタッチされます。 この差し替えられたメッシュに追加されている新しいシェイプキーの値を変更してみて、期待どおりの効果がかかることを確認してください。
以下では、インスペクタ上部に一行ずつ並んでいるチェックボックスのオプションについて説明します。
合成元となるシェイプキーを選択するインタフェースを、プルダウンではなくテキスト入力式にします。 コピー&ペースト等を活用したい場合や、プルダウンが長すぎて不便なときはONにしてみてください。
スケール係数を百分率で表示・指定します。Skinned Mesh Renderer のブレンドシェイプ値と同様に扱いたい場合はONにしてください(Capture
/ Extract
ボタンを用いる場合に便利です)。
既存のシェイプキーをすべて削除し、定義されている新規シェイプキーだけを持つメッシュを生成します。
既存のシェイプキーと同名の新規シェイプキーを定義しているとき、既存のものを削除して上書きしたメッシュを生成します。
新規シェイプキーの持つ法線・タンジェントの変化量を強制的に 0 にします。
以下では、Detail of selected New Key 内 Source Keys
リストタブの各行の右に並んでいるプルダウンやテキスト入力欄のオプションについて説明します。
合成元となるシェイプキーを選択します。Use Text Field
がONのときは、シェイプキーの名称をテキストで入力できます。
LR
と表示されているプルダウンから L
や R
を選択すると、合成元シェイプキーが効果を及ぼす対象範囲を左右いずれかのみに限定することができます。
たとえば、両目を閉じるシェイプキーを元として、片目だけを閉じるシェイプキーを作成することができます。
一番右側にあるテキスト入力欄の数値で、合成元のシェイプキーのかかり具合を調節します。1
以外を指定することで、かかり具合を微量または極端にできます(Use Percentage
がONのときの通常値は 100
)。
マイナスの値を指定することで、かかり具合を逆方向にすることができます。たとえば、瞳を小さくするシェイプキーのスケール係数に -1
(Use Percentage
がONのときは -100
)を指定することで、瞳を大きくするシェイプキーを作成することができます。
他にも、たとえば「A:目を閉じる」と「B:目を閉じて口を開く」しかシェイプキーがないモデルに対して、Aの -1 スケール化シェイプキーをBに重ねがけすることで、口だけを開いた表情を作ることができるようになります。
以下では、インスペクタ下部に並んでいるボタンの機能について説明します。
Capture
ボタンを押すと、Target
のメッシュに現在設定されているすべてのブレンドシェイプ値を合成する新規シェイプキーが追加されます。
逆に Extract
ボタンを押すと、現在選択中の新規シェイプキーに設定されているすべての合成元ブレンドシェイプ値を、Target
のメッシュに個別に反映します。
選択中の新規シェイプキーについて、合成元シェイプキーを名前順に並べ替えます。
選択中の新しいシェイプキーのスケール係数を、各ボタンに例示された精度になるよう四捨五入します。
MIT License
©2020 TSUTSUMI Chigiri
- このソフトウェアは商用・非商用問わず無償で利用できますが、無保証です。利用に際して発生する問題については、作者は一切の責任を負いません。
- コードを再利用する際は、著作権表示と上記リンク先のライセンス条文を同梱する必要があります。詳しくは条文(英語)をお読みください。
- v1.4.1
- UIの改善
- 指定メッシュにシェイプキーが多いとUIが重くなる問題を修正
- 新機能オプションの追加
- Use Percentage
- 新機能ボタンの追加
- Round Scale
- (仕様変更) Sort Sources ボタンの効果を選択中の新規シェイプキーのみに限定
- UIの改善
- v1.3.0
- 新機能オプションの追加
- Use Text Field
- Clear/Overwrite Existing Keys
- Clear Normal/Tangent
- LRプルダウン
- 新機能ボタンの追加
- Capture/Extract
- Sort Sources
- 新機能オプションの追加
- v1.2.1
- VCC対応
- v1.2.0
- UIの改善
- カスタムUI実装
- Source Mesh を Target とは独立して保持し、リトライ時の手間を軽減
- 保存ダイアログの初期ディレクトリを Source Mesh と同一に
- Revert Target ボタンを追加
- ツールチップ表示
- UIの改善
- v1.1.0
- スケール係数プロパティを追加
- 複数シェイプキーの一括追加に対応
- v1.0.0
- 初回リリース