<前文>
今週は特にないです。
<本文>
今週は、キャラクターを変更したいと思います。と言っても自分で作成する事は出来ませんので、代わりのアセットを使用したいと思います。
このアセットは無料の時に購入したのですが、全く使用してません。と言うか全く使用方法から分かりません。パラパラ探したのですが、何処にも説明書のような物はないですね。
<取りあえずやってみる>
1.ModularBodyPartsをプロジェクトに追加する。
まず、試し用にプロジェクトを作成します。プロジェクト名はCharacterTestとします。
ここに、Modular RPG Heros Polyartを追加します。
2.ModularBodyPartsの確認
中身を見てみます。
弓、二刀流、杖、素手、剣と盾、一刀流のモーションのアニメーションがありました。以下に素手のモーションを示します。
こんなに沢山あるのですか。
一個だけモーションを見てみました。
多分、前受け身の事でしょう。若い時に武道をかなり真剣に練習していたので、前受け身にはとても興味があります。
凄い。でも何か違いますね。前受け身というよりでんぐり返しですね、これは。何が違うのかなと思ったら、左右の違いが無い事が違和感になっているんですね。武道の観点から見れば、人間の体はXに成っているですが、この動きは人間の体を+と見なしていますね。ウーン。何かすっげぇ不満。
とは言え、私のゲームには十分過ぎる物です。次を見てみましょう。
キャラクターBPフォルダー内には二つのアセットがありますね。
ひょっとしたか、ThirdPersonCharacterの代わりになるのかなと思って見てみると、Parent ClassがSkeletalMeshActorですね。
今度はMapsを見てみます。
凄い数のレベルが入っていました。え、レベルデザインも貰えるの?と喜んで開いて見たら、
全てのキャラクターの同じモーションが表示されました。なるほど。
今度はMaterialです。
たった3個しか入っていませんでした。これらで全てのキャラクターの色を付けているのでしょうか?
興味深いので、中も見てみます。PolyartMaskTintMatを開きます。
こんな、感じになっていました。
Metallicは0.5、Roughnessは0.7になっています。そしてNormalはなしですね。これがPBRでアニメっぽいマテリアルにするテクニックかもしれませんね。
次のMeshesはModularBodyParts、OneMeshCharacters、StageMesh、そしてWeaponsのサブフォルダーに分かれています。
PhysicsAssetとSkeletonがフォルダー外にありますね。
Mannequinの方を見たら、Meshフォルダー内に同様のファイルがありました。
この辺の勉強をおろそかにしていたので、これらが何のためにあるのかが全く分かりません。後で調べる事にします。
ModularBodyPartsフォルダーから見ていきます。
凄い。これらのパーツを組み合わせてキャラクターを作成しているのですね。
Skeletal Meshと書かれていますね。Boneも付いているみたいですね。
試しに一個開いて見ました。
Meshの所にやっぱりSkeletonがありました。ただこれもSkeletal Meshそのものを知らないので、使用方法とか全然分からないですね。これらを組み合わせて、
を作成するのでしょうか?
Modular CharacterBPのBPをみると以下に示すようなノードが組まれています。
このHair、Gloveなどのそれぞれに対応するのでしょうか?
Faceを選択すると、DetailのMeshにFace01SKが選択されていました。
これで、何となく作り方は分かりました。
そういえば、Meshフォルダー内を見ていたんですね。
ModularBodyPartsフォルダーの次のフォルダーであるOneMeshCharactersを見てみます。
こちらは、一個のSketetal Meshで一体のキャラクター全体を表示しているみたいです。
試しに一個開いて見たら、以下のようなキャラクターが表示されました。
これに、剣や盾を装備して使用するのでしょうか?
OneMeshCharactersBPを開いて見ると、
Componentsの所に武器や防具の項目がありますね。SkeletalMeshComponentを選択して、detailのMeshを見ると
OneMeshCharactersのモデルの一つであるKightSKが選択されていました。
武器も見てみましょう。
あれ、武器がStatic Meshですね。Skeletal Meshではありません。
と言う事は、Static Meshの武具がこの後にあるのでしょうね。
次のフォルダーは、StageMeshです。中には、
が一個だけ入っていました。開くと
これはデモ用の舞台みたいですね。直接は使用しないと思われます。
Meshフォルダー内の最後のフォルダーであるWeaponsを見てみます。
これらが、OneMeshCharactersBPでOneMeshCharactersの武具に使用されるアセットですね。
Static Meshとなっていますね。
最後は、Texturesです。
Materialで使用されているTextureが入っていました。
圧巻ですね。
期間限定と言え、これを無料でもらえてしまうのが、EPICGAME社の凄い所です。
3.兎に角、やってみる。
ここから何ですが、全くどうしたら良いのか分かりません。色々試してみようと思います。
まず、GameModeクラスのコンストラクターで
PlayerPawnBPClassをThirdPersonCharacterに指定しています。これを
と変えてみたらどうでしょうか?
やってみます。
全く、変わりません。
そう言えば、GemModeを設定していなかったです。
もう一度やってみます。
やっぱり変わりませんね。
理由が分かりました。
ModularCharacterBPはSkeletalMeshActorクラスでPawnクラスじゃなかったです。
公式のAPIのAPawnのdocumentによると
となっていますが、同じサイトのSkeletalMeshActorは
となっています。ので
がそもそも無理だったんですね。
プランBで行きます。
プランBは、ThirdPersonCharacterはそもそもCharacterクラスの派生クラスなのだからSkeletal Meshを指定する変数を持っているはずです。そこに、このModularCharacterBPを指定すれば良いと考えました。
思いっきりありました。ここにModularCharacterBPを入れます。
入らない。
SkeletalMeshActorはSkeletal Meshクラスの子クラスじゃなかったみたいです。
APIを確認したら、
全然違ってました。
じゃSkeletalMeshActorて、一体何なんだと調べたら、
ここに、しっかり説明されていました。
簡単にまとめますと、レベル内で複雑な動作を担当するための特別なアクタークラスだそうです。レベル内で一番複雑な動作をするのはプレイヤーがコントロールするキャラクターでしょう。と言ってもそれは担当してないみたいです。うーん。
これだと1個のSkeletal Meshしか追加出来ないですね。
それなら、OneMeshCharactersをThirdPersonCharacter のSkeletal Meshにセットしてみます。
今度は簡単に出来ました。
見事に変わっています。
Playボタンを押して実際に動くか確認します。
動きましたが、アニメーションが消滅してます。
MeshのdetailsでAnimationの所が、Noneにセットされていました。
このアセット内の全てのキャラクターのボーンはThirdPersonCharacterと同じと何処かで読んだ気がします。それならThirdPersonCharacter用のアニメーションがそのまま使用出来るかも?と期待して、
ThirdPerson_AminBPをセットしました。
試してみます。
駄目でした。
調べたら、Animation Retargetingに同じスケルトンを使用しているが、サイズが全く違うキャラクターに同じアニメーションを使用する方法が説明されているみたいです。やっぱり単純にそのままでは使用出来ないみたいですね。
一応、考え方が間違っていないか調べるために、Animationの設定を変えて、弓での攻撃のアニメーションを表示してみます。
思いっきり出来てます。私が弓について全く知らないからかもしれませんが、動作はかなり格好いいです。
次に、ThirdPersonCharacter用のアニメーションである
を変わりに選択して使用しようとしたら、選択出来ません。
4.Animation Retargetingを勉強する。
これさえ理解すればThirdPersonCharacter用のアニメーションをOneMeshCharactersのキャラクターの動作に使用出来る気がします。
Animation Retargetingは読んだのですが、以下に示すチュートリアルの方が分かり易いのでそちらを中心に勉強します。
https://www.youtube.com/watch?v=JkcJ5bjGPsg&t=16s
を見ていると、同じスケルトンを使用した違うSkeletal Meshの場合、
それぞれのanimation sequenceも選択出来ています。
OneMeshCharactersのキャラクターとThirdPersonCharacterに使用されていたSK_Mannequinのスケルトンは同じUE4_Mannequin_SkeletonですがOneMeshCharactersのキャラクターであるApprenticeSKは、SK_Mannequin用のanimation sequenceを選択する事が出来ません。
これは、OneMeshCharactersのスケルトンはModularRPGHeroesPolyart/MeshesにあるUE4_Mannequin_Skeletonを使用していますが、ThirdPersonCharacterに使用されていたSK_MannequinのスケルトンはMannequin/Character/Mesh内にあるUE4_Mannequin_Skeletonを使用しているため、UE4エディターが二つの違うスケルトンを使用していると認識しているためと考えられます。
https://www.youtube.com/watch?v=xy9aLbZLdeA
に違うスケルトンを持つSkeletal Meshにanimation sequenceを強引に適用する方法が載っていました。この方法を使用すればSK_Mannequin用のanimation sequenceをOneMeshCharactersのキャラクターであるApprenticeSKに使用出来そうです。
まず、結論から書きますと出来ました。
以下に簡単にやり方を示します。
まず、使用したいanimation sequenceを選択しエディターを開きます。今回は、ThirdPersonRunです。
エディターの右上にあるタブから
Skeletonを選択します。
Retarget Manager内の
Set up RigのSelect RigにHumanoidを選択します。
セーブします。
今度はそのanimation sequenceを使用するskeletal meshである
を開きます。
こちらも右上のタブからSkeletonを選択して、
Skeletonエディターを開きます。
こちらでも、Select Rigにhumanoidを選択します。
選択したらセーブします。
今度は、また
に戻ります。
ThirdPersonRunを右クリックすると、Animation Sequence Actionsが開くので、以下に示すように、そこからRetarget Anim Assetsを選択し、更にDuplicate Anim Assets and Retargetを選択します。
するとSelect Skeletonが開きます。
ここでUE4_Mannequin_Skeletonを選択します。
ここで、本来ならば、
SourceとTargetの腕の位置が違うのですが、もう直してしまったので図では同じになってしまっています。
念のためにSourceの腕の位置の直し方を以下に書いておきます。
まず、Select Skeletonを一端閉じます。そしてSourceのSkeletonを開きます。
ポーズをT字型にします。
ポーズが完成したら、Manage Retarget Base Pose内のModify Poseをクリックします。
セーブします。
もう一度、ThirdPersonRunのSelect Skeletonを開きます。
今度はRetargetボタンを押します。
すると、新しいThirdPersonRunが生成されています。
これを、ThirdPersonCharcterのAnimationで選択します。
Playボタンを押すと、
ApprenticeSKが走り始めました。
5.ApprenticeSK のためのThirdPerson_AnimBPを作成する。
SK_Mannequin のためのamination Sequence1個がApprenticeSKに使用出来るようになったとしても、ApprenticeSKがプレイヤーの思い通りに歩いたり走ったりジャンプしたりしてくれるわけではありません。それを可能にするためには、ApprenticeSKのためのThirdPerson_AnimBPを作成する必要があります。
そのため専用のフォルダーを一個作成します。MotionFromMannequinと名付けました。
ThirdPerson_AnimBPをコピーしたThirdPerson_AnimBP1と先程作成したThirdPersonRunをこのフォルダー内に移動しました。
まず、animation Blueprintについて復習します。
5.1Animation Blueprintの復習
色々な所を見て回りましたが、以下のチュートリアルが最も分かり易かったです。
- BP 3rd Person Game: Blend Spaces | 07 | v4.8 Tutorial Series | Unreal Engine
- BP 3rd Person Game: Intro to Animation Blueprints | 08 | v4.8 Tutorial Series | Unreal Engine
- BP 3rd Person Game: Intro to State Machines | 09 | v4.8 Tutorial Series | Unreal Engine
- BP 3rd Person Game: Building the AnimGraph | 10 | v4.8 Tutorial Series | Unreal Engine
- BP 3rd Person Game: Animation BP EventGraph | 11 | v4.8 Tutorial Series | Unreal Engine
このチュートリアル分かり易いのですが、いかんせん古いので全く整理されていません。誰かが管理しなければ、いずれ消えてしまうでしょう。
しかし、大体意味は分かりました。Blend Space 1DであるThirdPerson_IdleRun_2DとAnimation BlueprintであるThirdPerson_AnimBP1はBPを作成する時に、どのスケルトンを使用するのかを指定しないといけないみたいですね。これらも最初から作成する事になりそうです。
5.2ApprenticeSKのためのAnimation Sequenceの作成
ApprenticeSKのためのThirdPersonRunだけは先程作成しましたが、残りの全部のAnimation Sequenceも変換する必要があります。やります。
作りました。やり方はApprenticeSKのためのThirdPersonRunを作った時と同じです。
動作も確認しました。
5.3ApprenticeSKのためのThirdPerson_IdleRun_2Dの作成
ひょっとするとスケルトンを途中で変える事が出来るのかもしれませんが、練習にもなるしThirdPerson_IdleRun_2Dは最初から作成します。
BP 3rd Person Game: Blend Spaces | 07 | v4.8 Tutorial Series | Unreal Engine
を参考にして作成します。
まず、animation からBlend Space 1Dを選択します。
やはりスケルトンの選択を聞いてきました。ここでは、ApprenticeSKのためのThirdPerson_IdleRun_2Dを作成するので、当然下のスケルトンを選択します。
名前が一緒だと後で混乱するかもしれないのでMy ThirdPerson_IdleRun_2Dとします。
開いたらこんな感じでした。
左下のAsset Browser に先程作成したanimation sequencesが表示されていました。
まず、グラフの座標の設定をThirdPerson_IdleRun_2Dと同じにします。
グラフの左端にThirdPersonIdle、左から3分の1の所にThirdPersonWalk、そして右端にThirdPersonRunを配置します。ThirdPerson_IdleRun_2Dの設定と全く同じなはずです。
スクリーンショットでは上手く伝わらないですが、スムーズに歩きと走りの移動が行われています。
5.3ApprenticeSKのためのThirdPerson_AnimBPの作成
それではThirdPerson_AminBPを作成します。
BP 3rd Person Game: Intro to Animation Blueprints | 08 | v4.8 Tutorial Series | Unreal Engine
を参考にして、Animation Blueprintを作成します。
Parent ClassはAnimInstanceを選択します。理由はチュートリアルがそうしたからです。
流石に後で心配になって、ThirdPerson_AminBP1のプロパティの何処かに書かれていないか確認しました。思いっきりAnimInstanceがparentになっていました。安心です。
次にやはりと言うか、スケルトンの選択がありました。ApprenticeSKのためのスケルトンなので下と思ったら、今回は上のスケルトンがApprenticeSKのためのでした。危うく間違えるとこでした。
UE4は、アセットなどの順番がちょっとした事で、代わるので注意が必要です。
名前はMyThirdPerson_AnimBPとしました。
中身を作って行きます。
BP 3rd Person Game: Building the AnimGraph | 10 | v4.8 Tutorial Series | Unreal Engine
とThirdPerson_AnimBPを参考にして作成します。
AnimGraph を開きState Machineを追加しました。名前はThirdPerson_AnimBPと同じDefaultにしました。
Defaultをダブルクリックして開きます。
以下にThirdPerson_AnimBPのDefaultを開いた時に表示される図を示します。
これと同じ物を作成していきます。
新しいstateを加えました。Idle/Runと名付けました。
Idle/Runの中身を作成します。
ThirdPerson_AnimBPと全く同じ様にしました。
全部書くのは大変なので、完成した結果だけ載せます。
今度はevent graph内に移動します。
以下にThirdPerson_AnimBPのevent graph内を表示します。
BP 3rd Person Game: Animation BP EventGraph | 11 | v4.8 Tutorial Series | Unreal Engine
を参考して作成します。
出来ました。
これでapprenticeSKのためのAmination Blueprintも完成しました。
6.テスト
テストします。
ThirdPersonCharcterのAnimationを以下に示すようにセットします。
コンパイルしてセーブしてPlayします。
Wキーを押すと思いっきり走ります。
スペースキーを押すとジャンプします。
出来ましたね。
今週はここまでにします。
<考察>
Modular RPG Heros Polyartで提供されている全てのモデルはUE4で使用されているSK_Mannequinと同じスケルトンを使用しているため、本来ならば、何もしなくてもUE4エディターにあるanimation sequencesを使用出来るはずですが、今回は何故かUE4エディターがModular RPG Heros PolyartのスケルトンとUE4エディター上にあるスケルトンは別物であると認識してしまったために余計な手間がかかってしまいました。
Modular RPG Heros Polyartをプロジェクトに追加した具体的な方法が書かれていなかったので、後で忘れた時のためにここに記録しておきます。
Add To Projectをクリックして今回のプロジェクトであるCharcterTestを選択しただけです。
UE4エディターが、この2つのスケルトンが同じものであると認識出来るようにするためは、どうすれば良いかを調べた方が作業の手間は少なかったかもしれません。
しかし、結果的には遠回りのなったとはいえ、そのおかげで、UE4のアニメーションについてかなり理解を深める事が出来ました。
今回使用したアニメーションのための専用のエディターらに関して感じた事は、使用方法をしっかりと説明されれば、大変分かり易い仕様になっていると言う事です。Animation Editorsについてはこのサイトに詳しい説明がされていました。これを理解するだけでもかなりの事が出来るようになりそうです。
ただし、説明されないと全然分からないとも感じました。今までに何回かこれらのアニメーションのための専用のエディターらを開いて、適当にいじった事がありましたが全く理解出来なかったです。
実際のゲームの作成において、このアニメーションの編集はアニメーターが担当する事になるのでしょうか?
ブループリントとはいえ、かなりの部分でプログラミングが必要とされています。勿論、アニメーションの編集なのでアートの才能が最も重要ではあります。あらゆる技術を駆使してアートを作成するようなタイプのデザイナー向きなのかもしれません。
<まとめと感想>
今回は、Modular RPG Heros Polyartで提供されているモデルをプレイヤーがコントロールするキャラクターとして使用出来るようになりました。
ただし以下に示す課題がまだ残っています。
これらはこれから研究していきます。