BlenderでMMDをモデル作成 #2【回転付与】


はじめに

『BlenderでMMDをモデル作成 #1』の続きです。

前回でモデルのメッシュ・アーマチュアの作成を済ませました。今回は作成したボーンに「回転付与」の設定をします。

尚、記事の内容については正確性を保証致しません。「解説」ではなく、個人のメモ、備忘録のような情報としてお読みください。
また、以下の環境でモデルの作成を行っています。

ソフト、アドオン
Blnender2.83LTS
MMD Tools2.4.0
PmxEditor0.2.5.7

各機能や設定についてハイライトで色を分けています。

  • Blenderの機能・設定
  • MMD Toolsの機能・設定
  • MMD Toolsの機能で作成されたもの

モデル制作者の皆様の作品からその設定等を参考にさせていただきました。参考にさせていただいた制作者様、モデル名は末尾に記載いたします。

2023/2/27:記事を更新
 読みにくいと感じた箇所を修正しました。


回転付与の設定

作成したボーンに「MMD Tools」の機能「回転付与」の設定をします。

基本情報

まずは「回転付与」の目的、手順等について確認をします。

目的

回転付与」を設定する目的です。

  • 「Dボーン」「Cボーン」を作成する

具体的な目的については、それぞれの章で扱います。

手順

「ボーンプロパティ」で設定します。

  • MMDボーンツール」で「回転+」を実行
  • 「骨」アイコンの空欄に付与親ボーンの名称を入力
  • 「影響」の値を変更(必要があれば)

各手順は順不同で問題ないと思います。

回転+」を実行すると、ボタンが青色表示に変更されます。

『arm2.D.L(左ひじD)』に「回転付与」を設定(『arm2.L(左ひじ)』が付与親)

設定項目

「ボーンプロパティ」における「回転付与」の各設定項目についてです。

付与親

「骨」アイコンの空欄には、回転の参照先であるボーンの名称を入力、またはリストから指定します。

この「回転の参照先のボーン」のことをPmxEditorでは「付与親」という用語で表現します。
簡潔なので、この記事でもこちらの表現を用います。

影響

回転付与」を設定するボーンとその値の関係は、以下のように考えていいのではないか、と思います。

ボーンの種類役割
Dボーン回転を真似する 1.00
Cボーン回転を打ち消す-1.00

「影響」の値については「Dボーン」、「Cボーン」の章で扱います。


回転付与を反映

Blneder上で設定した「回転付与」を確認します。

回転付与」を反映

設定した「回転付与」をBlender上で確認できるようにします。

手順
  • 組み立て」の「ボーン」を実行
画像は「ボーン」実行後
概要

上記の手順を済ませた後、「回転付与」を設定したボーンの「ボーンコンストレイントプロパティ」を確認します。

mmd_additional_rotation』が設定された状態

mmd_additional_rotation』という「ボーンコンストレイント」が追加されています。

ポーズモードで付与親のボーンを回転させると、「回転付与」が設定されたボーンもその効果で回転します。
Blender上で「回転付与」の影響を確認可能になります。

回転付与」が設定されたボーンは、ポーズモードでは緑色で表示されます。

反映を消去

回転付与」をポーズモードで反映されないようにします。

手順
  • 組み立て」の「ボーン」の横の「ゴミ箱」を実行
概要

回転付与」の効果がBlender上に反映されなくなります。
ポーズモードで付与親のボーンを移動させても、「回転付与」が設定されたボーンは移動しなくなります。

具体的には、『mmd_additional_rotation』が消去されるため、「ボーンコンストレイント」がなくなった結果、Blender上では反映が確認できなくなる、ということだと思います。

尚、反映を消去しても、設定した「回転付与」が消去されることはなく、「ボーン」を実行すれば『mmd_additional_rotation』は再び設定されます。

実験

回転付与」の反映のON、OFFを切り替え、その様子を確認してみます。

