Animation Bake の使用¶
Animation Bake を使用すると、FBX モデルのスケルタルアニメーションを EXR テクスチャにベイクし、対応する JSON 設定ファイルを生成できます。
再生中、マテリアル (Material) はアニメーションのプログレス (Progress) に従ってテクスチャからボーンのトランスフォームをサンプリングし、バーテックスシェーダー (Vertex Shader) でメッシュ (Mesh) をスキニングします。これにより CPU の処理と GPU へのデータ転送が削減されますが、追加のビデオメモリを使用します。アニメーションの精度はテクスチャの解像度に依存します。
開始フレームと終了フレームを使用して、idle、walk、turn などの複数のアクションを定義できます。ツールは有効なアクションをアニメーションテクスチャに書き込み、再生中に選択できるよう各アクションのフレーム範囲を記録します。
Start Bake をクリックすると、ツールはアニメーションをベイクしてリソースをインポートし、メッシュを Prefabs に追加します。また、メッシュにマテリアル、マテリアルのプロパティ、EXR イメージを設定します。
再生用マテリアル¶
このツールには、スケルタルアニメーションテクスチャをサポートする 2 つのマテリアルが用意されています。
マテリアル (Material) |
ディスクリプション (Description) |
|---|---|
VertexPhongSkinnedSkeletonAnimation |
Phong ライティングを使用するスケルタルアニメーションマテリアル。 |
PhysicallyBasedSkinnedSkeletonAnimation |
物理ベースレンダリングを使用するスケルタルアニメーションマテリアル。 |
どちらのマテリアルも、アニメーションテクスチャとクリップのプロパティによってスケルタルアニメーションを制御します。プロジェクトのライティングと外観の要件に応じてマテリアルを選択してください。マテリアルを手動で変更する場合は、アニメーションテクスチャと再生プロパティが正しく関連付けられたままであることを確認してください。
前提条件¶
スケルタルアニメーションをベイクする前に、以下を行います。
スキニングされたモデルとアニメーションを含む FBX ファイルを用意します。
モデリングツールでアニメーションを確認します。メッシュの変形、位置、向き、スケールが意図どおりであることを確認してください。
スキニングが必要な頂点に有効なボーンウェイトがあることを確認します。アニメーション再生では、頂点ごとに最大 4 つのボーンの影響をサポートします。
エクスポートするアクション名とフレーム範囲を決めます。
プロジェクトがベイクの出力ディレクトリに書き込めることを確認します。
スケルタル変形を必要としないジオメトリには、その目的に適したメッシュとマテリアルの構成を使用します。
ツールを開く¶
Animation Bake を開くには、Kanzi Studio のメインメニューで Tools > Animation Bake を選択します。
ウィンドウには、モデルリスト、アニメーションクリップリスト、アクション設定テーブル、ベイクオプションがあります。
ユーザーインターフェイス¶
モデルとアニメーションクリップ¶
操作 |
ディスクリプション (Description) |
|---|---|
Load FBX |
FBX ファイルを読み込みます。 |
Remove FBX |
選択した FBX モデルをツールのリストから削除します。 |
FBX Models |
読み込まれたモデルを一覧表示します。モデルを選択すると、そのアニメーションクリップが表示されます。 |
Animation Clips |
アクションを作成するための、選択したモデルのアニメーションクリップを一覧表示します。 |
アクションの設定¶
Add Action をクリックすると、Action Config にアクションが追加されます。テーブルのフィールドを使用して、アクション名、フレーム範囲、エクスポートするかどうかを指定します。
フィールド |
ディスクリプション (Description) |
|---|---|
Model |
アクションを含むモデル。 |
Clip |
アクションのソースとなるアニメーションクリップ。 |
Action Name |
エクスポートするアクションの名前。 |
Start Frame |
アクションの最初のフレーム (このフレームを含む)。 |
End Frame |
アクションの最後のフレーム (このフレームを含む)。 |
Export |
現在のベイクにこのアクションを含めるかどうか。 |
Delete |
このアクション設定を削除します。 |
アクション設定の削除とソースモデルの削除は別の操作です。ベイクする前に、残っているアクション設定とその Export の状態を確認してください。
ベイクオプション¶
操作 |
ディスクリプション (Description) |
|---|---|
Trim static frames |
アクションの最初と最後で繰り返される静的フレームをチェックしてトリミングし、保存されるアニメーションデータを削減します。 |
Start Bake |
有効になっているアクション設定をベイクし、関連するリソースをプロジェクトにインポートします。 |
スケルタルアニメーションをベイクする¶
モデルのロード¶
FBX モデルをロードするには、
Load FBX をクリックします。
処理する FBX ファイルを選択します。
FBX Models で、ロードしたモデルを選択します。
Animation Clips でそのモデルのクリップを確認します。
使用できるアニメーションがない場合は、FBX にアニメーションと有効なスケルタルバインディングが含まれていることを確認してください。
アクションの作成¶
アニメーションクリップからアクションを作成するには、
Animation Clips で、ソースとなるアニメーションクリップを選択します。
Add Action をクリックします。
Action Config で、Action Name をエクスポートしたい名前に設定します。
Start Frame と End Frame を設定します。
アクションの Export を有効にします。
追加のアクションを作成するには、これらの手順を繰り返します。
終了フレームは開始フレーム以上である必要があります。範囲はソースアニメーションの有効範囲内である必要があります。
両端のフレームが含まれます。トリミングしない場合、フレーム数は次のようになります。
Action frame count = End Frame - Start Frame + 1
たとえば、次の設定では 1 つのタイムラインを 2 つのアクションに分割します。
アクション名 |
開始フレーム |
終了フレーム |
エクスポート |
|---|---|---|---|
Idle |
0 |
29 |
イネーブル (Enabled) |
Walk |
30 |
89 |
イネーブル (Enabled) |
Idle には 30 個、Walk には 60 個のサンプリングされたフレームが含まれます。これらの範囲は例です。範囲はアニメーションに合わせて設定してください。
静的フレームのトリミングの設定¶
アクションの先頭と末尾から繰り返される静的フレームを除去するには、Trim static frames を有効にします。
有効にすると、ツールはアクションの先頭と末尾で繰り返されるボーンのポーズをチェックし、該当する場合は保存するフレーム数を削減します。トリミングにより、アクションの開始行、フレーム数、およびデュレーションの情報が更新されます。
注釈
先頭または末尾の一時停止が意図したタイミングの一部である場合は、このオプションを無効にしてください。このオプションがトリミングするのはアクションの境界にある静的フレームであり、アクション内の一時停止はトリミングしません。
ベイクの開始¶
エクスポートするアクションをベイクするには、次の手順を実行します。
すべてのアクションの名前とフレーム範囲を確認します。
少なくとも 1 つのアクションで Export が有効になっていることを確認します。
Start Bake をクリックします。
ツールはサンプリングされた各フレームのボーントランスフォームを計算し、EXR ファイルと JSON ファイルを生成します。
Log で、処理メッセージとベイク結果を確認します。
生成されたリソースの確認¶
プレハブ (Prefabs)¶
ベイク後、メッシュが Prefabs に追加されます。ツールは以下を自動的に設定します。
スケルタルアニメーション再生用のマテリアル。
再生に必要なマテリアルプロパティ。
対応する EXR アニメーションイメージ。
生成されたモデルを Prefabs で見つけてシーンに追加し、その外観とアニメーションの再生を確認します。
出力ファイル¶
ツールは生成したファイルを次の場所に保存します。
Tool_project\Bake\Animation Bake
ファイルタイプ |
内容と目的 |
|---|---|
|
再生用マテリアルのために、フレームごとのボーン行列を格納します。 |
|
ベイク結果の確認、検証、および使用のために、アニメーションとテクスチャの設定を格納します。 |
対応する EXR ファイルと JSON ファイルを組み合わせて使用してください。再ベイクした後やアクションの範囲を変更した後は、新たに生成されたリソースと設定を使用してください。
ログと JSON¶
Log でベイク処理と関連データを確認します。さらに検証するには、対応する JSON ファイルを開き、アクション名、クリップのフレーム数、開始行、およびテクスチャのディメンジョンを確認します。
静的フレームのトリミングが有効な場合は、生成された設定を使用してください。トリミング前のフレーム数と開始行を引き続き使用しないでください。
マテリアルプロパティリファレンス¶
ツールはアニメーションテクスチャのプロパティを自動的に設定します。このリファレンスは、結果の確認や、アプリケーションロジックによる再生の操作に使用してください。
テクスチャプロパティ¶
プロパティ (Property) |
ディスクリプション (Description) |
|---|---|
SkeletonAnimationSkinningBoneTexture |
ボーントランスフォームを格納するアニメーションテクスチャ。 |
SkeletonAnimationBoneCount |
ベイクされたボーンの数。 |
SkeletonAnimationTextureWidth |
テクスチャ全体の幅 (ピクセル単位)。 |
SkeletonAnimationTextureHeight |
テクスチャ全体の高さ (ピクセル単位)。 |
SkeletonAnimationTextureSpritePosX |
アニメーションデータ領域の水平方向の開始位置 (ピクセル単位)。スタンドアロンの出力テクスチャの場合、初期値は |
SkeletonAnimationTextureSpritePosY |
アニメーションデータ領域の垂直方向の開始位置 (ピクセル単位)。スタンドアロンの出力テクスチャの場合、初期値は |
アニメーションテクスチャには数値データが格納されます。有効な浮動小数点データを保持し、行列の値を変化させる色変換や非可逆処理は避けてください。
クリップのプロパティ¶
プロパティ (Property) |
ディスクリプション (Description) |
|---|---|
SkeletonAnimationClipStartRow |
アニメーションデータ領域を基準とした、現在のアクションの開始行。 |
SkeletonAnimationClipFrameCount |
現在のアクションに格納されているサンプリング済みフレームの数。 |
SkeletonAnimationClipProgress |
現在のアクションの再生の進行度 ( |
アクションの再生と切り替え¶
アクションの再生¶
アクションを再生するには、以下の手順に従います。
生成された構成から、ターゲットのアクションの開始行とフレーム数を取得します。
SkeletonAnimationClipStartRow と SkeletonAnimationClipFrameCount を設定します。
SkeletonAnimationClipProgress を
0.0に設定します。プロパティアニメーションまたはアプリケーションロジックを使用して、必要な時間をかけて進行度を
0.0から1.0まで更新します。
進行度 0.0 では最初のフレームが、1.0 では最後のフレームが表示されます。中間の進行度では、隣接するサンプリング済みフレーム間でボーン行列が補間されます。
一時停止とループ¶
アニメーションを一時停止するには、進行度の更新を停止し、現在の値を保持します。
アニメーションをもう一度再生するには、進行度を
0.0に設定してから、再び更新を開始します。アニメーションをループさせるには、終端に達した後に
0.0から再開します。つなぎ目の見え方は、ソースのアクションの最初と最後のポーズが一致しているかどうかによって異なります。
データレイアウトと制限事項¶
各ボーン行列は 4 ピクセルを占め、各サンプリング済みフレームは 1 行を占めます。スタンドアロンのベイク済みテクスチャのサイズは次のとおりです。
Texture width = Bone count × 4
Texture height = Sum of stored frame counts for all exported actions
たとえば、ボーンが 78 個、格納されたフレームが合計 300 個の場合、312 × 300 のテクスチャになります。
ボーンとフレームが増えるほど、テクスチャのサイズは大きくなります。ベイクする前に、必要なアクションのみを有効にし、再生の要件に応じてフレーム範囲を設定してください。