現在は、ハードウェアの性能も高くなっているので、3DCGツールもフツーに動く環境が増えてきました。そこで、今回は、3DCGについて書こうかなと思います。

 

DCG                          

 

 3DCGはベクターグラフィックになりますが、これは、頂点座標で制御されている物になります。 この頂点を繋ぐことでポリライン(辺)やポリゴン(多角形)として使うことができます。と言っても、バーテックスシェーダーを使って情報を適応して表示をする場合、ポリゴン出なければ表示が出来ないので、テクスチャや形状をスクリーン空間上に表示する場合もポリゴンであることが前提になります。

 

 その為、3DCGでレンダリングを行う場合、ポリゴンを用いて形状の生成する事になります。

 

■ グラフィックと表示                 

 

 3DCGでは、現実世界で写真や動画を撮影するのと同じで、光がなければ計算が出来ません。その為、3DCGの最小構成は、

  

  ■ カメラオブジェクト

  ■ ライトオブジェクト

  ■ 被写体となるオブジェクト

 

の三つになります。Blenderを開くと、

 

 

のような画面になりますが、初期状態で、レンダリングが可能な状態が揃っています。

 

 この状態だとカメラや照明などがある事は確認できますが、第三者の視点で見ているので、実際に撮影する時には、

 

 

のようにカメラを構えて撮影する事になります。

 

 現実世界では、カメラで見えている物が撮影されますが、3DCGも同様で、カメラオブジェクトで設定した焦点距離とアスペクト比などで指定した矩形の範囲で光軸の先にあるものをとらえてレンダリング時にはそれを計算して出力することになります。

 

 

 3DCGではライトがないと真っ暗になりますし、ライトを使って影や反射の計算をしないとシルエットしかありませんから、

 

 

のように凹凸がないものが出来上がってしまいます。その為、3DCGで使用しているベクターグラフィックを2Dのラスターグラフィックに起こす場合、2Dのベクターグラフィック(SVGなど)を2Dのラスターグラフィックに変換するような平面座標同士の置き換え(スクリーン座標変換と近似色でのディテール再現)とは異なり、光源による影響を計算する必要があります。その為、上記の画像のような状態では問題があるので、光の計算を行い

 

 

のように陰影の計算も行う必要がある訳です。この計算を行う処理がレンダリングになりますが、計算手法が複数存在しています。

 

 

■ Zバッファ                      

 

Zバッファで計算するような手法も存在します。これは奥から層単位で状態を検知して物体の状態を得てスクリーン座標上に状態を適応する方法です。この時にオブジェクトと影を適応して合成する(Zバッファの場合だと、この処理がポスプロになります。)事になりますが、この方法が、Zバッファを使った方法になります。イメージとしては、

 

 

のように奥側からスキャンして形状が生成されていく感じになります。

 

 これだとスムースシェーディングが不可能で透明/半透明の表現やテクスチャーを張る事が出来ませんから、これを可能にするために、スキャンライン法を用いた処理が使用されています。

 

 

■ スキャンライン                   

 

 Zバッファは、Z軸と言う奥行き方向を基準に計算する物なので、色々と出来ない事が多かったのですが、スキャンライン法では、これを奥行きではなく、高さ方向でスキャンするような仕様になっています。これを行う事で、テクスチャの適応やスムースシェーディングも行えるようになります。

 

 

 ゲームの処理の場合、指定されたフレームレートが適正に出るような構造で設計する必要があるので、こう言った処理を使いますが、スキャンライン法でも

 

    影が出ない

    半透明・屈折などの表現が出来ない

    金属や鏡などの映り込みの表現が出来ない

 

