UE4で”MetaHumanを使わずに”耳なし芳一になる10の方法【UE4 Character Art Dive Online】

18.5K Views

July 22, 21

スライド概要

講演動画はこちら:
https://youtu.be/BoUNuMJGHuc

講演者:
斎藤 修(Epic Games Japan)
https://twitter.com/shiba_zushi

本スライドは2021年7月25日に行われたオンライン勉強会「UE4 Character Art Dive Online」の講演資料となります。

イベントについてはこちら:
https://www.unrealengine.com/ja/blog/epicgamesjapan-onlinelearning-13

profile-image

Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Metahumanを 使わずに UE4で 耳なし芳一になる10の方法 Epic Games Japan 斎藤 修 Technical Artist Developper Relations

2.

自己紹介 斎藤 修 Epic Games Japan Technical Artist Developer Relations https://twitter.com/shiba_zushi ●ライセンシー様のサポートしています ●以前は規模大きめのコンソール開発してました ●その前は漫画とか描いてました ●UE4とHoudiniが好物です

3.

ある日私は思いました

4.

耳なし芳一になりたい

6.

しかし 自分で自分にお経を書くのは難しい

7.

よし! ならば UE4で作ろう!

8.

という事で 今回の制作物です

9.

本日はこちらのメイキングを通して UE4におけるデジタルヒューマンの技術についてお話しできればと思います

10.

本日のお品書き フォトグラメトリ グルーム 写真撮影 マテリアル モデル シーケンス テクスチャ エフェクト モーフ ポストプロセス

11.

本日のお品書き フォトグラメトリ グルーム 写真撮影 マテリアル モデル シーケンス テクスチャ エフェクト モーフ ポストプロセス

12.

フォトグラメトリ https://youtu.be/q0MTeupfXME フォトグラメトリとは 様々なアングルから写真を撮影 特徴点を解析し 3Dモデルを作る という手法

13.

フォトグラメトリ ●良いところ 写真を撮るだけでめちゃくちゃ高品質なモデルが作成できる ●悪いところ たくさん写真を撮る必要がある 実物があるものでないといけない

14.

フォトグラメトリ 最近Epicの一員となったスーパーフォトグラメトリ集団

15.

フォトグラメトリ 最近Epicの一員となったスーパーフォトグラメトリ集団 https://www.3lateral.com/index.html

16.

フォトグラメトリ 最近Epicの一員となったスーパーフォトグラメトリ集団 https://www.3lateral.com/index.html https://quixel.com/

17.

フォトグラメトリ そしてそれらのスペシャリストが使用しているツール https://www.capturingreality.com/

18.

本日のお品書き フォトグラメトリ グルーム 写真撮影 マテリアル モデル シーケンス テクスチャ エフェクト モーフ ポストプロセス

19.

写真撮影 今回僕は 一人で 自宅で 制作していましたので 同時に数百枚撮影できるような専用のスタジオなどではなく カメラ一台で頑張ってフォトグラメトリしました

20.

写真撮影 シングルカメラでフォトグラメトリする場合 本来 カメラマンが被写体の周りをグルグルと回って あらゆる角度から撮影するのですが

21.

写真撮影 今回は自分で自分を撮影する必要があったので カメラを固定して 椅子に座ってクルクル回って撮影することにしました

22.

写真撮影 使用機材は カメラ(D750) レンズ(NIKKOR 24-120mm f/4G) 三脚 ディフューザー(Round Flash) スピードライト(SB-700) レリーズではなくスマホアプリでリモート撮影しました

23.

写真撮影 ディフューザーやスピードライトを使用した理由は 今回上半身裸で撮影した都合上 屋外で撮影するのが恥ずかし過ぎたからです 室内撮影による光量不足を スピードライトとディフューザーでカバーしています

24.

写真撮影 めっちゃラク もしボッチではなく カメラマンの人を用意できるなら 曇りの日に屋外日陰で撮ってもらう方が絶対に物凄く楽です

