Tuesday, October 2, 2018

Amazon Lumberyardで自作のキャラクターモデルを動かしてみる(3) -モーション遷移(1)-

今回から各モーション間の遷移を作っていきます。
今回は、Anim graph上で必要な各ノードを作成し接続する所までを行います。

参考資料:Amazon Game TechのYoutubeチャンネル

Anim Graphを開きます。
(いくつか関連するウィンドウが開きますが、とりあえず気にしないで下さい。)


Anim Graphビューが開きました。


Newアイコンをクリックし、新規Anim graphを作成します。


新規Anim graphが作成され、背景がグリッドになります。


作成したAnim graphのファイル(EMotion FX Anim Graphファイル)をとりあえずセーブしておきましょう。Saveアイコンをクリック→Saveを選択してファイルブラウザを出し、任意の場所に適当な名前でセーブします。

この先も、Anim graphは随時セーブして下さい。

エディタのどこかにAttributesというビューが開いているはずですので見つけて下さい。

(もし表示されていない場合はViewメニューを開いてみて下さい。Anim Graphを表示した時点でViewメニューの内容が増えており、その中にAttribute Windowという項目が確認出来ますのでチェックを入れて開きます。メニューの内容が増えていない場合は、Viewのチェックをつけたり外したり、ビューを選択したり外したり、色々試してみて下さい。)

AttributesビューにAnim graphのアトリビュートが表示されています。その中のPreview withプルダウンを開き、前回作ったMotion setを選択します。

これで、前回作ったMotion setでプレビューされる様になりました。

Anim graphビューに戻ってください。
グラフ内でマウス右ボタンクリックでメニューを出し、Create Node - Sources - Motion を実行します。


グラフ内に"Motion0"というノードが出現します。これが、モーション遷移の起点となるノードです。


作成した"Motion0"ノードをクリックで選択して下さい。ノードが黄色になります。
選択したら再びAttributesビューを見て下さい。
選択した"Motion0"ノードのアトリビュートが表示されています。


AttributesビューのMotionsのSelect Motionsをクリックすると、モーション選択画面が出て、"Motion0"ノードに割り当てるモーションが選択できる様になります。


先程述べた通り"Motion0"ノードはモーション遷移の起点になるので、ニュートラルモーションを割り当てる事にします。


ニュートラルモーションが割り当てられました。


次に、他の各モーションを格納しておくState Machineというノードを作成します。
グラフ内でマウス右ボタンクリックでメニューを出し、Create Node - Sources - State machine を実行します。


"StateMachine0"という名前でState Machineが作成されました。


作成された"StateMachine0"ノードをダブルクリックして下さい。Anim graphの表示が"StateMachine0"ノードの内容に切り替わります。
ここに使用する各モーションのノードを作成して行きます。


先程と同様にグラフ内でマウス右ボタンクリックでメニューを出し、Create Node - Sources - Motion を実行してノードを作成した後、そのノードのアトリビュートでモーションを割り当てます。
ここでは3つ作成し、それぞれに「パンチ」「伸び」「膝上げ」の各モーションを割り当てました。


ここから、今まで作成した各ノードを接続して行きます。
まずAnim Graphの左上のRootをクリックして、最初の画面に戻します。


Rootの画面に戻り、最初に作成した"Motion0"ノードと"StateMachine0"ノードが表示されます。


"Motion0"ノードの外枠に触れる位の位置にカーソルをあわせると、カーソルが指さし形に変化します。
そのまま"StateMachine0"ノードの外枠に触れる位置までドラッグしてドロップすると、矢印が作成されます。
この矢印をTransitionといいます。


同様に、"StateMachine0"から"Motion0"にもTransitionを作成します。

"StateMachine0"をダブルクリックしてAnim graphの表示を"StateMachine0"ノードの内容に切り替えて下さい。
先ほどと同様に各ノードの間にTransitionを作成します。



これで各ノードの接続は終わりです。
まだ途中ですが、一度Anim GraphビューのSaveアイコンからセーブしておいて下さい。
次回は、各Transitionに遷移のフローを制御する為の条件式を設定して行きます。

Sunday, September 30, 2018

Amazon Lumberyardで自作のキャラクターモデルを動かしてみる(2) -Motion Setの作成-

今回はMotion Setを作成します。Motion Setは複数のモーションを一箇所にまとめた物です。
併せて、モーションの表示テストも行ってみます。

参考資料:Amazon Game TechのYoutubeチャンネル

まずLumberyardを起動します。
前回書いた通り、使用しているLumberyardのバージョンは1.15.0.0です。


Tools - Animation Editor(PREVIEW)を実行します。


Animation Editorが表示されます。(もしかしたらビューの数や配置が異なるかも知れませんが気にしないで下さい。)


Animation EditorのメニューのViewを開いて下さい。現在開いているビューの横にチェックが入っています。


とりあえず全部のチェックを外してみます。


Animation Editorの画面からビューが全部無くなりました。


