VRなどで人間のユーザの動きをある程度のクォリティで保存・再生するためのプログラムです。
- VRのCameraRigなど特定のオブジェクトの
Transform.positionとTransform.rotationをcsvに保存する機能 - その形式のcsvを読み込んで元のオブジェクトに戻し、再生する機能
があります。
サンプルシーンには以下のゲームオブジェクトがあります。
- Motion DataLogger
- Logger
- Replayer
- Camera Rig
- Cube
- Sphere
このうち、Motion DataLoggerはデータをcsvに読み書きするクラスです。 LoggerとReplayerがMotion DataLoggerに対してデータの出し入れをすることで、シーン内のオブジェクトの動きを保存・再生しています。
Camera RigはTransformならなんでもいいので、ここでは本当に適当なオブジェクトを入れています。
- 動きを保存したいオブジェクトに
LoggedTransaformをアタッチする LoggedTransformのインスペクタからラベルを適当に設定する- 重複が無いこと
- カンマが含まれていないこと
※サンプルシーンではここまで完了しています。 以下はサンプルシーンを参照してください。 新たなシーンに用意する場合は、それぞれの項目で言及しているオブジェクトをシーンに配置した上で、各種コンポーネントを追加してください。
- Motion DataLoggerオブジェクトにアタッチされている同名のスクリプト
MotionDataLoggerで保存先のディレクトリを指定する(無ければ予め作成する) - Loggerオブジェクトにアタッチされているスクリプト
LoggerInSceneのインスペクタから1. で用意したLoggedTransformを全て格納する - 実験等で使うなら、
LoggerInSceneのm_idとm_conditionを適当に設定する
※以下、プレイモード
LoggerInSceneのインスペクタから「Start Logging」ボタンを押下して保存を開始するLoggerInSceneのインスペクタから「Stop Logging」ボタンを押下して保存を終了する- 3.で設定したディレクトリに日付と時刻の名前のcsvが生成されていることを確認する
- までは Export CSV と同じ。
- Replayerオブジェクトにアタッチされているスクリプト
ReplayerInSceneのインスペクタから1. で用意したLoggerTransformを全て格納する
※以下、プレイモード
ReplayerInSceneのインスペクタから「Start Replaying」ボタンを押下して再生を開始するReplayerInSceneのインスペクタから「StopReplaying」ボタンを押下して再生を終了する
なお、再生中に ReplayerInScene のインスペクタから m_updateFixedTime を false にすると自動再生が止まります。
この状態でその上の m_index の数値を変更すると、そのフレームに直飛びできます。