ZBとBlenderでUE4用のキャラを作る #2:Zremesherで自動リトポ
それでは人物キャラメイクforアンリアルエンジンの第2回です。
前回書いたように、スキニングの基礎の基礎を踏襲しようと思うので、スカートも凝った装飾も一切なし、イメージとしては「サイクリングウエアか女子用レスリングウエア」という雰囲気にDynameshをグループ分けしました。
グループ分けにはラッソ(投げ縄)モードかペンモードのますきんぐぶらしを使い、SmoothBrushModifiersの6番を使ってポリグループのエッジを整えます。
ちなみに…な話になりますが、Zbrushは薄いジオメトリを編集するのがとても苦手です。なので、スカートなどに皺入れや自然な揺れた感を出そうとMoveブラシなどで引っ張ると、薄いメッシュはエッジ部分が汚くなってしまうことがよくあります。
なので↑の画像のように、Extractしたメッシュの表側だけ表示した状態でDel Hiddenしてしまい、Close holesで穴を埋めたものをDynaMesh化して編集すると楽になります。最終的にZremesherや手動リトポなどの工程で平面ポリゴンにするか、Blenderなどの統合3Dツールにインポートしてからポリゴン編集で厚みを調整すれば良いだけです。
前回と同じくKeepGroupsとUsePolypaintでポリ割とポリゴン密度をある程度計画し、Zremesherで自動リトポします。お尻の割れ目付近などでジオメトリに乱れがありますが、Blenderで楽々修正できる範囲なのでこれで良しとします。これで3040ポリゴンということですのでまだまだリダクションはできそうですが、スムーズな変形を考えるとこんなものでしょう。
なお、ゲームエンジンではサブディビジョンサーフェース(Blenderでいう再分割曲面)は使えないのが基本ですからBlenderでのジオメトリ修正では遠慮なく三角ポリゴンを使用することも、この時点で念頭に置き、十分修正できるポリゴンであるかどうかはここで検討しておきます。
最後に髪の毛のメッシュもZremesherしました。合計2000ポリゴンです。
後頭部のポリゴンは見せる必要がないので、Blenderにインポートしてから削除してしまいます。これは頭部でも同じですね。
それではすべてのパーツをリトポしましたので次回はBlenderでジオメトリの修正とポリゴンリダクション、その後UV展開を行います。
ZBとBlenderでUE4用のキャラを作る #1:キャラクタコンセプト
さて今回からは、Zbrush(ZB)とBlenderを使ってアンリアルエンジン4(UE4)用に人物キャラをモデリングする記事を連続エントリしますよ。
どんなキャラにしょうか?
考えることは以下です。
- 二次創作ではないオリジナルキャラにする。そうすれば教材としても素体としても公開しやすい。
- ローポリにはこだわらないが、モバイルデバイスでも重くならない程度のポリゴン数にする。
- 基本のスキニングやリグ付けが容易になるように、凝った服は着せない。髪形も必要最低限の揺れモノで済むようにする。(だが揺らす)
- 骨も自作する。Rigifyなどの仕組みに頼らず人物アーマチュアを完成させる。
以上をルールにします。
とはいえ、一からキャラクタのデザインや設定を始めるのはあまりにも非効率的なので、ぼく自身が過去にデザインして「自由に使える」キャラである「わさびミドリ」さんを使おうと思います。
山葵(わさび)ミドリさんはもともと、とある町村の町おこし事業である「わさび栽培」のテーマキャラクタとしてデザインしたものでした(マジ)。そのとき「ウサビッチ」があるから「ワサビッチ」ってのはどうよ?って感じに企画提案したものでしたが、人物キャラではなく「ワサビそのものをデフォルメしたキャラ」が採択され、ボツになってしまったのですが私的にお気に入りだったのです。
そんなわけで今では「わさびミドリ」をやたらにぼくの名刺代わりにしているもので、こういう機会にモデリングデータを公開するのも良いかな、と思った次第です。
現状のミドリさん
現状のミドリさんはこんなです。
これはZBのDynameshで作成した素体で、他にいろんな服装/髪形をしたミドリさんがありますが「標準ミドリさん素体」としてライブラリ化しているものです。
最初はもっと等身の小さいキャラだったのですが、いろいろ紆余曲折があって今はこれくらいの等身に落ち着きました。
早速顔をポリゴン化する
ちゃちゃっと顔をZremesherで自動リトポしてポリゴン化してしまいます。いやDynameshだってポリゴンには違いないだろ?みたいな突っ込みはなしでw
もともとある程度唇や耳のディティールが入っていましたがSmoothBrushModifiersの1番で一気にスムージングをかけ、マスキングをポリグループ化しつつ、同じくSmooth~の6番を使ってポリグループのエッジにスムージングをかけて整形します。
さらにZremesherでKeepGroupsにチェックをいれ、Use Polypaintでポリゴン密度を画面キャプチャのように設定しました。ポリゴン密度が必要ない部分は遠慮なくColorDensityでポリゴンリダクションしてしまいます。
Zremesherした結果がこれです。
1336Polyとの表示でしたのでまぁまぁの結果ですね。以後はGoBでBlenderに送り、頂点を整えたりトポロジーを部分的に再構築したりしてからUVを展開します。
あらかじめDynameshでディティールを入れておき、後でProjectAllしてディティールを転写する方法もありますが、けっこうBlenderでジオメトリの修正を行ってからそれをすると、変なトゲやギザギザができて修正するのが手間だったりするので、ぼくのワークフローではUV展開してからディティールを入れることにしています。
それでは打ち合わせがあるので今回はここまで!
ぼくがコンテンツ制作記事を書く理由
前回の連続エントリでは「UE4のテンプレートに自分で作ったキャラを入れて動かしたい」と題して、Blenderを使い、自分でモデリングして骨を入れ、モーションを付けてFBXに吐き出し、UE4にインポートしてThirdPersonキャラクタとして動かすまで、を解説しました。
そして今後は、さらに一手間加えて「味わい深いキャラクタ」に仕上げていったり「わりと他では説明していないこと」を解説していくことをテーマに、記事を進めていきたいと思います。
デザイナーサイドの欲望を満たす
これらの記事を書こうと思った理由はこれです。テックサイド(技術開発分野)の方々は、どうしても機能やアルゴリズムといった「何かを実現するための技術」や「既知の問題点を克服するための技術」に興味がいくものです。また、こうした興味や研究がない限り、なにも実現することができなくなってしまいます。
しかし、ぼくのようなデザイナー側の興味というのは「とにかく可愛いものを作りたい」だとか「あの映画でやってたシーンを再現したい」などと言うように、どうしても抽象的かつ概念的になりがちで、それらを実現するための「技術的な土台」への知識が乏しく、五里霧中で百鬼夜行な作業に陥りやすいのが現実です。
アンリアルエンジンというゲームエンジンは、ゲーム好きでもあるぼくにとって馴染み深い名前でしたし、親しみさえ感じます。また、開発スパンも非常に早く、下手をすれば毎週毎週の勢いで機能の更新が行われ、次々に新たな可能性を開拓してくれます。しかも基本的に無償で使えてしまうので、いきなり大ヒット!でも生み出さない限りは、個人の環境で好き放題にコンテンツ制作に没頭できる素晴らしいツールです。
しかしながら、新機能や既存機能の更新が多岐にわたるからこそ、個人でそのすべてを追うことは不可能に近いのが現実ですし、高機能かも知れないけれど分かりにくくて面倒なモノであるならば、デザイナーサイドの要望としては「別のやり方ないんですか?」という方向にシフトしてしまうのは当然の結果である、と思います。
ベネフィットという概念
マーケティング分野の用語として、よく「ベネフィット」という言葉が使われます。あるいは医療分野などでもリスク/ベネフィットというような対比を使って、ある医療行為の根拠(エビデンス)をプレゼンテーションしたりします。
これをCG分野に当てはめると…
「○○というキャラクタのCGを作りたい」という欲望(ニーズ)があるとき、それを実現するためにはどうすれば良いか?を考える必要があります。Mayaを使おうか、Blenderが良いだろうか、それともZbrushを使うべきだろうか…
様々な選択肢はありますが、それらのツールを使うためには当然コストがかかります。CG制作を行うのに十分なスペックのPCはあるのかどうか?ツールを購入するための資金はあるのかどうか、モデリング技術を習得するための学習時間も立派なコストの一部にあたります。
ベネフィットという言葉の意味は、使用者(利用者)利益とでもなるのでしょうか。
つまり、なにかを購入したり、選択することで得られる利益のことです。
たとえばコンパクトデジタルカメラやスマホを持っているのに、デジタル一眼レフに高いお金を払って購入する理由はなんでしょうか?より綺麗な写真を撮影したい、それをどこかで発表して注目を集めたい、プロカメラマンになりたい…などなど、デジイチを購入して得られるものは、デジイチを所有することではなく「より良い写真を撮影すること」にあるわけです。
これがベネフィットです。
その「より良い写真を撮影できそうな根拠」として、レンズの性能や、撮像素子の解像度、高速なオートフォーカスや露出機能が挙げられます。しかし、これらはあくまで根拠に過ぎず、実は必ずしも必要なものではないかも知れません。
デザイナーサイドの欲望は「すてきな絵を描きたい」であるべきです。そのための必要要素として、良い画材やソフトウエアがあるのであり、技術の習得やソフトウエアの機能強化による恩恵は「過程」の話に過ぎません。
ですから「Zbrushをマスターしたい」だとか「SubstanceDesignerを覚えたい」というのは、あくまで過程であって結果ではありません。デザイナーサイドのベネフィットは、それらのソフトウエアを駆使することによって「より良いデザインを実現すること」にあるのであり、なんらかのソフトウエア縛りを行うことによって、結果が遠のいたり、技術の習得だけが主題になってしまうようであれば、なにかが間違っていることになります。
ぼくがBlender→UE4記事を書く意義
というわけで、ぼくは専業のゲーム開発者ではありませんし、3D CGだけで仕事をしているわけでもありません。グラフィックデザイナーです。ただし若干「IT寄りの」仕事をしてきたため、基礎的なプログラミングやUI/UXについての知識や実績があります。また、かなり以前の話になってしまいますが、ゲーム制作の現場にも携わった経験があります。
さらに言うならば、EPIC GAMESさんとはなんの関係もありませんし、Blender開発者ともAutodeskとも一切関係がありません。ですから、これらを「推す」理由はなにひとつ背景にありません。ただ「面白いコンテンツを作りたい」というデザイナーとしての欲望があり、それを実現するためのツールとして、UE4やBlenderが存在するだけのことです。ですので、より結果に「近道できる」ツールが出てきたならば、いつでも古いツールは切り捨て、乗り換えてしまうでしょう。
世の中には、ぼくのようなスタンスで仕事をしている方、創作活動をされている方はたくさんいらっしゃると思います。しかし、会社や契約に阻まれて、なかなか「知識の共有」ができていないのが、日本の制作界の現状と思っています。
実を言うと、かつてはさまざまなゲームMODを制作するブログ記事を書いていたこともありました。しかし、当時はTwitterなどのSNSがそれほど発展しておらず、それなりの反響はありましたが、なにかを「共有している」感じはありませんでした。
しかし今であるなら…こうした記事を発信することで、なんらかの「共有」ができるかも知れない。「え、なに?そんな簡単にできるんなら私もやってみようかしら」と思ってくれたりするかも知れない。そうはいかなかったら仕方ないけど、ゲームエンジンを使ったコンテンツ制作の知識が広く共有できたらいいよね?だとか。
そうした「ぼく自身の」欲望にもとづくたのしい毎日が送れたらいいな…とうのがエントリを書く動機です。
さて「序章」っぽく演説的な記事を書きました。次回からは、再びテーマごとに解説していこうと思います。
それでは!
UE4のテンプレートに自分で作ったキャラを入れて動かしたい そのハチ
怒涛の勢いで第8回!
今回の記事を読み終われば、自分で作ったキャラクタがUE4のテンプレートで自由に動かせるようになりますよ!
とはいえお膳立ては必要です。そう、基礎知識!
↑の図を見てください。
これがUE4における最小限のキャラクタ構成の概念図です。
前回までの記事で、すでにFBXからスケルタルメッシュは作成できています。マテリアルも親マテリアルから子マテリアルであるマテリアルインスタンスを作成しました。
それではまだ足りないもの、つまり「アニメーションBP(BPはブループリントの略)」と「キャラクターBP」を作成すれば良いのでしょうか。
ん?ちょっと待ってくださいよ?
だって!せっかくThirdPersonテンプレートからプロジェクトを作成したのだから、すでにマネキンさん(以前はブルーマンさん)が動いていますよね?ということはすでに、アニメーションBPもキャラクターBPも用意されているはずです。
キャラクターBPを見てみよう
↑の画像の手順でキャラクターブループリント(BP)を開いてみましょう。
- コンテンツブラウザでコンテンツ→ThirdPersonBP→Blueprintsへ移動
- ThirdPersonCharacterをダブルクリック→エディタが開く
- 色々難しそうなノードが並んでいるけどスルーして、ビューポートタブをクリック→画面が3Dビューになってマネキンさんが表示される
- 左ペインでMesh(継承)を選択
- 右ペインにアレコレと表示される。
さて、画像では汚い手書きで7,8とメモ書きしてある「スケルタルメッシュ」の項目を見てください。プレビューアイコンの隣のプルダウンメニューをクリックすると…おやおや、FBXからインポートした標準すたちゅーさん(または自作のキャラクタ)が、ちゃんとスケルタルメッシュとして選択候補にありますよ?
だったら早速!とりあえずメッシュを変更しちゃいましょう!
まだすたちゅーさん用のアニメーションBPは作成していませんので「Animation」の項目のAnim Classは「なし」になってしまいますがそのままで構いません。
すると、ツールバー下のコンパイルアイコンが変化します。これは「ブループリントに変更があったので、コンパイルしなおせよな!」という訴えもしくは請願だと思いましょう。悲痛ですね。
「よしよし仕方ないね」とばかりにコンパイルボタンをクリックすると、あっさりアイコンが正常モードに戻ったはずです。
このように、ブループリントはなにか変更をするたびにコンパイルを求めてくるかわいいヤツです。存分にかわいがってあげましょう。
↑その結果がコレ!
メインエディタの3Dビューで「プレイ」すると、まったく身動きしない標準すたちゅーさんが「そこはかとなく不気味なほど静かにだが着実に動かせる」ことが分かるはずです。すばらしい!あと一歩な感じがしてきましたね!
つまり、これがThirdPersonテンプレートなどのサンプルプロジェクトを利用する最大の目的です。すでにキーボードやマウス、ゲームパッドなどの入力に応じてキャラクタを「動かす」部分は用意されているので、あとはメッシュを差し替えたり、アニメーションブループリントを作成すればチャチャチャっとゲームの基本部分ができあがってしまうのです。
ではアニメーションBPだ!
先ほどのキャラクターBPと同様に、アニメーションBPを開いてみましょう。ターゲットは「ThirdPersonAnimBP」です。
よっしゃこいつもワケ分からんけどさっきと同じく中身を入れ替えれば!と思うのですが…残念ながらアニメーションBPは「スケルタルメッシュのスケルトンに紐づけられるモノ」なので、根本的に「サクサク入れ替え」というわけにはいきません。がっかり!
たとえば無理やり複製したとしても、結局はもとのスケルトンに紐づけられたままのブループリントが出来上がるだけで、なんの解決にもなりません。
しかし…しかしですよ?相手が「スケルトン」であるならば、リターゲットという方法があるのです!これは一般の3Dソフトのリグ(ボーン)でも必ずある「あるリグで作成したアニメーションを別のリグに移植する手段」ですね。
というわけで、早速アニメーションBPをリターゲットしてみましょう。
ABPのリターゲット
はい、手順は簡単です。
まず、ThirdPersonAnimBPを選択状態にして右クリック、続いてポップアップするダイアログの上段3つ目にある「Animブループリントをリターゲットする」→「Animブループリントとリターゲットを複製」をマウスオーバーで選択し、決定します。
↑続いて、こんなダイアログが出てきますので
- 互換性のあるスケルトンのみを表示のチェックボックスを外す
- 左ペインにFBXインポートしたスケルトン名が表示されるので選択
- ビューの「ターゲット」の表示が変わる
- 右ペイン下の「Folder」をChangeでパス指定する。(例では前回作成したAnimationフォルダを選択した)
- 左ペイン下の「Reterget」ボタンをクリック
以上の手順で自動的にアニメーションBPがリターゲットされて複製されます。
するとフォルダも自動的に移動しますので「ThirdPersonAnimBP」と「ThirdPerson_IdleRun_2D」の名前を「StatueAnimBP」などと分かりやすいように変更しましょう。名前を変えるのは上記二つのアセットだけで構いません。
さて、コンテンツブラウザをじっくり見てみると、リターゲットされたアニメーションも複製されていますが、当然「むりやり」マネキンさんのアニメーションをすたちゅーさん(または自作キャラ)に移植しただけなのでえらいことになっています。
そこで今度こそアニメーションBPを正しい状態に「差し替える」作業に入るわけですが、下準備はひとつだけ。先ほど名前を変更した「~IdleRun_2D」という見慣れないアセットを開きます。
ブレンドスペースの作成
実はこの作業、いちいちリターゲットなどしなくても、手作業でどうにでもなります。しかし、せっかくなのでこのまま進めましょう。例のごとくダブルクリックで「なんとか2D」を開いてください。
作業手順は
- 中央ペインにある円状のポインタを選択してすべて削除する。
- 右ペインにあるアセットブラウザの名前欄を広げて見やすくする。
- ~~idle(待機モーション)を中央ペインの軸上一番下の「Speed0.00」にドラッグドロップで置く。
- 同様に、中央ペイン区切りひとつ上の交差軸に「歩きモーション」を、一番上のあたりに「走りモーション」をドラッグドロップする。
- 中央ペイン縦軸上でマウスカーソルを動かし、アニメーションが変化するのを見て喜ぶ。ついでに「ほほー」とつぶやくと寂しさが増す。
- 無事に動いているのを確認したら左上の「保存」ボタンをクリックしておく。
以上になりますが、このアニメーションエディタでは、こうしたブレンドスペース以外に通常のアニメーションも編集/調整が可能です。もしも歩行アニメーションがゆっくりすぎるなぁ、などと感じた場合は、左ペイン株にある「RateScale」を1.1以上にすれば再生速度(正確には倍率)が速くなったりします。
アニメーションBPの仕上げ
それでは再びアニメーションBPを開いて仕上げに入ります。もうちょっとですよ!
本来はアニメーションBPのイベントグラフの構築法だとか、これから手直しするアニムグラフとステートマシーンの意味や作成法をきちんと学ぶべきです。しかし本連載の主旨は「手っ取り早く自作したキャラをUE4で動かすこと」にありますので、苦労して学んだけどよく分からなかったよパトラッシュ…なんて挫折することなく、まず先に「すげー!たのしぃーーーー!!!」って感じてもらい、そこで飽きればそれで良いですし、よしこれすごい楽しいからきちんと仕組みを勉強しよう!と思えばそれでも良いよね?というスタンスです。
それでは、上記キャプチャ画像が示す通りに「Idle/Run」というステートを開いて中身を見てみましょう。
ここに、先ほど作り直したブレンドスペース1Dの「IdleWalkRun」があります。これは「Speed」という変数の値に応じて待機モーションから走りモーションまで連続変化させるよ!というステートなのです。なお、このステートはせっかく開きましたが先の作業で正しく修正してありますので「見ただけ~」ですよ!
続いて、Defaultステートマシーンに戻り、今度は「JumpStartステート」の中身を開いてみましょう。
↑今度は先に「無理やりリターゲットしただけのアニメーション」がそのまま入っています。そこで、FBXからインポートした正常なアニメーションに中身を入れ替え「最終アニメーションポーズ」の入力ソケットに接続しなおします。
同様にして「JumpLoop」と「JumpEnd」のステートも中身のアニメーションを入れ換え、ソケットを接続しなおしてください。この作業が終われば、無理やりリターゲットしたアニメーションは削除してしまって構いません。
最後の仕上げですよ!
すべてのステートの中身を入れ換えたなら、あとほんの少しでアニメーションBPが完成します。
↑の画面キャプチャの赤丸を確認してみましょう。
この「ステートマシーン」と呼ばれる仕組みは「待機→歩き→走る」や「ジャンプ」などのそれぞれの動作を「ステート」と呼び、それらを「条件に応じて遷移させる」という仕組みです。しかし、遷移条件が元のThirdPersonアニメーションに紐づいたもののままになっているので、このままでは機能しません。
しかもですよ!UE4エディタのバージョンアップによって、まったく同じノードが使えなくなっているのです。困った!
いやいやwもちろんより扱いやすい「新型ノード」が用意されているので安心してください(煽りかよ)。
それではマウスオーバーすると黄色くなる遷移条件をダブルクリックしましょう。
もともとあった遷移条件は「JumpStartアニメーションの再生時間が残り10%を切ったら」次のステートに移動していいよ?というルールでした。しかし、前記したようにまったく同じ(旧式の)ノードが出てこなくなっているので、新たなノードを使用します。
- 空きスペースでクリック
- 検索欄に「timeremaining~」と入力→候補が出てくる
- GetRelevantAnimTimeRemainingFraction(JumpStart)を選択
- <ノードのソケットに接続しなおす
- 元のノードは削除
以上で修正終了です。
ついでですので説明すると、この「新たなノード」は、従来はスケルトン固有のアニメーションの再生割合を条件にしていたのに対し、ステート自体のアニメーションを参照するノードのようです。つまり、ステートの中身がどのスケルトンにもとづいたアニメーションであっても機能するノードのようで、より汎用性が高くなっているのですね。
それでは同様に、JumpEndからIdle/Runに向かう矢印の遷移条件も修正しましょう。やることはまったく同じで、この2か所以外の遷移条件は修正しなくても機能しますので手直しは必要ありません。
最後にアニメーションBPをコンパイルしなおし、保存しておきましょう。以上でアニメーションBPの作業も完了しました。
キャラクター差し替え完了!
ここまで作業をしてきたなら、最後の作業はもう分かりますよね。はい、キャラクターBPのアニメーションBPが空っぽのままです。早速ブループリントを開いて設定してみましょう。
↑もはや詳細説明はいらない気もしますがw
- ThirdPersonCharacterブループリントを開く
- Mesh(継承)を左ペインで選択
- 右ペインの「Animation」欄で完成したアニメーションBPを選択する
- コンパイルして保存
やりましたね!完了ですよ。早速レベルをプレイしてみましょう。
それでは最後にUE4のサンプルプロジェクトもリンクしておきます。
次回は番外編として、ひと手間加えたキャラクタに仕上げますよ!
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ファイルは同じ共有フォルダに公開されています。
次回はその他のアニメーション作成と補足を行います。