【Unity Recorder】スクリプトベースのアニメーションをSTYLYで再生する方法

今回は「Unity Recorder」というPackageを使い、モデルのアニメーションをAnimation Clip形式で保存し、STYLYにアップロードする方法を紹介します。

Unity Recorder

Unity Recorder

通常、STYLYではC#スクリプトが使えないためスクリプトで制御されたアニメーション(高度な物理演算など)はSTYLYにアップロードできません。

しかし、Unity Recorderを使ってアニメーションをAnimation Clip形式で録画することで、STYLYにもスクリプトベースのアニメーションを適用できるようになります。

スクリプトベースのアニメーション

スクリプトベースのアニメーション

また、Animation Clip形式の他にもmp4やgifの形式にも対応しているので、Unityの画面収録が快適になるでしょう。

サンプル

以下のシーンに、実際に物理演算アセットで作られたアニメーションが再生されるサンプルがあります。

ちなみに、こちらのシーンはRay Fireというアセットを使用したものです。
非常にリアルな破壊表現が得られるので、興味がある方はぜひチェックしてください。
(少々お値段が張るので、セール中に購入するのがおすすめです)

導入~使用開始まで

まず、Unity Recorderをインストールします。

Unity上部メニューから Window > Package Manager から Package Managerを開きます。

Package Manager左上の項目をAll packagesに指定し、Advancedの項目を Show preview packageに指定します。

PackageManager

Package Manager

その後、検索欄からUnity Recorderを検索し、右下のInstallからインストールします

Recorderウィンドウについて

インストールが終わったら実際にウィンドウを開きましょう。
Window > General > Recorder > Recorder Window から Recorderウィンドウを開きます。

RecorderWindow

Recorder Window

各種設定項目は以下の通りです。

  1. Exit PlayMode : 記録停止時にエディタの再生も止めるかどうか
  2. Record Mode : 記録方法
    • Manual : ボタン押して記録開始し、もう一度押すまでを記録する
    • Single Frame : 指定したフレームの間を記録する
    • Frame Interval : 開始フレームと終了フレームを指定し記録する
    • Time Interval(sec) : 開始時間と終了時間(秒)を指定し記録する
  3. Play back : 記録する際のフレームレート設定
    • Constant : フレームレートを固定する
      • Target : 固定するフレームレート値
    • Variable : フレームレートを可変(ゲームと同じ)にする
      • Max : フレームレートの上限の値

次に、Recorderを追加します。
Add Recorder > Animation ClipからAnimation Clip用のRecorderを追加してください。

Recorderを追加したら、GameObjectをシーンに生成し Capture > GameObject にドラッグ&ドロップで録画対象として設定します。

AnimationRecorder

AnimationRecorder

Animation ClipのRecorderの設定項目は以下の通りです。

Capture

  • GameObject : アニメーションを記録するGameObject
  • Record Hierarchy : 記録するオブジェクトの子オブジェクトの変化を記録するかどうか
  • Recorded Components : 記録するコンポーネント
  • Clamped Tangents : アニメーションデータが不連続な場合にカーブのオーバーシュートを防ぐかどうか
  • Anim Compression : アニメーションの圧縮度合い
    • Lossy : 全体に対し圧縮する(精度が落ちる代わりにサイズが小さくなります)
    • Lossless :アニメーションカーブが直線な部分のみ圧縮する(カーブに曲線が多い場合はファイルサイズが大きくなります)
    • Disabled : 圧縮しない

Output File

  • File Name : 生成時のファイル名
  • Path : ファイルが生成されるパス
  • Take Number : ファイル名とする数字

Animationを録画

では、実際に記録しましょう。
まず、Output Fileで指定した場所にフォルダを作ります、デフォルトではAsset直下に Recordings という名前で作れば自動でアニメーションが保存されます。

Recording ModeをManual、 Exit Play Modeをオンにし、START RECORDING もしくは赤い再生ボタンをクリックします。

すると、Unityがプレイモードになるのでオブジェクトを自由に動かしてみましょう。
オブジェクトを動かした後はプレイモードを終了するか、レコーディングのボタンを押下して録画を止めます。

Animationを録画

Animationを録画

Recordingsフォルダを開くとアニメーションが生成されているはずです。

Animation Clipを適用

生成したアニメーションをオブジェクトにドラッグ&ドロップして適用し、再生してみましょう。

録画した時と同じ動きをしていれば成功です。

録画したアニメーションを再生

録画したアニメーションを再生

また、Transformのみを保存するような単純なアニメーションであれば他のオブジェクトに適用することも可能です。

他のモデルにも適用できる

他のモデルにも適用できる

STYLYにアップロード

生成したアニメーションを適用したオブジェクトをプレハブとして保存し、STYLYにアップロードしましょう。

STYLYアカウントを作成する

アカウント作成方法

STYLYにアップロードする方法

UnityからSTYLYにアップロードする方法

STYLYに関する質問、バグ報告、改善してほしい要望はSTYLY FORUMまで
https://jp.forum.styly.cc/support/discussions

応用した使い方

今回は単純なアニメーションを記録しましたが、この使い方を応用して

  • まず、スクリプトを使ってモデルをアニメーションさせる
  • そのアニメーションをUnity Recorderで録画する
  • 生成したAnimation Clipをモデルに適用し、スクリプトを削除してプレハブ化する
  • プレハブをアップロードする
    という手順を踏めば、STYLYにスクリプトベースのアニメーションをアップロードできます。

ただし、

  • Meshそのものを変形させるアニメーションは適用できない
  • 子オブジェクトの数が多いと録画が非常に重くなり、できない場合もある
    という点に注意ください。

その他の使い方

また、今回は紹介できませんでしたがUnity Recorderではmp4形式やgif形式、連番形式で録画をしたり、Timelineを使って指定した部分のみ録画するといったことも可能です。

何かと便利な機能を持っているので、ぜひUnity Recorderを活用してみましょう。