Blenderで作成した旗のクロスシミュレーションをMesh2Rigでボーンアニメに変換する方法

スポンサーリンク
3DCG
スポンサーリンク

はじめに

Blenderでは、旗のアニメーションをクロスシミュレーションやフォースフィールドを用いて簡単に作成できます。しかし、その動きをそのままゲームエンジンやWeb上に持ち込もうとすると、シミュレーションの結果を出力できず、Blender内でしか利用できないという制限があります。

そこで本記事では、クロスシミュレーションで作成した旗のなびきの動きを、Mesh2Rigというアドオンを活用してボーンアニメーションに変換する方法を紹介します。この手法により、UnityやWebGLなどのリアルタイム環境でも軽快に動作する旗アニメーションを作ることが可能になります。

使用環境

Blender 4.2.8 LTS

旗の作成とクロスシミュレーションの準備

まずは、Blender上で旗を作成し、風でなびくようにクロスシミュレーションを設定します。なお、本記事の主題はMesh2Rigによるアニメーションの変換にあるため、この部分は簡潔に説明するにとどめます。

  1. Planeオブジェクトを追加します
  2. 旗の形に合わせてスケールや回転を調整します
  3. 編集モードに入り、メッシュを細分化してある程度細かくします。
  4. 布の一部を固定したい場合は頂点グループを作成し、Planeの一辺の頂点をグループに割り当てておきます。
  1. オブジェクトモードに戻り、プロパティエディタの「物理演算」タブで「クロス」を追加します。
  2. クロス設定内の「シェイプ」セクションで、先ほど作成した頂点グループを「ピン」に指定します。
  3. この状態で再生すると、頂点グループで固定した部分を除いて、布が自然に落下します。
  4. 次に、フォースフィールドとして「風」を追加します。
  5. 風が布の固定側から先端方向に吹くように、位置や回転を調整します。
  6. ただし、デフォルト設定のままだと風が弱く布が重すぎるため、風に近い部分だけがなびき、先端は落ちてしまいます。
    • この問題を解消するために、布の物理プロパティ(質量や剛性など)を調整し、風の強さを増すことで改善可能です。
    • 例えば、風の強さを1000程度に設定すると、全体がきれいにたなびくようになります。
  7. これで完成ですが、メッシュのエッジが目立つかと思うので、スムーズやサブディビジョンサーフェスモディファイアをかけておくと自然な見た目になります
    • クロスをかける前にサブディビジョンサーフェスをかけてしまうと、風の影響を受けにくくなってしまい、揺れにくくなってしまうケースがあります
    • セルフコリジョンも有効にしておくと、メッシュに食い込むような見た目を避けることができます

ここまでで、旗が自然になびくアニメーションが完成します。 次に、この動きをボーンに焼き付ける準備をします。

Mesh2Rigの概要とインストール方法

Mesh2Rigは、クロスシミュレーションやシェイプキーの動きをリグ付きのアニメーションに変換するためのBlenderアドオンです。アニメーションをボーンにベイクすることで、物理演算を使わずに再生可能な、軽量かつ汎用性の高いモデルとして出力できます。

インストール手順

  1. 「編集」>「プリファレンス」>「エクステンションを入手」に移動します。
  2. 検索窓に「Mesh2Rig」と入力します。
  3. 候補一覧に表示された「Mesh2Rig」を選び、「インストール」をクリックします。

インストールが完了すると、3Dビューポート右側に「M2R」というタブが追加されます。このタブを開くことで、Mesh2Rigの各種機能にアクセスできるようになります。

以下のURLから、青色のアドオンを入手>Blenderにドラッグアンドドロップでもインストールできます。

Mesh2Rig
Transfer cloth simulation, shape keys and other to rig animation

リグ生成とアニメーションのベイク手順

ここでは、Mesh2Rigを使って実際にリグを作成し、アニメーションをベイクする手順を紹介します。

