
オートデスク門口氏
■リアルなライティングを実現するための次世代ミドルウェア
ゲームのリアリティを増す大きな要因の一つが、ライティングです。特に現世代機では光源から光を受けた物体が、互いに光を反射したり、拡散したりしつつ、互いに影響を与え合う環境光=グローバル・イルミネーション(GI)の積極的な活用で、これまでとは比較にならないほどリアルで、質感のある世界を表現できるようになりました。
しかし、そのための計算コストもまた、莫大なものになっています。一昔前は、ライティングの設定をして、レンダリングを開始して、昼食に出かけて、帰ってきたら、まだマシンが計算をしていた・・・などの光景が普通に見られました。程度の差こそあれ、レンダリングコストの削減は、今でも大きな課題となっています。
今回話を伺った「Beast 2012」は、こうしたGIベースのライトマップ(陰影情報が焼き付けられたテクスチャのこと)を高速に作成し、開発効率を格段に上昇させるためのミドルウェアです。スウェーデンのIlluminate Labs社が開発した「LiquidLight」技術がベースで、これまではMaya向けのプラグイン「Turtle」として提供されていました。これが新たにミドルウェアとして独立し、より汎用的に使用できるようになりました。
Beastが初めて用いられたゲームは、同じくスウェーデンの開発スタジオ、EA DICEが開発した『ミラーズエッジ』です。これまでのゲームとは一線を画した輝度の高い背景や、クオリティの高い映像は、発売から約3年を経た今でも新鮮です。他に『God of War3』『Dragon age: Origins』などAAAタイトルを中心に、これまで約40本の採用実績があり、日本でも徐々に浸透しつつあるそうです。


またゲームエンジン「Unity」のプロフェッショナル版には、機能限定版ながらもBeastが統合されています。そのため、採用タイトルのカウントは実質、不可能になっているとか。解説を担当した同社の門口洋一郎氏も「最近はUnity経由でBeastを体験される方が増えている」と説明していました。
■LiquidLightをベースとした基礎体力の高さ
Beastは大きく、GIエンジンの「LiquidLight」、リアルタイムプレビューができる「eRnsT」、処理分散を行う「DistriBeast」という3つのモジュールから成り立っています。「Beast 2012」ではBeast APIを経由して、eRnsTが任意のゲームエディタ上から立ち上げられるようになり、ワークフローの構築がより柔軟になりました。
この中でも、核となるのがLiquidLightです。拡散反射光による間接光やGIシャドー、エリアライト、天空光、ネオンサインのようにオブジェクト自体を光源としたライティングなどを組み合わせた、複雑なシーンのライトマップが、高速かつ簡単に作成できます。もちろんオクルージョン処理にも対応しています。


拡散反射光による間接光
ラジオシティノーマルマップを焼くことができる点も特徴の一つです。ライトマップだけでは影に沈んでしまうような、洞窟のような薄暗い場所でも、しっかりとディティールを浮き上がらせることができ、表現力のある絵が作れます。 テクスチャとバーテックスカラーに加えて、ポイントクラウド(点群データ)への焼き付けも可能。他に、球面調和関数(スフェリカル・ハーモニクス=SH)などにも対応します。


ライティングの定義は実際の光源だけで行え、環境光や補助ライトなどの別途設定や、ライトの効果を補完するために、アーティストがテクスチャに手描き修正する必要もありません。当たり前のことですが、事前計算するのでパフォーマンスがライトのセットアップ情報(ライト数、角度、手法など)に左右されることもありません。
また、ゲームには動的なオブジェクトが多数存在します。背景がGIベースでリアルに表現されていても、キャラクターの陰影がのっぺりしたままでは、画面内で浮いてしまいます。一方でこうした動的オブジェクトは、光の当たり方で陰影が変わるため、事前にライトマップを生成できません。そこでBeastでは、ステージ上にライトフィールドを設定して光の情報を格納し、そこから動的に光(フォトン)を照射して、擬似的なGIを生成することができます。
サンプルアプリケーションでは、赤・青・緑の壁を立て、光源を移動させると影や照り返しが変わったり、光を発する壁に半重力ビーグルを近づけて、リアルタイムに照り返しが変化したりする様子が紹介されました。