25.

写真撮影 そして モデルとしての覚悟

26.

写真撮影 毛髪類はクォリティを損ねたので“可能な範囲で”すべて剃りました (髪の毛 ひげ うぶ毛 まゆげ まつげ など)

27.

写真撮影 https://www.capturingreality.com/SampleDatasets 3DScanLA Studios 本当は剃るより全て抜く方が良いです (痛かったので剃る方で妥協しました まつ毛剃るの怖かったです)

28.

写真撮影 また 顔の特徴点を増やす為に シールやマジックで印を追加しました (油性マジックがオススメです)

29.

写真撮影 撮影枚数は 三脚で4段の高さ調整をしつつ 各角度から大体10℃刻みで36枚 4×36で150枚ほど撮影

30.

写真撮影 トリミングも 有効です 壁紙の模様などが 出ないようにボカす 撮影の際には背景の特徴点を出さないように 被写界深度は浅めの方が良いと思います(今回は60mm F2.8で撮影)

31.

写真撮影 表情は死ぬ気でキープしました(かなり辛い) まぶたとかはどうしても動くので ある程度の精度落ちは諦めました

32.

写真撮影 FACSでフェイシャルモーフを作成予定だったのですが 撮影が大変だったので3種だけ表情差分を作成しました

33.

写真撮影 https://adamspring.co.uk/ FACSの詳細に関してはこちらのブログがとてもわかり易いです

34.

本日のお品書き フォトグラメトリ グルーム 写真撮影 マテリアル モデル シーケンス テクスチャ エフェクト モーフ ポストプロセス

35.

モデル https://www.capturingreality.com/ 前述の通り 今回モデル化にはRealityCaptureを使用しました

36.

モデル https://www.capturingreality.com/Products リアリティキャプチャはEpicファミリーになったことで お値段お得になっております

37.

モデル https://www.capturingreality.com/Products PPIはエクスポートしたい時にだけお金を払えば良いシステム トライ・アンド・エラーは無料!

38.

モデル https://www.capturingreality.com/Products 買い切り永久ライセンスもあります

39.

モデル 作成手順は非常に簡単です 撮影した写真をインポートして

40.

モデル アライメントしてカメラ位置を推定 点群ができます

41.

モデル モデルの計算を行って

42.

モデル テクスチャを作成

43.

モデル 最後にエクスポートすれば完了です 簡単! (お金がかかるのはここだけ!)

44.

モデル 今回使用したパラメーター設定です 大体の場合アライメントで問題が出るため精度を上げています

45.

モデル ただ 上げればいいということもありません アライメントが駄目な場合は 写真撮影に問題がある事が大半なので 撮影し直した方が良いことが多いです

46.

モデル ある程度はコントロールポイントでリカバリすることも可能ですが 丁寧に写真撮影することが一番重要です

47.

モデル https://support.capturingreality.com/hc/en-us/articles/115001528211 -Taking-pictures-for-photogrammetry 適切な写真撮影の仕方はこちらの動画をご参考ください

48.

モデル さて リアリティキャプチャからエクスポート後は モデルの崩れてる部分の修正を行います

49.

モデル 私はスカルプトが全く得意ではないので ZbrushでSmoothとCrayブラシで破綻したところをチクチク綺麗にしました

50.

モデル https://youtu.be/Lfen-BSwWcE スカルプトが得意な方は フォトグラメトリでかなり詳細なテクスチャが出来ているので それを元に毛穴などを掘るのも良いと思います

51.

本日のお品書き フォトグラメトリ グルーム 写真撮影 マテリアル モデル シーケンス テクスチャ エフェクト モーフ ポストプロセス

52.

テクスチャ 先程もお話した形で フォトグラメトリによって非常に高精細なベーステクスチャはありますが 毛穴レベルの情報は取れていない事があります

53.

テクスチャ https://texturing.xyz/ そこで今回は楽をするクォリティ向上の為に 販売されているテクスチャも合わせて使用しました

