この記事はBlender Advent Calendarの9日目の投稿記事です。
- BlenderとUE4でVtuber 前編(このページ)
- BlenderとUE4でVtuber 後編
AdventCalendar初心者&ブログ初心者のダブル初心者です。誤字脱字などあっても許してください!
こんにちは!
みなさんは、「Vtuber」や「フェイシャルキャプチャ」といった言葉に興味を持ったことはありませんか?
個人が安価でVtuberになる方法といえば、Facerig(つい最近後継のAnimazeが出ましたね)や、スマホで気軽に始められるアプリなんかがありますが、
どのソフトもモデルの形式や機能などに制限があり、設定が難しくてなかなか思うようになりませんし、そもそも自分でキャラを自由に設定できないものも多いですよね。
やはり、人気のVtuberなんかと比較するとどうしても見劣りしてしまいます。
Vtuberになる方法を調べても、Live2Dがメインで、3Dモデルを動かす方法を詳しく解説してくれているサイトはなかなかありませんし…
(よくVroidを使った方法が出てきますが、う〜んってなる人も多いんじゃないかな?)
つまり、自分でモデルを作って本格的にやりたい!という方にはとてもハードルが高く、Vtuberデビューする前に挫折してしまうというのが現状です。(つらい)
しかし! そんな方に朗報です!
つい最近(今年7月7日)、UE4にiPhoneを使ってフェイシャルキャプチャする機能が公式で追加されました!!
これを使えば、顔部分のみではありますが、UE4を使って安価で簡単に、プログラミング無しでVtuberになることができるのです! (iPhoneを持っているという条件付きですが…)
そこで今回は、3DCGソフトBlenderとUE4のフェイシャルキャプチャを使ってVtuberになる方法を紹介していきます。
この記事は後編ということで、UE4に持ってきたモデルを動かすまでの手順を解説していきます。
さらに、他のソフトと異なるUE4でしかできないことも併せて紹介していこうと思います!
この記事は前編ということで、Blenderで作ったモデルをUE4に持っていくまでの手順を解説していきます。
さらに、UE4に持っていく際の注意点、Blender側での設定なんかも紹介していこうと思います!
後編はUE4のアドベントカレンダーにて、
UE4でモデルを動かす方法&UE4ならではの機能紹介
を解説していますので、よかったらそちらも併せて読んでみてください。
3DCGソフトやUE4触り始めた方でも極力分かるようにがんばりましたので、Vtuberやフェイシャルキャプチャに興味ある方は、だいたいこんな作業をすればいいんだな~という雰囲気をつかんでいただければ嬉しいです。
まあ私もBlender歴1年ちょい、UE4歴半年ぐらいの新参者です。それぐらいの人でも簡単に出来るレベルだと思ってもらって大丈夫です!
注意点
今回私が紹介する方法は、キャプチャデータを得るのにiPhone X(10)以降が必要となります。
iPhoneで撮ったフェイシャルキャプチャのデータをUE4に送るためには、iPhone X以降が持っている「深度カメラ」と 「ARKit」という機能が必要になります。現状ではそれより古いiPhoneや、Androidのスマホ、その他撮影機器ではデータを送ることができません。
ここだけは申し訳ないのですが、私の技術ではどうしようもないです。
対応したiPhoneを持っていない場合は、買ってしまうか、UE4側がより多くのデバイスに対応してくれるのを期待しましょう…
そもそも、どんな仕組みで動く?
UE4でのフェイシャルキャプチャがどんな仕組みで動いているのかを分かってないと、モデル設定のしようがないので、まずはそこから軽く紹介していきます。
まず、今回紹介する方法なんですが、大まかに以下のような流れで動かします。
- UE4側にモデルを用意する。
- iPhoneを使って撮影し、Live Link Faceというアプリで顔の動きのデータを得る。
- その情報をUE4に送る。
- 送られてきた情報とモデルの顔の動きをリンクさせて動かす
1はBlenderで作ったモデルをUE4に持っていく作業(インポート、エクスポート)のことです。
大事なのは4のモデルを動かすところなんですが、モデルはシェイプキーかポーズのどちらかを使って動かします。
つまり、Blender側でモデルにシェイプキーかポーズのどちらかを作成してあげる必要があります。
今回は、設定が簡単で初心者にもおすすめな、シェイプキーを使った方法を解説していきます。
また、どちらを使うかに関係なく、アーマチュアとウエイトの設定が必要になりますので、これについても軽く触れていきます。
モデルの設定方法
UE4にモデルを持っていくためには、モデルをUE4に持っていくのに適した形に修正する必要があります。
ここではその修正を手順ごとに解説していきます。
1. アーマチュアとウエイトの確認
UE4の メッシュ は以下ようにの2種類に分かれています。
- スタティックメッシュ→スケルトンが設定されておらず、基本的に形が変わらないメッシュ
- スケルタルメッシュ→スケルトンが設定されており、形を変えることができるメッシュ
UE4のフェイシャルキャプチャ機能は、スケルタルメッシュでしか使えません(自分調べ)。
なので、Blender側でモデルにアーマチュアとウエイトを設定してあげる必要があります。
アーマチュア、ウエイトの設定方法は、サイトや動画に乗っているような一般的な方法で大丈夫です。
Vtuberはもともとあまりダイナミックな動きをしない場合が多いと思うので、とりあえずキャラクターをUE4で動かしてみたいという方は大まかな設定でもOKです。
ただし、アーマチュアの構造に関して一つだけ制約があります。
それは、「階層の最も上位に来る ボーン が1本であること」です。
つまり、親がいないボーンは一本までしか許されないということです。
これを守らないとUE4にインポートする際にエラーが出るので注意してください。
もし2本以上ある場合はアーマチュアを選択して編集モードにし、ボーンプロパティのペアレント設定から親になるボーンを設定してください。
何かしらの理由で今の構造を変えられない場合は、1本だけボーンを追加しそのボーンを親にしてください。(いわゆるルートボーンというやつです。)
2. モディファイアの確認
モディファイア には以下の2つの特徴があります。
- シェイプキーを作った後はモディファイアの適応ができない
- モディファイアは、エクスポートの際に適応される
で、モディファイアを残したままシェイプキーを設定し、モデルをエクスポートするとどうなるかというと…
モディファイアが強制的に適応され、シェイプキーのデータが消えてしまいます
そうすると、UE4にモデルを持って行ってもシェイプキーの情報がないのでモデルを動かすことができません。
これを回避するためにはどうすればよいかというと、
シェイプキーを作成する前にモディファイアを適応しておく必要があります。
ただし一つだけ例外があって、アーマチュアモディファイアだけは適応せずに残しておいても大丈夫です。逆に適応するとアーマチュアとメッシュの連結が外れてしまい、これまたUE4で動かなくなってしまいます。
結論としては、「シェイプキーを作る前にアーマチュアモディファイア以外のすべてのモディファイアを適応すればOK。」ということになります。
モディファイアを適応するとやり直しがきかなくなるので、適応する前にモデルのデータをコピーしておくのがおすすめです。
ちなみに、シェイプキーを作らないほかの部位(例えば身体)はモディファイアをそのまま残しておいても大丈夫です。
追記
シェイプキーを設定した後でもモディファイアを適応できるアドオン「ShapeKeysUtil」を見つけました! この アドオン を使えばシェイプキーを設定した後のどのタイミングでも問題なくモディファイアを追加し、適応することができます。
3. シェイプキーの作成
ここまできたら、やっとシェイプキーを作ることができます。
口の変形やまぶたの変形などを作っていくのですが、その前にどんなモーションが必要になるか確認しておきましょう。
まずはEpic games Launcherを開き、ラーニングから「Face AR Sample」プロジェクトをバージョン4.25でダウンロードします。
ダウンロードが終わったらプロジェクトを開きます。、画面の下の方にフォルダが並んでいる場所(コンテンツブラウザ)があるので、SkeltalMeshesを選び、中にあるKiteBoyHed_JointsAndBlendsというメッシュデータを開きます。
開くとメッシュの情報が表示された画面が出てきます。この画面の右側にあるのがシェイプキーです。
サンプルのキャラにはものすごい数のシェイプキーが設定されていますね。
数値のバーをいじるとシェイプキーを動かすことができます。どんな動きを設定すればよいか確認しておきましょう。
ここからは自分のキャラにシェイプキーを設定していきます。
シェイプキーを作る際に守らなければいけないことが1つあって、それは命名規則です。下の表の一番左列のとおりに名前を付けていく必要があります。(正しくは、必ずしも従う必要はありませんが、この表のとおりに作るとのちの作業が楽になります。)
例)左目を閉じる動作をするシェイプキーには、eyeBlinkLeftという名前を付ける。
で、サンプルキャラのシェイプキーがめちゃくちゃたくさんあって、自分のキャラに同じ数用意するのがめんどい! と感じるかと思いますが、すべて用意する必要はありません。足りなくてもエラーが起きるわけではなく、動作のバリエーションが減るだけです。
表には簡単な動作の説明と、アニメ風キャラの場合のシェイプキーの重要度を載せています。(かなり主観的なので注意)
表やサンプルキャラの動きを参考に取捨選択してみてください。
画像、エクセルファイルで見たい方はこちらからダウンロードできます。
こちらのページでは、私が設定したシェイプキーの具体的な形状を一覧で載せています。実際に作る際の参考になれば。
ちなみに、もし顔のパーツが複数に分かれており両方とも動かしたいときは、両方に同名のシェイプキーを用意して個別に設定すればOKです。(UE4にモデルをインポートすると、同名のシェイプキーが同時に動くようになるため。)
例)左目を閉じるモーションを作りたい&顔とまつ毛のモデルが別かれている
→それぞれに左目を閉じる用のシェイプキーを作り、どちらにもeyeBlinkLeftと名前を付ける。モデルを統合する必要は無し
必要な数だけシェイプキーを設定したら、ついにモデルをUE4のほうへ移動していきます。
名前は表のとおりにつけていきましょう。
BlenderのモデルをFBX形式にエクスポートする
ここからはBlenderのモデルをエクスポートする手順を解説していきます。
Blenderのエクスポート機能には少し問題があって、モデルをUE4に持っていくとなぜかメッシュの大きさが1/100になってしまうという不具合があります。(2020年12月現在未修正)
そのせいで、アーマチュアとの連動がうまくいかず適切に動いてくれません。
そこで、今回はその問題を回避するためにX4UEというアドオンを使ってモデルをエクスポートしていきます。
X4UEアドオンはIndie-us-Gamesさんが開発した、BlenderのモデルをUE4に持っていくための機能に特化したアドオンで、上記の問題も見事に解決してくれます。ありがたや
以下のような手順でエクスポートを進めていきます。
- X4UEアドオンをダウンロードしてBlenderにインストール
- エクスポートするモデルと、アーマチュアをすべて選択
- ファイル>エクスポート>FBX for UE4を選びエクスポート
もしエラーが出てしまったら、エクスポートしない余分なモデルをすべて削除してみてください。(バックアップ推奨)
FBX形式のモデルをUE4にインポートする
エクスポートが成功したら、今度はそのモデルをUE4にインポートしていきます。
UE4を起動したら、画面の下の方にあるコンテンツブラウザにフォルダーを作り、その中にFBXファイルをドラッグアンドドロップしてみてください。
そうすると下のようなインポートオプション画面が出てきます。
変更するところは一か所だけで、Import Morph Targetsにチェックを入れます。
これはモーフ(Blenderのシェイプキー)をインポートするかしないかの設定項目です。
今回はインポートしてほしいのでチェックを入れましょう。
この設定項目が見つからないときは、三角形のマークを押してみてください(画像の○で囲んでいるところ)。隠れていた項目が出てきます。
チェックを入れたら、import Allを押します。そうするとインポートが始まり、先ほど作ったフォルダの中にモデルのデータが追加されます。
UE4ではデータごとに色分けがされています。例えば、
- 濃いピンク→スケルタルメッシュ
- 薄いオレンジ→コリジョン
- 水色+青背景→スケルトン
- 緑→マテリアル
識別が楽になるので覚えておくとよいでしょう。
テクスチャは、FBX内に情報として格納されないため別個にインポートします。
コンテンツブラウザに先ほどと同じように画像データをドラッグアンドドロップすればOKです。
モデルが真っ白でマテリアルを早く設定してあげたいところですが、それよりも先にインポートがうまくいったかの確認をします。
確認する点は2つあり、
1つ目は、「モデルがスケルタルメッシュとしてインポートできているか」です。
下線がピンク色のスケルタルメッシュがあるか、スケルトンはあるかを確認してください。
2つ目は、「モーフがシェイプキーがインポートされているか」です。
まずはピンクの下線のスケルタルメッシュをダブルクリックしてください。
そうすると以下のような画面が出てきます。で、右側のMorph Target PreviewerにBlenderで設定したシェイプキーが表示されていればOKです。
どちらも問題なければインポート作業は完了です。
マテリアルは初期状態では白ですが、ダブルクリックしてみると、ノードが表示された設定画面が出てきます。これはBlenderのシェーダーエディターと同じような場所で、Blenderと同じようにノードを使ってマテリアルを設定することができます。
詳しい設定方法は省きますが、Blenderでマテリアルを設定したことがある方はなんとなくわかると思います。
この記事で紹介した作業はここまでです。
次の記事では、主にUE4上でシェイプキーとフェイシャルキャプチャのデータをリンクさせる作業をしていきます。
うまくいかなかった場合は以下のトラブルシューティングを見て試してみてください。
トラブルシューティング(私が詰まったところ)
モデルをエクスポートできない!
- エクスポートしない余分なモデルをすべて消す
- 使っていない頂点グループをすべて消す
- モデルをしっかりとすべて選択する
モデルをインポートできない!
- ボーンの階層をもう一度確認する
- モデルのパーツすべてにウエイトが載っているか確認する
- 既に一度インポートしていた場合はそれを削除する
インポートできたけどなんかおかしい!
モデルのパーツがバラバラになる
スケルタルメッシュではなくスタティックメッシュとしてインポートされると、パーツごとにばらばらに表示されます。(スタティックメッシュの下線の色は明るい水色です。)
これはBlender側でモデルとアーマチュアがしっかりとリンクしていないためにおこります。
- モデルにアーマチュアモディファイアが設定されているか
- モデルのウエイトは設定してあるか
- エクスポートの際にモデルとアーマチュアを両方選択したか
を確認してみて下さい。
モーフが表示されない
これは、エクスポートかインポートの際にシェイプキーの設定が消えてしまったためです。
- モデルに設定していたモディファイア(アーマチュアモディファイア以外)をすべて適応しているか
- インポートの際にImport Morph Targetsにチェックを入れているか
を確認してみてください。
モデルのすべて、または一部が表示されない
これには様々な理由が考えられます。
- モデルの法線の向きを確認する。裏向きだと透明になります。
- モデルの大きさを確認する。
- エクスポートの際にしっかりと選択したか確認する。
- エクスポートの際に標準のものではなくFBX for UE4を使っているか確認する。
などを試してみてください。
そのほかの対策法
まずはシンプルに「キューブにボーンを一本セットしてウエイトを付けたものをUE4に持っていく」みたいな感じで、一か所ずつ可能性をつぶしていってみると原因特定につながりやすいと思います。思わぬところに原因ってあるもんなんですよね。
まとめ
Advent Calenderを利用して、Vtuberになる方法を長々と書かせていただきました。
正直この記事は作業ばかりなのであまり面白みがありませんでしたが、Vtuberになりたい方や、BlenderからUE4にモデルを持っていきたい方への参考になればうれしいです。
リンク集
Advent Calender
Advent Calenderで私が書いた記事
- BlenderとUE4でVtuber 前編(このページ)
- BlenderとUE4でVtuber 後編
Blender関係
UE4関係
コメント