概要
MetaHumanにカスタムメッシュを適用しニーアオートマタの2Bのようなセミリアルな顔のキャラクタを作成しUnrealEngine(以下UE)でアバターキャラクターとして動かす方法を記述します。
髪の毛の表現にUEのGroom機能を使用しますが、実行時の負荷は検証していません。
対象
この記事はBlenderおよびUnrealEngineを使用したことがあり、初歩的な操作はできる方で、MetaHumanCreatorでプリセットからアバターは作成したことがあるがMesh to MetaHuman(任意の顔のメッシュでMetaHumanを作成する機能)を使用したことがない方を対象とします。
プレビュー
だいたいこんな感じになります。
めちゃくちゃ寄せれるわけではないですが、フワっと雰囲気似てるかなぐらいには思えるのではないでしょうか?
顔のディテールや髪の毛のスタイリングをもっと詰めるともうちょっとましになると思います、、、
使用環境
エディター
UnrealEngine 5.2 Upper
- Mesh to MetaHumanを利用するため5.2以上が対象です。
Blender 3.5 Upper
- ヘアシステムを使用するため3.5以上が対象です。
- BlenderでUEでエクスポートしたFBXをインポートする際に、シェイプキーを保持するためにFBXのバージョン変換を行うために必要です
- MetaHumanの作成に必要です。
UEプラグイン
- Mesh to MetaHumanを使用するために必要です。
- UEからをQuixel Bridge使用するために必要です。
素材データ
ファイル名 | 概要 | 用途 |
---|---|---|
HairSource.blend | Groomの素材 | ヘアパーティクルを使用して髪の毛用のAlembicファイルを作成する |
SculptedFace_From_MetaHuman.blend | Mesh to MetaHumanの素材 | Mesh to MetaHumanで使用する素材のメッシュを作成する |
SculptedFace_From_MetaHuman.obj | Mesh to MetaHumanの素材 | Mesh to MetaHumanで参照する素材のメッシュ |
Hana.mhb | MetaHumanCreatorファイル | MetaHumanCreatorでインポートすることで作成済みのプリセットのMetaHumanを読み込む |
CustomMesh_M_Alpha.mhb | MetaHumanCreatorファイル | MetaHumanCreatorでインポートすることで作成済みのカスタムメッシュMetaHumanを読み込む |
カスタムメッシュ作成
- UEプロジェクトにプラグインを追加
-
Mesh to Humanの詳しい使用方法はUEDevコミニティなどを参照してください。
https://dev.epicgames.com/documentation/ja-jp/metahuman/metahuman-for-unreal-engine/mesh-to-metahuman/from-mesh -
素材データのCustomMesh_M_Alpha.mhbを使用する場合は、「MetaHumanCreatorで自分のMetaHumanを作成」までスキップしてください
素材のメッシュをUEに読み込み
素材データのSculptedFace_From_MetaHuman.objをStaticMeshとして読み込む
インポート設定でCombine Static MeshesをONにする
カテゴリ | プロパティ | 値 |
---|---|---|
Static Mesh | Combine Static Meshes | On |
- Static Meshesにマテリアルを設定
読み込んだStatic Meshesに顔と目のマテリアルを適用する
Mesh to MetaHumanで素材のメッシュからMetaHumanを作成
コンテンツブラウザの右クリックメニューで、MetaHumanIdentityを作成する。
- Create Conpornentsをクリックし、先ほど読み込んだStaticMeshを指定します。
-
Promote Frameを実行
顔のパーツのガイドを作成する基準となるビューを設定します。
顔のメッシュを正面から見るカメラは一にしてください。
- Track Markersを実行
メッシュのパーツを自動検知してガイドが作成されます。
-
MetaHuman Idetiy Solveを実行
参照しているメッシュ形状に沿うようなメッシュが計算されます。 -
Mesh to MetaHumanを実行
Quixel Bridgeのアカウントに自分のMetaHumanが追加されます
※整ったセミリアル調の顔にする自分の知見としては、眼球はあまり大きくせず、代わりに瞳を大きくし、顎を尖らせるとそれっぽくなる感じがしました。
※MetaHuman作成時に、眼球のサイズを変更することはできないのでアイホールの形状を大きくすると眼球が浮いてしまいます。
眼球のサイズ変更方法は後述します。
MetaHumanCreatorで自分のMetaHumanを作成
- Quixel Bridgeを経由して、MetaHumanCreatorを起動し
素材データのCasutomMesh_M_Alpha.mhbをインポートする。
成功すれば自分のMetaHumanにCasutomMesh_M_Alphaが追加されます。
Quixel Bridge PluginでMetaHumanを読み込み
- Quicly add the ObjectメニューからQuixel Bridgeを選択します。
髪の毛を作成
Groom用のソースデータを作成
- Blenderのヘアシステムを使用してヘアパーティクルを作成します。
素材データのHairSource.blendをBlenderで開き、UEでインポートするためのファイルを作成します。
ヘアシステムのRender設定
エクスポート時に頭のメッシュが含まれないようにヘアシステムのRender設定を変更します。
カテゴリ | プロパティ | 値 |
---|---|---|
Render | Show Emitter | Off |
Alembicファイルをエクスポート
ヘアシステムをアタッチしたメッシュを選択し、Alembicファイルでエクスポートします。
- Alembicファイルのエクスポート設定
必要なものだけがファイルに含まれるように設定を変更します。
カテゴリ | プロパティ | 値 |
---|---|---|
Manial Transform | Scale | 100 |
Scene Opions | Start | 1 |
Scene Opions | End | 1 |
Scene Opions | Selected Objects | On |
Scene Opions | Visible Objects | On |
Object Options | UVs | Off |
Object Options | Pack UV Islands | Off |
Object Options | Normals | Off |
Object Options | Color Attributes | Off |
Object Options | Generated Cordinaes | Off |
Object Options | Curves as Mesh | Off |
Particle Systems | Export Hair | On |
Particle Systems | Export Particles | On |
UEでGroomを作成
Alembicファイルからヘアパーティクルをインポート
コンテンツブラウザで右クリックメニューからImport toを選択
前工程のAlembicファイルをエクスポートで作成したAlembic(.abc)ファイルを選択するとGroomのインポートメニューが開きます。
- Alembicファイルのインポート設定
Groomの回転軸をBlenderからUEに併せます。
カテゴリ | プロパティ | 値 |
---|---|---|
Conversion | Rotation | 90, 0, 0 |
Scale | End | 1, -1, 1 |
※Groomのインポートメニューにならない場合は、Alembicファイルの出力の不備の可能性が高いです。
成功すれば以下のようなアイコンでオブジェクトが作成されます。
- Groomのプロパティ設定
作成されたGroomのオブジェクトメニューを開きます。
お好みで変更してください。
簡易的な参考設定を載せておきます。
Strandsタブを選択し、髪の太さの設定を変更します。
カテゴリ | プロパティ | 値 |
---|---|---|
Strands | Hair Width | 0.1 |
Strands | Hair Tip Scale | 0.01 |
Physicsタブを選択し、髪の物理演算の設定を変更します。
カテゴリ | プロパティ | 値 |
---|---|---|
SolverSettings | Enable Simlation | On |
SolverSettingsv | Gravity Preloading | 1 |
UEでGroomをバインディング
- スケルタルメッシュへのバインディング用オブジェクトを作成
作成されたGroomのオブジェクトの右クリックメニューからCreate Bindingを選択
- バインド対象のスケルタルメッシュを選択
Quixel Bridge Pluginで読み込んだMetaHumanの顔パーツのスケルタルメッシュを選択します
成功すれば以下のようなアイコンのオブジェクトが作成されます。
- MetaHumanのスケルタルメッシュにGroomをバインド
Quixel Bridge Pluginで読み込んだMetaHumanのBPのビューポートメを開きます。
- BPのComponenttsのヒエラルキーのHairオブジェクトを選択
DetailsタブのGroomカテゴリにそれぞれ対象のオブジェクトを設定
カテゴリ | プロパティ | 値 |
---|---|---|
Groom | Groom Asset | Alembicファイルを読み込んで作成したGroomオブジェクト |
Groom | Binding Asset | 先ほど作成したBinding Assetオブジェクト |
MetaHumanの眼球の編集
眼球のサイズ変更
- MetaHumanCreatorでは眼球サイズ変更はできないためAnimBPに処理を加えてプログラムの処理で眼球サイズを変更します。
以下のAnimBPがMetaHuman作成時でのデフォルトの顔の向きや表情を動かすためのAnimBPとなっています。
Content > MetaHumans > Common > Face > Face_PostProcess_AnimBP
各MetaHumanの顔のスケルタルメッシュのAsset Detailsで参照されています。
変更したい場合は下記のプロパティの参照を変更します。
※この記事では簡単のためデフォルトのMetaHumanのAnimBP(Face_PostProcess_AnimBP)に変更を加えます。
カテゴリ | プロパティ | 値 |
---|---|---|
Skeltal Mesh | Post Process Anim Blueprint | Face_PostProcess_AnimBP |
眼球編集処理用のCotrolRigを作成
コンテンツブラウザの右クリックメニューからControlRigを選択。
Rig HierarchyタブのImport Hierarchyをクリックし、対象となるMetaHumanの顔のスケルタルメッシュを選択しOKをクリックすると、ボーンの改装が読み込まれます。
- 眼球サイズの変更及び、奥行きの位置の調整を行うBPを記述します
Offset Transformノードの対象は以下のボーンです。
- FACIAL_L_Eye
- FACIAL_R_Eye
眼球編集処理をAnimBPに追加
- ControlRigノードを追加
ControlRigノードを作成し、先ほど作成したControlRigを参照します。
これで眼球サイズがエディター、ランタイム両方で変更されます。
瞳のサイズ変更
- MetaHumanの眼球用マテリアルのプロパティを編集
瞳のサイズはMetaHumanの眼球用マテリアルのプロパティを編集して変更できます。
眼球のマテリアルはデフォルトでは各MetaHuman毎に割り振られています。
Content > MetaHumans > (対象のMetaHumanフォルダ名) > Face > Materials > MI_EyeRefractive_Inst_[L|R]
様々な設定がありますが、瞳のサイズは以下のプロパティです。
好みで調整してください。
数値が大きいと瞳のサイズも大きくなります
カテゴリ | プロパティ | 値 |
---|---|---|
Iris | IrisUVRadius | 0.5 |
あとがき
難しいモデリングやマテリアル作成をしなくても、ハイクオリティな人体モデルが作成できるMetaHumanすごいですね!
ただ処理負荷はそこそこあるので、ゲーム用途で使うには工夫が必要かもしれません、、、