キャンセルボーンの位置と働き


はじめに

BlenderでMMDモデルを制作しています。趣味です。

今回は負の回転付与が設定されたボーンの位置と働きについて調べてみました。


尚、記事の内容については正確性を保証致しません。
解説ではなく、個人のメモ、備忘録のような情報としてお読みください。

以下の環境でモデルの制作を行っています。

ソフト、アドオン
Blender3.35LTS
mmd_tools2.8.0
PmxEditor0.2.5.7
制作環境

参考MMDモデル

ボーンの構造や設定について参考にさせて頂きました。
製作者の皆様、ありがとうございました。

モデル名製作者様URL
Tda式初音ミク・アペンド Ver1.10Tdahttps://3d.nicovideo.jp/works/td1586
YYB Hatsune Miku_NT三目YYBhttps://www.nicovideo.jp/watch/sm41007053
Sour式鏡音リンVer.2.01Sour暄https://bowlroll.net/file/155105
お借りした作品

腰キャンセルボーン

ボーンの構造です。
足FKボーンは試作中ですので無視して下さい。

ボーン名Weight回転付与
グルーブ
下半身
腰キャンセル下半身付与親:腰、値:-1.00
腰キャンセル
足D腰キャンセル付与親:足、値:1.00
腰部のボーン構成

腰キャンセルボーンに付いた、腰を付与親とする負の回転付与の影響で、足の裏で床を捉えつつ体を捩じる動作を作ることができます。

これは以前の投稿で実験を行って確認しました。負の回転付与がないと、腰の回転で足首・つま先に不自然な捻じれが発生してしまいます。

尚、腰の回転に伴う下半身以下の動きについては、腰キャンセルだけでなく足部のIKの働きも関係していると思います。


位置と働き

腰の回転と腰キャンセルがつくる動作には、回転付与の負の値だけでなく、腰キャンセルボーンの位置も重要な役割を果たしているようです。

まず結論

皆様のモデルを参考にさせて頂くと、腰キャンセルの位置は下の画像のような位置が望ましいようです。

腰キャンセルボーンは足ボーンのヘッドの位置から垂直に伸びています。

なぜ腰キャンセルボーンはこの位置になるのか?調べてみました。

腰キャンセルが効き過ぎる?

当初は下の画像のような構造で制作を進めていました。
赤く縁取られているのが腰キャンセルボーンです。

下半身のテールの位置から足のヘッドの位置に向かって腰キャンセルボーンが伸びています。

この構造で腰を回転させると、Blender、MMDでそれぞれ下の動画のような挙動になります。

Video1

演算方法に違いがあるのか、BlenderとMMDで動作に大きな差があります。

MMD上の動作を見ると、やや不自然ですね。腰の捻りに対して足の連動が足りていない感じがします。
回る箇所、回らない箇所の差がハッキリし過ぎている印象です。

腰キャンセルの位置

実験

腰部のボーン構成を再現した簡単なアーマチュアを作成しました。

腰キャンセルの回転付与のON・OFFの切替や、その位置の変更で、足の動きがどう変化するか調べてみました。

Video2
例Aの場合

回転付与がない例Aでは、Z軸の腰の回転に追従して足は円軌道の移動をしています。

例Bの場合

回転付与をONにした例Bでは、腰キャンセルボーンの動きが上下動に変わり、足の円軌道の移動はなくなりました。

PmxEditorでは、例Bと同じ条件でも、腰キャンセルボーンに上下の動きが発生しませんでした。その代わりに、足が半径の小さい円軌道で腰の回転に追従しています。

これはVideo1と同じ状態だと思います。円軌道の追従が弱くなったため、腰は回り足はほぼ静止している、という状態になっていたようです。

尚、Blenderのポーズモードと、MMD、PmxEditorとでこのような差が出てしまう理由は不明です。

例Cの場合

回転付与をON、腰キャンセルボーンの位置を変更した例Cでは、例Aのように、足は腰の回転に円軌道で追従しています。
異なるのは、例Aでは足の向きは回転に応じて変化したのに対して、例Cでは常に同じ方向にその面を向けています。

結論

自分自身で腰を回してみると、お腹は横に向きますが、足や膝の向きはほぼ変化していないように思います。
足のみで動かせば膝を横に向けることは可能です。しかし、腰の回転に対して足がどのように付いてくるか、と考えれば、足や膝の向きはそれほど変わらないのが自然なのだと思います。

