- UnityのHumanoidアニメーションを従来の.animではなく、Muscleを使って軽量に外部保存・読み出しするためのスクリプトです。
- Meta QuestなどVR機器装着時の動きをキャプチャする、"QueTra"ベースのPCVR用サンプルシーンが含まれています。
- 60fpsで記録した1分間のHumanoidモーションのデータサイズ比較。MuscleCompressorのフォーマットは既存フォーマットより軽量です(.animと比較して96%の圧縮)
- Unity 2021.3.19f1
- Oculus Integration 53.1 (別途インポート必要)
- Final IK (別途インポート必要)
- Windows 10 x64
- Meta Quest 2
※初回起動時にはFinalIKとOculus Integrationが無いためにSafeModeでの起動を促されますが、"Ignore"して進めてください
MuscleLoading.mp4
- Unity 2021.3.19f1でこのプロジェクトを開いたらOculus IntegrationとFinal IKをPackage Managerからインポート
- Assets/VRStudioLab/Scenes/LoadSceneSample.unityを開き、実行
- TextMeshProが入っていない場合ポップアップが出るので、TMP essentialsをインポート
- Load Motionボタンを押すとファイルブラウザが立ち上がるので、モーション保存場所(Assets/StreamingAssets/Motion)へ行き、.dataを選択
- モーションがシーンのアバターに適用される
※Assets/StreamingAssets/Motionにサンプルモーションを同梱しているので、テスト等にご活用ください。
- (Unity 2021.3.19f1でこのプロジェクトを開いたらOculus IntegrationとFinal IKをPackage Managerからインポート)
- Unity上部のメニューからVRStudioLab -> Bytes2Animを押す
- ファイルブラウザが立ち上がるので、モーション保存場所(Assets/StreamingAssets/Motion)へ行き、.dataを選択
- Assets/VRStudioLab/Animationsに変換されたクリップが保存される
Muscle-Recording.mp4
- (Unity 2021.3.19f1でプロジェクトを開いたらOculus IntegrationとFinal IKをPackage Managerからインポート)
- Assets/VRStudioLab/Scenes/RecordSceneSample.unityを開く
- TextMeshProが入っていない場合ポップアップが出るので、TMP essentialsをインポート
- RecordingManager内のRecording Datasに収録モーションの保存名(Name)と長さ(Duration)を入力
- VR機器を接続した状態でPlay
- アバター読み込み後、READYボタンを押してからDuration秒のモーションがAssets/StreamingAssets/Motionに保存される
本コードはSIGGRAPH 2023 Postersにて公開した"AI-Assisted Avatar Fashion Show"のモーション取り扱い部分を抜粋したものです。
@inproceedings{10.1145/3588028.3603660,
author = {Kohyama, Kai and Berthault, Alexandre and Kato, Takuma and Shirai, Akihiko},
title = {AI-Assisted Avatar Fashion Show: Word-to-Clothing Texture Exploration and Motion Synthesis for Metaverse UGC},
year = {2023},
isbn = {9798400701528},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3588028.3603660},
doi = {10.1145/3588028.3603660},
booktitle = {ACM SIGGRAPH 2023 Posters},
articleno = {14},
numpages = {2},
location = {Los Angeles, CA, USA},
series = {SIGGRAPH '23}
}