イベント
表情まで取り込んだ3Dアバターを,Webカメラ1つでリアルタイムに生成。SIGGRAPHで見た「ゲームにも使える先進技術」
Webカメラ1台でリアルタイムに3Dアバターを作る新技術
Pinscreen
こうした3Dグラフィックスを使う既存のアバターシステムは,モンタージュ写真のように顔を構成するパーツを組み合わせて,デフォルメされたキャラクターを作るものが一般的だ。ユーザーの顔を取り込んで3Dのアバターを生成するサービスはいろいろあるし,任天堂のアプリ「Miiスタジオ」にもそういう機能はあるものの,決してメジャーとは言えない。
メジャーになりきれない理由はさまざまだろうが,そのひとつに「うまく似せて作るのが難しい」という理由があるのは確かだろう。
Pinscreenは,人の顔を取り込んで3Dグラフィックスのアバターを作るシステムだが,完成度の高さからベンチャーキャピタルのLux Capitalや,日本のコロプラVRファンドから,合わせて180万ドル(約2億円)もの資金を調達したという。Pinscreenは,既存のアバター作成システムと何が違うのかを見ていこう。
Pinscreenにおけるアバター作成は簡単で,PC用のWebカメラで対象となる人物の顔写真を1枚,正面から撮るだけだ。写真は,一般的なWebカメラの解像度や品質があれば十分で,キャリブレーションも一切不要。撮影後わずか数秒で,3Dモデリングされたアバターの顔が出力される。
Pinscreenが作成するアバターのポイントは,リアル系の3Dモデリングではなく,ややデフォルメされたイラストタッチになるところ。輪郭と目鼻口だけでなく,髪や耳などもかなり特徴を捉えたモデリングがなされる点も興味深いポイントだ。デモの様子を撮影した動画で確認してほしい。
Pinscreenが生成するデータは,ヘアスタイルや顔の3Dモデルに加えて,瞳の色,表情表現用のボーン設定,肌のテクスチャや,ライティングパラメータなどである。若干デフォルメされているにもかかわらず,本人にかなり似ているモデルになっているのが注目すべきポイントだ。東洋人と白人といった,人種の違いもちゃんと表現できている。
本人に似た3Dモデルを生成できる秘密は,モデリングシステムにCNN
RTLでは,面白さを重視して3Dモデルをデフォルメ寄りに生成したが,パラメータの与え方次第で,リアルさを重視した3Dモデルも作れるとのこと。リアル系のでき映えについては,Li氏の論文関連リンクをもとにした動画が参考になるので,興味のある人は見てほしい。
Pinscreenはアバターの自動生成だけではなく,Webカメラで撮影したユーザーの表情を,リアルタイムでアバターに適用する機能も持つ。マーカーを顔に付ける必要はなく,素顔のまま,カメラの前で表情を変えるだけで,認識した表情を適切にアバターへと反映させることが可能なのだ。
加えて,完全な横顔になってしまわないかぎり,顔を上下左右に傾けても追従できる。首を左右に回したり,姿勢を変えたりしながらでも,その動きや表情を変化をアバターへと反映できるという。
従来,こうしたマーカーレスなイメージベースによるフェイシャルパフォーマンスキャプチャでは,クチパクや瞳の動き程度なら,それなりの精度で取得できていたものの,シワができるほどの激しい表情筋の動きには追従できないものが多かった。しかしPinscreenは,ちゃんとそうした要素にも対応できているのだ。デモでは,登壇者が口を大きく歪ませるように開けたり,目を大きく見開いたりといった極端な表情をしてみせたが,アバターにもそれがきちんと反映できていた。
ちなみに,RTLのデモでは,グラフィックスの描画にはゲームエンジンの「Unity」を使用しているとのこと。
Webカメラでユーザーの表情を取得するときに,ユーザーの顔を照らす照明を,アバター側に再現できることもアピールされた。どういうことかというと,たとえば暗めの部屋で,顔に対して左から赤い光を照らした場合,赤い光が左からユーザーの顔を照らしている様子が,アバターにも正しく反映されるそうである。
この機能を利用して,顔だけをPinscreenアバターに置き換え,身体は実写のリアルタイム映像を使うといった,「顔だけCG,それ以外は実写」という拡張現実的な映像をリアルタイムで生成することも可能だ。今回のセッションでも,顔を有名なハリウッド俳優のイケメンにすげ替えて,キザなポーズでおどける場面があったが,デフォルメされた有名人になりきって遊ぶのも面白そうだ。
自動生成するアバターの精度や,リアルタイムの表情取得や適用の精度も高く,顔面のアニメーションも品質が良好で,おまけに低遅延と,ファンドからの投資が集まるのも理解できるだけの機能を有しているのがよく分かった。
なお,Li氏によれば,Pinscreenの技術を幅広く展開していくとのこと。実際に,企業と連携してさまざまなアプリやサービスを開発中であるという。もしかすると,ミドルウェアの形での提供もあるのかもしれない。アバターを使ったVRコミュニケーションサービスなどに応用されると,面白いのではないだろうか。
機械学習を利用した高速な流体シミュレーション
Physics Forests
本稿1つめのテーマとして,Physics Forestsについてのセッション「Physics Forests: Real-time Fluid Simulation using Machine Learning」を取り上げたい。
もともとゲームのようなリアルタイム用途では,まじめにシミュレーションを行うのが性能面で難しい場合,シミュレーションの要素を利用して作ったアルゴリズムで,似たような結果を返すことで代用とすることがある。これはプロシージャル技術(Procedural Techniques)の一種で,ゲーム開発シーンでの採用事例も多く,地形や雲の生成,水面の波表現などでは,こうしたテクニックを使うことが珍しくない。
Physics Forestsでは,そうしたプロシージャル部分に,機械学習ベースの推論を用いるアーキテクチャを組み込んだのだという。
説明を担当したETH ZüurichのLubor Ladicky氏(関連リンク)によると,Physics Forestsは,パーティクルベースの物理シミュレーションで構築しているが,流体物理学の基本方程式であるナビエ・ストークス方程式(Navier-Stokes Equations)を用いた処理は使っていない。機械学習で生成した学習データから,単位時間におけるパーティクルの挙動を計算しているそうだ。
機械学習アルゴリズムとしては,Regression Forest法(回帰フォレスト法)を採用しているという。
Regression Forest法とは,回帰問題の解を推測するための機械学習モデルで,とくに連続変数を推定するのに適している。大雑把に言えば,過去から現在に至るまでの情報をもとに,次の状態を推測するのに適した手法と言ったところか。Regression Forest法は,コンピュータビジョンの世界において,顔の表情や,人体の姿勢を推測するに利用されている。Physics Forestsというエンジン名も,このRegression Forest法から取った名前だろう。
そんなPhysics Forestsの利点について,Ladicky氏は「従来の物理シミュレーションエンジンと比較すると,Physics Forestsには2つほど,優位点がある」と話す。
1つめの優位点は性能だ。学習データをもとにして,各パーティクルがどう動くかを推測するにしても,それなりの計算量は必要になる。まじめに物理シミュレーションを行うのと,機械学習ベースの推論処理のどちらが速いのかが重要になるわけだが,「圧倒的に推論処理のほうが速い」というのが,Ladicky氏の主張だ。
とくに機械学習ベースが有利となるのが,パーティクル量が膨大なときであるという。あるパーティクルが,次にどのような状態になるかの動きを計算するには,ほかのパーティクルからの影響にも配慮しなければならないが,これをまともにやろうとすると,パーティクル総数が増えれば増えるほど計算量が膨大になることが想像できるだろう。これがPhysics Forestsの手法ならば,大幅に軽減できるというのだ。
2つめの優位点は安定性が高いこと。
リアルタイム用途向けの物理シミュレーションエンジンでは,挙動が落ち着かずにブルブルと震え続けたり,高速で衝突が起こると予想外な挙動を示したりすることがある。Physics Forestsでは,そういうことは起こりえないというのだ。
たとえば,流体物理シミュレーションの計算において,気体のような圧縮性流体と液体のような非圧縮性流体を扱う場合,それぞれのシミュレーションモデル別に異なる計算を行う必要がある。しかし,Physics Forestsの手法では流体の属性さえ設定しておけば,安定したそれっぽい動きに落ち着くという。
Physics Forestsでは,流体や剛体,および流体と剛体の相互作用まで表現できるそうで,汎用性は高そうだ。パーティクルに対しては,粘性係数や摩擦係数,密度,表面張力係数などを設定できるため,さまざまな気体や液体を扱えるということだった。
さて,水が集まると水面ができるように,液体は集まると界面を形成する。Physics Forestsでは界面の生成に,「スムーズドパーティクルハイドロダイナミクス」(Smoothed Particle Hydrodynamics,以下 SPH)を活用しているそうだ。このSPH法は,すでに実際のゲームグラフィックスでも活用が進んでいるテクニックでもある(関連記事)。
また面白い表現として,界面を生成するときには,液体中に生じる泡の生成にも対応していると,Ladicky氏は説明していた。あるパーティクルの速度と,その近くにあるパーティクルの速度差が大きくなり,不連続になったと判断できる場合に泡を出現させているそうだ。実際,Physics Forestsにおける泡の出方は,けっこうリアルに見える。
Physics Forestsは,物理シミュレーションに似せた表現を行うわけだが,シミュレーション結果の正確さや,学習データがどのくらいのメインメモリを必要とするのかといったあたりが,ゲームで応用するときに気になるところだろう。
まず正確さだが,もともとゲームで活用している物理シミュレーションは,それほど高精度なものでもないので,大抵の用途では問題ないのかもしれない。ゲームメカニクスに大きく絡んでくるような物理シミュレーションが必要な場面でだけ精度の高い手法を利用するとか,あるいは,視点から近い領域では精度の高い手法を,視点から離れた領域ではPhysics Forestsを使うといった,LOD(Level of Detail)的な手法といった使い方も考えられる。
メモリ使用量に関する説明はなかったので推測するしかないが,学習データが大きすぎる場合,メモリリソースがシビアな端末――たとえば携帯ゲーム機や低スペックなスマートフォン――では使いづらいかもしれない。
機械学習と物理シミュレーションという2つのキーワードを並べると,「異色の組み合わせ」と思う人もいるだろうが,ともにGPUでアクセラレーションできる用途だけに,ゲームグラフィックスでの応用も,それほど縁遠い話ではない。とくに,
SIGGRAPH 2017のReal-Time Live! 公式Webページ
- この記事のURL:
キーワード