オススメ機能
Twitter
お気に入り
記事履歴
ランキング
お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
[CEDEC 2017]ニューラルネットがキャラの動きを自然に,処理負荷を低くする? キャラクターアニメーション品質向上に向けた新提案
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2017/08/31 00:00

イベント

[CEDEC 2017]ニューラルネットがキャラの動きを自然に,処理負荷を低くする? キャラクターアニメーション品質向上に向けた新提案

 ゲームパッドを使ってキャラクターを操作しているとき,キャラクターの動きになんとなく違和感を覚えたり,足が地面に着いていないように感じたりといった経験をしたことがあるゲーマーは多いだろう。
 ゲームが3D化を果たして以降,キャラクターの自然な動きを作り出す方法はゲーム制作における大きな課題の1つになった。モーションキャプチャを使って現実の人の動きをデータ化してゲームに取り込むことは可能だが,ゲーム中のキャラクターはユーザーの操作に応じてさまざまな動きを見せなければならないからだ。

 しかし,「だからゲーム中で起こり得るすべてのモーションをキャプチャし,データとして用意しておきましょう」というのは,ハードウェア側のストレージやメモリ,それにCPUパワーによる制限を考えると現実的でない。そこで,ごく限られたモーションキャプチャのデータを組み合わせ,多彩な動きを作り出す「モーショングラフ」といった手法が考案されたのだが,特定の状況下で奇妙なモーションを作り出してしまう欠点が表面化することもあった。

幸村 琢氏(エジンバラ大学情報学部准教授)。東大出身者初のプロボクサーとしても有名だそうだ
 現在では,PCやゲーム機のスペックが向上したことを受け,膨大なモーションキャプチャデータをストックしておき,状況にあったモーションを力づくで選んで自然な動きを実現する「モーションマッチング」と呼ばれる手法も登場している。モーションマッチングは,キャラクターの自然な動きを実現する新たな解決策として業界の注目を集めているものの,いかんせんチカラワザすぎるという課題があることは否めない。

 そんなキャラクターアニメーション生成の課題を解決するかもしれない新手法を提案したのが,エジンバラ大学情報学部准教授の幸村 琢氏である。
 CEDEC 2017の初日に行われた氏によるセッション「ニューラルネットを用いたキャラクター制御」の概要を,本稿では紹介してみたい。


キャラクターアニメーションを生成する学習データの作成手法


この論文は,Daniel Holden氏が主筆で,幸村氏と米Method Studiosの斉藤 淳氏が共同執筆者となっている。論文や資料,それにWindowsで実行できるデモもDaniel Holden氏のWebページからダウンロードできるので,興味のある人はぜひそちらも参照してもらえればと思う
[CEDEC 2017]ニューラルネットがキャラの動きを自然に,処理負荷を低くする? キャラクターアニメーション品質向上に向けた新提案
 幸村氏は,キャラクターアニメーションを中心としたコンピュータグラフィックスの研究者で,SIGGRAPHでも研究成果を発表するなど,実績のある人物だ。
 今回,幸村氏がCEDEC 2017のセッションで紹介したアニメーション生成技法は,SIGGRAPH 2017でエジンバラ大学のDaniel Holden氏が発表した「Phase-Functioned Neural Networks for Character Control」(ニューラルネットを用いたキャラクター動作生成)を基にしたものである。

 幸村氏によると,この研究は主筆のHolden氏がゲームが好きで,「ゲームに応用できる研究をしたい」というところがスタート地点になっているのだそうだ。ゲームで使うために,リアルタイムで高速にアニメーションを生成でき,同時に可能な限り消費するメモリの量を抑えるというところにゴールを設定したという。

ゲームで使える手法にすべく,「高速かつメモリの利用量が少ないこと」を目標として設定したとのこと
[CEDEC 2017]ニューラルネットがキャラの動きを自然に,処理負荷を低くする? キャラクターアニメーション品質向上に向けた新提案

 さらにスケーラビリティが高く,多様なモーションが生成できることもゲームでは重要として,ここでニューラルネットワーク(深層学習)を使うことを考えたそうだ。
 というのも,ニューラルネットワークなら大量のモーションを学習でき,学習後の結果を使ってモーションの生成を行う負荷が低く,しかも学習後のデータ量も小さくて済むからだ。「速い」「データ量が小さい」「多様なモーションに使える(=スケーラビリティがある)」ので,ゲームに最適というわけである。

