UE4におけるデバイス非依存のAR環境プロトタイプ開発
みなさん、こんにちは!
新規事業開発部の向井です。
弊社では3DCGを活用したAI向け教師画像生成ソリューションを展開していますが、モノによっては全てCGにするとコストがかなりかかってしまう場合があります。例えばコンビニやスーパーの商品棚全てCGで作るとアセット量が大変なことになります。
そこで必要なところだけCGにしてその他は実写、つまりAR(Augmented Reality)、MR(Mixed Reality)を活用することで制作コストを下げられるのではと考えました。
教師画像生成には人物生成など含めUnreal Engine 4(以下UE4)を活用することが多いのでエンジンはUE4を採用しました。
また、監視カメラやその他のカメラにも対応したいため、UE4がサポートしているAR系のライブラリは使用せず独自実装で対応することにしました。
手始めに最低限必要な機能とクオリティの確認、および教師画像への適用(特に監視カメラ)をイメージできる題材という目標でプロトタイプの検討を行いました。
本当はコンビニなどを撮影して、そこにCGの人物を置くなどしたかったのですが、時間も(予算も)なかったのでコンビニの代わりに社内会議室、CGは人物1人というシンプルなものにしました。
まずはリファレンス画像の撮影から。
コロナ下のこの日の夜はオフィスに撮影機材持ってそうな人がいない状態。。。カメラとして使えるのは自分のiPhone、三脚は見つかったがiPhoneと三脚を固定する器具がない、でも早くリファレンス画像と背景は撮影しておきたい。。。
仕方ないので、iPhoneを輪ゴムで三脚に括り付けて固定、自分をモデルにして撮影しましたww
プロトタイプ用の背景画像も同じ条件(自分が抜けた状態)で撮影。
電気をつけた背景 電気を消した背景
このリファレンスを目指して(男性モデルのクオリティは置いておいてw)プロトタイプを作成していきます。今回の目的を達成するための作業は以下3つです。
- 動画・静止画を読み込み、バックグラウンドへ(背景として)描画
- 人物のCGを実写(机)でちゃんと隠すための遮蔽オブジェクト(勝手に命名)の設定
- 実写とCGの位置調整・ライティング調整
1の背景はプログラム的には動画(ビデオカメラからの入力も含む)・静止画の双方に対応しました。今回コンテンツとしては静止画を背景にしていますが、WEBカメラなどPCに接続されたカメラからのライブ入力を背景とするリアルタイムコンテンツとしてもARを活用できます。
2の遮蔽オブジェクトは隠すだけに使用するため荒いモデルで問題ありません。例えばコンビニの棚で言えば、棚と陳列されているものひっくるめて簡単なモデルを作るだけでいいです。つまり、モデルの制作コストが非常に低くすみます。
これがAR活用のコスト削減の肝となります。
3の位置調整は本来プログラム側で自動的に行えるようにするものですが、今回は工期を短縮するために手作業で行いました。
ARの画像合成は至極シンプルで、背景描画して、遮蔽オブジェクトとなるモデルをロードして一番最初にデプスバッファにのみ描画、そのあとCGアセットを描画すればデプステストで勝手に隠したいところを隠してくれる感じのはずでした。
ところがUE4のパイプラインだと最初に遮蔽モデルのデプスだけ描画して、そのあとその他のアセットを描画するというのが一筋縄では行かず、世の中に情報もほぼない中トライ&エラーを余儀なくされました。
という感じで思ったより苦労しましたがどんな感じに仕上がったか紹介させていただきます。「1.背景合成」→「2.机モデル配置」→「3.机オブジェクトの遮蔽オブジェクト化」→「4.位置調整・ライティング調整」の順番に結果を並べていきます。(なお、ライティング調整前のCGは見やすいように敢えて明るくしております。また、位置調整はあらかじめ行った状態で画像を撮影しております。)
続いてリファレンスとの比較です。
今回机しか遮蔽オブジェクト対応してなかったので、リファレンスの人物の位置とCGキャラの位置が違うことはご了承ください。服の色も合わせればよかったと思っております。。。
まあ、クオリティ的には及第点と言ったところでしょうか。
一般的なデジタルカメラで撮影した場合、部屋(カメラでの撮影対象)が暗いと明度を無理やり持ち上げるため画像にノイズが乗ります。そのため、CGに対しても同様のノイズ処理等を掛ける必要があります。
今回はUE4で簡単に設定できるジッタリングノイズ(ポストプロセス)をCG部分に対して適用してみました。
カメラのノイズの特徴に合わせたノイズをポストプロセスで適用することでなじみ具合が向上すると思います。
今回は初回ということで最低限の検証のみとなりましたが、色々やりたい事はあります。撮影対象をコンビニにしてみたいとか、カメラを実際の監視カメラにしたいとか、自動位置合わせ(トラッキング)対応したいとか。
教師画像だけでなくデザインレビュー用のAR環境として、高解像度のARグラス対応してみたいとか。
デバイス非依存前提で開発してるため今後登場する様々な映像機器・ARハードウェアを使って色んな可能性を試したいと考えております。
こんな事をやったらいいなどご意見ございましたら是非お聞かせいただければ幸いです!
この度はお読みいただきありがとうございました!