という問題があります。その為、こうした処理は疑似的に実装する必要があります。

 

 スキャンライン法はレイトレーシングよりも高速なので、レイトレーシングを行う方法では難しい処理で実装できるので、fps数を稼ぎたいゲームなどでは向いていますが、大半の処理がポスプロになるので映像で使うと厳しいという特性もあります。

 

 また、ゲームで実装する場合だとシェーダーでどうにかする必要があるので、この手法を用いる場合だとプログラマブルシェーダーで対応するしかありません。

 

 これは、投影面(スクリーン)から見た時に走査線で検索するように上から下に計算していくので、スキャンラインですが、このアルゴリズムは、

 

 1 物体を投影し、y座標の大きい順にソート               

 

    y座標の最大・最小値によって物体と交差する

    走査線の範囲が判断できる。

 

 2 走査面と物体との交線(セグメン)を求める              

    

   各セグメント端点のx座標によって、xの小さい順に

   ソートする。

 

 (3) セグメント端点によりサンプルスパンを定める           

 

   各サンプルスパンにおいて奥行き方向でセグメント

   が重なる時には、z方向の最大・最小テストによって、

   セグメント同士の前後関係を求め、可視セグメントを

   表示する。

 

と言う感じになっています。これが、見えない部分を消して見える所だけを表示する時に使用する隠面消去になります。

 

 ゲームの場合、レイトレーシングを行わずにラスタライズをしていますから、基本的な考え方がこの2つです。軽くする場合には、このいずれかを使うことになりますが、これとは別に 【 レイキャスティング 】 と言う方法があります。ゲームの場合はいろいろと目的で選択肢が広がるのですが、映像を作る場合だと、レイトレーサーを使うことになりますが、レイトレーシングも前の世紀から使用されていたレンダリング手法になります。

 

 

■ レイトレーシング                  

 

 レイトレーシングは、光を追跡する手法なので、そう言った仕様になっていますが、現実世界だと、光源ベースで行うと、無数の光が拡散しているので、現実的な計算が行えません。つまり、光源ベースで計算してしまうと、光源の拡散が 【 lim0→x 】 のような巨大な物になり、それが光源の数だけ増えてしまうので、この干渉まで計算するとなると、スーパーコンピューターが必要になってしまいます。その為、これを別の方法で光と影を計算する目的で作られたのが、レイトレーシングです。 【 光源ベース 】 で考えると、前述のように拡散の計算をしなくてはならないのですが、3DCGで必要になるのは、

 

【 カメラで見えている物 】

 

ですから、360°コンテンツを作るわけではないので、

 

 

のような空間全体ではなく、

 

 

のようにカメラを構えた先で存在する物の範囲で大丈夫という事になります。その為、 【 視点の先後出来事を再現できればいい 】 ので、

視点に入ってくる光の計算をすればいいという事になります。つまり、始点から、

 

 

のように見えている範囲(投影面)に入ってくる光を追跡することでオブジェクトの表面の色や輝度を計算します。

 

 この時に光の屈折や透過や反射が計算されるので、フォトリアルな表現が行えるようになっています。

 

 現在では、ゲームでもこうした表現が可能になっているので、PCゲームでもこうした計算を個なった物が登場していますが、

 

 

 

のような光学系の特性を反映した処理がリアルタイムで行えるようになっています。

 

 ただし、レイトレーシングは光源からの計算を行わないので、間接照明からの光の表現が出来ません。20世紀だと、この解決方法として3DCGツールには、ラジオシティが実装されていました。

 

 

■ ラジオシティ                    

 

 ラジオシティはレンダリングの手法ではなくシェーダーの一種になりますが、レイトレーシングの結果に対して光源の熱量を計算して壁に当たった光の熱量を再評価することで間接光の表現を行います。

 

 レイトレーシングでは、光の当たらない場所は真っ暗になるので、環境項を設定して影の部分を調整する必要がありますが、【 底上げしただけ 】 なので、全体的に平坦になります。

 

 ラジオシティは先に熱量を計算したモデルを出力して、それを加味してレンダリングする事になるのですが、これを用いると、柔らかい光を出す事ができます。ただし、光の追跡はしていないので、光の反射が出来ません。その為、これに対応する為に、コースティックを使って、反社の表現をすることになります。

 

 

