【2021】3Dレンダリング画像の情報処理とは?レンダリングを高速化するための基礎知識


by test

7月 17, 2021

「レンダリング」は、3D制作で非常に重要な工程ですが、複雑でよくわからない点も多く、初心者がつまずくポイントです。

レンダリングは3D編集の中でも「仕上げ」に該当し、作品の出来を左右する工程といっても過言ではありません。

しかしながら、レンダリングを「時間がかかる待ちの工程」と、なんとなく使用している方も多いのではないでしょうか?

レンダリングの基礎知識を理解することで、その作業を高速化できるかもしれません。

今回は、レンダリングについて3D画像処理的観点から解説し、レンダリングを高速化するための方法について紹介します。

3Dにおけるレンダリングとは

まず、「3Dにおけるレンダリングとは?」という点について解説します。

レンダリングとは、コンピュータが数値や配列として計算したデータを、人間が理解しやすい形に「翻訳/表現」することです。

抽象的なデータをコンピュータが人間にとって理解しやすい出力データを生成するプロセスが「レンダリング」なのです。

ちなみに、「レンダリング」は3D制作以外でも、映像、音楽などの分野でも使うことばです。

レンダリングは「3D画像を美しく見せるための擬似的計算」

さて、3Dにおけるレンダリングは具体的に何を指すかというと、「3D画像を美しく見せるための擬似的計算」です。

3Dソフトウェアで扱うデータはマテリアル(質感)、テクスチャ(模様)、ライティング(光源)などのさまざまな情報が含まれます。

レンダリングは、これらの情報を基にして画像を計算し出力します。

モデルの質感、モデルの動作、エフェクト、光の当たり具合、カメラの動き……といった情報をすべて計算し、1つのイメージを得ます。

この際に用いられている計算は、物理的に完璧に正しいものではなく、「いかに美しく見えるか」を主眼に考えられて発展してきました。

レンダリングは3Dを美しく表現するために必須の工程であり、レンダリングをして初めて3DCGは完成するのです。

ハリウッド映画などで使われる3DCG映像は非常に美しいですが、レンダリングに数日単位の時間をかけたものもあるそうです。

レンダリングで表現できる物理現象

レンダリングで表現できる物理現象はさまざまですが、最も重要なのは「光の当たり方」です。

3Dデータに当たる光の進路を計算し、どこが影になるか、どこが明るくなるかという計算をします。

この「光の当たり方」は、3Dデータをいかにリアルに(もしくは魅力的に)見せるかを決める重要な要素です。

また、この光の計算は「質感」を再現するうえでも欠かせません。

光の当たり具合をリアルに近づけ、現実の質感に近い「フォトリアリスティック」な3D画像を得ることができます。

なお、3Dレンダリングでは「水の流れ」や「雲の動き」といった流動的な物体の物理現象を再現することも得意としています。

3Dレンダリングで行われている画像情報処理

次に、少し数学的・物理的なお話になりますが、3Dレンダリングで行われている画像情報処理について解説します。

光路計算・反射計算

先ほどもお伝えしたように、光の進む経路の計算(光路計算)は3Dレンダリングにおいて最も一般的な処理です。

また、光がオブジェクト(物体)に衝突した後、反射してどこに進むかの計算(反射計算)についても、レンダリング結果をいかにリアルに表現するかを決定する重要な画像処理です。

これらの光路計算や反射計算は、レンダリングの見栄えを計算する過程に該当しており、「パストレーシング」「レイトレーシング」などさまざまなアルゴリズムが存在します。

座標変換

「座標変換」は3次元の仮想世界にある3Dオブジェクトの各座標が、2D画面上のどの位置に対応しているかを計算する処理のことです。

言い換えれば「3D空間の2D化」であり、3Dデータとして表現されているxyz座標を、最終的な2D画像上のxy座標に変換する処理です。

隠面消去

3Dレンダリングの際、3次元のデータを2次元の画像に変換するため、画面上に映らない部分が発生します。

たとえば、「家の前に木がある」という3Dデータの場合、家の一部が木に隠れて見えなくなっているはずです。

「隠面消去」は、こういった見えなくなっている部分をレンダリングの際に除外する作業です。

この作業をすることで、オブジェクトの前後関係を表現することができます。

また、ゲームなどのリアルタイムレンダリングを行う場合は、プレイヤーが見ることのない部分は最初からオブジェクトをなくしていることもあります。

これは隠面消去を応用したもので、見えない部分のデータは最初から削除しておくことで、レンダリングを軽くするテクニックです。

陰影計算

陰影計算(シェーディング)は、光源や視点との位置関係、表面の質感、他の面との相互作用などを考慮して、レンダリング画像を出力します。

「陰影」は3D表現の核といえる部分でもあり、レンダリング画像の出来のほとんどを決めるといっても過言ではありません。

リアルな結果が得られるかどうかを左右する重要な項目であるために、非常に数多くのシェーダー(陰影計算手法)があります。

たとえば、フリーソフトウェアであるBlenderにも20を超える数のシェーダーが存在します。

シェーダーによって多様な表現ができるため、目的に応じて適切なシェーダーを選択することが重要です。

表面処理

「表面処理」とは、表面の模様や凹凸を表現する処理のことです。

