UE4のテンプレートに自分で作ったキャラを入れて動かしたい そのナナ
ついにUE4のテンプレート(プロジェクト)に自作キャラのFBXをインポートしますよ!
それではまず、本連載の第2回で作成した(はずの)UE4プロジェクトを開きましょう。EPIC GAMESランチャーに登録されているはずなのでライブラリからダブルクリックなどで起動してください。
本エントリではUE4エディタそのものについての操作説明はしません。UE4エディタの基礎についてはランチャーにチュートリアルがついていますし、ちょっと検索すると多数のブログ記事や動画が見つかると思います。
続いて
- コンテンツブラウザでルート(一番上の)フォルダに移動する。
- 左にある緑色の「新規追加」ボタンでフォルダを追加する。
- フォルダ名を好きな名前(キャラ名がいいですよ)にする。画像では「Statue」を作成しました。
以上が下準備です。
ぶっちゃけ、コンテンツフォルダ内のどこにでもFBXからメッシュやアニメーションを読み込むことはできます。しかし、そういう雑なことをやっていると後で何がどこにあるのか分からなくなったり、不要なアセットを整理したいときになにが不要でなにが必要なのか分からなくなってしまいます。
ですのでフォルダ階層をどのように構築し、自分で作成したデータを管理すれば良いのかなども、プロジェクトのテンプレートを参照すれば一目瞭然ですので真似しちゃいましょう。
FBXをインポートするよ!
↑これも第2回で書いた通り、FBXのインポート設定は画像の通りです。
先ほど作ったキャラ名をつけたフォルダ内にインポートしてください。
正常にインポートが終われば↑のようになっているはずです。
画像で選択反転表示されているアイコンの下にマゼンタのラインが入ったアセットがBlenderなどで作成したメッシュです。途中真っ黒なアイコン下部に暗い緑のラインのアセットはBlenderでアクション登録したそれぞれのモーションになります。
ちなみにぼくが知る限り、Blenderから吐き出すFBXだけがこういう風にアクションをまとめて出力できる感じでとても便利です。
※ぼくが知らないだけでMayaやその他でも同じことできるぜ!ってときは教えてくださいねw
説明を続けると茶色くて「ショボーン」てな感じにうなだれているガイコツのアイコンはUE4内で物理的な判定を行うためのPhisicsアセットです。その隣の水色ラインのついたTポースなガイコツはスケルトンてそのまんまなので「骨」です。最後に下段一番右にある「MT」が末尾についたアイコンはマテリアルですね。
ちなみにこれらのアイコン表示された「アセット」はそれぞれがデータでありノードでもあります。(今けっこう深いこと書いたなw)
それでは次に、マテリアルを設定し、フォルダを作ってアセット管理の体制を整えましょう。
必要なフォルダは、
- Texture
- Animation
- Material
くらいでいいでしょうかね。
慣れてくると「Blueprint」とか「Mesh」などなど、格納するアセットごとにフォルダを増やしたり整理したくなりますが今はこんな感じで。
大量にインポートされたアニメーションのアセットはWindowsなどのエクスプローラー画面で出来るのと同じように、最初と最後をshift選択すれば一括で選択できます。
うまいことアセットを整理するとこんな風にコンテンツブラウザがすっきりするはずです。やった!
とりあえずレベル内にキャラを置いてみる
それではいきなりですが読み込んだキャラクタメッシュをコンテンツブラウザ内で選択し、そのまま3Dビューにドラッグドロップしてみてください。
すると「!!!」なんだよいきなりステージ内にすたちゅーさんが!!
まだマテリアルをきちんと設定していないので真っ白ですが、とにかく自分で作成したキャラクタメッシュがいとも呆気なくUE4のレベル(ゲームマップ)の中に表示されたことが分かると思います。
では調子に乗って、先ほど作成したAnimationフォルダに放り込んだはずの、それぞれのアニメーションアセットも同じ調子でドラッグドロップしてみましょう。
↑なんてこったやべー!すたちゅーさんが大量発生!!??
という具合に、アニメーションアセットをそのままステージにドラッグドロップでぽいぽいできることが分かりました。
それでは続いて、3Dビューの上にある「ビルド」というボタンを押してレベルをビルドしてみてください。この処理を行うことで、UE4は光と影を焼き込んだり、ナビメッシュというbotが歩き回るためのデータを作成したりという「ゲームをリアルタイムで表示するための前処理」を行ってくれます。
しばらく待つとビルドは終了しますので、ビルドボタンの隣にある「プレイ」を押してUE4マネキンさんを動かし、ステージを歩いてみましょう。
↑素晴らしい!白無垢のすたちゅーさんたちが動き回っています。
このように、Blender(など)でキャラクタを作成してモーションをつけ、UE4にインポートすることはそんなに難しい作業ではありません。
しかも「UE4を使って動画を作成することが目的」であれば、ダンスでも格闘でもその他の演技でも、Blenderですべてのアニメーションを作成してFBXに書き出し、UE4にインポートして適切な位置に放り込めばあとはプレイボタンを押すだけで完成です。
もちろん、動画を作成するならライティングや背景、その他の小道具やカメラも用意してマチネや新機能のシーケンスエディターにも触る必要はあるでしょう。しかし、用意するべきアニメーションとしては「Blenderなどで作成したアニメそのまんま」で良いわけです。
それでは今回の最後、マテリアルを設定しましょう。
せっかくだからマテリアルインスタンスに!
というわけで、まずは先ほど作った「Texture」フォルダにコンテンツブラウザで移動しましょう。
続いて、FBXをインポートしたときと同じように、インポートボタンを押して、ぼくが作成した(または自分で作成した)テクスチャを読み込みます。
テクスチャ画像に限ったことではありませんが、UE4エディタはWindowsエクスプローラーなどから直接ファイルをドラッグドロップすることでもアセットを読み込むことが可能です。また、複数ファイルを同時にインポートさせることもできますので、けっこう「つかえる子」という感じですね(褒めすぎ?)。
注意事項として、UE4でもなんでもそうですが、どんなフォーマットの画像でも読み込めるわけではありません。特にZbrushユーザーだとやたらお世話になる「tiff」フォーマットの読み込みはUE4ではできません。PNGやTGA、あるいはPSDをそのまま読めますのでテクスチャ画像のフォーマットには注意してください。
続いて、先ほど「Material」フォルダに放り込んだはずのマテリアルをダブルクリックしてください。
するとBlenderでいうノードエディターと同様の、マテリアルエディターが開きます。
最初はマテリアルノードと、初期色の白を指定したベクターパラメーターノードが重なっていると思いますのでドラッグして見やすいように配置し、コンテンツブラウザでテクスチャフォルダに移動して、テクスチャ画像をそのままドラッグドロップしてみましょう。
なんと!画像をマテリアルエディターにドロップするとそのままTexture Sampleというノードに化けましたね!素晴らしい!
画像ではNMつまりノーマルマップをドロップしたところなので、ノードのソケットから「ノーマル」に接続します。そして同じように、TM(ディフューズマップ)などもポイポイしてスポっと繋げばマテリアルの出来上がりです。
↑が、このいい加減マテリアルの完成形です。
テクスチャマップをノードにしてつないだだけのものですが、とりあえず「適用して保存」するとすたちゅーさんの見た目が変わっているはずです。
はい、できました。ばっちり!
いやいやww現状ラフネスやメタリックなどになにも値を入れていないので少しばかりテカテカしていますが…なにはともあれすたちゅーさんらしい外観にはなりました。
初歩的とはいえ、これでマテリアルも作成できたので、最短距離を進むのであれば、あとはいよいよプレイヤーキャラとしてすたちゅーさんを動かすための工程に進むのですが、せっかくですので少し手間を加えて、マテリアルにバリエーションを出してみませんか?
え?そんなん面倒くさい?
はい…それでしたら無理強いは言いませんよ…。この後をすっ飛ばして次回の記事を読んでいただければ、無事にすたちゅーさん(または自作キャラ)が動かせるようになります。
なので、ここから先は「ついでだから付き合ってやるか!」という方のためだけに書いておきますね。
- ベースカラーに接続したTextureSampleノードをいったん削除する
- コンテンツブラウザでTMテクスチャを選択する(選択するだけ)
- マテリアルエディタの空いているところでマウスを右クリック
- なにやらダイアログが出てくるので、検索ボックスに「parameter」などと入力する(全部タイプしなくても候補がフィルターされます)
- TextureSampleParameter2Dを選択する
以上の手順で「MaterialExpressionTextureSampleParameter2D-1」という破滅的に長ったらしい名前のノードが出現します。ウザい!早速左側の「詳細」タブでParameter Name欄を書き換え「Diffuse」とかにしちゃいましょうw
このノードにどんな意味があるのか?というと、テクスチャ画像をパラメータ化するので「後から変更できるよ!」というそれだけのノードです。なんだよそんな当たり前のノードかよ!ってくらい、コケおどし的に長い名前だったわけですがそれにはワケがあります。
今作っている「普通のマテリアル」は、UE4においてはいちいちコンパイルをしないと色やテクスチャの変更を反映できないのです。つまり「徐々に明るさが変わるランプ」とか「ゴジラの背びれ」みたいに点滅するマテリアル表現ができません。
そこで、あらかじめ「親マテリアル」で後から変更したいノードを「パラメーター化」しておきます。そして「子マテリアル」をインスタンスとして作成し、この「マテリアルインスタンス」を実際のメッシュやキャラクタに適用することで、時間とともに色が変わるマテリアルなどを実現しているのです。
↑最終的にこんな感じにベースマテリアルのノードを組みました。
- さっき作ったディフューズテクスチャノードに「Multiply(乗算)」ノードを追加して接続
- 最初にあった色指定のパラメータノードを「ColorTint」と名前変更して上のMultiplyノードソケットに接続
- 空きスペースで右クリックし、同じく「parameter」と入力して検索し「ScalarParameter(スカラーパラメーター)」ノードを追加する
- スカラーパラメーターノードの名前を「Roughness」などと変更し、マテリアルのラフネスソケットに接続する
- 上のラフネス指定ノードを普通にコピペして名前を「Metalic」に変更し、マテリアルのメタリックソケットに接続する
以上で親マテリアル(ベースマテリアル)のパラメーター化は終了です。慣れてしまえばどうということはない作業ですが、マテリアルノード初心者だと大変ですね。おつかれさま!!
それではベースマテリアルができたので、マテリアルインスタンスを作成しましょう。簡単です。
↑今設定した親マテリアルを右クリックして「マテリアルインスタンスを作成」を選択するだけ!
今回はマテリアルインスタンスを二つ作成し、それぞれ「bStatueMT-normal」と「bStatueMT-Itachi」にしました。
マテリアルインスタンスを二つ作りましたので「Itachi」のテクスチャを変更しました。ColorTintで色を変更すれば「2Pカラー」みたいなことも比較的簡単にできますよ。
今回の成果!
それでは今回の成果です。
3Dビューで直接メッシュ(アニメーション)を選択し、右側パネルの「詳細」タブで「Materials」から今ほど作ったマテリアルインスタンスを設定しましょう。
ふつうのすたちゅーさんと落書きされたすたちゅーさんが表示されれば成功です。
やりましたね!
次回は、いよいよ最終工程である「プレイヤーキャラとして自作キャラを動かす」に突入です。簡単だけどね!w
UE4のテンプレートに自分で作ったキャラを入れて動かしたい そのロク
物語は常に佳境…とか言っている場合かどうかは分かりませんが第6回です。
今回でBlenderでの作業は終わりになりますよ。
前回、歩きのモーションを作成しました。ごくごくシンプルに作成すれば、開始モーションと中間モーションの二つのポーズを作成し、あとは反転ポーズをペーストするだけで歩きのモーションはできあがります。
- 開始ポーズと終了ポーズは同じもの
- 反転ポーズは開始ポーズを反転させたもの
- 中間ポーズをひとつ
ね?たった二つしかポーズは作っていません。あとはコピペしているだけです。
もちろん、完成度を上げるために中間ポーズを増やすことはできますが、サイクルアニメーションって難しい?って感じはなくなったのではないでしょうか。
だがしかし!!!走りのサイクルは歩きに比較して遥かに難しいのです。しかも!この記事で走りモーションは教えてあげません!ひどい!ww
いやいやwwそのかわり、Blenderファイルのすたちゅーさんにはすでに走りモーションも作ってありますし、なんでもかんでも教科書通りにポーズつけるだけでは、却って勉強にならないと思うのです。
基本的に歩きサイクルが作成できるのであれば、ずっと高度ではありますが走りモーションもその延長にあります。一度でうまい感じにならなければ、何度でもトライすれば良いだけのことです。動画を漁って走りサイクルを研究したり、自分自身でどこかを走ってみて足や体がどう動いているか観察するなど、モーションデザイナーが実際に試行錯誤しているのと同じことを実践してみてください。
ジャンプのモーションを作成する
というわけでジャンプモーションです。
ジャンプはですね、左右対称の動きにする必要がありませんので、実は待機モーションのバリエーションにも使える比較的簡単な動きです。
- 上下に重いモノが動くので「予備動作」が発生する。
↑これだけを心掛ければいいと思います。体を一度縮め、伸びあがり、足が地面から離れ、今度は伸びた状態で着地して、衝撃を吸収するために再び縮み、元のポーズに戻る。以上が一連の動きになります。
↑サンプルファイルのジャンプモーション(アクション)です。
前回「待機」のモーションから+ボタンでアクションを追加したのと同じく、ご自分で新たにジャンプモーションを作成しても良いですし、サンプルにあるキーフレームを打ちなおしてモーションを変更していただいてもかまいません。自由に試行錯誤して「それっぽいジャンプ」を目指してください。
ジャンプのモーションを作成する意味?
今回の記事の主題が、実はコレです。
本エントリの第2回で「UE4のテンプレートにあるアニメーション」を観察しました。
覚えてますよね?え?覚えてないの?まじで?ほんまに?
UE4のテンプレートに自分で作ったキャラを入れて動かしたい そのニ - 当たったらどうするんだよ
仕方ないなぁ…↑のリンクでもう一度ちゃんと読んでくださいね?(笑)
で…ですね、UE4のテンプレートでは、
- ジャンプの開始モーション
- ジャンプ中のループ
- ジャンプの終了モーション
- 上記の全体のシークェンス
が用意されていました。
今回作成した一連のジャンプモーションが4番にあたるわけです。ではそれぞれのモーションを分解して同じように「開始」「ループ」「終了」の3モーションに分けてみましょう、というのがテーマなのです。
※この作業はUE4エディタでもできますが、愛用の3Dソフトで行ったほうが楽?だとぼくは思いますし。
実際の作業
それではまずタイムラインマーカーを開始フレームである0フレームに移動します。
続いて、タイムラインマーカーを動かしながら「どこまでがジャンプ開始モーションだろうか?」ということを考えます。UE4のテンプレにあるような区切り方で良いわけですので、7フレーム目のキーフレームまでで良いかな?と思えます。
以下、
- +ボタンをクリックして新規アクションを作成する(jumpStart2など)
- Fボタンを押してフェイクユーザー化しておく
- ドープシートで7フレームより後ろのキーをBキーの矩形選択などで選択し削除する。
- 必要に応じて残ったキーフレームの先頭をGキーなどで開始フレームに移動しておく。
という作業で「ジャンプ開始」「ジャンプループ」「ジャンプ終了」の3アクションを作成しフェイクユーザー登録します。
なお…
教材にしている標準すたちゅーさんのリグのspine(背骨)には回転コピーコンストレインツが設定してあり、普段は影響(インフルエンス)をゼロにしてキーを打ってあります。試しにこの影響度を上げ下げしてどういう効果があるのか確認してみると良いのですが、ジャンプモーションをドープシートで編集する際に、うっかりコンストレインツのキーを削除してしまうと「背骨がえらいことになる」ので注意してください。
うっかりおかしなことになった場合は、開始フレームで再び「影響度0」のキーを打っておけば大丈夫です。
いよいよFBXを書き出し!
それではモーションがそろいましたのでいよいよFBXに書き出しを行います。
- すたちゅーさんメッシュを選択
- すたちゅーさんボーンを(オブジェクトモードで)shift選択
- ファイルメニューから「エクスポート」
- エクスポートから「FBX」を選択
ぶっちゃけエクスポートするために選択しているだけなので、メッシュを先に選んでもボーンを先に選んでも結果は同じです。うっかりカメラやライトなどを書きだしてしまわないようにやっていることですので、きちんとメッシュと骨が選択できているか確認してください。
- バージョン:FBX6.1ASCII
- 選択したオブジェクトにチェック
- アーマチュアとメッシュon
- モディファイヤー適用
- スムージングは「辺」
- タンジェント空間、デフォームボーンのみ、アニメーション、全アクション
- その他は画像(または第2回で紹介した記事の通りに)と同じで
以上であっけなくFBXエクスポートは完了です。
今回もサンプルファイルを収録した公開フォルダをリンクしておきますね。
それでは、次回はついにFBXをUE4に読み込みますよ!
UE4のテンプレートに自分で作ったキャラを入れて動かしたい そのゴ
早いものですでに第5回。
上の図は歩きモーションのウォークサイクルを概念で表しています。歩きや走りのループは「最初と最後のキーが同じポーズで、真ん中に反転したポーズがある」アニメーションになります。
それではサクサクと歩きモーションを作成しましょう。
前回作成した待機モーションから新たな歩きサイクルを作ります。
まず、前回の書き忘れwとしてドープシート下のメニューにある「F」ボタンをクリックし、待機モーションを「フェイクユーザー化」してください。これをしておかないとファイルを開き直したときにアニメーションが消えているだと!?という現象に見舞われることがあります。
これはBlender独自の仕様で、正直面倒くさいです。
また「これは使えなかったな…」という実験や遊びで作ってみたアクションを消したいときには、そのアクションにあるすべてのキーを削除してから「shiftを押しながら×ボタンクリック」で一種の「削除待機状態」になり「0testmotion」などという具合にゼロがプレフィックスされます。その場でアクションを削除できるのではなく、Blenderを開き直すと「0のついたアクションが削除されているよ!」という安全な?仕様ですので覚えておきましょう。
※ちなみにBlenderのデータは大抵この方法で管理できます。
閑話休題。
話を戻して…待機モーションをフェイクユーザー化したなら、その隣にある「+(プラス)」ボタンをクリックし、アクションを追加します。walkでもArukiでもなんでも良いですが「アルファベットで書く」ことが絶対条件です。というかwebでもCGでもデータは必ず半角英数字で書くようにしましょうね。
続いて再びFボタンで新たなアクションもフェイクユーザー化しておきます。
続いて、ドープシート内にマウスポインタを置き、ショートカットBキーで矩形選択モードにしてから「最初のフレーム以外のすべてのフレームを選択」してから削除します。削除は普通にxキーかdelキーですね。
最初のキーを残しておくのは、すべてのキーを削除してしまうとアクションを追加してフェイクユーザー化したことがキャンセルされてしまい、さらに新規アクションの登録待機状態になってしまうからです。これも面倒臭い仕様ですが慣れるしかありませんw
※こうした「困った状態」もひとつの体験ですので、ぼくの解説に逆らって「言われたことをやらない頑固者」になりきり、すべてのトラブルを体験してみるのも実は「知識の引き出しを広げる」上では重要…かもしれませんよ?w
それでは続いて、0フレームにタイムラインマーカーを戻して、最初のポーズを作成します。このとき、待機モーションで作成したポーズをそのまま使って「歩きはじめ」を作っても構いませんが、すべてのボーンを選択してトランスフォームをリセットして始めたほうが無難です。
なお、ア二メーションを作成するときはビューポートでテンキー5を押し、パースを切って平行投影にしておくほうが能率が上がります。パースがついたままだと、接地している状態のキーが打ちにくいのです。
下半身のポージング
- 左右のカカト位置にあるIKボーンを前後に動かし、歩き開始の位置に移動する。
- IKボーンをr→xxでローカル回転し(またはローカル回転マニピュレータを使う)つま先をいい感じに回転させる。
- 同じく左右のIKボーンをグローバル移動し、接地させる。
- CTR-pelvisボーンをz軸下に移動し重心を下げる。気が向いたら回転も行う。
- Hip.LとRも調整する
これらの作業を行いつつ、ひとつひとつのボーンを動かすたびにビューポートでiキーを押し、キー打ちを行いましょう。そうしておかないと、うっかりタイムラインを移動してしまうとキーのない移動や回転はリセットされてしまいます。
「歩く」という動作は、どんな動物にとっても「あまりにも自然で当たり前な動作」ですから、下半身が極端に「おかしなポーズ」になると説得力のないモーションになります。クリーチャーなどではワザとそれを「狙う」こともありますが、いきなり面倒なことは狙わず、シンプルに歩いている感じを狙いましょう。
なお、ポーズを確認するときにはビューポートでテンキー3もしくはctrl3で左か右の側面図にして、きちんとつま先が接地(XY平面の軸に触れている)していることを確認してください。
ついでに、尻尾のキーもcキーなどで尻尾ボーンを複数選択してrで回転させることでポーズ付けしておいてもいいですね。
下半身のポーズがだいたいできたなら、0フレームですべてのボーンをaキーで選択し、iキーでキー打ちを行います。くどいようですが「位置/回転」にキーを打ちます。
この状態で開始フレームである0フレームに全身のボーンのキーが打たれました。そのまま最終フレームに移動します。そういえば書き忘れていましたが、歩きモーションはいったん「1秒=30フレーム」という考えで1サイクルとします。おそらくかなりゆっくりした歩きモーションになってしまうのですが、UE4に取り込んでから再生倍率を変更することで対処できますので問題ありません。
なお、開始フレームを0フレームにしている理由は「フレーム総数を奇数にして、中間フレームを出すため」と思って良いです。簡単にするため短くして考えると「4フレームで1サイクル」と考えると、中間がありませんよね?しかし、0フレームスタートで4フレーム終了なら、実際には5フレームあることになり、中間フレームは「2」であり、1フレーム目と3フレーム目に補完フレームが存在することになります。
最終フレーム(または開始フレーム)でビューポート右下にある「ポーズのコピー、ペースト、反転ペースト」ボタン群の一番左にあるコピーボタンですべてのボーンのポーズをコピーします。
続いて中間フレームである15フレームにタイムラインマーカーを移動し、同じくビューポート下にある「反転ペースト」ボタンをクリックし、反転ポーズをペーストします。正常にペーストされたことを確認したら、iキーでキーを打ってください。
ちなみに…ですが、Blenderのボーンポーズのコピペ機能は、選択コピーされたボーンのポーズを必ずペーストするという仕様なので、ペーストされる側のボーンはどのように選択されていても結果は一緒です。これけっこう大事なことなので覚えておきましょう。(というか実験して確認してみてください)
ゴースト(オニオンスキン)
複雑な動きをアニメートさせるためには、ボーンのゴースト機能を使うと便利です。この記事のサンプルファイルではあらかじめゴーストを設定していますが、上の画像のタブ(アーマチュア)で表示の設定ができますよ。
現状、下半身のポーズが中間フレームで反転されたので、タイムラインを再生してみるともっさりした動きですたちゅーさんが前後に足をすり足するのが確認できると思います。ここで上半身の動きを付け始めても良いですし、特に上半身の動きはいらないや!と思うなら、次の工程に進んでもかまいません。
サイクルアニメーションでは、
- 開始ポーズを作って全ボーンのキーを打つ。
- 最終フレームにそのまま同じポーズをキー打ちする。
- 中間フレームに反転ポーズをコピペする。
- 途中の補完ポーズを作成し、キーを打ったら対称フレームに反転ポーズをキー打ちする。
- 以上の工程を繰り返してサイクルを完成させる。
という一連の作業でモーションを完成させます。
実際には、左右非対称のモーション、短くて激しいモーション、長いゆったりしたモーションなど色々なアニメーションがありますが、基本的にはすべて同じテクニックが使えます。
歩きサイクルの完成
それでは歩きモーションを完成させましょう。
画像のように、左足が前進する側の中間はおよそ7フレームです。ここで適当な位置に左のIKボーンをZ軸上に移動し、つま先をいい感じに回転させておけば「歩いている感じ」が表現できそうです。
IKボーンの移動/回転キーを打ったら、それをコピーし、対称フレームである22フレームに反転コピーしてキー打ちを行いましょう。また、現時点では全身のキーを打たないでおきます。
わりともっさりとした動きではありますが、確かに歩いているように見えるようになりました。
ここまでの工程が出来たなら、完成度を上げる作業です。
- 骨盤(pelvis)に上下の動きをつける。
- 背骨と頭にも左右と前後の振りを入れる。
- hipのLとRにも動作を入れる。
- 補完フレームを増やしてみる。
などと、様々な方法で歩いている感じを高めたり、キャラの立った個性的な歩きモーションを「演出」できると思います。あるいは、さらに歩きモーションをアクション複製して、別のバリエーションのウォークサイクルを作ってみても良いでしょう。
Blenderファイルは同じ共有フォルダに公開されています。
次回はその他のアニメーション作成と補足を行います。
UE4のテンプレートに自分で作ったキャラを入れて動かしたい そのヨン
というわけで第4回です。
今回はBlenderで実際にモーションをつけていきます。
前回の記事の末尾にぼくが作った「標準すたちゅーさん」の骨つきBlenderファイルをリンクしておきました。onedriveからDLして開いてみてください。テクスチャもフォルダに入れてありますので、パス切れを起こしていたらノードエディターで開き直してくださいね。
マテリアルは最低限に
前回記事で書くべきだったのですが忘れてましたw
BlenderにもCyclesというPBR(Physical Based Render=物理ベースのレンダラー)レンダラーが搭載されていますが、現代的なレンダラーは一般的にノードを使ってシェーダーを構成します。いわゆるセルシェーディングを行う場合、どうしても多数のマテリアルで「色分け」を表現する必要があるのですが、そうした「今後の課題」は後回しにして、ゲームエンジンにキャラクタなどをインポートさせる場合には、基本的に最小限のマテリアル構成で作成するのが重要です。
そのうちマテリアルノードについても詳細な記事を書こうと思いますが、CyclesもUE4のマテリアルノードも基本的な考え方はまったく一緒です。たとえば金属と岩でできた「なにか」をモデリングする場合、ポリゴンを複数マテリアルで区分けするのが楽ちんなやり方ですが、実は「マテリアル分けをするためのマスク」をテクスチャとして用意し、Cyclesの場合ならMixノードと演算ノードを使うことで「ひとつのマテリアルで複数の材質設定を行うこと」が普通にできます。
この「最低限のマテリアル数」が具体的にはいくつなのか?を定量的に話すのは難しいです。経験を積んでください、としか言いようがない部分ですが、このエントリの教材である、すたちゅーさんについては「マテリアルはひとつ」で済ませています。
胴体(トルソ)と腕の構造
これも前回の補足になりますが…なんとすたちゅーさんには腕がありません!ww
しかし、一般的なヒト型二足歩行キャラには腕がありますのでお話しすると、キャラクタを作って骨を入れて動かすときに、最も破綻しやすいのが肩の関節で、次に厄介なのは股関節です。人体は当然シームレス(つなぎ目がない)な構造ですが、ゴツい鎧を着ていたり、肩を大きく見せるデザインの服を着ている場合(一部のメイド服など)には、胴体と腕、あるいは脚部を分割してモデリングしてしまうのは、スキニングを考えた場合に「うまいやり方」と言えます。
繋がっているから破綻してしまうなら…うまいこと分割してしまえば問題回避できるじゃない!というわけですね。
モーションをループさせる
それでは、ようやくモーション付けに入ります。
「歩行サイクル」とか「走りサイクル」の見本がYoutubeなどにアップされていますが、このサイクルとかループというのは「循環する」という意味です。
上の図のように、開始キーと終了キーが同一であれば、つまり「はじまりと終わりが同じポーズ」であれば、そのアニメーションをループ再生したときに「サイクルモーションとして循環する」というわけです。
これは打ち込みで音楽をDTM制作したことがある方なら分かりやすいですね。特にリズムトラックはループさせるビートトラックとフィルで構成するのが一般的ですので、最初と最後のキーを同じにする意味が分かりやすいと思います。
ではBlenderでの解説に戻ります。
画像のように画面左上の編集画面プリセットを「Animation」にしておきましょう。そしてドープシートのモードを「アクション」にし、アクション名を設定します。ここではすでにアイドルモーションがひとつ入っているファイルを使用しているので「idle2」と打ち込みました。
また、開始を0フレーム、終了を45フレームに設定しています。Blenderでは任意のフレームレート(FPS)を設定できますが、UE4は実行されるPCなどの能力に応じた「バリアブルフレームレート」を採用しています。ここでは、Blenderの再生フレームレートを30fps(1秒間に30フレーム)と仮定し、45フレームあるので「1.5秒でひとつの動き」という設定でアイドルモーション(待機モーション)を作成するよ、というわけです。(ただし待機モーションは様々なバリエーションを持たせたくなるのが普通で、数秒にまたがる長いフレーム数で演技させることも多いです)
この状態でタイムラインを開始位置にし、ボーンを全選択した状態から「ポーズ」→「トランスフォームをクリア」→「すべて」でアーマチュアの移動や回転をすべてニュートラルに戻し、Iキーを押してキーを打ちます。このときキーの種類は「位置/回転」で良いでしょう。拡大縮小キーを混ぜても良いのですが、別の問題を引き起こすことがありますのでとりあえず入れません。
次に、終了フレームである45フレームに移動し、そのままキーを打ちます。
これで、なんの動きもありませんが「最初と最後のキーが同一」であるモーションサイクルができました。タイムラインを再生してもなんの動きもありませんが、どこかに継ぎ目があるようにも見えませんよね?w
続いて、画像のように背骨から頭までのボーン「だけを」選択し、rキーなどでボーンを回転させ、適当なポーズになったら20フレームにキーを打ってみます。キーの種類は基本的に「位置/回転」ですべて行います。大事な注意点として、全身を回転させたいだとか、特別な理由がない限りはルートボーン(すべての骨の親となるボーン)は動かさずにキーを打つことです。
これはUE4で「ルートモーション」という高度な技を使うときに大事なお約束になります。今回の「とりあえず動かそう!」ではフォローしない部分ですが、そのうち大事なことになりますので覚えておきましょう。
なお「オートキー」機能も、慣れない状態で使うと余計なキーが生成されて「えらいことになる」ので使いません。タイムラインを再生してみて、無事に背骨から頭が動いているのが確認できたらアニメーションを停止し「再び全身のボーンをaキーで選択して」動いていないすべてのボーンにもキー打ちをしてください。
これは、ボーンによるモーション付けを行っているとすぐに遭遇する問題なのですが「動いていないこともモーションの一部である」ことが理解できると重要さが分かる工程です。
※実際に20フレームに全身のキーを打たないでどこか別のフレームに他のボーンのキーを打ってみれば分かる…かもしれませんw
さて今回はここまでにします。
次回は「歩行サイクル」について書きます。
UE4のテンプレートに自分で作ったキャラを入れて動かしたい そのサン
今回はBlenderの設定について です。
…と書いたものの、実はBlenderでモデリングしたポリゴンオブジェクトをUE4にインポートさせるための設定を解説された記事としては、すでにとても良いものが存在しています。
Blender で UE4 用 3D モデルを作って Import するまでに守るべきことまとめ | rarilog
↑のブログエントリがそれです。
らりほまさんという方が書かれた記事で、大変詳しくBlenderからモデルをFBXで吐き出すための設定とUE4にインポートするための設定を解説してくださっています。
ですから!!!
- 単位をメートル法にし、拡大縮小を0.01(1単位を1センチ)にする。
- 骨(アーマチュア)を入れるのは単位合わせを行ってからにする。
- 当然モーションもスケールが整ってから入れる。
- モデルを拡大縮小した場合はトランスフォーム値をニュートラルにする。(Mayaでいうところの「フリーズ」させる)
- モデルの前方が-Y、上が+Zになるようにモデリングする。(Blenderで正常にモデリングしていれば特に意識しなくてもそうなるはずです)
以上が必須の条件になります。
あ、もう終わっちゃいましたねwいやいや…せっかくですから先を急ぎましょう。ではもう少し詳細に、というか「モデリングとモーション入れの過程」について解説するのがぼくのブログエントリの主題ですから、いきなり佳境に入ります。
そこで…
モデリングと骨入れに進む!
というわけです。
↑すたちゅーさんきた!!!
まぁwぼくのオリキャラもほかにあるわけですが、とりあえず「標準すたちゅーさん」のモデルで解説を進めます。ぼくがすたちゅーさんを好きだから!というだけではありませんよ?
- 腕も手もないから必然的にポリゴン数が少ない!
- このモデルはかなり贅沢なポリ割をしているのに4角面で1002、三角面でも1976しかない!
- 骨の数も少なくて済む!(実際には尻尾で贅沢な骨入れをしているので増えていますw)
特にローポリ合戦をしているわけではないので、標準すたちゅーさんのモデルはポリゴンを「ふんだんに使って」いますが、それでも1000ポリゴンです。PS4時代のコンシューマ向けキャラクタだと、平気で数万ポリゴンのモデルが動き回っているのが実情ですが、AndroidやiPhoneなどのモバイルデバイスではまだまだそこまでポリゴンリソースを使えるわけではありませんし、骨(ボーン)の数にも制限があります。
Blenderでキャラクタを作ると、Rigifyという高機能な人体リグも標準で使えますが、大量のMCHボーン(コントロールボーン=メッシュの変形は行わないボーンをコントロールするためのボーン)が生成されるため「ボーンリダクション」の知識と経験なども必要になってしまいます。
というわけで、ボーン組みの基本を知るためにも、UE4に自作キャラを導入するための基礎として「手組でリグ付けをする」ことを推奨いたします。というのも、確かにRigifyなどの自動生成リグはとても便利なのですが、なにか問題が発生したときに骨の基本が分かっていないと対処ができません。なにごともブラックボックス化した状態で運用していると、便利ではあっても知識としては「なにも分からない」という状況に陥ってしまうので、苦手意識を持たずに骨を組んでみることをお勧めします。
続いて↑の画像が標準スタチューさんのボーン(アーマチュア)構成です。
脚はIKで動かし、その他の骨はFKで動かす「当たり前の」ボーン構造ですが、いくつか工夫をしてありますので解説します。
クォータニオンとオイラー角
Blenderに限らず、近年の3Dソフトはどれもボーンを「クオータニオン」で回転させます。クオータニオンというのは「四元数」という数学上の概念で、回転角度を4つの軸で表現するわけです。クオータニオンを数学的に把握するには複素平面での回転について理解する必要がありますがここでは割愛します。
※とはいえ「クオーター=4つの」に語源があることくらいはイメージするようにして、丸暗記式の知識の運用にならないようにしましょう。
クオータニオンの良いところは、あるポーズから別のポーズにボーンを動かすとき、最適に近い回転角度を得やすいところ、ジンバルロックという現象を回避できること、などが挙げられます。しかし、クオータニオンにも欠点があって、プロペラのような「ぐるぐる回転する動き」を作りにくい!という問題があります。
この辺のボーンについての詳細な知識は骨を使ったキャラものを制作していると必ず身に着けていないと困ることになるので、映像制作やゲーム制作をこれからも長く行っていくのでしたら興味を持って調べてみると良いでしょう。
すたちゅーさんの場合ですと、尻尾をぐるぐる回したいので、尻尾の骨はオイラー角で動かすように設定しています。また、ルートボーンも同様で、宙返りやフィギュアスケートのような横回転を行うためにオイラー角に設定しています。オイラー角というのは数学者オイラーさんにちなんだ名称です。
そのほかにもリバースペルビスとロールセンターボーンなどを標準すたちゅーさんのアーマチュアには持たせていますので、記事の末尾にBlenderファイルへのリンクを付記しますからDLして研究してみてください。
ウエイト付け(スキニング)について
骨が組めたらキャラクタメッシュ→アーマチュアの順にshift選択してctrl+pでスキニングを行います。ぼくはほぼ100%自動ウエイトでスキニングし、ウエイトペイントで小修整を行うくらいでこの工程は終了します。比較的面倒なモデルでも1時間以上ウエイトでてこずることはありません。
第21回:キャラクタースキニングを知る~ジョイントこそ命! | 読んで触ってよくわかる!Mayaを使いこなす為のAtoZ | AREA JAPAN
↑は非常に有用な記事です。
ソフトウエアはMayaですが、どんなソフトでもまったく同じ知識が使えます。当たり前ですが人間でも、その他の動物でも、関節の位置は体の中心にはありません。たとえば膝であれば…
↑みたいに前方にオフセットしているのです。
ところが「間違ったCG入門書」では「骨を体の中心に通す」と解説していることが多く、必ず関節がゴムホース状の変形をするようになり、ウエイト調整では修正不可能な状況を無数に生み出してくれます。
今回の教材モデル?である標準すたちゅーさんでは、それほどシビアな関節の動きを求められるわけではありませんので、大してこだわった骨の位置決めを行っていないのですが、それでもメッシュに対してある程度はオフセットさせた骨の配置を行っています。この辺は実地で作業するのが一番ですので、できるだけ簡単なメッシュで実験し、骨の位置にこだわることを覚えましょう。
それでは最後に、標準すたちゅーさんのBlenderファイルへのリンクです。
次回はBlenderでのモーション付けを実践します。
UE4のテンプレートに自分で作ったキャラを入れて動かしたい そのニ
前回の記事ではわりと心がけというかお題というか精神論みたいなこと?を書きました。がっかりでしたね!先が長いですね!
だがしかし!ぼく自身決して物分かりがいいわけではありませんし、何度も何度もつまずいてどうにか3D界隈で仕事をさせていただいているのが実情です。なので今回もまた「考え方」だとか「これからやることのイメージング/フォーカシング」に重点を置いて話を進めていきたい、と思います。
さて今回は
UE4のサンプルアセットを見る
というのがテーマになります。
前回までの記事を読んでいただけたなら、すでにUE4とBlender(もしくはその他の3Dアプリケーション)はインストールしていますよね。Epic GAMESのアカウント取得がうまくいかん!とかはこの記事ではフォローしかねますのでご容赦くださいねw
無事にUE4をインストールできたならEpicGAMESラウンチャーが上記のようになっているはずです。「エンジンスロット」とある部分にUE4のゲームエンジンというかエディタがバージョンごとに並び、その下の「マイプロジェクト」という部分には自分で作成したりマーケットプレイスでダウンロードしたプロジェクトがならんでいます。
もちろん、初めてUE4をインストールした場合だと、マイプロジェクトのスペースは空っぽのはずです。
それでは続いて…いよいよ「ターゲットとなるプロジェクトを作成」したいと思います。とりあえず今回は(現時点での)最新版である4.12.0を起動してみましょう。
UNREAL EDITORというのが起動して↑のようにプロジェクトを開く/新規作成のダイアログが表示されますので、赤チェックの通りに設定してください。
※後にプロジェクトを公開しますが、現時点ではご自分で作業してくださいね。
解説するよ!
Third PersonというのはUE4にもともと用意されている「ゲーム作りのためのテンプレート」です。ほかにも色々ありますので、初めて触る方は一通りプロジェクトを作ってみて、あれこれ遊んでいると丸一日は楽しめちゃいます。
サードなパーソンなので「3番目の誰か」ですね。いわゆる「3人称視点で遊ぶゲーム」を作るためのテンプレというわけです。国産アクションゲームやRPGの大半はこのスタイルですから、誰にでも馴染みやすい仕様ですし、この記事の目的である「自分で作ったキャラを動かす」目標に達したときに、ちゃんとキャラが見えるわけです。素晴らしい!
では次に、↑の画像にある三角ボタンで実際にテンプレで遊んでみます。
ぶっちゃけこれはサードパーソンキャラを「ただ動かせるだけ!」という超絶シンプルなテンプレートですから、飽きる人はすぐに飽きます。なので一通り動かして見て満足したら、次の作業に移りましょう。
いよいよ本題!アニメーションを確認する
コンテンツブラウザをあーだこーだして↑のように「Animations」というフォルダを表示させましょう。なにを隠そう、こいつらが標的です。目標です。
UE4に限ったことではありませんが、たいていのゲームは同じような仕組みで「待機」とか「歩く」とか「ぶん殴る」という個別のモーションを格納し、ゲームエンジンそれぞれ独自の「アニメーションの統合機能」で混ぜ合わせ、キーボードやゲームコントローラーの操作に応じてそれぞれのアニメーションが再生されたり「混ぜ合わせたりする」ことによって「キャラの動き」を表現しています。
この辺が一般の「CGアニメ」と大きく違うところで、たとえば1分のダンスモーションをBlenderで作って再生しようとすると、動きのすべてを(原理的には)手打ちするなりモーションキャプチャファイルを利用するなりして用意する必要があるわけですが、ゲームのモーションでは個別の「短いサイクル」を用意して、ゲームエンジンにそれらを「臨機応変に」再生させられるのです。
※とはいえBlenderやMayaでも個別の動きだけを用意して組み合わせたり、UE4でも長いモーションを「とにかく再生させる」ことは普通にできます。あくまで今回は一般論ですので。
では、先ほどのアニメーションをダブルクリックしてみてください。すると↑の画面に切り替わり、それぞれのアニメーションを再生することができるようになります。
基本的には
- 待機
- 歩く
- 走る
- ジャンプ
という4つの動きしかありません。ただしジャンプに関してだけは「スタート」「ループ」「エンド」と3つに分解されたものが用意されています。
また、ジャンプのモーションをよく観察すると、プレイボタンを押してゲームを開始したときの動きに比較して、ぜんぜん高く飛んでいないことにも「気づくはず」です。
これは「上下の動き」に関してはゲームエンジンがキャラをZ方向(上方向)にうまい具合に動かしてくれているからであり、Blenderなどでモーションを作成する際には(なにか特別な理由がない限り)ジャンプのモーションでは上下の動きを大きく入れる必要がない、ことを意味しています。
今回の成果
なにはともあれ、UE4を起動してプロジェクトを作成し、実際の「ゲームキャラの中身」を見て、観察し、それぞれの動きを知ることが今回の目的でした。
確かに、多くのゲームではもっと多彩な動きをキャラは表現してくれますし、だからこそ魅力的なわけですが…そもそも最初からあまりにも高度なことを目指しても、途中の作業が多すぎてゴールに辿りつきません。まずはとにかく「自分で作ったキャラを動かしたい」という、シンプルな目標を設定しましょう。
ではその目標とは?「待機」「歩き」「走り」「ジャンプ」という4つのモーションを作成することです。攻撃や防御やバク転などは、後からいくらでも(慣れれば)追加できるようになりますので、作業の目標が「なんだ大したことないな」と思えるようになることが今回の成果なのです。
それでは、今回はここまで!
UE4のテンプレートに自分で作ったキャラを入れて動かしたい そのイチ
TwitterでUE4に自分で作ったオリジナルキャラをインポートして動かすまでの記事(どなたかのブログ記事やホームページなど)ってあんまりないよね?的なことをツイートしたら、案外「そうだね!」ってリプをいただきました。
そこで、ぼくのドメインのブログに書いても良かったんだけど、放置しすぎで管理が面倒くさいのでwとりあえず「はてな」にそれ系のブログポストを書いて置いておく場所を作ったわけです。
というわけで早速記事を書いていきます…が、このエントリでは実際の作業の詳細には辿りつきません。ですから、もうキャラもできてるし早くUE4に入れさせろよー!って方は次回以降の記事をご覧になってください。
- 最初の準備?
- UE4のサンプルアセットを見る
- Blenderの設定
- モデリング作業
- 骨を入れる
- モーションをつける
- FBXにエクスポートする
- UE4にインポートする
- ブレンドスペースを作る
- アニメーションブループリント(ABP)を作る
- プレイヤーを差し替える
- プレイしてみる
- もうひと手間加えてみる
以上までを最終的にサポートできるエントリにしたいと思っています。
どのように要点をまとめようとしても上記した工程は必ずクリアしなければなりませんので、1~13番まで書いた「お題」をまずはじっくり眺めてみてください。
1:最初の準備?
じっくり眺めました?
ホント?ホントに?じゃぁいきますよ?
最初に考えるべきことは、これです。
→最初の準備?
ただ漠然と「UE4にオリジナルキャラをインポートして動かしたい!」と言っても、あまりにも高度なことはゲームエンジン初心者やコード書きに不慣れな方ができるわけありません。
そこで一連の記事(まだできてないけどw)では、以下のルールを設定します。
- とりあえずモデルはぼくが用意しますよ!すばらしい!
- とりあえず骨も入れるしモーションもつけておきますよ!すごいね!
- ていうかFBXとかも用意しとくし!やった!
- でもUE4のインストールとかは自分でやってくださいね?
- あとBlenderで作業するんで、最新版いれておいてね?
- UE4も最新版の4.12使うからね!(現時点で)
このへんですでに「あーめんどくせー!」ってなっちゃう方は…それもうなにもできませんのであきらめてくださいwいやいらっしゃるんですよホントに…
というか、ぼく自身UE4は4.8から触っているのですが(なぜか4.9からバージョンアップして5.0になるのかと思ったら4.10になったという変なバージョンルールがある)、けっこうこまごまとした変更があって、エンジンのバージョンが違うと使用するノードの名前が変わってしまったりします。
Blenderにしても同じことで、現時点での最新バージョンは2.77aですが、ソフトウエアというのもバージョンが違うと微妙に挙動が違ったりするものです。なので、とりあえずこの記事(エントリ)と同じ環境にしてください。
それともうひとつ、BlenderについてもUE4についても、基本の基本から解説することができますが、この記事の趣旨ではありませんので割愛します。ブループリントってなんだー!?とかBlenderってどこで落とせるの!?みたいな話はどうかどうか…ナシでお願いいたします(笑)
さて長くなりましたので今回はここまで。
次回からいよいよ画面キャプチャなども交えて具体的な作業を解説いたします。