MayaからUnreal Engine 5へAlembic(Geometry Cash)で、アニメーションを持っていく方法

当ページのリンクには広告が含まれています。
frim Maya to Unreal Engine (Alembic)
スポンサーリンク

Mayaユーザー(主にMayaのアニメーター)が、Unreal Engineを学ぶうえで、一番最初に知りたいことは、Mayaで作ったアニメーションをUnreal Engineでレンダリングする方法です。断言します。なぜならば、まさに私が1番最初に知りたかったことだからです。

しかし、簡単そうでありながら、そんなに簡単ではないのがMayaからUnreal Engineへのエクスポート方法です。

キャラクターアニメーションをMayaからUnreal Engineに出力するには、Unreal Engineの出力に対応しているリグでアニメーションを作らなければなりません。もしくは、Unreal Engineに出力できるようなリグを作るところから始めなければなりません。こうなると非常に大きな遠回りになってしまいます。その段階でUnreal Engineは面倒くさいからやめておくか…となってしまいかねません。

そこで、AlembicでGeometry Cashをエクスポートすることで、どのようなアニメーション(Maya独自の機能を使ってつくられたアニメーション)でもUnreal Engineへ持っていくことが出来ます。

ただし、現状ではAlembicのマテリアルをUnreal Engineへ持って行くことがスムーズに出来ません。

しかし、だったら、スムーズにできるようになってからでいいやと思ってはいけません。CGの世界は進歩が速く、そんなことを言っていたらUnreal Engineのバージョンが、「6」や「7」、もしくは「10」以上になってしまいます(私はBlenderを「3」になったら触ってみようと思っていましたが、実際にドーナツチュートリアルをやったときには「4」になっていました(笑))。多少面倒なことはありますが、まずはやってみましょう。

この記事ではMaya2025.1とUnreal Engine 5.4を使用しています。

Unreal Engine 5でステージングとレンダリングをする方法を詳しく学びたい人には【Unreal Engine5初心者の方へ】シネマチックな映像制作コースをおすすめします。

スポンサーリンク
目次

Alembicで出力することの、メリットとデメリット

メリットデメリット
Mayaのアニメーションをそのまま出力できる。
fbxやUnreal Engineの仕様をよく理解していなくても使用できる。
ファイルサイズが大きくなってしまう。
マテリアルを出力するのに手間がかかる(現状では)
MayaユーザーがUnreal Engineを使うとっかかりには十分です

メリットは、何と言っても「Mayaのアニメーションをそのまま出力することができる。」これにつきます。

fbxではサポートされていないMayaのデフォーマを使ったアニメーションもAlembicのジオメトリキャッシュならば問題なくそのまま持っていくことが出来ます。したがって、fbxならば、どういったものが「持っていける or いけない」で悩むことがありません。

デメリットは、ファイルサイズが大きくなってしまうことです。

ちなみに、今回出力したトラの136フレームのアニメーションのAlembicファイルは「211MB」でした。

ファイルサイズが大きくなってしまうと、大規模シーンをこの方法で構築するのは物理的に困難です。

また、現状ではマテリアルを持っていくのに手間がかかるので、物量が多い場合は現実的な方法ではありません。

このあたりは「USD」が発展して、アプリケーションの壁を意識することなく作業できるようになることを祈るばかりです。

AlembicでエクスポートするためのMaya側の手順

「AbcExport」と「AbcImport」を使えるようにする

プラグイン設定

まずは、Alembicで「Import」と「Export」をするために、Window > Settings/Preferences > Plug-in Managerを開き、「AbcExport.mll」と「AbcImport.mll」の「loaded」と「Auto load」にチェックをします。

Reference を Import する

Mayaでアニメーションをつけるときには、リグをReferenceとして読み込み、それにキーを打ってアニメーションをつけているはずです。よって、File > Reference Editor から、リファレンスをインポートします。これで、リグの編集が出来るようになりました。

