Let's Enjoy Unreal Engine

Unreal Engineを使って遊んでみましょう

UE4 GDC2017 講演の中で公開された様々な新情報について

前回に引き続き、UE4のGDC2017の情報を追っていきます。今回はEpic Gamesが講演した3つのセッションの中から気になった部分を抜粋して紹介していきたいと思います。

非常に画像と動画が多いので、ネットワーク環境には注意してください。

講演動画に関してはTwitchの公式チャンネルのアーカイブから観ることができます。

www.twitch.tv


新オーディオエンジンについて

まずは最近色々と追加され始めている、UE4の新オーディオエンジンについてです。新オーディオエンジンは様々な部分が変わっています。


f:id:alwei:20170302232320p:plain

オーディオ機能は各プラットフォームに深く依存しており、その部分をなんとかしたいがために刷新されたようです。


f:id:alwei:20170302232541p:plain

なので全ての機能が実装されているわけではなく、MacAndroidLinuxHTML5ではそれぞれ使えない機能や問題もあるようです。


f:id:alwei:20170302232846p:plain

マスターリバーブやマスターEQ、ストリーミングやリアルタイム非同期デコード、ダイナミックピッチシフトなどなどとにかく沢山の機能が。


f:id:alwei:20170302233309p:plain


f:id:alwei:20170302233330p:plain

アーキテクチャーは変わって、プラットフォーム依存?だった部分をAudio Mixer Moduleが広くカバーするようになったようです。


f:id:alwei:20170302233543p:plain

そして好評配信中のRobo Recallでは上記のような機能が既に入っているようです。


f:id:alwei:20170302233735p:plain

バーブアルゴリズムが多様な変化が可能に。


f:id:alwei:20170302233901p:plain

新しく利用できるようになったエフェクトたち。


f:id:alwei:20170302234023p:plain

ゲームのために用意された音声合成機能。Audio "Shader"とも書かれていますが、まさしくそんな感じですね。


f:id:alwei:20170302234218p:plain

そして今回注目の機能のひとつがUMGのUI機能で作られた、デジタルシンセサイザー


リアルタイムに変化する音声が面白い!しかも本物のシンセサイザーっぽく操作ができます。まさしく音屋さんたちのための機能です。この後も色々専門的な話がありますが、わかりにくいので、動画で観ましょう。


様々なエフェクトによりとても自然な音に聴こえてきます。


そして物理ベースサウンドによりついに3D環境情報をしっかりと計算した音環境が。遮蔽物がある場合にはちゃんと考慮されて音が聴こえるようになります。


f:id:alwei:20170302235151p:plain

新たにSteam Audioというプラグインが。これにより先ほどの遮蔽物による音響やリバーブなどの深い機能も使えるようになるようです。


f:id:alwei:20170302235414p:plain

更にこの先にはプロファイリングツールや既存のUE4ツールとの統合、ベターなアセットフォーマットサポート追加など行われるみたいですね。

マルチパスレンダーターゲットを使った様々な表現

次はマルチパスレンダーターゲットによる様々な表現についてです。


f:id:alwei:20170303001724p:plain

まずマルチパスレンダーターゲットとは?レンダーターゲットは様々な情報を書き込み、多様な表現が可能ですがこれまでは複雑なことをやるにはピクセルシェーダーなどを使う必要がありました。

このレンダーターゲット機能を使うとブループリントとマテリアルのみでも十分に多様な表現が可能となります。

f:id:alwei:20170303002457p:plain

そしてマルチパスレンダーターゲットは複数のレンダーターゲットを組み合わせて使う手法です。


f:id:alwei:20170303002901p:plain

一番よく使うメインのメソッドたち。


f:id:alwei:20170303002934p:plain

そして最も簡単な利用方法。

実際にこのマルチパスレンダーターゲットを使った様々な表現を実際にみることができましたので、早速みていきましょう。


これは波のサーフェースとレンダーターゲットを組み合わせて、ペイントを行った部分に波の流れが発生するようになっています。難しそうな処理に見えますが、意外と簡単に実現しています。


f:id:alwei:20170303003354p:plain

これはボリュームペイントといって、複数のサーフェース上のレンダーターゲットを使ってレンダリングしたものを重ねることで雲のようなものを発生させることができます。そしてその情報をVR上でペイントすればまさしくこのような光景になるようです。


f:id:alwei:20170303003726p:plain

キャラクター上を直接ペイントすることで、このようにマスクされた部分だけにレンダーターゲットの情報を適用させるとターミネーターのようなダメージ表現ができます。非常に面白い表現。

ここからしばらく非常に理論的な話が続いたので、少し飛ばして。


f:id:alwei:20170303004130p:plain

f:id:alwei:20170303004235p:plain

f:id:alwei:20170303004440p:plain

これまでに紹介された技術を使って、煙の流体シミュレーションをやっています。ボリュームレイマーチング、ベクトルカールノイズ、そしてベクトルフィールドをカーブで編集することにより、動的に形を変化させています。