■ パストレーシング                  

 

 レイトレーシング+ラジオシティで柔らかい光を作り、コースティックを用いる事でラジオシティでも反射を使えるようになっていましたが、現在は、そう言った手法は見かけないと思います。と言うのも、現在はレイトレーシングの拡張を行った、 【 パストレーシング 】 が用いられているためです。

 

 レイトレーシングは、1本の光線の軌跡をたどるような処理でしたが、パストレーシングのレイトレースの計算は、カメラからレイを飛ばし、

 

    ライトレイ・シャドウレイ

    反射レイ

    GIレイ

    半透明・屈折レイ

 

のように複数のレイを飛ばしています。そして、これが、

 

■ 光とソフトシャドウの計算             

 

    ライトレイ・シャドウレイ

 

 

■ 反射・屈折・間接光の計算            

 

    反射レイ

    GIレイ

    半透明・屈折レイ

 

 

パストレーシングでは、拡散する光の表現が出来るのですが、カメラからのレイで、前述のような二つの処理を行っているのですが、この処理にも順番があり、パストレーサーでは、最初の光とソフトシャドウの計算を行います。

 

 カメラからのレイで、最初に直接光を計算します。そして、そこから、複数のシャドウレイを飛ばす事で、ソフトシャドウを生成します。

 

 これが光の計算になりますが、同様にカメラからを飛ばし、反射用のレイ、グローバルイルミネーション用のレイ、半透明や屈折を判定するレイを飛ばして計算します。この処理により間接光の計算を行います。

 

 パストレーシングでは、この計算をするのに単一のレイではなく、複数のレイを飛ばしているのですが、この時にサンプル数を増やして光の計算の精度を上げる事になります。

 

 現在のカリキュラムでは、中学校でもサンプリングについて学習しますが、中学校3年生の数学では、 【 標本調査 】 と 【 全数調査 】 が登城します。前者は、サンプル数を決めて確認する調査で、後者が存在する全ての物を対象とした調査です。

 

 例としては 【 世論調査 】 などは、サンプリングをしているので、全数ではありませんから、 【 標本調査 】 で、工場などで実装されているピッキングロボは全てのmのを判定しているので、これは全数で行っています。これと同じ全てを対象とした調査だと 【 構成調査 】 がありますが、これが 【 全数調査 】 になります。

 

 パストレーシングでは、レイのサンプリングを行う事になりますが、この時に 【 光の反射が行える条件 】 で光を飛ばす必要がありますつまり、何もないところに飛んでいくと前述の計算ができませんからレイが無駄になります。その為、例の数を増やしておく必要がある訳です。と言っても、 【 同じ場所にレイが密集すると無駄になる 】 ので、空間上の任意の場所に分散してもらう必要があります。

 

 こうした場合、計算用のレイの法則性がない違法がいいので、こうした時に用意する 【 条件 】 は 【 乱数 】 になります。このことから、 【 サンプリングが偏らないように乱数を用いて処理をする 】 事になります。その為、ガウス分布の乱数が必要になってくるわけです。

 

 その為、乱数を用いるのですが、この処理にモンテカルロ法が用いられます。つまり、 【 標本調査の精度を上げる為に、対象を乱数で偏りをなくし、その上でその結果から状態を計算する 】 というのがパストレーシングになります。パストレーサーと言うとモンテカルロ法が用いられますが、実際にはサンプリングを疑似乱数を用いて行うので、モンテカルロ積分が用いられています。

 

 この手法ですが、軽量化をする方法として、 【 準モンテカルロ法 】 のように 【 低違い量列 】 を用いてサンプリングをする方法があります。

 

 マインクラフト統合版のWINDOWS 10版にはRTXが来ていますが、正規版でもRTXの機能が標準実装になりました。このRTXの機能が、旧来のレイトレーシングではなく、パストレーシングになります。

 

 この技術解説動画が、NVIDIA Geforceの公式チャンネルで公開されています。

 

 

 

■ グローバルイルミネーション           

 

 レンダーではGIの計算もしていますが、BlenderでもGIの設定は可能です。GIの説明の前に、パストレーシングの光の計算方法には、

 

    ローカルイルミネーション

    グローバルイルミネーション(大域照明)

 

があります。ローカルイルミネーションでは、

 

 