もうひとつここでやっておきたいことが、Window > General Editors > Namespace Editor を開いて、ネームスペースを削除することです。Delete > Merge with Parent で削除してください。

実は、Alembicでエクスポートするオプションでネームスペースを消して出力することが出来るのですが、マテリアルのことを考えるとこの段階でネームスペースを消しておいたほうがベターです。

Unreal Engineでは、「:(コロン)」が入っている名前が使えないので、「:(コロン)」のない状態にしなければなりません。

<重要>マテリアルをポリゴンの面にアサインする<重要>

ここが、ひとつの大きなポイントになります。

AlembicでマテリアルをUE5に持っていく場合は、オブジェクトモードで選択したオブジェクトではなく、コンポーネントモードでポリゴンフェイス(ポリゴンの面)にマテリアルをアサインし直さなければなりません。

Mayaのセオリーでは、ポリゴンの面に直接マテリアルをアサインするのはタブーとされています。これをやって怒られた方もいるのではないでしょうか。実際にネットで配布されているフリーや有料のMayaのリグをみてみると、マテリアルごとにオブジェクトがわかれています。

ちなみに、今回私が使用したトラのリグも「胴体」が1つ、「歯」が1つ、「爪」が2つ、「目」が6つ、「眉」が2つ、「髭」が2つのオブジェクトに分かれていました。

という理由で、ポリゴンの面にマテリアルを直接アサインしてください

簡単にポリゴンの面にマテリアルをアサインする方法

  1. オブジェクトモードでマテリアルをアサインし直したいオブジェクトを選択。
  2. 「Isolate Select」のアイコンを押して、そのオブジェクトだけを表示する。
  3. コンポーネントモードに切り替えて、ポリゴンの面をすべて選択。
  4. 「Hyper Shade」で、アサインしたいマテリアルを右クリックして、「Assign Material To Selection」でアサインする。

マテリアルとそれにアサインするポリゴンが複数ある場合は、それぞれに同様のことをします。

<重要>マテリアル名を記録しておく<重要>

Unreal Engine 5でAlembicをマテリアルつきでインポートするために、やっておかなければならないことが、Unreal Engine 5で使うマテリアルの名前(Mayaではシェーディンググループ名)を記録しておくことです。

本来ならば、このようなことは必要ないはずなのですが、現状では、「Mayaでアサインしたマテリアル名」と「Unreal Engine 5がアサインされていると認識するマテリアル名」に違いがあります。そのために、このような面倒な作業を行う必要があります。

したがって、アサインしたマテリアルである「phong1(マテリアル)」の方ではなく、「phong1SG(シェーディンググループ)」の方の名前を記録しておいてください(具体的にはメモ帳にコピペしておいてください)

MayaとUnreal Engine 5で参照するマテリアル名の違い

両者の認識の違いを解消する必要があります

具体的に説明します。

Mayaで新しく「phong」のマテリアルを作成すると、「phone1SG(シェーディンググループ)」と「phong1(マテリアル)」という2つのノードが作られます。

実際にMayaでポリゴンの面にアサインするのは「phong1」のほうです。

しかし、Unreal Engine 5は「phong1SG」がインポートされたAlembicのマテリアルだと認識します。

よって、phong1SGがポリゴンの面にアサインされていない(phong1がアサインされている)ため、「マテリアルが見つからない」となってしまいます。

そこで、「phong1SG」の名前を記録しておいて、Alembicをインポートする前に、Unreal Engine 5で「phong1SG」というマテリアルを先に作っておく必要があります。それから、Alembicをインポートするときのオプションで「マテリアル名を検索する」にチェックを入れてインポートします。すると、Unreal Engine 5で先程つくった「phong1SG」のマテリアルをアサインされた状態のAlembicのジオメトリキャッシュが無事インポートすることができます。

要するに、青い囲みの部分(「phone1SG」)の名前を、メモ帳にコピペで保存しておきます。