ここまで使ってきた技術をかなり使い倒しているので、非常に難易度が高いですがこういう表現がUE4でも実現できるというのは凄い!

このセッションはプログラマーというよりはテクニカルアーティスト向けだったようですが、難易度が高いセッションでもとても実用的だったという印象でした。もう少し時間かけて理解したい。

アニメーションと物理の新機能について

最後はアニメーションと物理の様々な新機能についてです。このセッションではUE4.16以降に搭載される様々な新機能についての解説が行われていました。


f:id:alwei:20170303004915p:plain

リグを使ったアニメーションをもっとフレキシブルにユーザーフレンドリーにしたいというもの。


f:id:alwei:20170303005004p:plain

現状のパイプラインはDCCツール上でパッケージし、インポートするという手順がどうしても必要になっていました。


f:id:alwei:20170303005059p:plain

新しいパイプラインは滅茶苦茶シンプルになって、なんとUE4上だけでイテレーションが完結しています。


f:id:alwei:20170303005231p:plain

なんとUE4上でアニメーションの編集ができるように!!


新たにモードパネルに追加されたアニメーション編集パネルとシーケンサーを使ってリグのコントローラーを動かしてキーを打つと編集ができます。すばらしい!!

こういう機能あったらいいなぁというのが本当に来た感じ。まだまだこれから開発していくところだと思いますが、一番期待できる機能のひとつです。


f:id:alwei:20170303005603p:plain

f:id:alwei:20170303005724p:plain

f:id:alwei:20170303005834p:plain

新たな新機能ポーズドライバー。RBFソルバーという仕組みを使って、複数のポーズから中間値を割り出して、ボーンのジョイントに対して適用することが可能となります。


f:id:alwei:20170303010805p:plain

複数のポーズからそれぞれに与える入力値から最終的な出力値をジョイントに適用すると、より自然な動きを作り出すことができるようです。この設定はなかなか難しそう。以下はRBF補間について。

yuki-koyama.hatenablog.com



f:id:alwei:20170303011102p:plain

f:id:alwei:20170303011233p:plain

f:id:alwei:20170303011157p:plain

次はMayaライブプラグインについて。これはDCCツールであるMayaと直接繋ぎ、通信を行うことでUE4上へとMayaの情報を反映させることができる新プラグインです。


つまりMayaの作業をリアルタイムにUE4へと反映させることができます。これの用途は主にモーションキャプチャーとの連携で利用するようです。実際にこれを利用してリアルタイムモーションキャプチャーの情報をUE4へと反映させてその場で編集を行うという用途に使われています。


f:id:alwei:20170303011751p:plain

f:id:alwei:20170303011806p:plain

次は布などの動きを表現するクロスシミュレーションツールです。これまではNVIDIAが作ったAPEXというものを使って外部のDCCツールで編集が必要でしたが、この機能によりそれらが完全になくなります。


f:id:alwei:20170303011921p:plain

これがこれまでに必要となっていたパイプライン。


f:id:alwei:20170303011952p:plain

そして新しいパイプラインではAPEXの部分が完全になくなり、APEX上に戻って作業するということがなくなりました。UE4上で完全に作業できます。


これは便利!ウェイトペイントまで出来てしまいます。もうクロスシミュレーションの設定でMayaもいらない!!激しく動き回っても破綻しません。すばらしい。


f:id:alwei:20170303012333p:plain

f:id:alwei:20170303012444p:plain

最後に紹介するのが、Immediate Mode Phsyicsです。

わかりやすく言えば、LODを使って距離が離れている場合には物理処理を削って軽量化させようということですね。


f:id:alwei:20170303012544p:plain

実際の処理負荷。大体トータルで4,5倍程度変わってきていますね。


すごい数でも全く処理が落ちずに動いてます。動きが面白い。なんか見ているだけでも楽しいです。


f:id:alwei:20170303012752p:plain

f:id:alwei:20170303012856p:plain

f:id:alwei:20170303012933p:plain

最後にRobo Recallのチームはとても小さいチームだったようですが、UE4.14で実装された物理アニメーション機能や4.15で追加されたポーズスナップショットなどの機能を使うことにより、プロシージャルなアニメーションを生成したことで、とても小さい工数でリアルな動きが作れたようです。

これは実際にRobo Recallのプレイ動画を観ればよくわかりますね。これらの新機能がEpic Gamesで開発されている実際のゲームでも使われているので、とても実用的ということがよくわかります。


f:id:alwei:20170303013137p:plain

とても面白い機能が満載でしたが、これらの機能はほとんどがUE4.16以降からです。最初は実験的な内容のものが多いですが、バージョンアップを経てきっと完成度が上がるはずです。

今後のアップデートに期待!

今回のGDCでとても面白い機能が沢山発表されました。まだまだUE4からは目が離せません。個人的にアニメーションの機能はどんどん使っていきたいですね。

また何か新しい情報が入れば更新していきます。