リアルタイムCGを用いたビジュアライゼーションのニーズは、エンタープライズ(非エンタメ)領域にも広がりをみせている。そこで、ゲームエンジンを用いたCGコンテンツ開発を精力的に手がけるCUROのシニアテクニカルアーティスト 田所伸一郎氏に、Unreal Engineによるエンタープライズ向けツール開発事例を紹介してもらった。
TEXT_田所伸一郎(CURO)
EDIT_沼倉有人 / Arihito Numakura(CGWORLD)、山田桃子 / Momoko Yamada
-
-
田所伸一郎(CURO)
株式会社CURO シニアテクニカルアーティスト。モデルやモーションなどアセット制作のリード業務を経てテクニカルアーティストに転身し、以降は各種アートアセットの制作やワークフロー整備、ツールやシェーダの開発、ルックや表現手法の提案などで多数のコンシューマタイトル開発やアプリケーション開発に関わる。現在はCUROの社員として、ゲーム開発やエンタープライズ案件の開発に従事しながら、CEDECへの登壇などによる情報発信も精力的に行う。UE使用歴は5年
curo.co.jp
ゲーム開発のノウハウをエンタープライズ開発へ
品質管理や自動運転など、機械による自動処理が必要なあらゆる分野において、機械学習のための教師データや検証用画像へのニーズが高まっています。特に人物を対象とした実写での教師データの作成には、演者の雇用や撮影に要する時間など、多数のサンプルを得るには撮影に多大なコストがかかります。そういった問題をCGで解決しようという試みはこれまでもされてきましたが、人物モデルを多数作成し、それぞれに表情やポーズをつけてレンダリングするとなると、実際に演者を撮影するより工数がかかるケースもありました。Unreal Engine 4(以下、UE)などのゲームエンジンを利用した高速かつ高品位なプロシージャル画像生成は、そのようなニーズに合致する技術です。
今回紹介する「Avator Generator」(開発元:イグニス・イメージワークス、販売元:シリコンスタジオ)はまさにそのようなニーズに応えるために開発されたツールです。ゲーム開発においてはさほど珍しくもないアバター生成ですが、用途が教師データ生成である場合、目や鼻の位置を数値で出力するための機能など独自の実装が必要になります。とは言え、基本的なしくみはモーフィングやボーンによる変形、マテリアルによる質感制御など、ゲーム開発で馴染みのある手法を用いることがほとんどです。
また、30FPS(あるいは60FPS)を目標とするゲーム開発ほどには描画を最適化する必要はないものの、大量の教師データを生成するためには1つの画像の生成にそれほど時間はかけられないため、結局はゲーム用アセットと同等のアセット制限(ポリゴン数やテクスチャ解像度など)が必要です。つまり、ゲーム開発でアバターを作成した経験があれば、その技術は機械学習用教師データ生成の開発にも活かすことができます。
アバターだけではなく、例えば「物理シミュレーションを利用した部品のランダム配置」「プロシージャルテクスチャを利用した傷画像生成」など、ゲーム開発で培った多くの技術は、実際に多くの教師データ生成に活用されています。コンシューマゲーム業界には苦しい時代になったという話をよく聞きますが、ゲーム業界で身につけたモデル制作やプロシージャル技術、描画の知識などを品質管理や自動運転などの産業開発で発揮できるようになれば、クリエイターの市場価値が上がり、待遇の向上によるクリエイター人口の増加や教育の充実など期待できることも多く、結果的にあらゆる業界の活性化につながっていくのではと考えています。
<1>基本の3人
Avator Generatorの開発にあたり、まずは画像の3種類の人種を基準としました
▲モンゴロイド【上段左】をベースメッシュとし、コーカソイド【上段右】とネグロイド【下段】をモーフターゲットとして作成しています。テクスチャはカラーとノーマルを人種ごとに作成し、モーフィングと同時にマテリアルで線形補間しています。3種類の人種の特徴を線形補間することにより、マルチレイシャルの人物生成にも対応しています。モーフターゲット作成時のルールとして、「眼球の位置と、顎や首の関節の位置は固定」としています
All images rights reserved © Ignis Imageworks Corp.
<2>表情
表情は、目周辺、鼻周辺、口周辺に対し、それぞれ「微笑み」「怒り」のモーフターゲットを作成しています。モーフィングだけでは十分な見た目にならないため、表情ごと、部位ごとにノーマルマップを作成し、マテリアルでブレンドしています
All images rights reserved © Ignis Imageworks Corp.
<3>加齢の表現
加齢の表現は、モンゴロイドをベースにモーフターゲットとシワ用のノーマルマップを作成し、ブレンドしています。どの人種の場合でも同じモーフターゲットとノーマルマップをブレンドすることで加齢を表現しています。人種ごとに作成した方が精度の高い加齢表現ができると思いますが、Avator Generatorでは最小限のリソースで加齢を表現することで、加齢以外の表現にもバリエーションを出すことを優先しています
All images rights reserved © Ignis Imageworks Corp.
<4>目の特徴付け
目の特徴付けのために3種類のモーフターゲットを作成し、それぞれウェイト値を変えてブレンドすることでより多くのバリエーションに対応しています。モーフターゲットは皮膚だけではなく、まつ毛や涙のメッシュでも作成しています。さらに、まつ毛や涙のモーフターゲットは、目の特徴付け用だけでなく、人種や加齢の表現用にも作成しています。目の特徴付けにはモーフィングだけではなくボーンも使用し、併用しています。ボーン変形による特徴付けは、目の大きさ、高さ、左右の幅などです。瞳の色はマテリアルにより色相や明るさの変更に対応しています
All images rights reserved © Ignis Imageworks Corp.
<5>口の特徴
口の特徴付けも基本的には目や口と同様です。口の開閉のために入れている顎の関節を前後や左右に少しズラすことで、人間味のある口を表現できるようにしています
▲形状3
All images rights reserved © Ignis Imageworks Corp.
<6>眉の特徴
眉毛は3種類のマスクテクスチャと3種類のモーフターゲットの組み合わせで特徴付けを行なっています。眉毛は人物の特徴を強く印象付けるパーツですが、そこにもあまり多くのリソースを使わず、組み合わせでバリエーションを出すようにしています。モーフィングによる形状変化は他のパーツと同様にウェイトを変えてブレンドしているため、テクスチャとの掛け合わせで実際にはかなり多くのバリエーションを生み出せるようになっています
All images rights reserved © Ignis Imageworks Corp.
Avator Generatorの概要
Avator Generatorは人物の生成が基本的な機能です。生成した人物(以降、アバター)は多数のパラメータを備えており、それらのパラメータの変更によりあるゆる見た目のアバターをつくり出すことができます。変更可能なパラメータは、年齢や性別、目鼻口などのパーツの特徴、髪型、肌の色、メガネやマスクの有無など、50種類ほどあります。ユーザーはそれらのパラメータを任意の値に、あるいはランダムな値に変更する人で、ニーズにあった見た目の人物を生成することができます。生成したアバターは、任意のポーズや表情を取らせて、任意の背景アセット内に置いてライティングを施した上で撮影(レンダリング)したり、レンダリングした画像内の目や鼻や口などの特徴点の座標や、視線や首の向きなどを数値化してJSONやCSV、XMLなどの外部ファイルに書き出すことができます。
また、生成したアバターをフリーズしたメッシュデータとしてFBXで書き出すことができるため、MayaなどのDCCツールに読み込んでレンダリングしたり、別のゲームエンジンで利用するといったことも可能です。生成したアバターのパラメータは外部ファイルに書き出しと読み込みができるため、一度つくったアバターは別の機会に再現することができ、それらを複数用意しておくことでプリセットのように扱うこともできます。また、アバター自体のパラメータだけではなく、カメラやライトの設定、SkydomeとCubemapによる環境なども書き出しと読み込みが可能なので、撮影時の環境を再現することができ、それによって例えば同じ条件で別の人物を撮影したいなどのニーズにも応えることができます。
教師データや検証用画像の作成を目的としてAvator Generatorを利用する場合、多数のバリエーションの画像を生成する必要があります。そのため、例えば顔の向きだけランダムに設定して連続撮影することで、同じ人物が顔の向きだけ変えた画像を大量に自動生成することができます。撮影にかかる時間は、PCのスペックにも依りますが例えばNVIDIA GeForce RTX 2080 Tiなどの高性能なビデオカードを搭載したPCであればおよそ30FPS、つまり1秒間に30枚の教師データ作成が可能です。ランダム設定は全てのパラメータに適用できるため、まったく異なる人物の画像が30万枚必要な場合でも、およそ3時間ほどで生成することができます。もし同じことをゲームエンジンを利用せずに同じ品質でやろうとした場合、1枚のレンダリングに1分かかると仮定すれば、その差は1,800倍になります。ゲームエンジンによる教師データ生成にどれほどのメリットがあるかはこの数字を見るだけでも明らかではないでしょうか。
<7>ヒゲとメイク
男性はヒゲ、女性はメイクで顔の特徴にバリエーションを出しています。ヒゲもメイクも基本的なしくみは同じで、複数のマスクをウェイトに変えてブレンドすることでバリエーションを増やしています
All images rights reserved © Ignis Imageworks Corp.
<8>性別
男女それぞれのメッシュ、モーフターゲット、テクスチャを同じ数だけ作成しています。髪型も、まったく互換性のない別の形状を男女それぞれ同じ数だけ作成しています。リソースを同数用意し男女でパラメータを1対1にすることで、男性アバターを作成した後に性別だけを変更すると似た感じの女性ができます
▲同じパラメータ設定の男性と女性
All images rights reserved © Ignis Imageworks Corp.
<9>髪型
髪の毛は髪型ごとにそれぞれモデリングしています。毛の表現はGroomではなく、ポリカード式のものです。髪の毛のマテリアルでは、色の変更、UVスケールを使用した毛の長さの調整、頂点座標のオフセットによるウェービングなどができるようになっています。ウェービング時はウェーブが滑らかになるよう、テッセレーションを使用しています。頭皮には髪の毛の下地として産毛テクスチャが描かれています。生え際の最も低い髪型と最も高い髪型に合うようにUVをそれぞれ作成し、マテリアルで2つのUVを線形補間することで全ての髪型に合わせるようにしています
▲細かいウェーブ
All images rights reserved © Ignis Imageworks Corp.
<10>ほくろ
▲ほくろはマテリアルで描画しており、最大4つのほくろがランダムな位置と大きさで配置されるようになっています【上段】。【下段】は、そのノードツリーですが、カスタムノードでランダム関数を作成し、それぞれ別のSeedを与えることでランダムなホクロになるようにしています
All images rights reserved © Ignis Imageworks Corp.