最も有名なのは「テクスチャマッピング」でしょう。

画像データで作られた表面情報(テクスチャ)表面の模様を表現する手法で、普段目にするほとんどの3D映像はテクスチャマッピングをしています。

表面処理にもいくつかの種類があり、凹凸を擬似的に表現する「バンプマッピング」、凹凸を正確に表現する「ディスプレイスメントマッピング」、周囲からの反射を表現する「エンバイロメントマッピング」などがあります。

3Dレンダリングの画像表示の種類

次に、レンダリングの画像表示の種類について解説します。

レンダリングには主に「サーフェスレンダリング」と「ボリュームレンダリング」があります。

サーフェスレンダリング

サーフェスレンダリングは、3Dデータの表面(サーフェス)を基にレンダリング画像化する方法です。

データの表面のみに着目し、見える範囲にない「中身」を除去してレンダリングします。

3D物体の表面情報のみを抽出して、レンダリング画像を表現します。

3Dデータの物体の表面を微小な三角ポリゴンに分割し、数値データに変換することで、さまざまな角度から見た物体の外観を 計算によって描画します。

ポリゴンの数が増えるほど表現は細かくなりますが、計算量が増えるため描画に時間がかかります。

ちなみに、3D制作ソフトウェアのほとんどがサーフェスレンダリングを採用しています。

ボリュームレンダリング

ボリュームレンダリングはサーフェスレンダリングより少し複雑な手法で、3Dデータの体積(ボリューム)を元にレンダリングする方法です。

その際に重要なのが「ボクセル」と呼ばれる立方体のデータです。

「ボクセル」は、いわば「ピクセル」の3D版と考えるとわかりやすいでしょう。

ボクセルの集合で形成される3次元データについて、各ボクセルの明るさを計算して画面に表示することで、ドット絵のように3次元データをレンダリングします。

また、ボリュームレンダリングではボクセルデータの輝度値に加えて、透明度の情報を用いてレンダリングすることも可能です。

透明度を設定することで、表示物を半透明にして内部の状態を表現したり、不要な部分を透明にしたりすることも可能になります。

3Dデータの中身を見ることができるため、医療現場で利用されていることが多く、MRIやCT画像を立体的に見やすくすることができます。

表現の自由度は高いものの、計算が複雑になるためリアルタイム表示には適していません。

3Dレンダリングの画像処理計算を高速化する方法

さて、ここまで3Dレンダリングがいかに高度な計算処理を必要とするかが理解いただけたかと思います。

こういった高度で複雑な計算は、非常に時間がかかるため「レンダリングの高速化」は非常に重要な課題です。

最後に、この項目では3Dレンダリングの画像処理計算を高速化する方法について解説します。

レンダリングエンジンを適切なものに変更する

レンダリングは「レンダリングエンジン」という計算ソフトを通して行います。

レンダリングエンジンは、光の当たり方の計算や専用のシェーダが搭載されており、エンジンごとの個性が大きく出ます。

高性能なレンダリングエンジンであれば、それだけリアルで魅力的な表現ができるわけですが、当然計算時間もかかります。

たとえば、単純なポリゴンで形成されているのに、リアルな表現ができるレンダリングエンジンはオーバースペックです。

「どんな表現をしたいか」という観点に立ち、レンダリングエンジンを適切なものに選択することが必要です。

余計な計算が減るように3Dデータを設計する

レンダリングは、置かれたオブジェクトの情報を元に計算を行うため、元の3Dデータの複雑さに影響されます。

不要なデータが含まれていても計算は行われてしまうため、余計な時間がかかってしまいます。

したがって、レンダリングを行う前に、データの計算量が増えてしまわないようにすることが大切です。

高性能なCPU/GPUを利用する

適切なレンダリングエンジンを選び、無駄のない3Dデータを設計しても、結局はマシンの計算能力がなければレンダリングを高速化することはできません。

レンダリングには、CPUもしくはGPUを使用します。

これは、PCの計算能力を決める部分でもあるため、単にPCの性能がレンダリングの速度に影響すると考えて良いでしょう。

近年では、GPUレンダリングが可能なレンダリングエンジンが増えており、高性能GPUによるレンダリングが主流になっています。

クラウドレンダリングを利用する

上記の3点を改善しても、レンダリングに時間がかかる可能性は十分に考えられます。

そんなときは、クラウドレンダリングの利用も検討してみるのも良いでしょう。

クラウドレンダリングでは、外部のCPU/GPUにインターネットで接続し、計算資源をレンタルしてレンダリングを行います。

当社モルゲンロットが運営する「Render Pool(レンダープール)」は、クラウドレンダリングを行うことができるレンダーファームです。

レンダリングの高速化に行き詰まったら、Render Poolの利用も検討してみてください。

RenderPool

詳しくはこちらの公式サイトをチェックしてみてください。

まとめ

レンダリングの画像処理について解説しました。

レンダリングは複雑な計算をいくつも行うため、計算速度がレンダリング速度に直結します。

なお、ここで解説したレンダリングの画像処理は、レンダリングで行われている複雑で膨大な計算のうちの、ほんの一部にすぎません。

レンダリングについてよく知るために、より深い知識について勉強してみても良いでしょう。