左腕の各「Dボーン」に「回転付与」が設定されています。
設定の反映・消去を切り替えつつ、「回転付与」の付与親となっているボーン群を「IK」ボーンで移動させます。

video1:「回転付与」反映の切替

反映がOFFだと「Dボーン」群が追従していません。

「Dボーン」の頂点グループにウェイトが乗っている場合、反映の切替がメッシュの変形に影響します。

video2:反映の切替とメッシュの変形
順序行動結果
1「BCP」を確認mmd_additional_rotation』有り
2『左手IK』を移動させるメッシュは変形する
3ゴミ箱」クリック
4「BCP」を確認mmd_additional_rotation』無し
5『左手IK』を移動させるメッシュは変形しない
6ボーン」クリック
7「BCP」を確認mmd_additional_rotation』有り
8『左手IK』を移動させるメッシュは変形する
※「BCP」ボーンコンストレイントプロパティ

尚、「IK」と「Dボーン」については次の章で扱います。


回転付与の注意点

以下の環境で発生した問題です。

Blender2.8.3 LTS
MMD Tools2.4.0

対称化と付与親の問題

MMDボーンツール」機能で設定した「回転付与」は、Blenderのボーン左右「対称化」機能に対応していないようです。

付与親が左右反転されない

設定は左右反転されず、対称のボーンにそのままコピーされてしまいます。

『左足D』があり、『左足D』には『左足』を付与親とする「回転付与」が設定されています。
『左足D』を「対称化」し、『右足D』を作成します。

実行すると、以下のような「回転付与」設定になってしまいます。

項目ボーン名
「対称化」元左足D
回転付与」付与親左足
対称化させるボーン

項目ボーン名
「対称化」先右足D
回転付与」付与親左足
対称化で作成されたボーン

『右足D』の「回転付与」の付与親は『右足』であるのが正しいですが、「対称化」で作成すると付与親は左右反転されず『左足』が指定されてしまいます。

簡単な参考動画を作りました。

video3:「対称化」と付与親
ボーン名レイヤー回転付与:付与親
arm.0001
arm.0011
arm.D.0002有り:arm.000
arm.D.0012有り:arm.001

これらのボーンを「自動ネーム(左右)」後、「対称化」し、作成された右側のボーンの「回転付与」の付与親を確認しています。

付与親には左側のボーンが指定されてしまっていますね。

付与親を修正時のトラブル

付与親を指定を変更すれば解決できる問題のはずです。しかし、下記のトラブルに遭遇しました。

  • 付与親の変更を受け付けない

簡単な参考動画です。

video4:付与親変更を受け付けない

対称化」で作成されたボーンの誤った付与親を変更するため、『arm.001.R』や『arm.000.R』を選択しているのに変更されていない様子が伝わるでしょうか?

動画には含まれませんが、以下も試してみました。

  1. 全てのボーンの「回転付与」から付与親を「×」実行で削除
  2. 各ボーンに付与親を改めて指定

この場合でも、作成された右側のボーンの付与親に『.R』の名称のボーンを指定できませんでした。

再現はできませんでしたが、この状態で作業すると以下のトラブルが発生することがありました。

  • 付与親の指定が全てのボーンから消える
  • 組み立て」の「ボーン」を実行するとBlenderが強制終了する
解決策

対称化」でボーンを作成する場合、「回転付与」の設定は「対称化」後に行う方が良いと思います。

尚、繰り返しになりますが、この問題は以下の環境で発生しています。

Blender2.8.3 LTS
MMD Tools2.4.0

最新版を使用すれば起こらない問題かもしれません。


回転付与とDボーン

「Dボーン」に「回転付与」を設定する際の注意点、そして「Dボーン」の役割について考えていきます。

Dボーンへ回転付与を設定

各「Dボーン」に「回転付与」を設定します。

『arm2.D.L(左ひじD)』に「回転付与」を設定(『arm2.L(左ひじ)』が付与親)