マテリアルの設定や、テクスチャは、新たにUnreal Engine 5で設定し直さなければなりませんが、現状ではこれ以上良いやりかたは無いようです(あったら教えて下さい!)

ちなみに、上でNamespace Editorでネームスペースをあらかじめ取り除いておいたほうが良いと書いたのは、このマテリアルを記録する段階で、ネームスペースを残しておきたくなかったからです。

Alembicでエクスポートする前の準備

5角形以上のポリゴンを三角形化する

五角形以上のポリゴンはエラーがでてしまい、Unreal Engine 5にインポートできません。

したがって、まずは、四角形または、三角形のポリゴンにしなければなりません。

すべてのポリゴンを選んで「Modering」メニューの「Mesh > Triangulate」で、すべて三角形にしてしまっても良いのですが、ただでさえ大きなAlembicのファイルサイズが、さらに大きくなってしまいます。

何も考えずに、すべてのポリゴンを「Triangulate」した場合のAlembicファイルは430MB
五角形以上のポリゴンだけを「Triangulate」した場合のAlembicファイルは211MBでした。

そこで、出力するオブジェクトを選択して「Modering」メニューの「Mesh > Cleanup…□」のオプションを開き、「Fix by Tesselation」の「Faces with more than 4 sides」にチェックをして「Cleanup」をします。すると、五角形以上のポリゴンがハイライトされるので、それをさきほどの「Triangulate」で三角ポリゴン化します。

複数のポリゴンを「Combine」して1つにする

この例で使っているトラのモデルは、上に書いたように「胴体」が1つ、「歯」が1つ、「爪」が2つ、「目」が6つ、「眉」が2つ、「髭」が2つといった具合に分かれています。Unreal Engine 5に持っていったときに、1つになっていたほうが良いので、すべてのオブジェクトを選択して「Modering」メニューの「Mesh > Combine」で1つのオブジェクトにしてしまいましょう。

Alembic で出力する

上で1つにCombineしたオブジェクトをAlembicで出力します。

「Plug-in Manager」で「AbcExport」と「AbcImport」が使えるようになっているはずです。

「Cash > Alembic Cash > Export Selection to Alembic…□」のオプションを開きます。

出力するアニメーションの長さにタイムスライダーをあわせます(この例では0~135フレーム)。

「Advanced Options」は上の写真のようにチェックを入れます。

「Strip Namespaces」は、すでに、Name Space Editorでネームスペースを消している場合はチェックする必要はありません。

「Export Selection」を押せば、出力完了です。

AlembicでインポートするためのUnreal Engine 5側の手順

メモ帳に保存しておいた名前のマテリアルを作成する

Unreal Engine 5を立ち上げたら、まず、先ほどメモ帳にコピペしておいた名前のマテリアルをすべて作ります

中身は空のままでOKです。

Alembicをインポートすると、これらのマテリアルが検索されてアサインされます。

Alembicファイルをドラッグ・アンド・ドロップでインポートする

コンテンツブラウザに、Alembicファイルをドラッグ・アンド・ドロップします。

インポートするときのオプションは、以下の通りにしてください。

「インポートタイプ」はGeometry Cashにしてください。

トラックを平坦化にチェックを入れます。

そして、マテリアルの検索にチェックを入れます。

これによって、先程Unreal Engine 5で作ったマテリアルを検索して自動的にアサインしてくれます。

変換の設定は、プリセットで「Autodesk Maya」を選択すれば以下の設定は自動的にされると思います。

3D座標が、MayaがYアップで、Unreal EngineがZアップなので、以下のような変更が必要になります。

「Vの反転」にチェック。

「スケーリング」の2番目(Yの値)を-1.0

「回転」の1番目(X軸)を90.0にしてオフセットしてやる必要があります。

これで無事インポート完了です。

あとは、各々のマテリアルにテクスチャを貼るなどの設定をすれば完成です。

マテリアルにテクスチャを貼ってみる

Maya側で出力した時に、ちゃんとUV情報が転送されているかテクスチャを貼って確かめてみましょう。