ここからは必要なビューだけを表示して作業して行きます。
まずActor(キャラクターモデル)をロードする為にActor Managerを開きます。View - Actor Managerを実行します。


Actor Managerが開きました。


Load actors from fileアイコンをクリックしてファイルブラウザを開きます。


ファイルブラウザから、前回用意したキャラクターモデルのFBXファイルをロードします。


Actor ManagerにActorが追加されました。


Actor Managerを閉じ、次にOpenGL render windowを開きます。


さきほどロードしたActorが表示されます。ビューはAlt+マウス各ボタンで操作出来ます。


次にMotion Setsを開きます。


Motion Setsが開いたら、上ペインのAdd new motion setアイコンをクリックします。


新規Motion Setが作成されました。


作成された"MotionSet0"をクリックして選択します。


下ペインのAdd entries by selecting motionsアイコンをクリックして、各モーションのFBXファイルをロードする為のファイルブラウザを開きます。


ファイルブラウザから、前回用意した各モーションのFBXファイルをロードします。


各モーションが、先ほど作成した"MotionSet0"に追加されました。


作成したMotion Setはセーブする必要があります。
上ペインのSave selected root motion setアイコンをクリックしてファイルブラウザを出し、適当な場所に適当な名前でセーブします。

セーブしたら、Motion Setのビューを閉じて下さい。
Motion Setの作成作業は以上で終了です。

では、モーションのテストを行ってみましょう。
Command barとMotionsを開きます。


画面内に開いているのがMotionsのビュー、画面下端に横長に表示されているのがCommand Barです。


MotionsのNameカラムでモーションを一つクリックして選択します。


Command barの三角ボタンをクリックすると、先ほど選択したモーションが再生されます。




四角ボタンを押すと再生が終了し、キャラクターがバインドポーズに戻ります。


今回は以上です。
次回は各モーション間の遷移を作ります。

Saturday, September 29, 2018

Amazon Lumberyardで自作のキャラクターモデルを動かしてみる(1) -ファイルの準備-

ほぼ8年ぶりの更新です。

Amazon Lumberyard学習のメモとして、今回から何回かに分けて
「自作のキャラクターモデルをLumberyardで動かしてみる」
という内容のチュートリアルみたいな記事を書いて行こうと思います。
使用しているLumberyardのバージョンは1.15.0.0です。
では早速始めましょう!

まずはキャラクターモデルを用意します。このモデルはMayaで作成しました。
Mayaでの1ユニットを1cmに設定しています。
今回は質感には特にこだわっていないので、テクスチャーはDiffuse一枚だけを使っています。

スケルトンはこんな感じです。

バインドポーズとスケルトン構成です。ジョイントに左右を示すプレフィックス(L_とR_など)を付けておくと、Lumberyardでモーションの反転が出来る様になります。

このキャラクターモデルを、MayaからExport-allでFBXとしてエクスポートします。注意点は以下の通り。

・バインドポーズにする
・アニメーションキーを全て削除する
・スケルトンとスキン以外のオブジェクトは削除する
・マテリアルとテクスチャーはアサインしておく。ただしテクスチャーパスは後から変えられるので正しくなくても良い。

今回は使用しているMayaのバージョンが古い(Maya2008)都合で、FBXも古いバージョンであるFBX200611としてエクスポートしています。ファイル名は適当に付けて構いません。

ちなみにMayaはデフォルトではY-UPでLumberyardはZ-UPですが、インポートの際に自動で変換されるので意識する必要はありません。

次に、同じスケルトンを使ったアニメーションのシーンを用意します。
今回はニュートラル・パンチ・伸び・膝上げの四つのシーンを用意しました。

注意点は以下の通りです。

・スケルトンのみのシーンとして作る。IKハンドルなどを使っている場合はキーをジョイントにベイクしてから削除する。
・ループするアニメーションの場合は、最初と最後のフレームのポーズを同じにする。例えば30fpsで1秒ループのアニメーションの場合、0〜29フレームではなく0〜30フレームをアニメーション範囲とする。

これらのシーンもMayaからExport-allでFBXとしてエクスポートします。ファイル名は適当で構いません。

こちらが出力したFBXです。一番上がキャラクターモデル、他がアニメーション用のファイルです。


ファイルの準備が出来たら、C:/Amazon/Lumberyard/1.15.0.0/dev/StarterGame/の下に適当なフォルダを作って移動させます。
今回は以下の構成にしました。

キャラクターモデルの移動先
C:/Amazon/Lumberyard/1.15.0.0/dev/StarterGame/Items_LowPolyMan/actor/

アニメーションの移動先
C:/Amazon/Lumberyard/1.15.0.0/dev/StarterGame/Items_LowPolyMan/animation/

テクスチャーの移動先
C:/Amazon/Lumberyard/1.15.0.0/dev/StarterGame/Items_LowPolyMan/textures/

さて、次はいよいよLumberyardでの作業に入ります。