利用例:車内環境のシミュレーション
Avator Generatorのアバターは車室内空間、例えばドラビングモニタリング(運転中のドライバーの異常をセンサーが感じ取り警告を発することで事故を未然に防ぐ)システムの赤外線カメラによるルックを再現できます。
Avator Generatorには、アバターを生成するエディタ機能と、生成したアバターをActor化する機能があり、車内環境の撮影にはActor化したアバター(以降、BP_Avatar)が使用されています。BP_Avatarには通常のスケルタルメッシュなどのようにAnimationBPによるアニメーション制御ができるため、ドライバーの姿勢をとらせて運転席に座らせたり、同乗者として助手席に座らせたりすることができます。また、BP_Avatarは人物の生成に必要な全てのパラメータをEditableで持っているため、Avator Generatorのエディタ機能で生成したアバタープリセットデータをアバターActorに読み込ませることで、すでにドライバーとして座らせているアバターを別の人物に置き換えることもできます。プリセットで呼び出した人物によっては身長や骨格が変わるためハンドルを上手く握らない状態になりますが、シート位置の調整とAnimationBPによるIK制御を組み合わせることで、小柄な女性や大柄な男性でも自然にハンドルを握らせることができます。
ドライバーの異常を感知する車載センサーの多くは赤外線カメラであるため、通常の光学カメラによるレンダリング以外に、広角の赤外線カメラで撮影した画像を再現する必要があります。赤外線カメラを通して見る世界は一見モノクロにしただけのように見えますが、実際には被写体の素材毎の赤外線反射率によって明るさが決まるため、単純なポストプロセスによる処理では再現できません。そのため、肌や眼球、髪の毛などの赤外線反射率を調べ、マテリアルにパラメータとしてもたせることで対応しています。衣服に関しては生地の色などと同様に素材も多様なため、赤外線反射率を直接設定できるようにしました。
広角に関してはEpic Gamesの公式資料にも記載されている「Paniniプロジェクション」を使用しています。その際、画像がポストプロセスで歪むことになるため、顔の特徴点の正しい座標が取得できなくなってしまいます。そのため、まずはそれぞれの特徴点の3D座標を取得し、Paniniプロジェクションを適用した状態でその座標に点だけを描画します。その後、フレームバッファ上の点が描かれたピクセルを走査することで、広角レンズから見たときのランドマークの画面上の位置を取得しています。
<11>赤外線カメラの表現
赤外線カメラによる撮影を再現するため、ポストプロセスによる処理だけではなく、各マテリアル側にも対応を入れています。図はポストプロセスマテリアルで彩度を下げただけの画像と、肌や眼球のマテリアルによる対応を有効にして赤外線カメラを再現した画像の比較です。赤外線カメラによる撮影では素材の赤外線反射率で明るさが決まるため、肌の色のちがいが差として現れづらく、褐色の肌でも明るく映ります。皮膚の下にあるヒゲが透過するため濃く映ったり、水分を含んだ眼球が少し暗く映るなどの特徴があります
▲マテリアル側の設定も追加した状態。赤外線カメラの特徴がより詳細に再現されている
▲車内を撮影している赤外線カメラの映像をシミュレートした画像を生成した実例です。人物の見た目や表情、身長、姿勢、運転手以外の人物のON/OFF、太陽の位置や明るさなどがGUIから動的に変更可能です。また、カメラの画角を変更したり、任意の位置に移動することも可能になっています
All images rights reserved © Ignis Imageworks Corp.
<12>様々なビジュアライゼーションへの対応
例えば車内のアセットは、赤外線カメラだけではなく通常のカメラでの撮影にも対応できるよう、マテリアルなどもそれなりにしっかり作成しています。ドローン移動によりカメラの配置が自由にできるようになっていますが、コリジョンがないとあちこち突き抜けて位置を見失ってしまうため、特にダッシュボード周辺にはシンプルなコリジョンを置いています。ただし、ハンドルに細かい凹凸にまでコリジョンがあるとカメラの移動を阻害するため、最低限のコリジョンにすることでストレスなく移動できるようにしています
All images rights reserved © Ignis Imageworks Corp.
生成したアバターは通常のキャラクターと同様にレベルに配置してアニメーションさせることができます。実例としてこの図ではドライバーの身長を変更しても運転姿勢を維持するため、AnimationBPで左右の腕にIKを設定し、ハンドルにペアレントしたNullの座標をIKのエフェクターロケーションに渡しています。中間の身長のモデルで運転姿勢モーションを作成し、それより大きい身長のときにはシートを後ろに下げ、小さいときは前に出すことで、常に自然な運転姿勢をとるようにしています
▲アバターをレベルに配置
▲平均的な身長
All images rights reserved © Ignis Imageworks Corp.
Avator Generatorの今後について
Avator Generatorを利用した教師データの生成のほかにも、例えば横断歩道を渡る人物の生成のような群衆を前提としたケースでも活用できると考えています。また、活用の範囲を増やすため、例えば子供から大人までリニアに生成できたり、痩せ型や肥満体型などにも対応していきたいと考えています。ビデオ会議が多く利用される昨今においては、自分の顔の変わりにアバターを映しておきたい、みたいな需要もあるかもしれません。
あらゆる需要に対応できる拡張性や汎用性もAvator Generatorの特徴なので、また別の機会に面白い活用事例が紹介できれば良いなと思っています。
もともとは少ないモーフターゲットでできるだけ多くの人物を生成する事を目指していたAvator Generatorですが、モーフターゲット自体をAvator Generatorで生成できるようになれば無限に人物を生み出せるんじゃないか?
みたいな妄想も、今後の機能拡張次第では現実になるかもしれません(笑)
<13>FBX形式による書き出し
エディットしたアバターは特徴や表情を維持したままFBX形式で出力できます。図は出力したFBXデータをWindows 10の3Dビューアで描画したものです
All images rights reserved © Ignis Imageworks Corp.
<14>特徴点の取得
機械学習用の教師データとして使用するためには、人物の目や口などのランドマーク座標(特徴点)を出力する必要があります。特徴点はあらかじめメッシュの特定の頂点のインデックスを決めておくことで、表情などが変わっても正しい位置を見つけられるようになっています。広角撮影時は特徴点の画面座標がポストプロセスによる処理で変わってしまうため、特徴点となる頂点を点として同時に描画し、その点をピクセル走査で抽出することで正しい座標を取得しています
▲ここまでで紹介したパラメータ以外にも、例えば輪郭や耳の形状、ホクロの位置、眼鏡の種類とON/OFFなどで様々な人物を生成可能です
All images rights reserved © Ignis Imageworks Corp.
info.