テクスチャファイルもコンテンツファインダーにテクスチャのファイルもドラッグ・アンド・ドロップします。

マテリアルをダブルクリックすると、マテリアルエディタが立ち上がるので、そこに任意のテクスチャをドラッグ・アンド・ドロップして、RGBを「ベースカラー」に繋げます。そして、左上の「適用」ボタンを押せばマテリアルが適用されます。

テクスチャが適用されたAlembic(Cash Geometry)をビューポートにドラッグ・アンド・ドロップして、テクスチャが適用されているか確かめてみます。

上の画像のように、しっかりとテクスチャが貼られているので、UVもしっかり持ってくることが出来ました。

また、左上にあるプレイボタンを押すと、無事にトラが歩いているのを確認できます。

Unral Engine 5でレンダリングする方法

右上にある歯車のアイコンの設定から「plug-in」を検索して、「Movie Render Que」をアクティブにします。

再起動が求められたら再起動してください。

レベルシーケンスを作成します。

レベルシーケンスに、Alembicでインポートしたファイルをドラッグ・アンド・ドロップし、右にある「+」プラスボタンを押して、「ジオメトリキャッシュ」を追加します。

追加された「ジオメトリキャッシュ」の長さにタイムラインをあわせます。

画面左上のポリゴンキューブにプラスのマークがついたアイコンをクリックして、「シネマティック > Cine カメラ アクタ」から「Cine カメラ アクタ」を追加します。

「Cine カメラ アクタ」を適切な位置に置きます(右側のビューを見ながら設置してください)。

カメラを調整したら、レベルシーケンスにカメラをドラッグ・アンド・ドロップします。

シーケンサーのカチンコのアイコンの縦3つの点をクリックして、「ムービー レンダー キュー」が選ばれていることを確認してます。それからカチンコのアイコンを押します。

ムービーレンダーキューウィンドウで設定をしてレンダリングをします。

とりあえず、こんな感じでレンダリングすることが出来ました。

Unreal Engine 5のレンダリングについてもっと詳しく学びたい

駆け足でとりあえずレンダリングしてみましたが、Unreal Engine 5のポテンシャルはこんなものではないので、ぜひともより良いレンダリング方法を学んでいただきたいと思います。

そこで、おすすめなのが、以前私がUdemyで受講した【Unreal Engine5初心者の方へ】シネマチックな映像制作コースです。

こちらのコースでは、Unreal Engine 5だけを使ってシネマチックな映像をレンダリングするコースです。

3時間程度の短い時間で、シーンを構築してレンダリングをする方法が効率よく学べます。

この記事を読んで、Mayaで作ったアニメーションをUnreal Engine 5にAlembicのGeometry Cashとして持っていけることがわかった今ならば、モチベーションが上がった状態で学習できるはずです。

まとめ

注意すべきポイントをまとめておきました。

  1. ポリゴンの面に直接マテリアルをアサインする。
  2. Mayaでアサインするマテリアル(シェーダー)名と、Unreal Engine 5が認識するマテリアル(シェーディンググループ)名が違う。
  3. 2.の事情から、Mayaのシェーディンググループ名をメモ帳などにコピペしておいて、Unreal Engine 5でAlembicファイルをインポートする前に、Mayaのシェーディンググループ名メモ帳などにコピペしておいた名前のマテリアルを作成する。

1つ目は、ポリゴンの面に直接マテリアルをアサインすることです。Mayaではタブーとされている行動ですが、仕方ありません。

2つ目は、MayaからUnreal Engine 5にエクスポートする時の最大の問題点です。いずれ、Unreal Engine側がインポートする際のMayaのプリセットとして対応してくれることを祈るしかありません。

3つ目も、2つ目の問題があるからこその手間のかかる問題です。将来的には解消されるとは思いますが、現状では地道で面倒な作業を行うしかありません。

スポンサーリンク
frim Maya to Unreal Engine (Alembic)

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次