■ ローカルイルミネーション            

 

    対象の面と光源だけを配慮する考え方

    (*)間接光は表現されない

 

 

なのですが、グローバルイルミネーションの場合、

 

 

■ グローバルイルミネーション            

 

    他の面に反射して届いた光や、他の物体を透過、

    屈折してきた光も計算する

    (*)間接光は表現される

 

 

という違いがあります。その為、 【 大域照明 】 の指定をしていないレンダリングだと、間接光の計算がされないので、コーティクスなどを加えないと透過した光の表現が出来なくなります。

 

 この広域照明ですが、ゲームの分野でも使用されており、Direct X 9.0c以降では使用できるようになっえいます。とは言っても、APIが使用できてプログラマブルシェーダーで調整する必要がありますが、そうした処理が可能になっています。また、Xbox 360やPLAYSTATION 3でも放射輝度伝搬を事前に計算してくことで疑似的に実装する事が可能でしたから、現在のゲームでも 【 疑似GI 】 を使うことができます。

 

 

■ フォトンマップ                    

 

 これは、光源から光子を大量に飛ばしてぶつかった位置の光量を保持しておき、視点からレイトレースを行い、フォトンを収集する方法になります。これは、正確で厳密な計算方法ではなく、ある程度の最適化を行って、速度を向上させつつ品質を揚げる手法になります。

 

 パストレーシングよりも制御が少し難しい特性がありますが、こう言った物も存在します。

 

 ストレーシングと品質              

 

 パストレーシングの場合、スクリーンの1ドットの部分に複数のレイを飛ばして、前述の計算をしているのですが、そのレイの結果から正確なスクリーン上の情報を出しています。これが古典的なレイトレーシングだと1本なので、計算の量が全く異なる訳ですが、この制度を揚げようと思うと、レイの数増やす必要があります。この時に使用するのが、サンプル数で、このサンプル数を高くするほど精度は高くなります。

 

 前述の条件のように 【 GIの計算もする 】 と品質が高くなるのですが、パストレーサーと言うとノイズの問題が出てきます。このノイズの問題は、サンプル数不足によるものになりますが、通常は、これを増価させるアプローチを用います。

 

 それ以外の方法だと、 【 計算方法を変更する 】 と言う選択肢が存在しており、 【 ライトトレーシング 】 をパストレーシングに加えた演算方法を用いる事でノイズが少なく光を得る方法が存在します。この場合、 【 ライトトレーシング 】 + 【 パストレーシング 】 の組み合わさった 【 双方向パストレーシング 】 という手法になりますが、レンダーの中には、こう言った計算方法を実装した物もあります。

 

 

■ 個人のPCでの選択肢               

 

 Blenderを動かす場合、予算が潤沢にある場合だと、

 

  【 とりあえず、RTX 3090とボトルネックが出ないPCに構成に

    してOptiXを有効にしてレンダービューでBlenderの公式サ

    イトにある重たいサンプルを表示して動かしてみると、何か

    の間違いじゃないのか?と思うような体験をすることになる 】

 

わけですが、現在のGPUでレンダービューで視点変更をすると、結構思貯めなシーンでも追従します。これが、Eeveeだと特にそうなりますが、上記の条件だと、Cyclesで試しても 【 パストレーシングとは? 】

と思うような速度でプレビューができます。

 

 とは言っても、誰でも彼でもそんなものが購入できる訳ではありませんから、演算能力上限で収まる範囲で処理を行う事になります。

 

 そうした場合、映像や画ぞの出力の場合、重たいシーンではレンダリング時間が長くなるのですが、パストレーシングの場合には、ノイズの問題も出てきます。

 

 現在は、こうした問題に対応する場合、複数の選択肢があります。

 

 

■ GPUで計算をする                  

 

 GPUレンダリングは2000年初頭だと当たり前に行えていたのですが、商用のサブスクリプションや高額なパッケージの製品しか対応しておらず、ワークステーション用のGPU(QuadroかFire Pro)を用いる必要がありました。

 

 現在は、Blenderを使うと、Geforce RTXやRADEONでもGPUアクセラレーションが効くので、CPUよりも高速な演算ができるようになっています。と言っても、スレッド数が多いと、Ryzen TR 3990Xのように速度が出る訳ではありません。YouTuneを探すとベンチマークの動画がありますが、

 

 

 

