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
Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/
Metahumanを 使わずに UE4で 耳なし芳一になる10の方法 Epic Games Japan 斎藤 修 Technical Artist Developper Relations
自己紹介 斎藤 修 Epic Games Japan Technical Artist Developer Relations https://twitter.com/shiba_zushi ●ライセンシー様のサポートしています ●以前は規模大きめのコンソール開発してました ●その前は漫画とか描いてました ●UE4とHoudiniが好物です
ある日私は思いました
耳なし芳一になりたい
しかし 自分で自分にお経を書くのは難しい
よし! ならば UE4で作ろう!
という事で 今回の制作物です
本日はこちらのメイキングを通して UE4におけるデジタルヒューマンの技術についてお話しできればと思います
本日のお品書き フォトグラメトリ グルーム 写真撮影 マテリアル モデル シーケンス テクスチャ エフェクト モーフ ポストプロセス
本日のお品書き フォトグラメトリ グルーム 写真撮影 マテリアル モデル シーケンス テクスチャ エフェクト モーフ ポストプロセス
フォトグラメトリ https://youtu.be/q0MTeupfXME フォトグラメトリとは 様々なアングルから写真を撮影 特徴点を解析し 3Dモデルを作る という手法
フォトグラメトリ ●良いところ 写真を撮るだけでめちゃくちゃ高品質なモデルが作成できる ●悪いところ たくさん写真を撮る必要がある 実物があるものでないといけない
フォトグラメトリ 最近Epicの一員となったスーパーフォトグラメトリ集団
フォトグラメトリ 最近Epicの一員となったスーパーフォトグラメトリ集団 https://www.3lateral.com/index.html
フォトグラメトリ 最近Epicの一員となったスーパーフォトグラメトリ集団 https://www.3lateral.com/index.html https://quixel.com/
フォトグラメトリ そしてそれらのスペシャリストが使用しているツール https://www.capturingreality.com/
本日のお品書き フォトグラメトリ グルーム 写真撮影 マテリアル モデル シーケンス テクスチャ エフェクト モーフ ポストプロセス
写真撮影 今回僕は 一人で 自宅で 制作していましたので 同時に数百枚撮影できるような専用のスタジオなどではなく カメラ一台で頑張ってフォトグラメトリしました
写真撮影 シングルカメラでフォトグラメトリする場合 本来 カメラマンが被写体の周りをグルグルと回って あらゆる角度から撮影するのですが
写真撮影 今回は自分で自分を撮影する必要があったので カメラを固定して 椅子に座ってクルクル回って撮影することにしました
写真撮影 使用機材は カメラ(D750) レンズ(NIKKOR 24-120mm f/4G) 三脚 ディフューザー(Round Flash) スピードライト(SB-700) レリーズではなくスマホアプリでリモート撮影しました
写真撮影 ディフューザーやスピードライトを使用した理由は 今回上半身裸で撮影した都合上 屋外で撮影するのが恥ずかし過ぎたからです 室内撮影による光量不足を スピードライトとディフューザーでカバーしています
写真撮影 めっちゃラク もしボッチではなく カメラマンの人を用意できるなら 曇りの日に屋外日陰で撮ってもらう方が絶対に物凄く楽です
写真撮影 そして モデルとしての覚悟
写真撮影 毛髪類はクォリティを損ねたので“可能な範囲で”すべて剃りました (髪の毛 ひげ うぶ毛 まゆげ まつげ など)
写真撮影 https://www.capturingreality.com/SampleDatasets 3DScanLA Studios 本当は剃るより全て抜く方が良いです (痛かったので剃る方で妥協しました まつ毛剃るの怖かったです)
写真撮影 また 顔の特徴点を増やす為に シールやマジックで印を追加しました (油性マジックがオススメです)
写真撮影 撮影枚数は 三脚で4段の高さ調整をしつつ 各角度から大体10℃刻みで36枚 4×36で150枚ほど撮影
写真撮影 トリミングも 有効です 壁紙の模様などが 出ないようにボカす 撮影の際には背景の特徴点を出さないように 被写界深度は浅めの方が良いと思います(今回は60mm F2.8で撮影)
写真撮影 表情は死ぬ気でキープしました(かなり辛い) まぶたとかはどうしても動くので ある程度の精度落ちは諦めました
写真撮影 FACSでフェイシャルモーフを作成予定だったのですが 撮影が大変だったので3種だけ表情差分を作成しました
写真撮影 https://adamspring.co.uk/ FACSの詳細に関してはこちらのブログがとてもわかり易いです
本日のお品書き フォトグラメトリ グルーム 写真撮影 マテリアル モデル シーケンス テクスチャ エフェクト モーフ ポストプロセス
モデル https://www.capturingreality.com/ 前述の通り 今回モデル化にはRealityCaptureを使用しました
モデル https://www.capturingreality.com/Products リアリティキャプチャはEpicファミリーになったことで お値段お得になっております
モデル https://www.capturingreality.com/Products PPIはエクスポートしたい時にだけお金を払えば良いシステム トライ・アンド・エラーは無料!
モデル https://www.capturingreality.com/Products 買い切り永久ライセンスもあります
モデル 作成手順は非常に簡単です 撮影した写真をインポートして
モデル アライメントしてカメラ位置を推定 点群ができます
モデル モデルの計算を行って
モデル テクスチャを作成
モデル 最後にエクスポートすれば完了です 簡単! (お金がかかるのはここだけ!)
モデル 今回使用したパラメーター設定です 大体の場合アライメントで問題が出るため精度を上げています
モデル ただ 上げればいいということもありません アライメントが駄目な場合は 写真撮影に問題がある事が大半なので 撮影し直した方が良いことが多いです
モデル ある程度はコントロールポイントでリカバリすることも可能ですが 丁寧に写真撮影することが一番重要です
モデル https://support.capturingreality.com/hc/en-us/articles/115001528211 -Taking-pictures-for-photogrammetry 適切な写真撮影の仕方はこちらの動画をご参考ください
モデル さて リアリティキャプチャからエクスポート後は モデルの崩れてる部分の修正を行います
モデル 私はスカルプトが全く得意ではないので ZbrushでSmoothとCrayブラシで破綻したところをチクチク綺麗にしました
モデル https://youtu.be/Lfen-BSwWcE スカルプトが得意な方は フォトグラメトリでかなり詳細なテクスチャが出来ているので それを元に毛穴などを掘るのも良いと思います
本日のお品書き フォトグラメトリ グルーム 写真撮影 マテリアル モデル シーケンス テクスチャ エフェクト モーフ ポストプロセス
テクスチャ 先程もお話した形で フォトグラメトリによって非常に高精細なベーステクスチャはありますが 毛穴レベルの情報は取れていない事があります
テクスチャ https://texturing.xyz/ そこで今回は楽をするクォリティ向上の為に 販売されているテクスチャも合わせて使用しました
テクスチャ 非常に高精細な各マップが販売されており フォトグラメトリでカバーしきれない毛穴などの詳細情報をこれで補助 アルベドも多少混ぜました
テクスチャ 目立ったり いらない部分 邪魔な特徴点などは Photoshopにてコピースタンプとスポット修正でチマチマと修正
テクスチャ その後サブスタンスペインターで ハイトベースのノーマルを追加したり シーム部分を調整したりしました
テクスチャ 最終的に使用しているテクスチャは ベースカラー ノーマル ラフネス です
本日のお品書き フォトグラメトリ グルーム 写真撮影 マテリアル モデル シーケンス テクスチャ エフェクト モーフ ポストプロセス
モーフ モーフは先程もお話した形で 本来FACSで全表情パターンを作成したかったのですが 大変だったので3種の表情をブレンドするのみです
モーフ それぞれの表情モデルはWrap3に持ち込み オプティカルフローラッピングで お手軽にブレンドシェイプ化しました
モーフ Wrap3は汎用的な顔トポロジモデルでのラップが非常に簡単なので 平均的な人間の顔であればリトポいらずです (テクスチャの転送もWrap3で行いました)
モーフ Wrap3で作成した各ブレンドシェイプは 次にHoudiniへ持ち込み 各表情筋の箇所ごとに切り分けて分布マップを作成します
モーフ モデルはブレンドノードに繋いでfbxアウトプットすれば UE4にモーフターゲットとしてインポート可能です
モーフ 一点 ブレンドノード後にアトリビュートを追加しても FBXエクスポートには反映されないのでご注意下さい
本日のお品書き フォトグラメトリ グルーム 写真撮影 マテリアル モデル シーケンス テクスチャ エフェクト モーフ ポストプロセス
グルーム グルームは最終的にはほとんど使用しなかったのですが 一応ひげや髪の毛などをテスト作成しました
グルーム https://renderman.pixar.com/from-hick-to-hipster .abcデータはこちらのメイキングを参考にHoudiniで作成 プロジェクトファイルもダウンロード出来てとてもわかり易いです
グルーム Hair Eyebrows Fuzz Eyelashes Mustache Beard 作成したグルームはMetaHumanを参考に6種類 毛を生やす場合はテクスチャに下地があったほうが馴染みやすいです
グルーム 藤田 祐一郎(ちろナモ) 【Hair Groom入門】 小林 浩之(はのば) 【UE4 Hair & Groomでのリアルタイムファーレンダリング】 グルームの詳細に関しては ちろなもさんと小林さんの講演を是非見て頂けましたらと思うのですが
グルーム 一点多分触れられていない補足として グルームのシミュレーションはNiagaraが使用されています
グルーム Engine\Plugins\Runtime\HairStrands\Source\HairStrandsCore\ Private\GroomComponent.cpp プリセットで使用されているNiagaraシステムは HairStrands/Content/Emitters以下にそれぞれあり
グルーム 中身を見ると 多くのノードがハードコーディングされてはいるのですが 風にノイズを入れるなどは簡単に拡張可能ですので ぜひお試し下さい
本日のお品書き フォトグラメトリ グルーム 写真撮影 マテリアル モデル シーケンス テクスチャ エフェクト モーフ ポストプロセス
マテリアル https://docs.unrealengine.com/4.26/ja/Resources/Showcases/DigitalHumans/ https://www.unrealengine.com/ja/metahuman-creator マテリアルに関しましては 基本的な構成はデジタルヒューマン&MetaHuman準拠です
マテリアル 肌マテリアルはMetaHumanのものを使用しております
マテリアル こちらのマテリアルは一見複雑な処理に見えるのですが
マテリアル 必要な処理だけ残すと 実は非常にシンプルになります
マテリアル 作成したベースカラー ラフネス ノーマルをアサインするだけで かなり良い感じに見えます(スペキュラはラフネスを流用しました)
マテリアル シェーディングモデルはサブサーフェスプロファイルを使用していますので 微調整はサブサーフェスプロファイルアセットの方で行うと良いと思います
マテリアル https://docs.unrealengine.com/4.26/ja/RenderingAndGraphics/Materials/LightingModels/SubSurfaceProfile/ 各パラメーターの詳細はドキュメントにて 丁寧に解説されておりますので 是非ご参考下さい
マテリアル 目玉に関しましては こちらもMetahumanのEyeモデル Eyeシェーダーをそのまま使用しています
マテリアル https://docs.unrealengine.com/4.26/ja/Resources/Showcases/DigitalHumans/ こちらもドキュメントが非常に丁寧で パラメーターを調整するだけで一般的な人間の眼は問題なく表現可能です
マテリアル 非人間的な演出も可能ですし テクスチャを差し替えれば さらに柔軟に調整可能です
マテリアル 一点 ドキュメントでも説明されているのですが 目はマテリアルとモデルに強い依存関係があるので なるべく改造して使って頂くと良いかと思います
マテリアル https://docs.unrealengine.com/4.26/ja/Resources/Showcases/DigitalHumans/ 次にアイオクルーダー 地味ですが効果が非常に高いです
マテリアル こちらもMetahumanと同様のものを使用しています
マテリアル https://docs.unrealengine.com/4.26/ja/Resources/Showcases/DigitalHumans/ マテリアルで16サンプルブラーするという強気な実装ではありますが 非常に良い感じに馴染みます
マテリアル オクルージョンも同様にパラメーターで制御可能ですので 眼球への自然なソフトシャドウが表現できます
マテリアル オクルージョンあり オクルージョンなし オクルージョンのあるなしで 随分印象が変わるのがご確認頂けるかと思います
マテリアル 一点 実際にモデルのAOを見ているわけではないので アニメーションさせる際はご注意下さい
マテリアル https://docs.unrealengine.com/4.26/ja/Resources/Showcases/DigitalHumans/ また今回 口や歯に関しては 面倒 コスト削減のため割愛しました ごめんなさい
本日のお品書き フォトグラメトリ グルーム 写真撮影 マテリアル モデル シーケンス テクスチャ エフェクト モーフ ポストプロセス
シーケンス 表情はSequencerでモーフターゲットを制御しています
シーケンス https://docs.unrealengine.com/4.26/ja/AnimatingObjects/SkeletalMeshAnimation/Persona/AnimCurves/ モーフターゲットの制御方法はAnimカーブとAnimBPの2通りありますが 今回はMetahuman準拠でカーブ実装しました
シーケンス https://www.slideshare.net/EpicGamesJapan/metahumanegjufe2021s-248479831 Metahumanと同様にカーブからマテリアルにパラメーターを渡し モーフと同期したしわブレンドも行っています
シーケンス また もしシーケンサーから直接モーフターゲットを制御したい場合は AnimBPを使用すると良いかと思います
シーケンス AnimBPでモーフターゲットをセットし パラメーターをシネマティクスに公開することで制御可能になります
シーケンス スケルタルメッシュの「エディタでのアニメーション更新」に チェックを入れると PIEせずともモーフを確認することが出来て便利です
シーケンス 一点AnimBPはモーフを直接シーケンサーで制御できるメリットがありますが マテリアル制御にも別途トラックが必要となりますので 同期にご注意下さい
本日のお品書き フォトグラメトリ グルーム 写真撮影 マテリアル モデル シーケンス テクスチャ エフェクト モーフ ポストプロセス
エフェクト まずはお経のテクスチャに関しては 一文字一文字丁寧に 怨念込めて自ら手書きしました
エフェクト それらをHoudiniを使ってクラスタリング 乱数を与えて一文字ごとのインデックステクスチャを作成
エフェクト 順次出現するようにNiagaraでテクスチャサンプルして シミュレーションへ渡しています
エフェクト 2D流体シミュレーションの基本的な構成は シミュレーションステージのサンプルを参考にしました
エフェクト UE5早期アクセスのプラグインに追加されていますので 気になる方は実装を是非ご確認下さい
エフェクト また コンテンツサンプルのNiagara Advancedマップも 非常に参考になるかと思います
エフェクト Niagaraにおける2D流体シミュの実装に関して ざっくりと説明しますと
エフェクト 粒子法 格子法 まず流体シミュレーションにはざっくり分けて 粒子法 と 格子法 があります
エフェクト 粒子法 格子法 Niagaraではもちろん両方のパターンで実装が可能ですが 今回は格子法を使用しています
エフェクト そして Niagaraでは新たにGrid2Dとという 格子法にぴったりのデータインターフェイスが用意されました
エフェクト Grid2Dはその名の通り まさにシミュレーション用のGrid(格子)を 作成できる機能です
エフェクト サンプルの実装をご確認頂けましたら 最初にシミュレーション用のGridを用意しているのがわかります
エフェクト 各アトリビュートの可視化も可能ですので 是非お試し頂けたらと思います
エフェクト https://docs.unrealengine.com/4.26/ja/WhatsNew/Builds/ReleaseNotes/4_25/ そしてさらに強力な機能 シミュレーションステージ
エフェクト GPUエミッターでチェックを入れると使用可能になります
エフェクト ここで 流体シミュレーション(格子法)とは何かと ざっくりご説明しますと
エフェクト まず 各セルの
エフェクト まず 各セルの Velosity(速度)に応じて
エフェクト まず 各セルの Velosity(速度)に応じて Advect(移流)して
エフェクト そのVelosity(速度)から
エフェクト そのVelosity(速度)から
エフェクト そのVelosity(速度)から Divergence(発散)を計算し
エフェクト Divergence(発散)に応じてPressure(圧力)を計算
エフェクト Divergence(発散)に応じてPressure(圧力)を計算
エフェクト Pressure(圧力)を使用してVelosity(速度)を更新して
エフェクト そのVelosity(速度)に応じて
エフェクト そのVelosity(速度)に応じて
エフェクト そのVelosity(速度)に応じて またAdvect(移流)して…
エフェクト Advect Divergence Pressure ということを「繰り返す」処理です
エフェクト シミュレーションステージとは まさにこの各処理を「繰り返す」ことが出来る機能です
エフェクト 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の格子法実装ではヤコビ法が使用されています(並列性があるため)
エフェクト つまり 結論としましては Grid2Dとシミュレーションステージのおかげで Niagaraで2D GPU流体シミュレーションが非常に実装しやすくなったわけです!
エフェクト さて 流体シミュレーションの説明はこれくらいにして 実際どのような実装を行ったかですが
エフェクト ≒ ほぼ丸パク サンプルを参考に一部拡張改造しただけです
エフェクト UE4の素晴らしいところは 豊富なサンプルをそのまま学習 実装してしまえるところですね
エフェクト やったことは 先程の怨念テクスチャをNiagaraのGrid2Dに読み込み 2D流体の各実装はほぼそのまま 一部パラメーターや処理を追加したのみです
エフェクト なんとなく文字を目に集めたりなど いくつか自前のForceで微調整したら あとはシーケンサーでライフサイクルトラックで動かすだけです
エフェクト また ライフサイクルトラックのTipsとしまして Desired Ageにすることでエフェクトの逆再生が可能です
エフェクト 逆再生は毎フレームすべて計算し直す必要があるため 複雑な処理では非常に重くなってしまうのですが
エフェクト 印象的なエフェクト処理を行うことも可能かと思いますので 是非お試し頂けたらと思います
本日のお品書き フォトグラメトリ グルーム 写真撮影 マテリアル モデル シーケンス テクスチャ エフェクト モーフ ポストプロセス
ポストプロセス ポストプロセスでは 演出としてグリッチ処理を追加しました
ポストプロセス https://www.unrealengine.com/marketplace/ja/product/tv-effect-glitch こちらも中身はマーケットプレイス製品を 丸パク 参考にさせて頂いております
ポストプロセス 複数のグリッチ処理を 欲しい部分だけ切ったり貼ったり UE4の素晴らしいところは 豊富な販売アセットをそのまま学習実装…
ポストプロセス また ポストプロセス系のマーケットプレイス購入後によくある 普通のマテリアル⇔ポストプロセスマテリアル のコンバートに関しては テクスチャサンプルをシーンテクスチャに置き換えることから試してみて下さい
ポストプロセス 一点 シーケンサーではポストプロセスマテリアルを直接制御できませんので MPCかポスプロ自体切り替えで対応すると良いと思います マテリアルパラメータコレクション
ポストプロセス デジタルヒューマンシーンからの流用で SSGIとオクルージョン色調整のポスプロマテリアルも使用しています
ポストプロセス https://docs.unrealengine.com/4.26/ja/Resources/Showcases/DigitalHumans/ SSGIの処理に関しては中身がカスタムノードでちょっとややこしいので 是非ドキュメントをご参考頂けましたら (オクルージョン色調整の方は読みやすいと思います)
本日のお品書き フォトグラメトリ グルーム 写真撮影 マテリアル モデル シーケンス テクスチャ エフェクト モーフ ポストプロセス
完成です!!
まとめ
まとめ ●フォトグラメトリ 写真を適切に撮影すれば 高品質なモデルとテクスチャが手に入ります
まとめ ●フォトグラメトリ 写真を適切に撮影すれば 高品質なモデルとテクスチャが手に入ります ●ドキュメント デジタルヒューマンの公式ドキュメントは非常に丁寧です 日本語訳もされていますので 是非ご一読下さい
まとめ ●フォトグラメトリ 写真を適切に撮影すれば 高品質なモデルとテクスチャが手に入ります ●ドキュメント デジタルヒューマンの公式ドキュメントは非常に丁寧です 日本語訳もされていますので 是非ご一読下さい ●サンプルやマーケットプレイス 豊富な学習リソースですので 是非皆様お役立て頂けたらと思います
皆様も 次の耳なし芳一に なって頂けましたら幸いです
ご清聴ありがとうございました (アンケートへのご回答 是非よろしくお願い致します)