54.

テクスチャ 非常に高精細な各マップが販売されており フォトグラメトリでカバーしきれない毛穴などの詳細情報をこれで補助 アルベドも多少混ぜました

55.

テクスチャ 目立ったり いらない部分 邪魔な特徴点などは Photoshopにてコピースタンプとスポット修正でチマチマと修正

56.

テクスチャ その後サブスタンスペインターで ハイトベースのノーマルを追加したり シーム部分を調整したりしました

57.

テクスチャ 最終的に使用しているテクスチャは ベースカラー ノーマル ラフネス です

58.

本日のお品書き フォトグラメトリ グルーム 写真撮影 マテリアル モデル シーケンス テクスチャ エフェクト モーフ ポストプロセス

59.

モーフ モーフは先程もお話した形で 本来FACSで全表情パターンを作成したかったのですが 大変だったので3種の表情をブレンドするのみです

60.

モーフ それぞれの表情モデルはWrap3に持ち込み オプティカルフローラッピングで お手軽にブレンドシェイプ化しました

61.

モーフ Wrap3は汎用的な顔トポロジモデルでのラップが非常に簡単なので 平均的な人間の顔であればリトポいらずです (テクスチャの転送もWrap3で行いました)

62.

モーフ Wrap3で作成した各ブレンドシェイプは 次にHoudiniへ持ち込み 各表情筋の箇所ごとに切り分けて分布マップを作成します

63.

モーフ モデルはブレンドノードに繋いでfbxアウトプットすれば UE4にモーフターゲットとしてインポート可能です

64.

モーフ 一点 ブレンドノード後にアトリビュートを追加しても FBXエクスポートには反映されないのでご注意下さい

65.

本日のお品書き フォトグラメトリ グルーム 写真撮影 マテリアル モデル シーケンス テクスチャ エフェクト モーフ ポストプロセス

66.

グルーム グルームは最終的にはほとんど使用しなかったのですが 一応ひげや髪の毛などをテスト作成しました

67.

グルーム https://renderman.pixar.com/from-hick-to-hipster .abcデータはこちらのメイキングを参考にHoudiniで作成 プロジェクトファイルもダウンロード出来てとてもわかり易いです

68.

グルーム Hair Eyebrows Fuzz Eyelashes Mustache Beard 作成したグルームはMetaHumanを参考に6種類 毛を生やす場合はテクスチャに下地があったほうが馴染みやすいです

69.

グルーム 藤田 祐一郎(ちろナモ) 【Hair Groom入門】 小林 浩之(はのば) 【UE4 Hair & Groomでのリアルタイムファーレンダリング】 グルームの詳細に関しては ちろなもさんと小林さんの講演を是非見て頂けましたらと思うのですが

70.

グルーム 一点多分触れられていない補足として グルームのシミュレーションはNiagaraが使用されています

71.

グルーム Engine\Plugins\Runtime\HairStrands\Source\HairStrandsCore\ Private\GroomComponent.cpp プリセットで使用されているNiagaraシステムは HairStrands/Content/Emitters以下にそれぞれあり

72.

グルーム 中身を見ると 多くのノードがハードコーディングされてはいるのですが 風にノイズを入れるなどは簡単に拡張可能ですので ぜひお試し下さい

73.

本日のお品書き フォトグラメトリ グルーム 写真撮影 マテリアル モデル シーケンス テクスチャ エフェクト モーフ ポストプロセス

74.

マテリアル https://docs.unrealengine.com/4.26/ja/Resources/Showcases/DigitalHumans/ https://www.unrealengine.com/ja/metahuman-creator マテリアルに関しましては 基本的な構成はデジタルヒューマン&MetaHuman準拠です

75.

マテリアル 肌マテリアルはMetaHumanのものを使用しております

76.

マテリアル こちらのマテリアルは一見複雑な処理に見えるのですが

77.