のように何かの間違いじゃないのか?と目を疑く様な速度でレンダリングが終わる(と言うか、現行のアーキテクチャと比較すると数割遅い製品でもこの速度です。)物もありますから、なんでもかんでもこれ以上になる訳ではありません。

 

 ただし、コンシューマのCPUだとGPUレンダリングの方が高速になる場合が多いです。Blenderの場合だと、

 

    NVIDIA : CUDA

    AMD   : Open-CL

 

でGPUレンダリングを行うと、CPUよりも速度が出ます。

 

 Blenderの場合、

 

    WorkBench

    Eevee

    Cycles

 

がありますが、この三つはGPUの負荷で処理をすることが可能なので、ソフトの多くの処理系統はCPUなので、CPUがだめだと多角的委厳しくなるので、CPUの性能を軽視する事が出来ませんが、GPUの性能が低いとレンダリングにおいて思わしくない状態になります。

 

 Cyclesを用いる場合だと、前述の2つのアクセラレーションが効くので、レンダリング時間を短縮できます。

 

 

■ OptiX                          

 

 ゲーミング構成でもOptiXは動くので、Geforce RTXでも大丈夫ですが、Quadro RTXの環境でレンダリングをする場合だと、OptiXが使用できます。

 

   ■ NVIDIA OptiX™ Ray Tracing Engine

      https://developer.nvidia.com/optix

 

 

 この機能は、Cyclesで機能するのですが、二つの機能があり、

 

    GPUレンダリング

    デノイザー

 

の機能を持っています。まず、CPUレンダリングですが、

 

【 OptiXはCUDAよりも高速 】

 

です。Pascalアーキテクチャ時代でもCUDAの速度は結構ありましたから、 【 CUDAを使うと速くなる 】 というのは体験済みの人が多いかもしれませんが、これはアーキテクチャが新しくなるほど速度が出る仕様になっています。その為、 【 CUDAは速い 】 と認識している人も多いと思いますが、現在のバージョンでは、 【 OptiX 】 が使用できるので、 【 輪をかけて速くなっている 】 わけです。

 

 その為、Ampere世代のアーキテクチャだと、OptiXを使った場合、確実な速度を得る事ができます。と言っても正確さを求める場合だと、CPUレンダリングになりますが、選択肢としてはこう言った物があります。

 

 前述のとおり、パストレーシングはサンプル数を抑えると、ノイズが出ます。OptiXを使ったとしても、重たいシーンはレンダリング時間がかかるので、 【 動画の書き出し 】 ともなると、結構な時間を要する事になります。YouTubeを探してみると、

 

 

のように対比した動画がありますが、結構な違いが出ていました。

 

 

 

 個人の所有するPCで考えると、サンプル数を高くすると現実味がなくなる場合がありますから、その場合、 【 サンプル数を下げる 】 事になります。ただし、ノイズが目立つようになるので、これを消す必要があります。この時に使用するのが、デノイザーです。

 

 OptiXにはデノイザーが実装されているので、更にレンダリング時間を短縮できます。YouTubeを見てみると、RTX 3060 Superでのレンダリングを行った動画がありますが、結構速度が出ていました。

 

 

 

■ OpenImageDenoiser                

 

 前述の条件は、RTXシリーズと言う縛りがあるので、AMDのGPUでは無理ですし、GPU依存があります。その為、Intel+AMDの構成では動作しません。これに対応しようと思うと、Open-CLになりますが、デノイザーは別の機能を用いる事になります。

 

 この時に使用できるのが、Open Image Denoiserです。

 

   ■ Intel® Open Image Denoise

      https://www.openimagedenoise.org/

 

 

 

