【Blenderアドオン】ShapeKeysUtil
・シェイプキーがあってもミラーを適用できる! ・両側で作ってある表情シェイプを左右別々にできる! そんなBlender用アドオンです。
◆はじめに
このデータは、3Dモデリングソフト Blender 用のアドオンです。 ↓以下のBlenderバージョンで動作確認済みです。 3.0 ※ Blender 2.80以上であれば上記以外のバージョンにも導入可能ですが動作未検証です。 ※ 「blender279_ShapeKeysUtil_v1_1_4_c.zip」はBlender 2.79でも(おそらく)動作するバージョンです。このバージョンへの機能追加は基本的に行いません。 以前のバージョンや最新のテストバージョンはGitHubに置いてあります。 (v1.1.4~) https://github.com/SleetCat123/BlenderAddon_ShapeKeysUtil ―――――― https://sleetcatshop.booth.pm/items/1166452 同作者のアドオン↑“Auto Merge”を導入して連携機能を有効にすることで、 ミラーを付けたまま編集 ↓ エクスポートのときだけミラー適用(自動) ↓ シェイプキーを自動で左右分割 ↓ エクスポート後は元通り! ということもできるようになります。 (詳しくはAuto MergeアドオンのRead-meを参照) ※ 長らく放置していましたが、ようやくBlender2.8以降対応アップデートしました! ―――――― ◇ソースコードのライセンス: GNU General Public License, version 2
◆! 重要 !◆ (1)
このアドオンには、多くのシェイプキーを持つオブジェクトに対して使うと時間がかかる(数秒~)機能が存在します。 現時点の本アドオン仕様では処理の中断はできないため、どうしても中断したい場合はBlenderを強制終了させるしかありません。 また、処理の実行途中、偶発的にBlenderが強制終了する場合があります(暫定的な処置ですが何度か試すと強制終了せずに処理を完了できます)。 そのため、コマンド使用前にはデータを保存し、別ファイルとしてバックアップもとっておくのが望ましいでしょう。
◆! 重要 !◆ (2)
時間がかかる処理中、Blenderが(応答なし)状態になることがありますが 処理は正常に進んでいます。 完了するまでしばらくお待ち下さい。 (使用前に Window → Toggle System Console でログ画面を表示しておくと進行状況が確認できます)
◆機能説明
◇オブジェクト選択中に右クリック → ShapeKeys Util
→ Apply Modifiers
Armature以外の全モディファイアを適用します。 ・モディファイアの名前欄の先頭に文字列 %A% を付けることで、Armatureモディファイアでも適用可能です。 ・モディファイアの名前欄の先頭に文字列 %AS% を付けることで、モディファイアをシェイプキーとして適用(Apply as shapekey)させることができます。 ラティスやArmatureモディファイアでシェイプキーを作る場合に便利です。 (シェイプキー適用時に名前の%AS%は削除) (Mirrorモディファイアなどによる頂点数の増減に注意) レンダリングが無効化されているモディファイア(モディファイア一覧でカメラアイコンが押されていないもの)は適用されません。 シェイプキーがあっても使用できます。 注意:少し時間がかかります 注意: モディファイア適用後の頂点数が他と異なるシェイプキーがあると処理できません。 その際エラーメッセージ内に原因となっているシェイプキー名と頂点数が表示されるため、それを参考に修正してみてください。 (エラーが出たらCtrl+Zで元に戻すのを推奨) (MirrorモディファイアのMerge機能や、Booleanモディファイアが不具合の原因となることがあります) ―― Mirrorモディファイアが原因だと思われる場合、以下の対処法を試してみてください。 1.ミラーモディファイアのMerge Limit(日本語設定だと「結合距離」)を、初期状態の1mmから0.01mmなどの小さな値に変更する (0にすると頂点結合されなくなってしまうようです) 2.それでも解決しない場合、問題の原因となっていそうなシェイプキー内の頂点をミラーの境界線から少し離す 3.それでも駄目だった場合、ミラーモディファイアのMerge(日本語設定だと「結合」)と書かれたチェックボックスを外してApply Modifiersを行った後、重複頂点を手動で結合する ―― ・ツールシェルフ ・Duplicate チェックを入れると、対象オブジェクトのコピーに対して処理を行います。 ・Remove NonRender チェックを入れると、レンダリング無効化状態のモディファイアを削除します。 (レンダリング無効化 = モディファイア一覧でカメラアイコンが押されていないもの)
→ Separate Objects
シェイプキーをそれぞれ別オブジェクトにします。 注意:少し時間がかかります ・ツールシェルフ ・Duplicate チェックを入れると、分割前のオブジェクトを残します。 ・Apply Modifiers チェックを入れると、分割後にオブジェクトのモディファイアを適用します。 ・Remove NonRender Apply Modifiers有効時にチェックを入れると、レンダリング無効化状態のモディファイアを削除します。 (レンダリング無効化 = モディファイア一覧でカメラアイコンが押されていないもの)
→ Separate Shape Key Left and Right
現在のシェイプキーを オブジェクト原点基準で左右別々のシェイプキーにします。 注意:ミラーモディファイアをつけている場合、適用してからでないとうまくいきません ・ツールシェルフ ・Duplicate チェックを入れると、左右分割前のシェイプキーを残します。 注意:左右分割する前とした後のシェイプキーを同時に使うと モデルが意図しない見た目になる可能性があります (シェイプキーが二重にかかるため) ・Enable Sort チェックを入れると、左右分割後のシェイプキーを分割前シェイプキーのすぐ下に移動します。
→ Separate All Shape Key Left and Right
全てのシェイプキーをオブジェクト原点基準で左右別々にします。 名前の最後が_leftまたは_rightのシェイプキーは分割済みと見なし処理をスキップします。 注意:ミラーモディファイアをつけている場合、適用してからでないとうまくいきません ・ツールシェルフ ・Duplicate チェックを入れると、左右分割前のシェイプキーを残します。 注意:左右分割する前とした後のシェイプキーを同時に使うと モデルが意図しない見た目になる可能性があります (シェイプキーが二重にかかるため) ・Enable Sort チェックを入れると、左右分割後のシェイプキーを分割前シェイプキーのすぐ下に移動します。 注意:時間がかかります
→ (Tag) Separate All Shape Key Left and Right
選択中オブジェクトのシェイプキーのうち、 名前に %LR% を含むものに対してのみ処理を行います。 %LR% に加え、 %D% を含むものは左右分割前のシェイプキーを残す %S% を含むものは左右分割後のシェイプキーを分割前シェイプキーのすぐ下に移動する という機能があります。 例: [Smile%LR%%D%]という名前のシェイプキーを左右分割すると [Smile][Smile_left][Smile_right]の3つになります ―― 注意: %S% の処理は時間がかかるので、必要な場合だけ付けることをおすすめします (シェイプキーの順番が重要なもの、例えばVRChatのアイトラッキング用シェイプキーなど) ―― 注意:ミラーモディファイアをつけている場合、適用してからでないとうまくいきません ―― この機能は同作者のアドオン“Auto Merge”との連携用に作られています。 “Auto Merge”側で設定をすることにより、 専用エクスポート機能使用時にこの機能を自動で使用させることができます。 ―― ※ 上記の %LR% などの文字列は処理結果シェイプキーの名前からは削除されます ※ 上記の文字列は以下のAssign Tagコマンドで簡単に着脱できます。
→ Assign Tag
現在のシェイプキーに対し、 (Tag) Separate All Shape Key Left and Right の処理用テキストを つけたりはずしたりします。 ・ツールシェルフ ・Enable チェックを入れると、そのシェイプキー名に %LR% を追加し左右分割処理の対象とします。 チェックを外すと、そのシェイプキー名から %LR% を削除します。 ・Duplicate チェックを入れると、そのシェイプキー名に %D% を追加し左右分割前のシェイプキーを残すようにします。 チェックを外すと、そのシェイプキー名から %D% を削除します。 注意:Enableにチェックが入っていないと操作できません ・Enable Sort チェックを入れると、そのシェイプキー名に %S% を追加し 左右分割後のシェイプキーを分割前シェイプキーのすぐ下に移動させるようにします。 チェックを外すと、そのシェイプキー名から %S% を削除します。 注意:Enableにチェックが入っていないと操作できません 注意:多くのシェイプキーで有効にすると時間がかかります
◇編集モードで右クリック → ShapeKeys Util
→ Side of Active from Point
アドオン製作時の副産物として生まれた機能です。 指定座標を基準にSide of Activeを行います。 ・ツールシェルフ ・Point 基準となる座標です。
◇Addon Preference(アドオン導入画面で変更可能な設定)
・Wait Interval 一部処理に挟まれる待機処理の間隔を設定します。 数値を大きくすると、シェイプキーが多い場合の処理時間が短くなりますが、代わりにCPU負荷が増します。 ・Wait Sleep 一部処理に挟まれる待機処理の長さを設定します。 数値を小さくすると、シェイプキーが多い場合の処理時間が短くなりますが、代わりにCPU負荷が増します。 負荷的に問題なさそうであれば小さくしておくと時間短縮になるかもしれません。
◆不具合・エラーが起きた時
このアドオンの機能はBlender標準のAPIを使って作成しているため、 何らかの不具合が発生した場合には すぐに Undo(Ctrl+Z) すれば機能使用前の状態に復元できます。 また、以下の連絡先に不具合発生時の状況を送っていただけると 修正の手助けになります。
◆連絡先
不具合報告や要望、感想などありましたらこちらにどうぞ。 修正・実装が可能と思われるものに関しては着手を検討しますが、 内容によっては多忙や技術的問題などの理由により 対処の先延ばしまたはお断りをする可能性があります。 予めご了承ください。 Twitter:猫柳みぞれ https://twitter.com/sleetcat123
◆更新履歴
・2022-12-11 Ver_1.1.6 右クリック→ShapeKeys Util→Apply Modifiers が選択中のオブジェクト全てに適用されるように(いままではアクティブオブジェクトだけに適用されていた) 適用対象となるモディファイアが無いオブジェクトに対してApply Modifiersを使用するとエラーが出る不具合を修正。 ApplyModifiers実行時、Basisシェイプキーと1番目のシェイプキーの頂点数が異なっていた場合に意図しないエラーが出てしまう不具合を修正。 シェイプキーがBasisしかない状態でApply Modifiersを使うとエラーが出る不具合を修正。 複数インスタンス化されているオブジェクトのモディファイア適用が正常に行われない不具合を修正。 ―――――― ・2022-02-15 Ver_1.1.5 (3.0以降?)Separate Shape Key Left and Rightが動作していなかった不具合を修正。 Blender 2.7系への互換性確保コードを削除。 テキスト表示言語の実装方法を変更。 ―――――― ・2021-11-30 Ver_1.1.4 モディファイア適用時、名前が%AS%から始まるモディファイアをシェイプキーとして適用(Apply as shapekey)するようにした(シェイプキー適用時に名前の%AS%は削除) ―――――― ・2021-06-15 Ver_1.1.3 Editモードで選択モードが頂点以外になっているとき、Separate Shape Key Left and Rightなどの機能が正常に動作しない不具合を修正。 Blender 2.93で一部機能が正常に動作しない不具合を修正。 ―――――― ・2020-02-24 Ver_1.1.2 Apply Modifier時、レンダリングが無効化されたモディファイア(モディファイア一覧でカメラアイコンが押されていないもの)を削除せずそのまま残すことができるように。 Apply Modifierの対象外モディファイア(現在はArmatureのみ)であっても、モディファイアの名前欄の先頭に文字列“%A%”を付けることで強制的にモディファイアを適用させることができるように。 Apply Modifier時に頂点数が一致しないシェイプキーがある場合、警告を表示して処理を取り消すように。 Separate Objectsで生成されたオブジェクトを元オブジェクトの子に設定するようにした。 Apply Modifier時、無効なモディファイア(対象オブジェクトが指定されていないなどの状態)があるとエラーが出る不具合を修正。 Editモードで非表示になっている頂点がある状態でSeparate Shape Key Left and Right系統の機能を使うと正常に動作しないことがある不具合を修正 Addon Preferenceで、一部処理に挟まれる待機処理の間隔(Wait Interval)と長さ(Wait Sleep)を設定できるように。 Blender2.8系の対応が不完全だったのを修正。 ―――――― ・2019-02-11 Ver_1.0.0 公開。 ――――――