プリレンダリングとリアルタイムレンダリングの違いとは?

プリレンダリングとリアルタイムレンダリングの違いとは?

高校生の頃、ファイナルファンタジーVIIとIXをプレイしていました(VIIIはスキップしました)。 どちらのゲームも最後まで終わらせることができませんでしたが、「ゲーム内ムービーがすごい! でもゲームプレイがムービーほどすごく見えないのはなんでだろう?」と考えたのを覚えています。

これに共感できない方は(私が古い世代かもしれませんが)、次の例なら共感できるのではないでしょうか。ソーシャルメディアをスクロールしているときにゲームの広告が表示され、「わあ、このゲームってスマホでプレイできるの? コンソールゲームレベルだな」 とグラフィックスに驚かされたことはありませんか? ダウンロードして再生してみると、ゲームプレイが広告とはまったく違っていた、なんていうことはなかったでしょうか。

簡単に言えば、これはプリレンダリングとリアルタイムレンダリングの違いです。

レンダリングとは?

レンダリングを簡単に定義すると、3次元のデータを2次元の画面に表示できるようにする工程のことを言います。 この工程には数十億の数式を解く作業が含まれ、莫大な計算能力を必要とします。 まだちょっと意味がわからないという方は、「レンダーファームって何?」と、「レンダーファームを使用して時間を節約方法」の記事をご覧ください。

フォトリアルな人の顔のレンダリング
Human face render by Chris Jones

もう少し具体的に言うと、レンダリングとは、プロジェクトを「完成」させるための3Dグラフィックス制作の最終ステップであり、要するに、3D制作ソフトなどの環境から、パソコン、スマホ、テレビ、映画のスクリーンなど、どの画面にでも表示できる形式に変換することです。そしてこれらの画面はすべて2次元なので、レンダリングによる処理が必要となるわけです。

プリレンダリングとは

プリレンダリング(プリレンダー)は、オフラインレンダリングとも呼ばれ、画像(アニメーションなどの一連の画像)を事前にレンダリングすることです。 正確にいうと、3D画像制作でディティールやテクスチャーを加えて完成させたあと、CPU(またはGPU、あるいはその両方)に3Dデータを2D画像に表示するよう処理させ、それからあらゆる画面に表示します。 作成した画像の複雑さとディティールによって、レンダリングに時間がかかる場合があります(複雑になるほど、計算量が増えます)。つまり事前にレンダリングしておくため、プリレンダリングと呼ばれます。

わたしたちのレンダーファームではこのプリレンダリングを実行する、クラウドレンダリングサービスを提供します。 前述したように画像のレンダリングには時間がかかるので、それを短縮するためにインターネット経由でプロジェクトをレンダーファームに送信し、超強力なプロセッサーにレンダリングを実行させます。 通常、個人のパソコンで数時間かかるレンダリングなら、レンダーファームではわずか数分または数秒で完了します。

リアルタイムレンダリングとは

一方、リアルタイムレンダリングは、プリレンダリングと同じプロセス(3D情報を2D画像に変換する)をはるかに高速で実行することを言います。 名前通り、このタイプのレンダリングはデータが入力された瞬間から瞬時に画像を生成します。 さらに正確に言うと、Unityのようなリアルタイムレンダリングエンジンの一般的な設定は、毎秒30〜60フレームで、これはエンジンが3Dの情報から1秒間に30〜60の2D画像を処理および表示できることを意味します。 これは、単一の画像出力に数分または数時間かかるプリレンダリングとはだいぶかけ離れています。

しかし、プリレンダリングとリアルタイムレンダリングをスピードだけで判断してもいいのでしょうか? 簡単に言えば答えはノーです。

では答えを詳しく説明してみましょう。

パーパス・ドリブンなレンダリング

プリレンダリングであろうとリアルタイムであろうと、レンダリングでは常に速い方が望ましいです。 しかし目的に応じて、速度をどのように考えるか、または速くすることで何が変わるかによります。 レンダリングに関しては、速度は相対的であると言えます。

たとえば、あなたが建築ビジュアライゼーションアーティストで、フォトリアルで高解像度の建物のプロジェクトを進行中のとき、自分のマシンだけでレンダリングする場合は、レンダリングに数時間または数日かかるのが一般的です。 したがって、たとえば、レンダーファームで2時間のレンダリングを20分に短縮できることは大きなメリットになります。

しかしゲームデザイナーの場合、単一の画像をレンダリングするのに20分もかかることは絶対に受け入れられません。これは、ユーザーがゲーム内のキャラクターの頭を少しでも動かすと、視点が変わるまでに20分かかることを意味します。 20分の遅延は大げさな例ですが、これはレイテンシと呼ばれ、ゲームに関してはレイテンシが大きな問題となります。 最近では、リアルタイムのレンダリング速度は通常1秒あたり30〜60フレームです。アニメーション(ビデオゲームが主に利用しているもの)は、動きの錯覚を作り出すように急速に表示される一連の静止画像に他なりません。 映画を参考にしてみると、人間の目が毎秒24フレームで自然な動きを知覚することを知ることができます。 したがって、アニメーションを自然に見えるようにするには、一連の画像を1秒あたり24フレーム以上の速度で画面に表示する必要があります。