マテリアル 必要な処理だけ残すと 実は非常にシンプルになります

78.

マテリアル 作成したベースカラー ラフネス ノーマルをアサインするだけで かなり良い感じに見えます(スペキュラはラフネスを流用しました)

79.

マテリアル シェーディングモデルはサブサーフェスプロファイルを使用していますので 微調整はサブサーフェスプロファイルアセットの方で行うと良いと思います

80.

マテリアル https://docs.unrealengine.com/4.26/ja/RenderingAndGraphics/Materials/LightingModels/SubSurfaceProfile/ 各パラメーターの詳細はドキュメントにて 丁寧に解説されておりますので 是非ご参考下さい

81.

マテリアル 目玉に関しましては こちらもMetahumanのEyeモデル Eyeシェーダーをそのまま使用しています

82.

マテリアル https://docs.unrealengine.com/4.26/ja/Resources/Showcases/DigitalHumans/ こちらもドキュメントが非常に丁寧で パラメーターを調整するだけで一般的な人間の眼は問題なく表現可能です

83.

マテリアル 非人間的な演出も可能ですし テクスチャを差し替えれば さらに柔軟に調整可能です

84.

マテリアル 一点 ドキュメントでも説明されているのですが 目はマテリアルとモデルに強い依存関係があるので なるべく改造して使って頂くと良いかと思います

85.

マテリアル https://docs.unrealengine.com/4.26/ja/Resources/Showcases/DigitalHumans/ 次にアイオクルーダー 地味ですが効果が非常に高いです

86.

マテリアル こちらもMetahumanと同様のものを使用しています

87.

マテリアル https://docs.unrealengine.com/4.26/ja/Resources/Showcases/DigitalHumans/ マテリアルで16サンプルブラーするという強気な実装ではありますが 非常に良い感じに馴染みます

88.

マテリアル オクルージョンも同様にパラメーターで制御可能ですので 眼球への自然なソフトシャドウが表現できます

89.

マテリアル オクルージョンあり オクルージョンなし オクルージョンのあるなしで 随分印象が変わるのがご確認頂けるかと思います

90.

マテリアル 一点 実際にモデルのAOを見ているわけではないので アニメーションさせる際はご注意下さい

91.

マテリアル https://docs.unrealengine.com/4.26/ja/Resources/Showcases/DigitalHumans/ また今回 口や歯に関しては 面倒 コスト削減のため割愛しました ごめんなさい

92.

本日のお品書き フォトグラメトリ グルーム 写真撮影 マテリアル モデル シーケンス テクスチャ エフェクト モーフ ポストプロセス

93.

シーケンス 表情はSequencerでモーフターゲットを制御しています

94.

シーケンス https://docs.unrealengine.com/4.26/ja/AnimatingObjects/SkeletalMeshAnimation/Persona/AnimCurves/ モーフターゲットの制御方法はAnimカーブとAnimBPの2通りありますが 今回はMetahuman準拠でカーブ実装しました

95.

シーケンス https://www.slideshare.net/EpicGamesJapan/metahumanegjufe2021s-248479831 Metahumanと同様にカーブからマテリアルにパラメーターを渡し モーフと同期したしわブレンドも行っています

96.

シーケンス また もしシーケンサーから直接モーフターゲットを制御したい場合は AnimBPを使用すると良いかと思います

97.

シーケンス AnimBPでモーフターゲットをセットし パラメーターをシネマティクスに公開することで制御可能になります

98.

シーケンス スケルタルメッシュの「エディタでのアニメーション更新」に チェックを入れると PIEせずともモーフを確認することが出来て便利です

99.

シーケンス 一点AnimBPはモーフを直接シーケンサーで制御できるメリットがありますが マテリアル制御にも別途トラックが必要となりますので 同期にご注意下さい

100.

本日のお品書き フォトグラメトリ グルーム 写真撮影 マテリアル モデル シーケンス テクスチャ エフェクト モーフ ポストプロセス