この機能は、Core iシリーズだと初期の物でも動くので、殆どのCore iシリーズで動作する機能になりますが、Cyclesを使ってレンダリングする時にドラフトレベルまでサンプル数を下げても、の維持が軽減されます。と言っても、光の条件やディテールによっては、サンプル数をコントロールする事になりますが、レンダリング時間を短縮できます。

 

 

 

 

 この機能については、

 

 ■ 一点光源 【 ライティング 】

の中で触れていますが、Core i5 650でも動くので結構便利です。

 

 その為、アーキテクチャが新しい場合だと速度が出るはずですから、数世代まえのCore iシリーズでもデノイザーによる恩恵を受ける事ができます。また、Intelはアルゴリズムの賢いレイトレーサーをBlender 2.81から提供しています。

 

 

■ Embree                        

 

 Intelは、Blender 2.81からEmbeeを提供しているのですが、このレンダーは、

 

    SSE

    AVX

    AVX2

    AVX-512

 

をサポートする最新のインテルプロセッサー向けに最適化されています。

 

   ■ Intel® Embree

      https://www.embree.org/

 

 

その為、最新のアーキテクチャの場合、IntelのCPUの構成の場合、アルゴリズムの賢いレイトレーシングとデノイザーの併用で高速化を図る事ができます。

 

 

■ Radeon Pro Render              

 

 ここまでは、IntelのCPUとNVIDIAのGPUの構成の話でしたが、

 

【 CPUもGPUだけでなく、ゲーム機も含めてAMDの構成 】

 

と言う人も居るかもしれません。この場合、前述の2つは使えませんから、OpenCLとスレッド数を使うことになります。ただし、AMDは自社製のレンダーを提供しているので、それを使うとパフォーマンスが向上します。

 

 

   ■ AMD Radeon™ ProRender

      https://www.amd.com/ja/technologies/

      radeon-prorender

 

 

このレンダーですが、2.8から対応したので、Blenderでも使用できるようになったのですが、パストレーサーとリアルタイムレイトレーシングに対応したビューポートレンダーとして使用する事ができます。

 

 

基本的にRADEON Proシリーズ準拠となっていますが、RADEONも互換GPUとして対応しているようです。

 

 そして、このレンダーですが、昨年末に2.0が登場しました。

 

 

AMDの構成の場合だと、Radeon Pro Renderを使うと、レンダリングの品質を下げずにレンダリング時間を短縮できるようになっています。

 

 

 ューポートレンダリング             

 

 3DCGを扱う場合、過去と現在では結構状況が違うのですが、ビューポートレンダリングを用いる事で品質をコントロールできます。

 

 Blender 2.8以降は、 【 Eevee 】 が実装されたので、短時間で品質の高い物を出せるようになったのですが、これはレイトレーサーではありませんから、光の計算を正確に行えません。

 

 個人の所有しているPCで動画を書き出す場合だと、こう言ったビューポートレンダーを使うという選択肢もあります。これは、ゲームのテクノロジーでビューポートの書き出しをしているので、ラスタライズ処理の出力で動画を書き出す手法になりますが、Core i5 650を使ってレンダリングをしても

 

 ■ EeVeeでパーティクルをレンダリングする  

 

 ■ EeVeeでPMXファイルをレンダリングする  

 

位の速度が出ます。シーンが複雑になるとレンダリング時間は長くなりますが、色々な処理を実装できるので、

 

 ■ Bloom+モーションブラー            

 

のようにモーションブラー処理を入れたり、被写界深度を追加することもできます。

 

 ■ FoV+DoF                       

 

また、ラスタライズでは反射が出来ませんが、疑似的な実装によって対応できます。Eeveeでは、間接光と反射に対応していないのですが、スクリーンスぺ―ス反射を使うと反射が適応でき、ライトプローブを用いると、間接光を計算する事ができます。

 

 ■ スクリーンスペース反射             

 

また、ダイナミクスにも対応しているので、

 

 ■ Fluid                          

 

 ■ Smoke                        

 

のような流体も使用できますが、

 

 ■ ダイナミックペイント                  

 

のような処理もできます。これは、ダイナミクスではなく、条件に応じて形状が変形するメッシュの処理ですが、こう言った挙動を実装する事ができます。

 

 ちなみに、Core i5 650の環境でのレンダリングをした時の状態を動画にしていますが、

 

 ■ レンダリング速度                    

 

