はじめに
BlenderでMMDモデルを制作しています。趣味です。
今回はモデルのデフォルトの姿勢をTポーズからAポーズに変更します。
ポーズの変更については以前にも投稿をしました。
https://pingpongfrog.com/archives/1653
うっかりシェイプキーを先に作成してしまったため、色々と試行錯誤する必要がありましたが、何とかポーズの変更ができました。
今回はその辺りについて記したいと思います。
- シェイプキー作成後にモデルのデフォルトポーズを変更する
尚、記事の内容については正確性を保証致しません。
解説ではなく、個人のメモ、備忘録のような情報としてお読みください。
以下の環境でモデルの制作を行っています。
ソフト、アドオン | 版 |
---|---|
Blender | 3.35LTS |
mmd_tools | 2.8.0 |
PmxEditor | 0.2.5.7 |
Aポーズへ変更
(シェイプキー未作成時)
手順
以下の手順でポーズの変更を行う予定でした。
- 各メッシュにモディファイアー「アーマチュア」を追加
- ポーズモードでAポーズに調整
- 追加した「アーマチュア」を適用
- ポーズモードでレストポーズとして適用
制服のメッシュを例に挙げます。
まず、モディファイアー「アーマチュア」を追加します。
対象は既存の「アーマチュア」と同じNew MMD Model_armを指定します。
次にポーズモードでAポーズに調整します。
左右対称編集で左右の腕ボーンを45°回転させました。
この値は大まかな値であり、具体的な値は参考にするモデルや使用する.vmdによって変わってくると思います。
制服メッシュの変形が過剰になっています。
都合2つの「アーマチュア」が追加されているため、45°が2回分、計90°ボーンが回転した影響が反映されていると思われます。
追加した「アーマチュア」を適用します。
実行した時点で、制服メッシュは、ボーンが45°を1回分回転した影響を反映した状態、つまりAポーズがデフォルトとなっています。
(この時点では見た目の変化はありません)
最後にレストポーズとして適用します。
実行後、各ボーンはAポーズがデフォルトの状態となります。
ポーズモードだけでなく、編集モードでもAポーズが基本の状態となります。
また、New MMD Model_armの影響下にあるメッシュは”デフォルトの”状態に戻ります。
追加した「アーマチュア」を適用した制服メッシュは45°分変形したデフォルトのAポーズに戻り、一方、「アーマチュア」を追加・適用を行わなかった身体メッシュはデフォルトのTポーズへ戻っています。
もし、シェイプキーが存在しなければ、身体メッシュも上記の方法でAポーズに変更することが出来ます。
問題
シェイプキー作成済みの場合、発生する問題についてです。
Blenderには次の制約があります。
- モディファイアーはシェイプキーのあるメッシュには適用できない
先にシェイプキーを作成すると、モディファイアー「アーマチュア」の追加と適用によるデフォルトポーズの変更が不可能となります。
画像は、シェイプキー作成済みの身体メッシュに「アーマチュア」を追加、そして適用を試みた様子です。
このようにエラーが出てしまうため、この方法ではデフォルトポーズをTポーズからAポーズへ変更ができません。
では、せっかく作成したシェイプキーを削除しなければいけないのか?
この問題を何とか解決しよう、というのが今回の投稿のテーマです。
準備
先に簡単に結論を述べます。
シェイプキーが作成された状態でもデフォルトポーズの変更は可能でした。
この章ではそのために必要な情報を確認していきます。
シェイプキー「Basis」の入替
まずは前提①です。
全てのシェイプキーの基準となる「Basis」(または「ベース」)は、作成済みの他のシェイプキーと入れ替えることが出来ます。
画像は「びっくり」をBasisの位置に入れ替えた状態です。
「びっくり」のスライダーの値を1に設定後、上下ボタンを使いリストの先頭に移動させました。
この状態で「笑い」のスライダーの値を1に変更してみます。
瞼と睫毛がズレていて使えなさそうな表情です。
表情はさておき、ここで大切なのは、Basisを他のシェイプキーと入替ができる、ということです。
- Basisは他のシェイプキーと入れ替えることができる
シェイプキーとして保存
続いて前提②です。
ポーズモードの頂点位置のデータをシェイプキーに変換することが出来ます。
例を挙げます。
まずはポーズモードで左前腕を上げるポーズを作りました。
(ポーズに特に意味はありません)
オブジェクトモードに映り、身体メッシュを選択、モディファイアープロパティを開きます。
ドロップダウンリストから「シェイプキーとして保存」を実行します。
実行後、オブジェクトデータプロパティを開くと、リストに新たなシェイプキーが作成されていることが確認できます。
名称は「アーマチュア」と同じ名前が付くようです。
(私の場合、mmd_bone_order_overdrive)
ポーズモードでトランスフォームをクリアします。デフォルトのTポーズに戻した後、この新規シェイプキーのスライダーの値を1に変更してみました。
(尚、上記の画像では既にトランスフォームをクリアしてあります)
先程作ったポーズを再現できました。
このように、ポーズモードのアーマチュア変形と「シェイプキーとして保存」によって新しいシェイプキーを作成することが可能です。
- 「シェイプキーとして保存」で新規シェイプキーを作れる
Aポーズへ変更
(シェイプキー作成済時)
概要と注意点
シェイプキーが存在するメッシュ、身体に対しては、前章の①②の要素を組み合わせます。
具体的には、Aポーズを新規シェイプキーとして保存し、そのシェイプキーをリストの先頭に配置、Basisとして設定します。
私の場合、Aポーズへの変更で変形があるメッシュは身体、制服、スカーフの3点となります。
このうち、制服とスカーフについてはシェイプキー未制作時の方法、身体についてはシェイプキー制作済時の方法を採用します。
作業の流れは次のようになります。
- ポーズモードでAポーズを作る
- 制服、スカートに「アーマチュア」追加・適用
- 身体に「シェイプキーとして保存」実行
- ポーズモードで「レストポーズとして適用」実行
- シェイプキーのBasisを入れ替える
尚、この手順で作成したモデルの動作確認についてですが、エクスポートし、PmxEditorで編集、MMDで.vmdを読み込みモーションを再生するところまで済んでいます。(次回、投稿予定です)
ただ、あくまで私個人の経験でしかないため、環境が違えば再現できない可能性がありますし、この方法が正しいかは不明です。また、別の方法もあるかもしれません。
ポーズ変更の手順
1. Aポーズを作る
同じ作業ですので詳細は割愛します。
2. 制服・スカーフの「アーマチュア」
言い換えれば、シェイプキーが”存在しない”メッシュのモディファイアー「アーマチュア」に対して作業をします。
- モディファイアープロパティを開く
- 新規「アーマチュア」を追加
- 追加した「アーマチュア」を適用
各メッシュで上記作業を行います。
画像は制服、スカーフに対して作業を終えた後の様子です。
適用された45°分の変形の「アーマチュア」と、既存の「アーマチュア」による45°分の変形が重複するため、この時点ではNew MMD Model_armの位置と合っていません。
画像で制服の袖を見て頂くと確認しやすいと思います。
3. 身体に「シェイプキーとして保存」
言い換えれば、シェイプキーが”存在する”メッシュのモディファイアー「アーマチュア」に対して作業をします。
- モディファイアープロパティを開く
- ドロップダウンリストから「シェイプキーとして保存」を実行
画像は作業後の様子です。
この時点ではまだ、モデルの見た目に変化は起こりません。
オブジェクトデータプロパティを開くと、45°分変形した形状を記録した新たなシェイプキーが作成されていることが確認できます。
4. レストポーズとして適用
Aポーズ、45°左右の腕を回転させた状態をNew MMD Model_armの基本の状態に設定します。
- New MMD Model_armを選択し、ポーズモードに移る
- ポーズ→適用→「レストポーズとして適用」を実行
画像は作業後の様子です。
- New MMD Model_armはAポーズがデフォルトに設定された
- 既存の「アーマチュア」による45°の変形はリセットされた
ここで言う「既存の」とは、今回新規で追加した方ではなく、各メッシュとNew MMD Model_armを紐付けた際に追加され、元々存在している方の、という意味です。
制服・スカーフについては、45°分の変形がリセットされても、追加した「アーマチュア」を適用してあるため、ちょうど45°分の変形が既にデフォルトに設定されています。
つまり、New MMD Model_armのAポーズと一致している状態です。
他方、身体については45°の変形がリセットされたため、元々のTポーズに戻っています。もちろん、このままではNew MMD Model_armと一致しません。
5. Basisを入れ替える
依然Tポーズのままである身体メッシュを変形させる必要があります。
- オブジェクトモードに移る
- 身体を選択し、オブジェクトデータプロパティを開く
- mmd_bone_order_overdriveのスライダーの値を1に変更
- mmd_bone_order_overdriveをリストの先頭に配置
画像は作業後の様子です。
45°分の変形を記録したシェイプキーmmd_bone_order_overdriveをBasisに設定することで、身体メッシュをNew MMD Model_armのAポーズに合わせることができました。
旧「ベース」については削除しても問題ないかと思います。
Basisの名称はmmd_bone_order_overdriveのままでも、エクスポート時に特に問題は起きませんでした。
これでNew MMD Model_arm、制服・スカーフ、身体の全てをAポーズに変更することができました。
まとめ
文字と画像だけでは分かりにくい箇所もあるかと思いますので、作業の様子を動画に収めました。
終わりに
最初に「モディファイアーはシェイプキーのあるメッシュには適用できません」のエラーメッセージを見た時には「しまった!」と暗い気持ちになりました。
しかし、きっと何か方法はあるはず!と考え、メニューやドロップダウンリストを開いてみると「シェイプキーとして保存」を見つけることが出来ました。
うまく作れなかったものをやり直す分には良いのですが、それなりにうまくできたと思えるものを作り直さなければいけないのは辛いですよね。
その点で、今回この発見が出来たのは、本当に、良かったと思っています。
今回は以上です。読んで下さった方、ありがとうございました。
サイト名、作品名 | URL | 参考にした日付 |
---|---|---|
Blender | https://www.blender.org/ | 2022/12/11 |
Blender Manual | https://docs.blender.org/manual/ja/3.3/index.html | 2023/6/1 |
3Dミクを躍らせるツールを自作してみた(説明前編) | https://www.nicovideo.jp/watch/sm2420025 | 2023/6/19 |
UuuNyaa/blender_mmd_tools | https://github.com/UuuNyaa/blender_mmd_tools | 2022/12/11 |
とある工房 | https://kkhk22.seesaa.net/ | 2022/12/11 |