未来を創る、テックコミュニティー

代表技術通信~Unityに舞い戻りでVR⑩

草場代表
2020/11/11

こんばんは。代表の草場です。

Unity LearnのIntroduction to 3D Animation Systemsの勉強です。Working with Assets です。

2.4 Cutting imported Animation Clips

1.概要

アニメーション固有の設定を使用して、インポートしたアニメーションクリップをカットします。アニメーションをカットするための最も一般的な用途の1つは、モーションキャプチャー(またはモカプ)データを使用することですが、インポートされた任意のアニメーションを調整するために使用することができます。
2.3 モデル固有のアニメーションのインポート設定では、インポートしたモデルのすべてのアニメーションに適用される設定を確認しました。今回は、アニメーションに個別に適用される設定を使用します。

2.始める前に

3Dアニメーションシステム入門Unityプロジェクトを先にダウンロードしておいてください。プロジェクトをダウンロードしたら、Unityエディタでプロジェクトを開き、プロジェクト」ウィンドウで、「アセット」 > 「2.4 – アニメーションのインポート設定」を選択します。

3.アニメーションクリップの切り取りと設定

Unity Editorでヒューマノイドのランアニメーションクリップをカットして設定していきます。このアニメーションクリップはmocapデータを使用します。

4.アニメーションクリップを開く

まず、アニメーションクリップを開いて、コンテキストで設定を確認できるようにします。
1. プロジェクトウィンドウで、HumanoidRunモデルを選択し、インスペクタで、アニメーションタブを選択。
2. Nameプロパティを “Take 001 “から “Run “に変更(Take 001 は、アニメーションクリップを名前なしでインポートする場合のデフォルトです)。名前を具体的なものに変更することで、アニメーションクリップの内容がわかりやすくなります。

5.アニメーションのタイムラインを確認する

アニメーションクリップの名前を変更したので、タイムラインを確認します。アニメーションタイムラインには、現在のアニメーションクリップ(またはテイク)のすべてのアニメーションデータが表示されます。テイクをカットするために、アニメーションクリップの開始と終了をドラッグして設定できるハンドルがあります。

より正確には、アニメーションのタイムラインのすぐ下にあるフィールドを使って、アニメーションクリップの開始と終了のフレーム番号を設定することができます。

6.ループ品質の信号機を見直す

アニメーションタブのツールを使って、このアニメーションクリップのmocapデータからきれいにループするランアニメーションを作成することができます。しかし、これを行うには、カットすべきループを特定したかどうかを知る必要があります。そのために、タブ内の各種設定の横に信号機があります。


設定の横にある緑色の丸が、良いループがあることを示しています。
黄色い丸い黄色は、ループが合理的であることを示しており、あなたの状況に適しているかどうかを判断することができます。
赤丸は悪いループであることを示しています。
開始点と終了点の両方には、すべての設定のために良い(緑の)インジケータがあるべきであることは当然のことのように思えるかもしれません。しかし、すべての設定がすべてのアニメーションに対して緑でなければならないわけではありません – それはあなたが何を作ろうとしているかによります。状況によっては、悪いループがあなたのニーズに完全に適している場合もあります。

7.完全なアニメーションを再生する

この時点で、動画を見直してみましょう。
1. インスペクタで、プレビューペインを見つけます。
2. プレビューペインで再生ボタンを押すと、フルアニメーションを見ることができます。
3. 終了したら、プレビューペインの一時停止ボタンを押します。

8.ループ状の信号機の例を確認する

良いループを見つけるのに役立つように、モデルインポーターは、タイムラインハンドルのどちらかをドラッグすると、それぞれの交通信号の色付きグラフを表示します。グラフが出てこない、、、。エンドハンドルをいじったら出てきました。

これについて詳しくおさらいしておきましょう。
・グラフのいくつかの部分には、ただの平らな線があります。これは、モカプが正しく記録されていないために、アニメーションがフリーズしてしまった箇所です。これらの部分はアニメーションクリップのカットには含めないでください。
・テイクの開始時、モデルは通常のランよりも前傾しています。これは通常のランアニメーションとしては理想的ではありません。
・テイクの10秒ほどのところに、使用可能なアニメーションの小さな部分があるように見えます。そこにループを見つけてみましょう。

9.自作のアニメーションカットを作成する