画像では『左ひじD』に『左ひじ』を付与親として「回転付与」を設定しています。

回転付与」を設定するボーンと付与親のボーンは全く同じ位置に存在します。ボーンの名称を確認して、間違えないように「Dボーン」を選択します。

「IK」の影響を受けるボーンを複製して作った「Dボーン」に「回転付与」の設定が必要です。
今回の場合、以下の「Dボーン」に「回転付与」の設定が必要です。

  • 腕の系統: 腕D、腕捩D、肘D、手捩D
  • 足の系統: 足D、膝D、足首D、つま先D

「IK」が足のみであれば、腕系統に「回転付与」の設定は要らないでしょうし、そもそも「Dボーン」を作成する必要もないと思います。


Dボーンについて

「Dボーン」の役割について考えていきます。

Dボーンを作る理由

「IK」を設定すると、「IK」影響下にあるボーンは操作が制限されます。動かそうとしても、ごく僅かな範囲でしか動かなくなります。
その状況を解決するために、「Dボーン」を作成し、これに「回転付与」を設定するようです。

今回作成したモデルで試してみました。

vedeo5:「IK」と「Dボーン」

大まかに、以下の順序で操作しています。

  1. 『左足IK』を移動
  2. 『左足』『左ひざ』を回転させる
  3. 『左足D』『左ひざD』を回転させる

『左足IK』を移動させた後、『左足』『左ひざ』を回転させても、可動範囲が狭く制限されています。
しかし、『左足D』『左ひざD』の場合、『左足IK』は置き去りにされ、大きく回転させることができます。


MMDモデルを動かして遊ぼうとした時、固まって動かない関節があるし、「D」とか「IK」とかよくわからない名前があるし、と困ったことをふと思い出しました。

Dボーンの仕組み

いくつかの既存のMMDモデルをPmxEditorで開き、「IKボーン」及び「Dボーン」について調べてみました。

『左足ボーン』『左足Dボーン』を例に挙げて説明します。このふたつのボーンには以下の特徴がありました。

ボーン名ウェイト回転付与IKの影響
A:左足なしBの付与親あり
B:左足Dありありなし

重要なのはウェイトが乗っているのはどちらのボーンか?という点です。ウェイトが乗っているのは『左足D』ですね。

これは、以下の条件の時、他のボーンでも同じことが言えるようです。

  • 「IK」の影響下にある『○○』ボーンがある
  • 同じ位置に『○○D』ボーンがある
  • 『○○D』ボーンの「回転付与」の付与親は『○○』ボーン

このことから、「Dボーン」とは以下のような挙動なのではないか、と思うのです。

  1. 「IKボーン」が動く
  2. 「IKボーン」に操作されて付与親ボーンが動く
  3. 付与親の回転をコピーした「Dボーン」が動く
  4. 「Dボーン」にはウェイトが乗っているのでメッシュが変形する

「IK」に操作される付与親ボーンは「Dボーン」に回転の情報を伝え、実際にメッシュを変形させるのは付与親の回転をコピーした「Dボーン」である、ということです。

そして、「Dボーン」は「IK」の影響を直接には受けないので、単独の操作が可能です。故に、「IK」が働いている状態でも、「Dボーン」を操作することで、あたかも付与親ボーンを操作したかのような動きを表現できる、ということですね。

まとめると、「Dボーン」の役割は以下のようになる思います。

  • 付与親の回転を参照してメッシュを変形させる
  • 「IK」から独立してメッシュを変形させる

足先EXについて

「つま先」と「足先EX」

「つま先D」という名称は使わないようですね。「足先EX」という名称を用いるようです。

そもそも「足先EX」には「回転付与」の設定がないので、「Dボーン」ではない、ということなのだと思います。

「つま先」「足先EX」の特徴は以下です。

ボーン名ウェイト
つま先無し足首
足先EX有り足首D

