MayaからUnityへのアニメーション転送:頂点アニメーションとヒストリ保持の解決策

プログラミング

Mayaで作成したアニメーションをUnityへエクスポートする際、頂点移動のアニメーションがうまく転送されない、またはヒストリを削除せずに転送したいといった問題に直面することがあります。本記事では、これらの問題の解決策について詳しく解説します。

頂点移動アニメーションがUnityへ転送されない問題の解決策

Mayaで頂点移動(Vertex Animation)を使用してアニメーションを作成した場合、Unityの標準のアニメーションシステム(Mecanim)では直接再生できません。その理由として、Mecanimはボーン(リグ)ベースのアニメーションを前提としており、頂点単位での変形アニメーションには対応していないためです。

この問題を解決するためには、以下の方法があります。

  • メッシュキャッシュ(Alembic)を使用する
    MayaのAlembicエクスポート機能を利用して、アニメーション付きのメッシュデータをFBXではなくAlembic形式(.abc)でエクスポートし、UnityのAlembic Importerを使用してインポートします。これにより、頂点アニメーションをそのまま再生可能です。
  • シェイプキー(Blend Shape)に変換する
    Mayaで「ブレンドシェイプ(Blend Shape)」を作成し、頂点移動をブレンドシェイプのキーフレームとして設定することで、Unity側で再生できるようになります。この方法はFBXフォーマットでのエクスポートが可能です。
  • テクスチャアニメーションを利用する
    頂点移動をテクスチャデータとして保存し、Unity側でシェーダーを用いて頂点変形を実装する方法もあります。これは高度な手法ですが、軽量かつスムーズに動作させることが可能です。

ヒストリを削除せずにUnityへ転送する方法

キャラクターアニメーションをMayaからUnityへ転送する際に、ヒストリを削除しないと正しく動作しないオブジェクトがあるが、ヒストリを削除するとウェイト情報が失われてしまう場合の解決策を紹介します。

  • デフォーマヒストリのみを保持する
    Mayaの「Delete History(ヒストリ削除)」オプションを使用する際に、「Non-Deformer History(デフォーマ以外のヒストリ削除)」を選択すると、スキンウェイトなどの重要なデータは維持されたまま不要なヒストリを削除できます。
  • ウェイトを再適用する
    万が一ヒストリを削除することでウェイトが消える場合は、Mayaの「Export Skin Weights」機能を利用してウェイト情報を保存し、削除後に「Import Skin Weights」で再適用することで回避できます。
  • FBXエクスポート設定の最適化
    UnityにFBX形式でエクスポートする際、「Deformed Models(変形モデル)」「Bake Animation(アニメーションのベイク)」のオプションを適切に設定すると、ヒストリを削除せずにスムーズに転送できる場合があります。

Unityでのアニメーション設定と最適化

エクスポートしたアニメーションデータをUnityで正しく適用するために、以下の設定を確認してください。

  • Unityの「Model Import Settings」にて、アニメーションタブの「Import Animation」が有効になっていることを確認する
  • ボーンアニメーションの場合は、アニメーションリグがUnityのHumanoidまたはGenericに適切に設定されているかを確認する
  • Blend Shapeアニメーションを利用する場合、シェイプキーのインポートオプションが有効になっているかをチェックする

まとめ

MayaからUnityへのアニメーション転送では、頂点アニメーションの扱いやヒストリ削除に関する問題が発生しがちです。しかし、適切な方法を選択すれば、スムーズにUnityへアニメーションを転送することができます。

  • 頂点移動アニメーションは、Alembic形式、ブレンドシェイプ、またはシェーダーによるテクスチャアニメーションで転送可能
  • ヒストリを削除せずに転送するには、Non-Deformer Historyの削除、ウェイトのエクスポート・インポート、FBXエクスポート設定の最適化が有効
  • Unityのインポート設定を適切に調整することで、意図した通りにアニメーションを適用可能

これらの方法を活用して、Mayaで作成したアニメーションを正しくUnityで動作させましょう。

コメント

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