101.

エフェクト まずはお経のテクスチャに関しては 一文字一文字丁寧に 怨念込めて自ら手書きしました

102.

エフェクト それらをHoudiniを使ってクラスタリング 乱数を与えて一文字ごとのインデックステクスチャを作成

103.

エフェクト 順次出現するようにNiagaraでテクスチャサンプルして シミュレーションへ渡しています

104.

エフェクト 2D流体シミュレーションの基本的な構成は シミュレーションステージのサンプルを参考にしました

105.

エフェクト UE5早期アクセスのプラグインに追加されていますので 気になる方は実装を是非ご確認下さい

106.

エフェクト また コンテンツサンプルのNiagara Advancedマップも 非常に参考になるかと思います

107.

エフェクト Niagaraにおける2D流体シミュの実装に関して ざっくりと説明しますと

108.

エフェクト 粒子法 格子法 まず流体シミュレーションにはざっくり分けて 粒子法 と 格子法 があります

109.

エフェクト 粒子法 格子法 Niagaraではもちろん両方のパターンで実装が可能ですが 今回は格子法を使用しています

110.

エフェクト そして Niagaraでは新たにGrid2Dとという 格子法にぴったりのデータインターフェイスが用意されました

111.

エフェクト Grid2Dはその名の通り まさにシミュレーション用のGrid(格子)を 作成できる機能です

112.

エフェクト サンプルの実装をご確認頂けましたら 最初にシミュレーション用のGridを用意しているのがわかります

113.

エフェクト 各アトリビュートの可視化も可能ですので 是非お試し頂けたらと思います

114.

エフェクト https://docs.unrealengine.com/4.26/ja/WhatsNew/Builds/ReleaseNotes/4_25/ そしてさらに強力な機能 シミュレーションステージ

115.

エフェクト GPUエミッターでチェックを入れると使用可能になります

116.

エフェクト ここで 流体シミュレーション(格子法)とは何かと ざっくりご説明しますと

117.

エフェクト まず 各セルの

118.

エフェクト まず 各セルの Velosity(速度)に応じて

119.

エフェクト まず 各セルの Velosity(速度)に応じて Advect(移流)して

120.

エフェクト そのVelosity(速度)から

121.

エフェクト そのVelosity(速度)から

122.

エフェクト そのVelosity(速度)から Divergence(発散)を計算し

123.

エフェクト Divergence(発散)に応じてPressure(圧力)を計算

124.

エフェクト Divergence(発散)に応じてPressure(圧力)を計算

125.

エフェクト Pressure(圧力)を使用してVelosity(速度)を更新して

126.

エフェクト そのVelosity(速度)に応じて

127.

エフェクト そのVelosity(速度)に応じて

128.

エフェクト そのVelosity(速度)に応じて またAdvect(移流)して…

129.

エフェクト Advect Divergence Pressure ということを「繰り返す」処理です

130.

エフェクト シミュレーションステージとは まさにこの各処理を「繰り返す」ことが出来る機能です

131.

エフェクト Wikipedia contributors. "ガウス=ザイデル法." Wikipedia. Wikipedia, 24 Mar. 2021. Web. 12 Jul. 2021. Wikipedia contributors. "ヤコビ法." Wikipedia. Wikipedia, 12 Apr. 2021. Web. 12 Jul. 2021. 特に DivergenceからPressureを計算する際にはヤコビ法やガウス=ザイデル法などの反復法で近似解を出す為 特定の計算を何十回もループさせる必要があります 1処理であればこれまでのNiagaraでもアップデートタイミ ングで処理することで実装可能でしたが複数ループとなると自前でFor処理などを入れる必要がありました シミュレーションンステージはその任意処理の複数回実行を非常に簡単に行えるようにした機能です ちなみにNiagaraの格子法実装ではヤコビ法が使用されています(並列性があるため)

132.