アニメーションクリップの独自のカットを作成するには、
1. スタートハンドルをフレーム290とフレーム330の間のポイントにドラッグします。
2. エンドハンドルをドラッグしてループを作ります。

上の例では 317 フレームを使用しています。別の開始フレームを使用した場合は、色付きグラフを使って適切な終了フレームを探してみてください。
ヒント:グラフの緑のピークは、ループをチェックするのに適した場所です。

3. プレビューペインの再生ボタンを押して、アニメーションをプレビューします。

4. 終了したら、プレビューペインの一時停止ボタンを押してください。

別のフレームを使っていても、あまりしっくりこない場合は、まだ変更しないでください。他にもいくつか設定があるので、参考になるかもしれません。

10.ループ時間を有効にする

タイムラインの下の最初の設定グループは、ループを制御します。

ループ時間の設定を有効にしておくと、アニメーションが終了した後、最初から再びアニメーションが始まります。
これはランアニメーションとしては間違いなく理にかなっているので、やってみましょう。
ループ時間の設定を有効にします。ループ時間の設定を有効にすると、他の設定オプションが有効になります。

11.ループポーズを有効にする

ループポーズの設定は、アニメーションクリップのキーフレームの値を変更して、開始時と終了時に一致するようにします。
簡単に言うと、Loop Poseはアニメーションの開始と終了の間に突然変化が生じてアニメーションがジッターにならないようにするために使用されます。これは、mocapデータを使用している場合に特に便利で、正確に一致することはほとんどありません。
アニメーションはシームレスにループする必要があるので、この設定を使用してください。
Loop Pose設定を有効にします。

これはどのように計算されるか?
計算に使用されるおおよその計算式は以下の通りです。
newValue = originalValue – normalizedTime * (endValue – startValue)

アニメーションカーブの開始値と終了値が同じであれば、そのカーブ上の任意のキーフレームの新しい値は、元の値と同じになります。開始値と終了値の差が大きくなるにつれて、開始からさらに離れたキーフレームの変化がより明確になります。
ランアニメーションのループをうまくカットできた場合、ループポーズはアニメーションの全体的な見た目を変えることなく、開始と終了を滑らかにします。一般的に言えば、スムーズにループしたいアニメーションがある場合は、パフォーマンスに影響を与えないので、ループポーズを有効にするのが良いでしょう。

12.サイクルオフセットの設定を見直す

サイクルオフセットは、アニメーションクリップが選択したフレーム範囲内で実際に開始するタイミングを調整します。
これは正規化された時間で測定されます。つまり、0.2の値を設定すると、アニメーションクリップは選択したフレーム範囲の20%の範囲で開始されます。
アニメーションクリップのサイクルオフセットを独立して考える場合、通常は変更する必要はありません。しかし、似たようなアニメーションをブレンドする際には、それらが同位相であることが理にかなっています。
ヒューマノイドキャラクターのアニメーションでは、ブレンドしたいすべてのアニメーションクリップにおいて、脚の位置が同じ正規化時間で同じであることを確認することを意味します。これを確実にする簡単な方法は、各アニメーションクリップの開始時に、脚の周期の基準を設定しておくことです。
このアニメーションクリップでは、次のような基準を設定してみましょう。

キャラクターの右足が床についている
キャラクターの左膝は、進行方向に対して垂直に見たときに右膝を抜いている

13.アニメーションのサイクルオフセットを設定する

サイクルオフセットを設定し、定義されたポーズでカットを開始するには、次の手順に従います。
1. プレビューペインで、右クリックしてドラッグし、アニメーションのカットを横向きに表示します。
2. プレビュープレイヘッドをドラッグして、右足が床に植え付けられ、左膝が右膝に重なるようにします。
3. プレビューペインの下部にある括弧内に表示されているこのポーズの正規化時間に注意してください。今の場合、08.0%。

4. Cycle Offset(サイクルオフセット)を、選択したポーズの正規化された時間に設定します。例では0.08です。 これで選択したポーズでアニメーションループが始まります。

14.まとめ

実行中のアニメーションクリップから自分のカットを選択しました。これは、Unityでアニメーションを扱うための基本的なプロセスです。
さらにこの後は、プリカットされたアニメーションクリップを使ってリアルで魅力的なアニメーションを作成するために、ルートモーションをどのように使用できるかを探りながら、これを発展させていきます。

 

この記事を書いた人
草場代表
エディター