さて、リアルタイムレンダリングの場合、フレームレートが遅くなる原因は何でしょうか。それは画像の複雑さです。 グラフィックのディティールが細かすぎる場合、プロセッサが必要なすべての情報を計算して画面に表示させるのに時間がかかります。 そしてフレームの表示速度が遅すぎると、ゲームコントロールの応答性が低下します。 これは、素晴らしいグラフィックスとスムーズなゲームプレイ間のトレードオフとなる部分です。では3Dグラフィックスに関しての最大の問題点は何でしょうか。それはライトニングです。

高品質なヒュンダイのレンダリング
Hyundai by Solid VFX Lab

光は不思議な働き

3Dグラフィックスをリアルに見せるためには、光の作り出すアートを理解する必要があります。 私たちの目が知覚するものはすべて反射光であり、オブジェクト、マテリアル、テクスチャが異なれば、光の反射も異なります。 3Dグラフィックスは実際には単なる数字の情報が画面上で色として表されるものであるため、リアルな照明を実現するには、特定のシーン内での光の動きをコンピューターがどれだけ適切かつ効率的に計算するかで決まります。 プリレンダリングとリアルタイムレンダリングでは、ライトの処理が異なります。

レイトレーシングの説明
Source: Ray tracing (graphics) - Wikipedia

一般的に、プリレンダリングはレイトレーシングと呼ばれる手法を使用して光を処理します。 簡単に言えば、レイトレーシングは、実際に私たちの目が私たちの周りのオブジェクトを認識するのと同じ現象を利用しています。光源からの光線がオブジェクトに当たって跳ね返り、次に私たちの目に当たります。 目に届くすべての光線をオブジェクトにトレースしてから光源にトレースすると、レイトレーシングになり、 この手法がフォトリアルな作品を作る最も有効な方法となります。

リアルタイムレンダリングは、一般的に言えばラスタライズと呼ばれる手法を使用します。 この手法は、技術的になりすぎることなく、シーンを形成する3Dモデルからの幾何学的情報を、2D画面のピクセルに変換します。 これはレイトレーシングよりも高速なプロセスであるため、システムが1秒間に30〜60回画像を生成する必要があるリアルタイムレンダリングでよく使用される手法です。

レンダリング速度とレンダリングのリアリズム

ではラスタライズが高速であれば、レンダリングするたびにこの方法を使用すればいいのでしょうか。ラスタライズによってもたらされる速度にはトレードオフが伴います。つまり、ラスタライズされたレンダリングでは通常、表面からの間接光の跳ね返りが考慮されていないため、リアリズムが失われます。 プリレンダリングではこれをうまく処理できますが、これまでに説明したように、これには時間がかかります。 ラスター化されたレンダリングでは、自然光の錯覚はベイク処理などの手法によって実現されることがよくあります。 CGリアリズムの重要なポイントである照明は、リアルタイムレンダリングよりもプリレンダリングにおいて、より洗練された方法でレンダリングできます。

2つの世界の衝突

しかし、ハードウェアとソフトウェアの進歩により、レイトレーシングとラスタライズの境界線、プレレンダリングとリアルタイムレンダリングのはっきりとした境界線が曖昧になり始めています。

NVIDIAのRTXシリーズのGPUにより、レイトレーシングをゲームのリアルタイムレンダリングで使用できるようになりました。 これにより、ゲーム内で目を見張るようなグラフィックスが作れるようになりました。 このようなハードウェアの改善により、ゲームクリエーターが映画のビジュアルと同等のゲームを作れるようになるUnrealEngineのようなソフトウェアが生まれました。 実際、Unity(別のリアルタイムレンダリングエンジン)は、完全にリアルタイムレンダリングだけを使用して作成した短編映画を公開し、フォトリアリズムの観点からリアルタイムレンダリングがどこまで進んだかを示しています。UnityのAdamとThe Hereticをチェックしてみてください。 ただし前述したように、表面のライトニングに関しては、プリレンダリングが依然として効果的です。 光が表面とどのように相互作用するかなどは、単純に複雑すぎるため、計算が多すぎて処理できません。

一方プリレンダリングは、ソフトウェアとハードウェアの両方の進化を介して、素晴らしい3D画像の出力にかかる時間を短縮するために、その効率性を進化させ続けています。

プリレンダリングであれリアルタイムレンダリングであれ、3Dレンダリングにとってエキサイティングな時代です。 ますます限界が押し上げられ、問題の壁は壊され、天井も広がっています。 これは、ビジュアルの優秀さが上がるにつれて、制作コストが下がることを意味しています。

まさにエキサイティングな時代なのです。

関連記事

live chat