「学習によって多様なモーションを生成できる一方で学習後のデータ量は小さく,かつ計算負荷も低い。だからゲームにはニューラルネットが最適」ということになったのだそうだ
[CEDEC 2017]ニューラルネットがキャラの動きを自然に,処理負荷を低くする? キャラクターアニメーション品質向上に向けた新提案

 実際にどんなものができあがったのかは,先ほど示したリンク先にあるデモで実際に体験できるが,ひとまずは下のデモムービーを見てほしい。ゲームパッドによる操作でキャラクターが自然に動く様子を確認できるだろう。


 仕組みは下のスライドにあるとおりで,「フレームi」を基に,ニューラルネットの学習結果を使って続く「フレームi+1」を生成する仕組みになっている。

ニューラルネットを使って次のフレームを作り出している。平面だけでなく凹凸がある地形にも対応し,たとえば岩があればよじ登るといった動きも見せることが可能だ
[CEDEC 2017]ニューラルネットがキャラの動きを自然に,処理負荷を低くする? キャラクターアニメーション品質向上に向けた新提案

 ニューラルネットの学習にはモーションキャプチャのデータを使っているそうだ。Holden氏本人が歩いたりサイドステップを踏んだり,積み上げた机や台によじ登ったりという動きを実際に行って,それをキャプチャしたという。

Holden氏本人がいろいろな動きを実演してキャプチャした結果を学習データとして使っている
[CEDEC 2017]ニューラルネットがキャラの動きを自然に,処理負荷を低くする? キャラクターアニメーション品質向上に向けた新提案
実際にキャプチャしているところ。これは,台や椅子を置いてよじ登っている例だ
[CEDEC 2017]ニューラルネットがキャラの動きを自然に,処理負荷を低くする? キャラクターアニメーション品質向上に向けた新提案

 よじ登るところで,地形のデータはキャプチャしていないそうだ。その代わりにゲームから地形のデータを抜き出し,Holden氏の動きにフィッティングさせるという方法を使って学習データを生成したとのことである。

地形のデータはキャプチャするのが困難なため,モーションと同時にはキャプチャしていない。その代わりにゲームから地形のデータを取り込み,Holden氏の動きにフィッティングさせた
[CEDEC 2017]ニューラルネットがキャラの動きを自然に,処理負荷を低くする? キャラクターアニメーション品質向上に向けた新提案

 もちろん,Holden氏の動きとゲームから取り込んだ地形とがピッタリと合うことはありえない。そのため,ゲームから取り込んだ地形を変形させて,キャプチャした足が地面に接地するよう調整する手法は採用しているという。ある程度自動化しているものの,多少の人手はかかったそうで,現時点ではやや手間がかかる工程になっていると,幸村氏は振り返っていた。

キャプチャした足が地面に接地するよう,地形のほうを調整した
[CEDEC 2017]ニューラルネットがキャラの動きを自然に,処理負荷を低くする? キャラクターアニメーション品質向上に向けた新提案 [CEDEC 2017]ニューラルネットがキャラの動きを自然に,処理負荷を低くする? キャラクターアニメーション品質向上に向けた新提案


Phase-Functioned Neural Networkとは?


 さて,以上のようにして用意した大量のデータをニューラルネットワークに学習させるわけだが,この手法においてキモになるのが,「Phase-Functioned Neural Network」(フェーズファンクション・ニューラルネットワーク,以下 PFNN)と命名されたニューラルネットワークだ。

 PFNNは下の図にあるのような3層のニューラルネットワークだが,通常のニューラルネットワークだと各層のパラメータが学習後は固定されるのに対して,PFNNでは「Phase-Function」と呼ばれる一種の周期関数を使って周期的に変化させるのが特徴となっている。