ステップ1:リグの生成

  1. タイムラインのフレームを0に戻します。
  2. 旗のメッシュオブジェクトを選択(アクティブ状態)にします。
  3. Mesh2Rigメニュー内の「1. Create Rig」セクションで「Create Rig from select mesh」ボタンをクリックします。
  4. メッシュの頂点位置に対応するボーンが自動的に配置され、Armatureオブジェクトが作成されます。
    • 作成されるボーンの数は「Bone Count」スライダーの値によって決まります。
      • デフォルトの値は100です
      • 適正な値はそのモデルにもよりますが、サブディビジョンサーフェスをかけてない状態でのメッシュの頂点数の半分くらいを基準にしてみてください
    • 作成されたボーンが小さくて視認しづらい場合は、「Bone Length」の値を調整してください。
      • 「Create Rig from select mesh」ボタンを複数回押すと、Armatureが複数生成されてしまうため、やり直す際は古いArmatureを削除するか、Ctrl+Zで戻ってから再実行しましょう。

次に、Mesh2Rigメニューの「2. Parent Mesh To Rig」セクションを使用して、メッシュとArmatureをリンクします。

  1. 「2. Parent Mesh To Rig」欄に、対象の旗メッシュと先ほど作成したArmatureが自動で設定されていることを確認します。
  2. 「Parent with Auto Weight」ボタンをクリックすると、自動的にボーンとメッシュがウェイト付きで関連付けられます。

これで、アニメーションをベイクする準備が整いました。

ステップ2:アニメーションのベイク

この時点では、タイムラインを再生すると、メッシュはクロスシミュレーションによって動いていますが、リグ側にはまだアニメーションが設定されていません。

この動きをリグに焼き付けるために、「3. Constr -> Pose -> Del Mod」と「4. Bake Action」の手順を実行します。通常は各項目のArmatureとMeshが自動的に入力されているので、「3. Execute Step3」、「4. Bake Action For Armature」の順でボタンをクリックするだけでOKです。

なお、「4. Bake Action」ではアニメーションの長さを指定できるので、必要に応じて任意のフレーム数を入力してから実行しましょう。

ステップ3:確認と調整

ここまで実行すれば、Armatureにアニメーションが追加されています。 ただし、メッシュにはまだクロスシミュレーションが設定されたままです。
メッシュオブジェクトを選択し、物理演算タブからクロス設定を削除しましょう。

そして「5.Finalize Deform」の「Remove SD, Add Armature Mod」を押します
これにより、メッシュオブジェクト側にアーマチュアモディファイアが設定されます。
そのうえでタイムラインを再生し、ボーンアニメーションのみで布の動きが再現されていれば成功です。

もしこのとき、旗の表面がギザギザするような見た目になっている場合、次の点を確認してみてください。

  • メッシュ側のモディファイアの順番
    • 上記で紹介した旗の作り方に従って作成している場合、ここに該当する可能性が高いです
    • サブディビジョンモディファイアが一番上に配置されていて、その下にアーマチュアモディファイアがかかっている場合は並び替えを行い、アーマチュアをまず適用(=一番上に配置)したうえでサブディビジョンを適用してください
  • Bone Countの過不足
    • ボーンの数が少なすぎると、シミュレーションの動きを反映できずにカクカクした動きになります
    • 逆に多すぎても忠実に頂点の動きを再現しすぎて滑らかさが失われ、硬い動きになります
    • 上記の手順をやり直し、「1.Create Rig」のBone Countの数値を変更してみてください

出力と活用例

ボーンアニメーション化した旗は、以下のような用途で活用できます。

  • UnityやUnreal Engineでのリアルタイム表示
  • glTF / GLB形式でのWebGLビューワー向け出力
  • Sketchfabなどへのアニメ付きアップロード
  • 物理演算を使用せずに旗がなびいて見える軽量化シーン

おわりに

クロスシミュレーションの自然な動きをそのままボーンアニメーションとして使用できるMesh2Rigは、Blenderユーザーにとって非常に強力なツールです。旗に限らず、布や装飾など、物理挙動を持つさまざまな要素にも応用が可能です。

本記事では旗を題材に紹介しましたが、Mesh2Rigの活用方法は他にも広がりがあります。ぜひご自身の制作環境やアイデアに応じて、さまざまな応用に挑戦してみてください。

コメント

タイトルとURLをコピーしました