ウェブとゲームエンジン向けに3Dアニメーションをエクスポートする方法
ウェブやゲームエンジン向けに3Dアニメーションをエクスポートするには、glTF — その単一ファイルバイナリ形式であるGLB — またはFBXを使用します。どちらもノード階層、スケルトン、スキンウェイト、キーフレーム化されたクリップを保存します。glTFはブラウザやほとんどのエンジンがネイティブで読み込むオープンスタンダードであり、FBXはMaya、3ds Max、Unity、Unrealのパイプラインで長年確立された交換フォーマットです。何が転送されるかはエクスポート元に依存するため、コンストレイント、IK、プロシージャルモーションはまずキーフレームにベイクされます。
簡潔な答え
フォーマットが保存できないもの(IK、コンストレイント、ドライバー、シミュレーションなど)はキーフレームにベイクし、クリップの名前と長さを確認してから、ウェブやほとんどの最新エンジンには GLB を、パイプラインが想定している場合は FBX をエクスポートします。トランスフォーム、スケルタルアニメーション、シェイプキーのウェイトは引き継がれますが、リグコントロール、カスタムカーブ、キー設定されたマテリアル値は通常引き継がれません。信頼する前に、ターゲットでファイルを開いて確認してください。
ステップバイステップ
- 1
フォーマットが保存できないものをベイクする
ファイルフォーマットはキーフレームを保存し、それらを作成したシステムは保存しません。IKソルバー、コンストレイント、ドライバー、エクスプレッション、シミュレーションは、エクスポート前に通常のキーにサンプリングする必要があります。そうしないと、それらのモーションがない状態でファイルが到着します。Studioでは、「Rigging」パネルの「Bake IK」と「Animate」▸「Bake motion to keyframes…」がそれぞれこの処理を行います。
- 2
クリップに名前を付けてトリムする
エンジンはファイル内の各アニメーションを、名前で区別された個別のクリップとしてインポートします。プログラマーが認識できるような名前 — Walk、Idle、Open — をクリップに付け、それぞれの長さを確認してください。なぜなら、終了から20フレーム先に迷子のキーがあるクリップは、20フレーム分の何も再生しないからです。
- 3
フォーマットを選択
ウェブ、および glTF をネイティブで読み込む Godot、Blender、three.js、Babylon.js には GLB を使用します。Unity は glTFast などのパッケージを介して読み込み、Unreal もインポートできます。Maya、3ds Max、および多くの Unity や Unreal プロジェクトなど、パイプラインが FBX を中心に構築されている場合は FBX を使用します。
- 4
エクスポート
Studio で、ファイル ▸ 3Dモデルをエクスポート… を選択し、アニメーションを保持できる GLB または glTF を選びます。シーン内のすべてのクリップが書き出され、作業していたクリップが最初になります。「ウェブ用にエクスポート…」では、アニメーションを再生するページ、埋め込みコード、React コンポーネント、または three.js モジュールが生成されます。
- 5
ターゲットで確認
対象となるエンジンまたはビューアにファイルをインポートし、すべてのクリップを再生します。スケール、向き、ループ、イーズ処理されたモーションが正しく機能しているかを確認してください。以下の問題は、ここで現れるか、まったく現れません。
アニメーションのためのglTFとGLB
glTF 2.0はアニメーションをチャンネルとして保存し、各チャンネルはノードのトランスレーション、回転、スケール、またはメッシュのモーフターゲット(シェイプキー)ウェイトを対象とします。各チャンネルはリニア、ステップ、またはキュービックスプライン補間を用いてキーフレームをサンプリングし、時間はフレームではなく秒単位で保存され、回転はクォータニオンです。スキニングされたメッシュは、ジョイント、逆バインド行列、およびセットごとに頂点あたり最大4つのウェイトを保持します。
これは意図的に範囲が狭く設定されており、そのためglTFはほとんどどこでも変換なしで読み込むことができます。キー設定されたマテリアルの色、ライトの強度、カメラの焦点距離など、その範囲外のものは、KHR_animation_pointerのような拡張機能が必要であり、拡張機能のサポートはエンジンによって異なります。glTFは定義上、メートル単位でY軸が上であるため、サイズが間違って表示されることはほとんどありません。
アニメーションのためのFBX
FBXはAutodesk独自のフォーマットであり、20年以上にわたり、リグ設定されたアニメーションキャラクターをDCCツールとゲームエンジンの間で移動させる際の標準となってきました。スケルトン、スキニング、ブレンドシェイプ、複数のテイク、フレームレートを保存し、Mixamo、Unity、Unrealはすべてこれを流暢に扱います。
その弱点は、柔軟性をもたらすものと同じです。単位と軸の慣習はエクスポート元によって異なり、あるツールからのFBXは100倍大きすぎたり、仰向けになっていたりすることがあります。また、SDKのバージョンによって詳細が異なります。MayaやMixamoからの多くのファイルはセンチメートル単位ですが、glTFはメートル単位です。
引き継がれるものと、そうでないもの
確実に引き継がれるもの:オブジェクトのトランスフォーム、ボーン上のスケルタルアニメーション、シェイプキーのウェイト、クリップ構造。通常失われるもの:IKとコンストレイント、ドライバーとエクスプレッション、カスタムリグコントロール、キー設定されたマテリアル、ライト、カメラレンズの値。最初のグループの失われるものはキーにベイクし、2番目のグループについては、ターゲットが拡張機能をサポートしているか、エフェクトを再構築する必要があるかを確認してください。
カーブは微妙な点です。エクスポート元によって、ベジェタンジェントを保持するか、キュービックスプラインデータを書き込むか、カーブをキーにサンプリングするかが異なります。設定したキーのみをリニア補間で書き出すエクスポート元は、広く間隔を置いたキー間の強いイージングを平坦化してしまいます。エンジンで正確なイージングが重要である場合は、イージング内にキーを追加するか、フレームレートでモーションをベイクしてください。
Mixos Studioからのアニメーションのエクスポート
StudioのGLBおよびglTFエクスポートは、キーフレーム化されたオブジェクトのトランスフォームとシェイプキーのウェイトを保持し、各オブジェクトが独自のローカル空間でアニメーションするようにシーン階層を維持し、シーン内のすべてのクリップを書き出します。FBX、OBJ、STL、USDZターゲットはアニメーションを保持せず、ダウンロード前にエクスポートダイアログでその旨が表示されます。
2つの制限事項を知っておく価値があります。キーは設定した時間に書き込まれ、ファイル内ではそれらの間でリニアに補間されるため、エンジンが正確に再現する必要がある場合は、長いイージング内にキーを追加してください。また、コアglTFにはそれらのチャンネルがないため、キー設定されたマテリアル、ライト、カメラの値はシーンに残ります。.mxsシーンファイルは、モデルフォーマットでは保持できないもの — ジェネレーター、モディファイア、アニメーション、レンダー設定 — をすべて保持します。これは、宛先がStudio自体である場合のためです。エクスポートは有料プランに含まれますが、アニメーション作成とプレビューは無料です。
よくある質問
アニメーションにはGLBとFBXのどちらが良いですか?
ウェブや、Godot、three.jsなどのglTFをネイティブで読み込むエンジンにはGLBが適しています — これはオープンスタンダードで、メートル法に基づき、ツール間で一貫性があります。Maya、3ds Max、多くのUnityおよびUnrealプロジェクトなど、パイプラインがFBXを中心に構築されている場合はFBXを使用します。どちらもスケルタルアニメーションとシェイプキーを保持します。
glTFはアニメーションをサポートしていますか?
はい。glTF 2.0は、ノードのトランスレーション、回転、スケール、およびモーフターゲットのウェイトを、リニア、ステップ、またはキュービックスプライン補間を用いてアニメーション化し、スキニングされたメッシュをサポートします。マテリアル値などの他のプロパティをアニメーション化するには、拡張機能が必要です。
エクスポートしたアニメーションが動きません。なぜですか?
通常、モーションがフォーマットで保存されないもの — IKソルバー、コンストレイント、ドライバー、またはシミュレーション — から来ており、エクスポート前にキーフレームにベイクされていなかったためです。もう一つの一般的な原因は、エンジンがクリップを再生しないことです。ほとんどの場合、クリップを割り当てるか、自動再生に設定する必要があります。
エクスポートしたアニメーションがエンジンでサイズが違う、または回転しています。なぜですか?
単位と軸の慣習が原因です。glTFは常にメートル単位でY軸が上ですが、FBXはエクスポート元に依存し、多くの場合センチメートルです。エクスポート時に単位と軸のオプションを設定するか、クリップごとに修正するのではなく、インポート時に単一のスケールを適用してください。
ブラウザからアニメーションをエクスポートできますか?
はい。Mixos Studioは、アニメーション化されたシーンをGLBまたはglTFとして、すべてのクリップを含めてエクスポートするか、それらを再生するウェブページまたはthree.jsモジュールとしてエクスポートします。アニメーション作成は無料ですが、エクスポートは有料プランに含まれます。
シーンをアニメーション化し、GLBとしてエクスポートしましょう — ウェブやほとんどのエンジンがネイティブで読み込む形式で、すべてのクリップが含まれます。