PFNNでは,Phase-Functionと呼ばれる周期関数で各層のパラメータが周期的に変化する
[CEDEC 2017]ニューラルネットがキャラの動きを自然に,処理負荷を低くする? キャラクターアニメーション品質向上に向けた新提案

 上のスライドで「歩容の位相に応じて変化する」とあるが,どういうことかというと,Phase-Functionは「左足が接地した時点を0とすると右足の接地がπ,そして再び左足が接地した時点が2π」(幸村氏)となるような周期関数になっているという。
 このような周期関数を使うことで,歩行のモーションを極めて精度よく学習できたというのが,PFNNの目新しく,かつ注目できる成果と言っていいのではないかと思う。

PFNNを数式で示したスライド。「歩容に応じた周期で重みのパラメータαが変化する」のがPFNNの目新しい点だ
[CEDEC 2017]ニューラルネットがキャラの動きを自然に,処理負荷を低くする? キャラクターアニメーション品質向上に向けた新提案

 PFNNに投入される学習データは,キャラクターの体幹からの相対的な各関節の位置と速度,回転の情報と,地形の情報だという。地形には,進行方向に対して12フレーム分先までと12フレーム分過去のデータを含むと幸村氏は説明していた。

 また,進行方向に対して両サイド2点の高さも学習データには加えているそうだ。これによって,たとえば「細い橋をバランスを取りながら渡る」というようなモーションも学習できるのだという。つまり「キャラクターの両サイド2点の高さが低い場合のモーション」も学習することができるわけである。

PFNNに与える学習データは各関節の位置と速度,それに地形の情報。地形の情報にはキャラクター両サイドの高さも含んでいる。これにより細い橋をバランスを取って渡るといったモーションも学習可能だ
[CEDEC 2017]ニューラルネットがキャラの動きを自然に,処理負荷を低くする? キャラクターアニメーション品質向上に向けた新提案

 結果としてできあがったのが先ほど紹介したデモであり,ムービーである。デモでは不自然な動きを補正するためにIK(Inverse Kinematics,逆運動学)を使っているそうだが「(IKは)なくても問題ないくらい」(幸村氏)のモーションを得られるとのことだった。

 当初の目標であったメモリ消費量や演算負荷の低減について言えば,その成果は目覚ましく,下のスライドにあるとおり,Phase-FunctionにCatmull-Romスプライン曲線補完を使う場合でも学習後のデータサイズはわずか10MBで済み,次フレームの計算に要する時間も1.8msで済んだという。幸村氏は「補完の計算負荷がやや高いので,補完を使わずにデータを増やせば,計算時間は1msを切れる」とも述べていた。

PFNNの処理性能を示したスライド。上からCatmull-Romスプライン曲線補完を使う場合,線形補間を使う場合,補完を使わずデータを増やす場合のそれぞれのメモリ消費量と計算時間となっている
[CEDEC 2017]ニューラルネットがキャラの動きを自然に,処理負荷を低くする? キャラクターアニメーション品質向上に向けた新提案

 ちなみに,元の学習データは容量が1.5GBあるそうだ。つまり,PFNNを使って学習させた後のニューラルネットの重みデータは元のサイズの150分の1に縮小できた計算になる。データが小さく,かつ計算量も小さいということで,PCゲームやゲーム機だけでなく,モバイルゲームにも応用できそうな技術と言えそうだ。

 以上がPFNNの概要だが,質疑応答でちょっと面白い話もあったので付け加えておこう。前述のとおり,Phase-Functionは人の歩容に合わせた周期関数になっている。「なら,人の歩容に合わないモーションはどうなのか?」という疑問は当然湧くだろう。

 質疑応答で出たのは,たとえば「ケンケンパ」のような動きで,これは今のPhase-Functionでは「対応できないと思う」と幸村氏は語っていた。
 また,4本足あるいは6本足の生物ではどうか,という点も気になるが,これも今のPhase-Function対応できないはずだという見解を幸村氏は示していた。実際,4本足の生物だと歩行の速さによって位相が変わるという特性もある。馬の並足とギャロップでは位相が違うというのが典型的な例だが,こうした生物にPFNNを当てはめるには,Phase-Function部分に一工夫必要になりそうだ。

 いずれにしても,このPFNNを土台にしてひねりを加えていくと,まだまだ面白い広がりがありそうで,将来が楽しみな技術と言えるのではないだろうか。

4GamerのCEDEC 2017記事一覧

CEDEC 2017公式サイト

  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
トピックス
スペシャルコンテンツ
注目記事ランキング
集計:06月24日〜06月25日