Blender ウォッチング

「Blender」でVRMモデルにエプロンを着用! ポーズに合わせて服が自然に動くように

頂点グループの仕組みを理解しよう ~まずは自動でウェイトを関連付け

 本連載では、無料の高機能3Dモデリングツール「Blender」の使い方や関連情報を幅広くお伝えします。

 今回はチョコ祭り(バレンタインデーともいう)も近いので、エプロンを着せてみることにしました。

 用意された「エプロンモデル」をVRMモデルに着用し、キャラクターの動きに合わせて変形できるようにすることが目標になります。

エプロン着用で気分が高まる慧さん
作業ファイルと「Blender」について

 作業ファイルには、プロ生ちゃんこと「暮井 慧」をサンプルファイルに使用されていただいています。許諾をいただいたPronama LLC様、VRMモデルを公開されている120様に感謝いたします。

 このサンプルファイルは120様作成のVRMモデルを.blendファイル化した物に少し手を入れているため、公式の.blendファイルとは差異があります。使用条件については下記をご覧ください。

「サンプルキャラクターモデル」のblendファイルをダウンロード(※)


※ダウンロード数が少ないため、Webブラウザーによってダウンロードがブロックされる場合があります。その場合はリンクの右クリックメニューからファイルの保存を行い、警告が表示されても[継続]などの項目を選択して保存してください。

 「Blender」のバージョンは以前と同様「Blender 2.93LTS」を使用します。

エクスポート用アドオンについて

 エクスポートには「VRM Addon for Blender」を使用しています。スクリプト作者の皆様に感謝いたします。

 アドオンの導入方法については以前の記事でご確認ください。

エプロンオブジェクトのモディファイアーの適用

 すでにサンプルファイル内ではすでにエプロンが着用されていますが、まだキャラクターモデルと一緒に利用できるようにはなっていませんので、まずはその準備を行います。

 「モディファイアー」とは、ここでは元データを維持したまま、形状を変形する機能を指し、サンプルの「エプロンオブジェクト」にも使用されています。

 この機能は便利な反面、後述の「頂点グループ」のような、元データに対して使用される機能との併用時に注意が必要になります。

 例えば細分化を行うモディファイアーの場合、細分化後のデータに対して細かな設定を行いたいのに、元の粗いデータにのみ設定が行われず、期待通りに動かないことがあります。特にVRMなどにエクスポートを行う場合、Blender内のモディファイアーによる「変形後」のデータが出力されることを考慮する必要があります。

「サブディビジョンサーフェスモディファイアー」未適用で頂点グループのウェイトを設定した場合と、適用後に設定した場合。同じポーズなのに変形に違いが発生

 そういうわけで、このモディファイアーの「適用」を行い、元データを変形後のデータに変換することで、後の作業がスムーズに行えるようにします。

  1. 「エプロンオブジェクト」が選択状態であることを確認し、未選択なら左クリックで選択します。
  2. 画面右端の[プロパティエディター]の「スパナ」型アイコンをクリックして[モディファイアープロパティ]に変更します。
  3. 一番上の「細分化」という名前のパネルの[∨]ボタンをクリックし、[適用]を実行します。
「モディファイアープロパティ」の一番上のパネルの[∨]ボタンから[適用]を実行

 なお、その下の[ソリッド化]パネルはそのままにしておいてください。

頂点グループによるアーマチュアとの関連付け

 サンプルのVRMモデルのように、キャラクターモデルは一般的にその形状を表現する「メッシュオブジェクト」と、その骨組みとなってポージングを行う「アーマチュアオブジェクト」の2つが組み合わさってできています。

 この2つを関連付ける方法の一つが「頂点グループ」です。各頂点をグループ化し、同じ名前の「ボーン」による変形を部分的に行うことができます。また、頂点に与えた「ウェイト」の大きさによって、複数のボーンの変形をブレンドすることもできます。

 ここではキャラクターモデル同様、「エプロン」に「頂点グループ」を設定し、「アーマチュアオブジェクト」に関連付けます。

頂点グループのウェイトと変形例

メッシュオブジェクトへの「頂点グループ」の自動設定

 その「頂点グループ」の設定ですが、ここでは「自動設定機能」を使って楽をすることにします。これは「ペアレント」ツールを通じて行います。

  1. 「メッシュオブジェクト」(サンプルでは「Apron」)が選択中であることを確認し、そうでなければ左クリックして選択します。
  2. 「アーマチュアオブジェクト」(サンプルでは「Armature」)を[Shift]キーを押しながら左クリックして選択します。
「アーマチュアオブジェクト」を[Shift]キーを押しながら左クリックして選択

 選択できたら右クリックメニューの[ペアレント]-[自動のウェイトで]を実行します。これで「アーマチュアオブジェクト」の各ボーン名が「頂点グループ」としてメッシュオブジェクトの近い位置の頂点に記録されます。

右クリックメニューの[ペアレント]-[自動のウェイトで]を実行

ウェイト設定の確認

 「ウェイト」がちゃんと設定されているか確認してみましょう。

 まず[3Dビューポート]左上のプルダウンリストから[ポーズモード]を選択し、画面左端のツールバーから[回転]ツールに変更します。

[3Dビューポート]左上のプルダウンリストから[ポーズモード]を選択し、[回転]ツールに変更

 胸元のボーン(ズームアウトしないと見えないかもしれません)を左クリックして選択し、白い円をドラッグして適当に動かしてみましょう。追従して動けばOKです。

 ドラッグ後は右クリックでキャンセルするか、位置が動いてしまったなら[Ctrl]+[Z]キーで元に戻してください。

胸元のボーンをクリックして選択し、白い円をドラッグして適当に移動

VRMエクスポーターでの出力と3teneFREEでの確認

 では早速VRMエクスポーターで出力し、「3teneFREE」で確認してみましょう。ポーズを選び、エプロンも追従して動いていれば成功です……が、残念ながら一部のポーズで下にある制服が干渉し、穴が開いたように表示されてしまっています。

「3teneFREE」による確認

 変化の大きいポーズ(体育座りなど)は仕方ないとしても、少し体をひねっただけで干渉してしまうのはなんとかしたいところです。

 というわけで、次回はウェイトを調整する「ウェイトペイント」について解説したいと思います。

終わりに

 ちなみにエプロンには「UV座標」と「白い」テクスチャ画像が付いています。以前の記事を参考に着色してみてください。

 ではまた!