0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2023-03-03

この記事は、PlayCanvas Meetup #3の投稿になります。

1回目から引き続きで、アニメーションステートグラフについて書いていきたいと思います。
今回はキーボードのWASDで待機、前、右斜め前、左斜め前、右、左、後ろ、右斜め後ろ、左斜め後ろの合計9つアニメーションをMixamoからインポートして、PlayCanvasで動かすということをしたいと思います。


最終的な出来上がりは、こんな感じのものになります。

※1回目の記事はこちら
https://qiita.com/Itokazuya/private/9db5a4f0b703c1c7009a

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

まずは、Mixamoから必要なアニメーションをダウンロードするところから始めます。
※Mixamoへのインポート方法は1回目の記事をご確認ください。

今回モデルを動かすにあたって、下記の9つのアニメーションをMixamoで用意します。

  1. Idle(待機)
  2. Jogging(前)
  3. Jog Forward Diagonal_R(右斜め前)
  4. Jog Forward Diagonal_L(左斜め前)
  5. Jog Strafe Right(右)
  6. Jog Strafe Left(左)
  7. Jog Backward(後ろ)
  8. Jog Backward Diagonal_R(右斜め後ろ)
  9. Jog Backward Diagonal_L(左斜め後ろ)

Mixamoの左上の検索欄に上記のワードを入れて検索していきます。
それぞれ複数の候補が出てくると思いますが、好きなもので構いません。

適切なアニメーションを見つけるにあたって注意する点は2つあります。

1つ目は、移動値を含むアニメーションは[ InPlace ]にチェックを入れることです。(下画像 : 緑枠)
たとえば[ Jogging ]のようにもともと移動値がアニメーションに入っているものは後でループをさせるときに移動値が邪魔になるため、[ InPlace ]にチェックを入れてその場でアニメーションさせるようにします。

2つ目は左右でアニメーションを反転して使っても問題ないものに関しては、[ Mirror ]ボタン(下画像 : 赤枠)の機能を使ってダウンロードすることです。たとえば[ Jog Backward Diagonal_RL ]などが該当します。

05B.png

好きなアニメーションをそれぞれ見つけたら、[ DOWNLOAD ]ボタンを押します。
ダウンロードするときは、Skinの項目を[ Withoutskin ]にしてください。

MixamoでダウンロードしたアニメーションをPlayCanvasにインポート

PlayCanvasに移ります。1回目で作成したプロジェクトをそのまま使用します。
まずは適当な空のフォルダを作成します。ここではAnimationという名前でフォルダを作ります。
フォルダができたらダウンロードしたアニメーションをインポートします。
※[ mixamo.com.glb ]をこの後、使用するので名前をわかりやすく変えておきます。インポートしたアニメーションの数だけこの作業が必要になります。

10B.png

全部、入れ終わると下記のようになっていると思います。

11B.png

次に、AnimStateGraphを右クリックで作りましょう。

12B.png

作ったらダブルクリックでAnimStateGraphを開きます。
開いたら、まずパラメーター[ xDirection ]と[ zDirection ]を2つ用意します。
画面左下の[ +PARAMETER ]から作ります。
パラメーターはスクリプトに値を渡すのに使用します。

16.png

次に画面上のグリッドの部分を右クリックして[ Add new state ]を押し、新しいステートを作ります。
これを用意したアニメーションと同じ9つ用意します。

14B.png

Stateを結んでいる、青い矢印はアニメーションを遷移させる条件を設定するものです。
[ ANY ]の上で右クリックして[ Add transition ]というものを選択すると矢印を出すことができるので、下図を真似して作ってください。
ステートグラフとパラメータを用意し終わったら、下の画面のようになります。

15B.png

ここまで出来たら、青い矢印をクリックしてください。
TRANSITIONというものが、右の方に見えると思います。
下の画像を真似して、遷移を用意してください。

40.png

遷移を9つ用意設定できたら、アニメーションをそれぞれ当てはめていきます。
まず、Forwardのステートを選択します。選択したら右下にEmptyがあると思うので、横のペンマークを押し、先ほどインポートした、[ Jogging.glb ]を選択します。
これを、それぞれ9つのアニメーションに当てはめていきます。

31B.png

アニメーションをキーボードで動かす

ここまで出来たら、次にアニメーションステートグラフで設定したアニメーションをキーボードで動かす準備をしましょう。
ベースはPlayCanvas公式のチュートリアルから持ってきたいと思います。
下記のURLからThird Person ControllerをFORKしてきましょう。

※Third Person Controllerのプロジェクトはこちら
https://developer.playcanvas.com/en/tutorials/third-person-controller/

30B.png

FORKが出来たら、プロジェクトを開きます。
開いたらHIERARCHYにPlayerがあると思います。
Playerの上で右クリックしてCOPYします。

33B.png

自分のプロジェクトに戻りRootの上で右クリック、Pasteしましょう
ついでに、Third Person Controllerプロジェクトから、Scriptsフォルダをコピーし、自分のプロジェクトにコピーしましょう。

34B.png

全部できたら、下の画像のように
HIERARCHYにはPlayerが、Assetsには[ CameraMovement.js ]と[ PlayerMovement.js ]と言うScriptsが2つあると思います。

36B.png

※Playerをコピーして持ってきたら赤枠の部分にエラーが出てるので、[ IMPORT AMMO ]しましょう、AMMOはJavaScriptでの物理計算をサポートしてくれるものです。

32B.png

次にRootを選択、右クリックでNewEntityを作成します。
作成したNewEntityの名前をMyPlayerに変更します。
MyPlayerを選択して、COLLISION、RIGIDBODY、SCRIPTコンポーネントを追加します。
数字はそれぞれ画像のようにしてください、SCRIPTには[ PlayerMovement ]を忘れずに追加しましょう。

42B.png

次に、ヒエラルキーの自分のモデルをドラッグ&ドロップでMyPlayerの子にします。
続けてコピーしてきたPlayer内のCameraAxisをMyPlayerの子にします。(下画像 : 緑枠)
ついでにModelのRotationを[ Y:180 ]にします。(下画像 : 青枠)

※ここで、コピーしてきたPlayerとデフォルトのカメラ(下画像 : 赤枠の2つ)を削除します。カメラは今回使っているスクリプトの都合上、シーンにカメラが2つ存在すると困るので消します。

45B.png

次に、ModelのAnimコンポーネントの歯車アイコン(下画像 : 赤枠)からコピーして、MyPlayerのコンポーネントに[ Paste Component ]します。
MyPlayerにペーストできたら、ModelのAnimは削除します。

46B.png

最後にキャラクターが床から落ちないようにPlaneに[ COLLISION ]と[ RIGIDBODY ]を追加します。

41B.png

ここまで出来たら、再生してみましょう。
キーボードのWASDでモデルが動いたら成功です、お疲れ様でした。

おわりに

PlayCanvas公式のテンプレートを少し変えるだけで、このようにモデルをすぐに動かすことができます。
前に紹介した、VroidのモデルをPlayCanvasにインポートする方法と組み合わせると、色々な可能性が見えてきてワクワクしますね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?