そのように考えると、やはり例Cの場合、すなわち製作者の皆様のモデルの腰キャンセルボーンの位置が適切であると言えそうです。

  • 腰キャンセルボーンは足のヘッドの位置からZ軸で垂直に伸ばす

位置を変更

上記の結論を受けて、腰キャンセルボーンの位置を変更します。

結果が下の動画です。

Video3

Blender上では、膝の屈伸がなくなりました。MMD上では腰の回転にある程度足が追従するようになりました。

腰が回れば左右の膝の位置で前後に若干の差が出ますから、やはり、この動作がの方がより自然ではないか、と思います。

可動範囲が広がった結果、足やお尻がスカートを突き抜けてしまう新たな問題が発生しました。
メッシュの頂点の位置を調整して修正する予定です。


まとめ

  • 腰キャンセルボーンは足ボーンと同じ位置にヘッドを配置する

基本的には、MMDモデルは負の回転付与が設定されたボーンとその子の位置は同じ位置で制作されているのだと思います。
であれば、配布されているモーションもそれらのモデルに読み込まれることが前提となっているはずです。

そう考えると、負の回転付与が設定されたボーンの位置は、例に習う、それがベストな選択なのではないか、と思います。

余談ですが、肩Cボーンについても、今回の腰キャンセルボーンと同じことが言えるだろうと思います。


その他

表示先(>)

PmxEditorで、各ボーンのテールの位置を表す項目のようです。

皆様のモデルを参考にさせて頂くと、PmxEditorで腰キャンセルボーンの表示先・相対の値は全て0です。
mmd_tools上でティップポーンの✓状態には関係があるのではないか、と考えています。

ただし、このことと、今回の腰の回転と足の追従に関係があるかは不明です。

回転付与設定のあるボーン

皆様のモデルを参考にさせて頂くと、回転付与の設定されたボーンについては以下のどちらかの特徴があるようです。

  • 表示先、ボーンに✓が入り、値が-1
  • 表示先、相対に✓が入り、値が全て0

腰キャンセルに加えて、肩Cボーン、腕部の各捩ボーン、足部の各Dボーン等にこのような特徴が見られました。

どのような場合に「ボーン」と「相対」を切り替えるのか、これもわからないので調べる必要がありそうです。

組み立ての注意点

作業中に遭遇したトラブルについてです。

組み立て時のエラー

MMDボーンツール上から設定する回転付与は、mmd_toolsの組み立てを実行しBlender上で演算結果を確認できるようにします。

しかし、条件は不明ですが、回転付与の組み立て実行時にエラーが発生する場合があります。

出力されたテキストを読むと、関数の役割等は不明ですが、Pythonの処理で不都合が起きていることが分かります。(文末はcontext is incorrect.)

このエラーが発生することでどのような不具合が起きているのかは、私には分かりませんでした。
稀に設定した回転付与が消去されていることがありますが、このエラーに関連しているかは不明です。

組み立ての更新

編集モードでボーンの位置を変更した後等に、組み立ての再実行を行わないと、正しい演算が行われていない場合があるように感じます。

Video2のように、腰キャンセルボーンの働きを確かめる際等、ボーンの位置を変更した後の組み立ての再実行の有無で、ボーンの動作が変わってしまうことがあります。

勘違いをしないために、ボーンの何かを変更した場合は、ポーズモードで確認する前に組み立ての再実行を行う方が無難ではないか、と思います。


終わりに

分からないことは増えましたが、より良いと思える方法も見つかったので、少し前進したかな、と思います。

今回は以上です。読んで下さった方、ありがとうございました。

サイト名、作品名URL参考にした日付
Blenderhttps://www.blender.org/2022/12/11
Blender Manualhttps://docs.blender.org/manual/ja/3.3/index.html2023/6/1
3Dミクを躍らせるツールを自作してみた(説明前編)https://www.nicovideo.jp/watch/sm24200252023/6/19
UuuNyaa/blender_mmd_toolshttps://github.com/UuuNyaa/blender_mmd_tools2022/12/11
とある工房https://kkhk22.seesaa.net/2022/12/11
Tda式初音ミク・アペンドhttps://3d.nicovideo.jp/works/td15862023/6/19
【MMD】Primary Star【モデル配布】https://www.nicovideo.jp/watch/sm410070532023/6/27
Sour式鏡音リン・レンVer.2.01https://bowlroll.net/file/1551052023/6/19
参考URL

comment