わたしが調べた範囲なので、異なる場合もあると思います。

「足先EX」は必要なのか?

「つま先IK」が「つま先」のみを操作するのであれば、ウェイトを割り当てるための「足先EX」を作る理由はあるのでしょうか?
操作するボーンがひとつであれば、「足IK」の場合と違い、膝の位置を変更したい等の問題は起こらないのではないか?と思うのです。

「足先EX」を作らず、「つま先」にウェイトを乗せてしまえばいいのでは?と思うのですが、変形順序の問題が発生するのでしょうか?
試してみました。

ウェイトを乗せた「つま先」を作成しました。

video6:「つま先」にウェイトを乗せる
時間作業内容
0:00~既存の「つま先」を削除
0:11~「つま先D」の「回転付与」を消去
0:26~「つま先D」の名前を「つま先」に変更
0:36~新「つま先」のボーン順序を変更
0:50~新「つま先」の親を変更
1:26~「つま先IK」のTargetを変更
2:13~TransformViewで検証
2:56~MMDで検証

作成後の各ボーンの情報です。

ボーン名変形階層LinkTarget
左足IK1左足、左ひざ左足首
左つま先IK1左足首左つま先
「IK」の情報
ボーン名変形階層ウェイト
左足、左ひざ、左足首0無し
左足D、左ひざD、左足首D1有り
左つま先0有り
変形階層」とウェイト

上記の手順でウェイトの乗った「つま先」を作成し、動作を確認しています。
問題なく動いているように見えるのですが、どうでしょうか?

今回は見つけられなかっただけで、「足先EX」がないと発生する問題が存在するのかもしれません。要勉強です。

モーションデータに合わせる

制作者が個人でモデルを動かすだけであれば、問題はないのかもしれません。

しかし、他の製作者の方が作成されたモーションデータを読み込みたい場合は、問題が起こります。.vmdを読み込む際に、ボーンの名称と役割が一致していなければ、ボーンは期待したようには動かないからです。

例えば、『左足先EX』で足の指を動かすというモーションがあるのなら、モデルにも『左足先EX』が必要になります。

仮にリギング上の問題がないにしろ、MMDモデルを躍らせたい、という目的に適うのは、標準的なMMDモデルのボーン構成に合わせた作成手順ではないか、と思います。


回転付与とCボーン

アーマチュアの中心に近いボーンの回転を打ち消して、中心から遠いボーンに回転が伝わらないようにするため、設定するようです。

今回の場合、肩と腰に対してそれぞれ『肩C』及び『腰C』に設定します。

肩Cボーン

肩回りのボーン構成について見ていきます。

概要

今回の場合、『肩P』、『肩』、『肩C』ボーンをそれぞれ作成し、『肩C』に対して以下の「回転付与」の設定をします。

ボーン名付与付与親
肩Cボーン回転付与肩Pボーン-1.00

作成する理由

下記のような効果を狙っているようです。

『肩P』を操作する場合

『肩C』で『肩P』の回転を打ち消すため、『肩P』の回転が子の腕以下のボーンに伝わらなくなります。
結果、肩だけが回転し、腕から先は回っていません。手の甲は常に上を向いています。

video7:『肩P』をボーンの軸で回転させた
『肩』を操作する場合

『肩』の親である『肩P』は動いていないため、『肩C』の「回転付与」は働かず、『肩』の回転は子の腕以下に伝わります。
結果、肩の回転に合わせて腕から先も全体が回ります。手の甲の向きが変化しています。

vdeo8:『肩』をボーンの軸で回転させた

肩部のウェイト配分

様々な作成方法があると思いますので、一例として挙げます。

今回のモデルは、肩部のウェイトは『肩』のみ乗せて作成しました。
『肩P』、『肩C』は「変形」のチェックを外し、頂点グループには含めず、ウェイトは乗せませんでした。