■DistriBeastで実現した効率の良い分散処理
さて、一般的にレンダリングコストは映像の品質に比例します。その中でもGIベースのライトマップ生成は、トップクラスの一つだといえるでしょう。そのため、どれだけLiquidLightが優れていても、処理速度が遅ければ絵に描いた餅となります。
門口氏はこれを解決するモジュールが、レンダリングファームに対して分散処理を行うDistriBeastだと解説しました。「特に同じGIベースのレンダラである、Mentalrayと比較して削減効果を実感される方が多いようだ」と語ります。
mental rayでもレンダリングファームで分散処理が可能ですが、分散させるマシンが増えるにつれてオーバーヘッド(作業負荷)が増加し、効率低下が否めませんでした。これがDistriBeastでは改善されており、CPUコアの増加に、ほぼ比例する形で高速化が実現できるそうです。クラスタリングも自動で処理され、同じテクスチャを複数のマシンで分散処理をしたり、レンダリングジョブ間でリソースをキャッシュして使用することも可能です。
サンプル映像では12台のマシン(48コア)で構成されたレンダリングファームで、『Unreal Tournament』で用いられたステージのライティングの修正結果を、リアルタイムに近い形でプレビューするデモが紹介されました。ライティングの品質はMentalrayと大きく変わらないとのことでしたが、処理速度の早さは単位時間当たりの修正回数に直結するため、完成データの品質に大きく影響することは、言うまでもありません。


非常に高速なレンダリングが確認できた
なお、このときにレンダリング結果をエディタ上でプレビューし、光源設定やパラメータなどを修正できるモジュールが、eRnsTです。前述の通りBeast APIを経由して、自社開発のゲームエンジンなどと統合できます。デモではUnreal Engine 3に統合され、エディタでプレビューされていました。


UDKなど他のエンジンや環境と容易に統合可能
同様にUnityをはじめ、Gamebryo Lightspeed、Digital Extremes Evolution Engineでも統合モジュールが用意されています。Mayaに統合をすれば、Maya上でライティングを行い、プレビューすることもでき、開発環境にあわせた柔軟な対応が可能です。
■Unityプロフェッショナル版だと無料で使える
このほか、細かいところではゲーム開発者向けの機能として、アトラステクスチャがあります。
画像ごとに個別のテクスチャを作成してポリゴンに貼り付けていくと、ちょっと数が増えるだけで、パフォーマンスが一気に低下してしまいます。そのためリアルタイム処理が求められるゲームでは、必要な画像を一枚のテクスチャに入れておき、一度の描画命令で一気に貼り付ける、という手法が多用されます。
これがアトラステクスチャです。Beastでも同様にライトマップデータを一枚作成しておき、個々のモデルに割り振ることができます。
このように、非常に強力な機能を誇る「Beast 2012」ですが、前述の通りUnityのプロフェッショナル版に統合されており、Unityユーザーならゲームエディタ上で、特にBeastの存在を感じることなく、ライトマップ作成に活用できます。
もっとも、Unity版ではシングルPCでしか動作させられず、複数のマシンを用いたレンダリングファームには対応していないことや、現状ではリアルタイムプレビューワのeRnsTが統合されていないなどの制限はありますが、まずはBeastの効果を確認するには非常に良い環境だと思います。
残念ながら現状ではウェブからダウンロードできる評価版が存在しません。Unityなどを通してBeastを体験し、そこから一歩先に進みたいという方がいたら、ぜひコンタクトしてほしいとアピールしていました。(Beastの評価の申込はjp_middleware@autodesk.comまで御連絡ください。)
■ムービーでチェック
高速なGlobal IlluminationのプレビューワーであるErnsTをゲームエンジンに組み込んで使用することが可能。