Rigidbody & Joint [Blender, MMD Tools] #1


はじめに

今回の目的です。

  • モデルの髪がモーションに合わせて自然に揺れる仕組みを作る

BlenderとMMD Toolsを使用して、MMDモデルを作成しています。

簡単なモデルを作り、モーションデータを読み込んで、MMDで動作確認をするところまで進めてきました。

モデルをもう少し作り込んでいきたいと思います。

具体的には「モデルの髪がモーションに合わせて自然に揺れる」ような仕組みを作りたいと考えています。

今回の学習のテーマです。

  • BlenderでMMD Toolsの機能を用いモデルに剛体を設定する

目的の達成のために、色々試してみたいと思います。

今回はまず、MMD Toolsで剛体とジョイントを作成する、その操作や設定をする方法を調べます。

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

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

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

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

今回の成果

今回、こちらを作成しました。

メッシュにアーマチュアを設定し、MMD Toolsの機能で剛体とジョイントを作成、メッシュに結びつけ、アニメーションを再生しました。

MMD Toolsを用いた剛体とジョイントの作成方法を学ぶことが目的です。


剛体とジョイントの作成

Blenderの機能のみを用い、モデルの髪に剛体とジョイントを作成する場合、以下のような手順だったと記憶しています。

  1. 髪のボーンのコピーを作成
  2. そのコピーに対して剛体とジョイントを作成
  3. コピーの回転を「回転コピー」で髪のボーンが参照する

大雑把に言えばこのような流れだったと思います。

しかし、MMD Toolsを使用した場合、それがどのような作業工程になるか、事前知識がありません。

ですので、まずはMMD Toolsで剛体とジョイントを作成するにはどうしたらよいか、探ってみたいと思います。

実験用オブジェクトの作成

剛体とジョイントの実験をします。

まずは実験用のメッシュオブジェクトを作成します。

①新規ファイルを開きデフォルトの立方体を編集
②「モデル作成」を選択し『New MMD Model』を作成
③立方体の形状に合わせてボーンを伸ばす
④立方体に『New MMD Model_arm』で頂点グループを作成
⑤ウェイトペイントを行う

上記の手順で画像のメッシュオブジェクトを作成しました。


剛体の作成

実験に入ります。

簡単な物理演算実験

MMD Toolsの剛体作成の手順を知るため、まずは剛体を作成してみます。

①MMD Tools「リジッドボディ」タブを開き「+」ボタンをクリック

②リジッドタイプを「物理演算」に変更(実験のため)

③ワールド原点に新規の剛体オブジェクトが作成される

④剛体をZ軸で高い位置に移動させる
⑤再生

手順①~⑤を動画にしました。

video1 Rigidtype: Physics calculation

作成した球状の剛体オブジェクトが自然落下していきます。

リジッドタイプ:ボーンで実験

New MMD Model』のエンプティ『rigidbodies』下に作成した剛体が配置されています。

3Dビューポートまたはアウトライナーで剛体を選択し、プロパティの「物理演算プロパティ」で剛体の設定を確認・変更できます。

「MMDリジッドボディ」でリジッドタイプを「ボーン」に変更し、もう一度再生してみます。

video2 Rigidtype: Bone

この場合は自然落下はしません。


ジョイントの作成

剛体と剛体の結び目、ジョイントを作成してみます。

簡単なジョイントの実験

まずは2個目の剛体を作成します。

①リジッドタイプ「ボーン」の剛体を複製
②複製した剛体のリジッドタイプを「物理演算」に変更

MMD Toolsのジョイント作成の手順を知るため、これらの剛体にジョイントを作成してみます。

③ふたつの剛体を選択
④MMD Tools「ジョイント」タブを開き「+」ボタンをクリック

⑤デフォルトのまま「OK」をクリック
 (ここで剛体が複数選択されていない場合、エラーが出ます)

⑥剛体間に新規のジョイントオブジェクトが作成される

⑥再生

手順①~⑥を動画にしました。

video3 Rigidtype: Bone with Physics calculation

「ボーン」剛体に吊り下げられるような形で「物理演算」剛体が自然落下しています。ただ、ジョイントの影響のためか、無限に落下することはなく、ある程度のところで停止しています。

剛体とジョイントをさらに増やして実験してみました。

video4 Rigidtype: Bone with Physics calculations

どうやらジョイントの位置は固定で動かないようですね。


ボーンと剛体を結びつける

剛体が移動する時、その動きに合わせてボーンが移動する必要があります。ボーンと剛体を結びつける方法を探っていきます。

作成した剛体の物理演算プロパティ「MMDリジッドボディ」を確認します。

ボーンを指定する欄があります。ここで物理演算の影響を与えたいボーンを指定すれば良さそうです。

このことから、以下の手順でボーンと結びついた剛体とジョイント作成できそうです。

  1. 「MMDリジッドボディ」で各ボーンを指定
  2. 各剛体間にジョイントを作成
  3. 指定したボーンの中心に各剛体を移動させる
  4. MMD Tools「物理演算」をクリックし青色で点灯させる
  5. 再生

動画を作成しました。

video5 Connect Rigidbodys and Bones

剛体を移動させる際、操作をミスしています。お見苦しくて申し訳ないです。

手順リストでは省きましたが、最初に既存のジョイントを削除しています。

「MMDリジッドボディ」で剛体にボーンが指定されていた場合、剛体の位置に関わらず、ジョイントはボーンのテールとヘッドが重なる位置に作成されています。


まとめ

ボーンと剛体を結びつける簡単な方法があります。

もしかしたら?と試してみたのですが、思った通りうまくいきました。その方法は以下です。

  1. アーマチュアの編集モードで指定するボーンを選択する
  2. MMD Tools「リジッドボディ」タブで「+」ボタンをクリック

こちらの手順ですと、各剛体の物理演算プロパティ「MMDリジッドボディ」でボーンを指定せずとも、自動で選択されたボーンが指定されます。

また、各剛体の名称、及びその剛体間で作成した各ジョイントの名称は、そのボーンに因んだものになりますので、判別がしやすいと思います。

mmd_bonetrack』という名前の連番エンプティが作成されるのですが、このオブジェクトの役割は不明です。

余談ですが、リジッドタイプ「物理演算」剛体が結びついたボーンは、「関係」で「接続」が切られ「ローカル位置」に変更されるようです。


上記の方法で、実験用オブジェクトに対して初めから剛体とジョイントを作成したものが、冒頭にご紹介した今回の成果となります。


終わりに

BlenderやMMD Toolsに触れる時間が増えてきたせいか、少し勘が働くようになってきたような気がします。

今回は以上です。

読んでくださった方、ありがとうございました。

サイト名ページタイトル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
参考URL

comment