エフェクト つまり 結論としましては Grid2Dとシミュレーションステージのおかげで Niagaraで2D GPU流体シミュレーションが非常に実装しやすくなったわけです!

133.

エフェクト さて 流体シミュレーションの説明はこれくらいにして 実際どのような実装を行ったかですが

134.

エフェクト ≒ ほぼ丸パク サンプルを参考に一部拡張改造しただけです

135.

エフェクト UE4の素晴らしいところは 豊富なサンプルをそのまま学習 実装してしまえるところですね

136.

エフェクト やったことは 先程の怨念テクスチャをNiagaraのGrid2Dに読み込み 2D流体の各実装はほぼそのまま 一部パラメーターや処理を追加したのみです

137.

エフェクト なんとなく文字を目に集めたりなど いくつか自前のForceで微調整したら あとはシーケンサーでライフサイクルトラックで動かすだけです

138.

エフェクト また ライフサイクルトラックのTipsとしまして Desired Ageにすることでエフェクトの逆再生が可能です

139.

エフェクト 逆再生は毎フレームすべて計算し直す必要があるため 複雑な処理では非常に重くなってしまうのですが

140.

エフェクト 印象的なエフェクト処理を行うことも可能かと思いますので 是非お試し頂けたらと思います

141.

本日のお品書き フォトグラメトリ グルーム 写真撮影 マテリアル モデル シーケンス テクスチャ エフェクト モーフ ポストプロセス

142.

ポストプロセス ポストプロセスでは 演出としてグリッチ処理を追加しました

143.

ポストプロセス https://www.unrealengine.com/marketplace/ja/product/tv-effect-glitch こちらも中身はマーケットプレイス製品を 丸パク 参考にさせて頂いております

144.

ポストプロセス 複数のグリッチ処理を 欲しい部分だけ切ったり貼ったり UE4の素晴らしいところは 豊富な販売アセットをそのまま学習実装…

145.

ポストプロセス また ポストプロセス系のマーケットプレイス購入後によくある 普通のマテリアル⇔ポストプロセスマテリアル のコンバートに関しては テクスチャサンプルをシーンテクスチャに置き換えることから試してみて下さい

146.

ポストプロセス 一点 シーケンサーではポストプロセスマテリアルを直接制御できませんので MPCかポスプロ自体切り替えで対応すると良いと思います マテリアルパラメータコレクション

147.

ポストプロセス デジタルヒューマンシーンからの流用で SSGIとオクルージョン色調整のポスプロマテリアルも使用しています

148.

ポストプロセス https://docs.unrealengine.com/4.26/ja/Resources/Showcases/DigitalHumans/ SSGIの処理に関しては中身がカスタムノードでちょっとややこしいので 是非ドキュメントをご参考頂けましたら (オクルージョン色調整の方は読みやすいと思います)

149.

本日のお品書き フォトグラメトリ グルーム 写真撮影 マテリアル モデル シーケンス テクスチャ エフェクト モーフ ポストプロセス

150.

完成です!!

151.

まとめ

152.

まとめ ●フォトグラメトリ 写真を適切に撮影すれば 高品質なモデルとテクスチャが手に入ります

153.

まとめ ●フォトグラメトリ 写真を適切に撮影すれば 高品質なモデルとテクスチャが手に入ります ●ドキュメント デジタルヒューマンの公式ドキュメントは非常に丁寧です 日本語訳もされていますので 是非ご一読下さい

154.

まとめ ●フォトグラメトリ 写真を適切に撮影すれば 高品質なモデルとテクスチャが手に入ります ●ドキュメント デジタルヒューマンの公式ドキュメントは非常に丁寧です 日本語訳もされていますので 是非ご一読下さい ●サンプルやマーケットプレイス 豊富な学習リソースですので 是非皆様お役立て頂けたらと思います

155.

皆様も 次の耳なし芳一に なって頂けましたら幸いです

156.

ご清聴ありがとうございました (アンケートへのご回答 是非よろしくお願い致します)