のような速度で書き出しができます。

 

 Eeveeを使う場合、VRAMが少ないと無理が来るので、そうした条件になると、Cyclesを使ってCPUレンダリングをする事になります。

 

 

 算とGPU                      

 

 Blenderですが、現行版だと、GPU性能を高くするとレンダリングのパフォーマンスが向上するので、メリットが多いのですが、GPUレンダリングを行う場合、VRAMが多いほうが何かとメリットがあります。と言うのも、VRAMはテクスチャのサイズや枚数が多くなると消費が激しくなるので、高解像度のテクスチャを当てたオブジェクトを複数体シーン内に配置する場合には、VRAMが少なくて困る事はあっても、多くて困る事はありません。

 

 また、ニューラルネットワークやディープラーニングなどもそうですが、処理をGPUで行う場合、VRAM不足になると落ちるので、それまでの計算が全て無駄になってしまいますし、Eeveeだと、無理がある処理だと、 【 計算そのものが出来なくなる 】 ので、VRAMが大きい演算能力が高い製品を導入しておいたほうがいいです。

 

 表示や視点変更などはGPUの処理になるのですが、CPUが担っている処理もかなり多いので、CPUとGPUの双方を強くする必要があります。また、メモリー実装量も多いほうがモデリング時に融通が利くので、おおめにしておいたほうがいいです。

 

 GPUの場合コアの性能も重要ですが、製作用途だと動画も含めて、VRAMが多いほうが効く場合が多いの、VRAMの多い製品を選んだほうがVRAM不足によるトラブルを回避できます。

 

 基本的に、GPUの構成もCPUと同じなので、コアからメモリーへのアクセスが存在して演算している訳ですが、この時に頻繁に使用するデータはコアに近いキャッシュに保存しています。各パーツの周波数帯域も重要ですが、このパーツがバスで接続されているので、バス幅も重要になります。この辺りは、PCの構成全体に言えるのですが、GPUnお内部でも考え方は全く同じなので、グレードが下の製品だとバス幅やキャッシュの容量などで上位製品よりも低くなっているので、上限となる速度が出にくくなっています。

 

 その為、使用している構成のVRAMでどの程度の処理が可能なのか?を知る必要がありますが、これだけは、実際に作って確認していくしかない(作る物によってVRAMの消費が違うので、どの程度の事をどう言った処理するのかで結果が違うので、定数がある訳ではありません。)ので、使用している環境の最適な条件を探す必要があります。

 

                                

 

 3DCGも実写と同じで、カメラとライトがないとどうしようもないのですが、被写体だけ用意しても、環境を構築しなければ、光と影の情報がないので、まともな結果にはなりません。また、レンダーによって結果が異なるのですが、どう言った手法で計算するのか?によってもレンダリング結果が変わります。

 

 その為、オブジェクトやモーションがアセットで用意されているとしても、 【 カメラの向こう側の状態を作るのは人 】 ですから、見えている状態を作る上では、実写の映像制作と同じように光の状態を考えて実装する必要があります。その為、動画を作る場合だと、3DCGツールを使う知識はあくまでも道具の使い方でしかないので、出力する物が動画だと動画を作る為の知識も必要になります。

 

 現在のPCだと、ゲーミングデスクトップ辺りだと、意外と3DCGツールも動くので、ポリゴン数に気を付けると、動くものを作れなくもないのですが、単一のオブジェクトを動かすのと、セットを用意して動かすのでは、演算の総数が異なるので、レンダリング時間も長くなりますし、GPUの処理が追い付かない場合もありますから、個人が所有しているPCだけで制作をする場合だと、 【 マシンの上限を知りその範囲でできることを考えて作る 】 必要があります。これは、マシンスペックが決まっている状態でゲームを作る場合と全く同じ条件になりますが、動画の書き出しの場合だと、 【 書き出し時間が現実性のある範囲に収まる事 】 も条件に含まれますから、それも踏まえて品質のコントロールをすることになります。