MetaHumanにカスタムヘアーを適用する
はじめに
この記事では、Blenderで作成したカスタムヘアーをMetaHumanキャラクターに適用するまでの手順を解説します。
カスタマイズされたヘアーを適用することで、既存のヘアーアセットには無い個性や魅力を与えることができます。
使用ツール
ヘアーを作成する場合、一般的なワークフローだとMAYAのXGenを使用する事がほとんどだと思いますが、この記事では「3D Hair Brush」というBlenderのAddonを使用して制作していきます。(セール期間中にゲットしました)
使用したツール
Blender (Ver.4.0)
3D Hair Brush(Blender Addon)
Unreal Engine 5(Ver.5.5.1)
最終結果
MRQでレンダリング、音声はDaVinci Resolveでつけました。
UE5.5 Metahuman Custom Hair test v2#UE5 #UE5Study pic.twitter.com/fNKUNDx7Vj
— Masataka Yamada (@ma_sword_am) December 24, 2024
【作業その1】フェイスメッシュをFBX形式でエクスポート
アタリとして使用したいMetaHumanのフェイスメッシュをエクスポートします。
保存先と保存名を決めたら、FBX形式でエクスポート。
FBXエクスポートオプションについては、今回は特に設定を変更せずにそのままエクスポートしました。

【作業その2】フェイスメッシュをBlenderへインポート
【作業1】でエクスポートしたフェイスメッシュをBlenderへインポートします。FBXインポート設定は、特に変更していません。

【作業その3】インポートデータの整理
問題なくインポートが完了したら、作業しやすいようにデータを整理していきます。
まず、ボーンの表示が作業の邪魔になりそうなので削除か非表示にします。
・削除する場合
①ボーンとオブジェクトを選択して右クリック
②【ペアレント】→【トランスフォームを維持してクリア】の順にクリックして親子関係を解除
③ボーンのみ削除してオブジェクトだけ残るようにする
※【親子関係をクリア】を選択すると誤ったスケール値が入ってしまいますので、注意してください。

・非表示にする場合
①画面右上あたりにあるビューポートオーバーレイボタンのドロップダウンメニューを開く
②オブジェクトの項目に【ボーン】があるので、チェックを外す

後の作業でボーンが必要になる場面はないので、アニメーション等で使うから残しておきたいという場合を除いて、最初から削除しておくほうがいいかも知れません。
・目の周りのポリゴンを削除する
続いて、一緒にエクスポートされてしまっている眼球やまつ毛の板ポリも今回は必要ないので削除します。
①ポリゴンを選択したいので、編集モードに切り替えて適当なポリゴンを1つ選択
②【選択】→【類似選択】→【マテリアル】の順でクリック

③選択したポリゴンと同じマテリアルが適用されていれば、画像のように顔のオブジェクトのみ選択対象になる
④そのまま【 Ctrl + I 】で選択を反転
⑤Deleteキーを押して面を削除

【作業その4】ベースモデルの作成、パーティクルシステムの追加
データの整理が終わったら、パーティクルヘアーを適用するためのベースモデルを画像右側のように作成します。例えるなら、かつらの下地みたいなものでしょうか。
※下記の画像では見やすいように右へずらしているだけで、作業は複製元のオブジェクトと同じ位置で行います。

ベースモデルにパーティクルシステムを追加、ヘアーに変更。
パーティクルシステムの使い方や解説についてはUEに関係なくなるので、割愛させていただきます。

【作業その5】ヘアーの作成
形状や密度を調整しながら、ヘアースタイルを綺麗に整えていきます。
時折、ビューポートレンダーで仕上がりをチェックしておくのもいいと思います。
※今回は時間の都合上、Addonで用意されているヘアープリセットの一部にスタイリング調整をしたカスタムヘアーで進めていきます。

・ヘアー作成時の注意点
ヘアー追加機能を有効にすると、左上に【ステップ】と【キー】をそれぞれ入力できるようになります。
【キー】はストランドの制御点を意味しており、この制御点が多いほど形状を細かく調整することができます。

ですが、【キー】が多すぎるとUnreal Engineへインポートしたときに下記のような警告がステータスに表示されるようになります。

Unreal Engineでは、ヘアストランド(カーブ)の各ストランドに対して、最大255個の制御点(Control Points)をサポート
制御点がこの制限を超える場合、余分なポイントは自動的に切り捨て
自動で切り捨てされた場合、意図しない変更が加わる可能性があるので、制御点を抑えておく必要があります。
・制御点が制限を超えた場合
①制御点の数を変更したいヘアーパーティクルを選択して右クリック
②【分割数変更】をクリック
③【キーの番号】で分割数を変更し、制御点を増減

上記の方法もしくは、最初の段階で制御点の数を減らしておくことで警告を回避できると思います。ただ、この対処法だとシビアに調整しないといけないので他に良い方法があれば教えてください。
【作業その6】Alembicファイルをエクスポート
ある程度完成したら、Alembicファイルをエクスポートします。
①【作業その4】で作成したベースモデルを選択
②【ファイル】→【エクスポート】→【Alembic】を選択

・【スケール】を100に設定(Blenderの単位がセンチだった場合)
・【開始・終了フレーム】を1に設定
・【選択したオブジェクト】、【可視オブジェクト】にチェック
・【ヘアーをエクスポート】、【パーティクルをエクスポート】にク
③すべて設定できたら、データをエクスポート

【作業その7】AlembicファイルをUEへインポート
Unreal Engineに戻り、Alembicファイルをインポートします。
その前にGroomプラグインが有効になっているか確認しましょう。
プラグインタブ上部の検索窓でGroomと調べると、いくつかのプラグインが表示されます。
【Alembic Groom Importer】と【Groom】のプラグインにチェックを入れ、エンジンを再起動します。

再起動ができたら、ファイルをインポートしてみます。
グルームインポートオプションが出てきますので適宜調整してください。
今回は、変換の項目にいくつか変更を加えました。

【作業その8】バインディングの作成
①インポートしたGroomアセットを右クリック
②【バインディングを作成】をクリック

③【ターゲットスケルタルメッシュ】にフェイスメッシュを割り当て
④作成をクリック

これで、バインディングの作成は完了です。
【作業その9】グルームコンポーネントの適用
続いて、Groomアセットを割り当てるキャラクターのBPを開きます。
①【追加】をクリック
②検索窓で【Groom】と検索
③【グルームコンポーネント】をクリック
④追加されたグルームコンポーネントの変数名を【Hair】に変更

⑤グルームタブの【グルームアセット】、【バインディングアセット】に作成したデータを割り当て
⑥BPキャラクターをコンパイルし、保存をクリック

以上で作業は終了です。
物理シュミレーションを使用して動きに合わせて揺らしてみるのも楽しそうです。
まとめ
髪型だけでなく、髭やまつ毛などもカスタムすればより個性が出ますね!
それでは、楽しいUEライフを!