PlayCanvasでMixamoのアニメーションを適用する方法 [第1回]

この記事は、[PlayCanvas Meetup #3](https://playcanvasjp.connpass.com/event/272477/)の投稿になります。

PlayCanvasで、アニメーションステートグラフについて書いてある記事が少なかったので紹介したいと思います。アニメーションまわりはボリュームが多いので、全2回に分けてキーボードのWASDでモデルを動かす方法まで書いていきたいと思います。
今回の1回目は、MixamoからダウンロードしたアニメーションをPlayCanvasで簡単に再生する方法について説明します。

<br>
最終的な出来上がりは、こんな感じのものになります。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">PlayCanvasにVRoidを適当にぶっこんでみた！PlayCanvasめっちゃ遊べる<a href="https://t.co/JVhNuBvvb8">https://t.co/JVhNuBvvb8</a><a href="https://twitter.com/hashtag/PlayCanvasAcademy?src=hash&amp;ref_src=twsrc%5Etfw">#PlayCanvasAcademy</a><a href="https://twitter.com/hashtag/WebGL?src=hash&amp;ref_src=twsrc%5Etfw">#WebGL</a><a href="https://twitter.com/hashtag/playcanvas?src=hash&amp;ref_src=twsrc%5Etfw">#playcanvas</a> <a href="https://t.co/ZIrfyTdK3c">pic.twitter.com/ZIrfyTdK3c</a></p>&mdash; Kazuya (@kazuyaplus) <a href="https://twitter.com/kazuyaplus/status/1574967403003248641?ref_src=twsrc%5Etfw">September 28, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<br>

※VRoidのモデルをPlayCanvasにインポートする方法は、下記の記事をご覧ください。
https://qiita.com/Itokazuya/items/3b42ebd22ab5d8b709ce

## Mixamoからアニメーションをダウンロード

まずは、Mixamoにログインしましょう。
下記URLからMixamoのアカウントを作成しログインできます。

Mixamo
https://www.mixamo.com/

Mixamoにログインが成功すると、下のような画面が開くと思います。

![02B.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192685/a7863411-3507-649c-2867-060b04fb5c19.png)

次に赤枠で囲んでいる箇所[ UPLOAD CHARACTER ] ボタンを押し、事前に書き出したFBXをドラッグ＆ドロップします。
※FBXの書き出し方法は[VRoidのモデルをPlayCanvasにインポートする方法](https://qiita.com/Itokazuya/items/3b42ebd22ab5d8b709ce)をご参照ください

![03B.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192685/698683da-bec7-b4bb-144a-6f52acece99e.png)

アップロードが終わると確認画面になると思います。そのまま[ Next ]ボタンを押します。

![04B.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192685/aec6d155-8e23-a16d-74ca-aec173ca7628.png)

これで、事前準備が終わりました。
次に好きなアニメーションを選んでダウンロードしたいと思います。
私は[ Rumba Dancing ]というアニメーションを使ってみたいと思います、左上の検索欄から探すことができます。

![17B.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192685/8dd149b0-7932-e244-3b9b-79adcb9d937e.png)

ダウンロードするときの注意点として、Skinの項目は[ Withoutskin ]にしてください。
これは、モデルの素体をアニメーションと一緒に書きだすためのオプションですが、今回欲しいのはアニメーションデータのみで、PlayCanvasに取り込むときに素体があると容量を無駄に使ってしまうので、気を付けてください。他のオプションは用途によって使い分ければいいと思います。

![18B.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192685/e8d92162-6d2a-1209-69b1-9bbed9b2f6a4.png)

## MixamoでダウンロードしたアニメーションをPlayCanvasにインポート
PlayCanvasに移ります。始めに空のプロジェクトを作りましょう。
Vroidのモデルは前回、インポートしたものを使いまわすので説明は省きます。

※ 今年からPlayCanvas EditorからglTF2.0(GLB)をインポートが可能になりました！
今まではFBXなどの3DデータをEditorにインポートすることで、GLBに変換していましたが、直接インポートが可能になったのでワークフローが大幅に改善されました。

※ MixamoはFBX,OBJに対応してるので、この記事ではFBXが必要になります。

ダウンロードしたアニメーションをインポートするために、空のフォルダを作成します。
ここでは[ Test ]という名前でフォルダを作ります。
フォルダを作成したら先ほどダウンロードした[ Rumba Dancing ]をドラッグ＆ドロップしましょう。

![19B.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192685/a39484ac-0d2c-e251-623d-3dab4a3845d8.png)

アニメーションのインポートが成功すると下記のようになっていると思います。
※[ mixamo.com.glb ]をこの後、使用するので名前をわかりやすく変えておきます。

![20B.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192685/0e0d3b5c-185c-701d-8e8d-34a66bbcb91e.png)

次に、AnimStateGraphを作ります。
画面下のASSETSの何もないところで右クリックをして作りましょう。
[ New Anim State Graph ]というものができたと思います。

![21B.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192685/1d53a197-982a-23f7-08c9-7492db4755b7.png)

[ New Anim State Graph ]ができたら、次にModelをクリックし[ ADD COMPONENT ]から[ Animation > Anim ]を選択しましょう

![23B.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192685/d71f4b8c-1076-01c0-a4e1-f20e93f28f6a.png)


ANIMコンポーネントが追加されたら、先ほど作った
[ New Anim State Graph ]をEmptyのところにドラッグ＆ドロップしましょう

![24B.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192685/3bb22a92-f4a7-71ed-bf89-4b084ec837f9.png)


作ったらダブルクリックでAnimStateGraphを開きます。

開くとInitialStateという名前のものがあると思うのでこれを、Rumba Dancingにしましょう。
名前を変えたら、次にEmptyの横のペンマークを押して、先ほど保存したアニメーションを適用させます。

![27B.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192685/bcf54d89-aead-ce8c-b8e5-35281a7d2dba.png)


ここまで、できたらLaunchして確認しましょう。
問題なく動いていれば成功です。

![28B.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192685/1cfad6ea-a6e4-db76-e335-e32fa59f3d0d.png)


## おわりに

単純ですがこれで、アニメーションステートを使用し、アニメーションを再生する方法について紹介しました。
2回目はもう少し複雑なアニメーションステートを作成し、制御していきたいと思います。

※2回目はこちら
https://qiita.com/Itokazuya/private/98bb436d7ae3292f1453