自動のウェイトで」を選択した結果。中心部にはもっとウェイトを乗せても良いはず

ウェイトの乗っていない『肩P』ですが、親である『肩P』が回転すれば、子である『肩』は回転します。『肩』はウェイトが乗っているのでメッシュの形状は変化します。

今回は画像のような配置にしましたが、親子関係さえ間違えなければ、『肩P』及び『肩C』は、『肩』と同じ位置・サイズでも問題はないのではないか?と思います。


腰Cボーン

腰回りのボーン構成について見ていきます。

概要

『腰』と各「足」ボーンの間に作成します。

追記:2023/7/10
厳密に言えば、各足のヘッドの位置から垂直に伸ばすのが正しいようです。
腰キャンセルボーンについて私なりに調べてみましたので、ご興味あればご覧下さい。

ボーン名付与付与親
腰Cボーン回転付与腰ボーン-1.00

作成する理由

『腰』の回転を『腰C』が打ち消して、足以下のボーンが回りすぎるのを抑える役割のようです。

『腰C』の「回転付与」の効果を確認してみます。

「IK」をONの状態で『腰C』の「回転付与」を切り替えて『腰』をY軸で回転させてみました。

video9:『腰C』の「回転付与」をオフ
video10:『腰C』の「回転付与」をオン

足裏のグリップ感に差が出ますね。
マイナスの「回転付与」の働きがないと、『足首』の変形で不自然な捩れが出来てしまうようです。

腰部分のウェイト配分

自動のウェイトで」を選択した結果。やはり中心部にはもっとウェイトを乗せても良いはず

既存のMMDモデルを参考にして、今回のモデルは『腰』及び『腰C』にはウェイトを乗せずに作成しました。

理由は肩部と同じです。
『腰』及び『腰C』にはウェイトが乗っていなくても、間に挟まれる『下半身』にウェイトが乗っていれば、親子関係で『下半身』は動き、メッシュは変形するからです。


終わりに

次回は作成したモデルに「IK」の設定をします。
BlenderとPmxEditorでの「IK」の違い、「変形階層」等について書く予定です。

読んでくださった方、ありがとうございました。
どうぞ良いお年をお迎えください。

サイト名URL参考にした日付
Blenderhttps://www.blender.org/2022/12/11
UuuNyaa/blender_mmd_toolshttps://github.com/UuuNyaa/blender_mmd_tools2022/12/11
とある工房https://kkhk22.seesaa.net/2022/12/11
Vocaloid Promotion Video Projecthttps://sites.google.com/view/vpvp/%E3%83%9B%E3%83%BC%E3%83%A02022/12/11
MMD用ボーンの作り方【技術書】https://booth.pm/ja/items/34225582022/12/11
参考URL

参考にさせていただいたモデルについて

readme等を読み、禁止事項に当たらないよう注意し、今回の投稿をしております。

モデル制作者の皆様には、この場を借りてお礼を申し上げます。
制作者の皆様、素晴らしいモデルを使用させていただき、ありがとうございます。

モデル名製作者様URL
Tda式初音ミク・アペンド_ver1.10Tdahttps://bowlroll.net/file/4576
YYB Hatsune Miku_10th_v1.02YYBhttps://bowlroll.net/file/146083
つみ式ミクさんv4つみだんごhttps://3d.nicovideo.jp/works/td56081
参考MMDモデル

“BlenderでMMDをモデル作成 #2【回転付与】” への2件のフィードバック

  1. 回転付与の動作がおかしく対象化で作成したボーンの左側の挙動がおかしい・・・
    Blenderで作成しMMDに持っていきたいのになかなかうまく行きませんでした。
    こちらのブログのお陰でとても良く理解できました!

    シャドウボーン・ダミーボーンがいつの間に増えてる?と思ってたんですがもディファが!?
    これで作業が一気に進みます。

    素晴らしい知識の共有をありがとうございました(*´ω`*)

comment