OpenGLと3Dアニメーションソフトウェアのレンダリングの違い


16

OpenGLなどを使用すると、かなりリアルな外観のものを「リアルタイム」60 FPSでレンダリングできます。ただし、たとえばMayaや3ds Maxで同じシーンのビデオを作成しようとすると、同じ解像度とFPSであっても、レンダリングに非常に長い時間がかかります。

これら2つのタイプのレンダリングが同じ結果に対して異なる時間を要するのはなぜですか?

注:はい、3Dアニメーションソフトウェアは、リアルタイムで実行できるものよりも非常に優れた画像を生成できることを理解しています。しかし、この質問のために、私は平等な複雑さのシーンに言及しています。


1
簡単な答えは、OpenGLはショートカットを使用するということです。
user253751

回答:


9

主な違いは、OpenGLのビデオゲームでは、基本的にラスタライズと呼ばれるプロセスがあり、シーンのどの部分を表示するかを決定するということです。

リアルタイムで体験できるように、高速である必要があります。

したがって、アルゴリズムはいくつかの簡単な手順を実行します。

  • シーンの特定の部分が視錐台にあるかどうかを確認します

    錐台カリング

  • 深度バッファを使用して後でレンダリングする必要があるかもしれない何かがその前にあるかどうかを確認します

    深度バッファ

  • 見つけたオブジェクトを描画する順序

  • それらを画面に投影して描画します
  • 日陰彼らはテクスチャ/シェーダ/ライト/に基づいて...

一方、レンダリングソフトウェア(Blender / Max / Maya / ...)は、おそらくある種のレイトレーシングを使用します。

これには、より高度なリアリズムを実現するために、より多くの数学が含まれます。基本的に同じように機能します:

  • カメラとその前にイメージプレーンを作成する
  • 各ピクセルを通して1つのレイ(または複数のサンプルレイ)を撃ちます
  • 光線がシーン内の何かに当たるかどうかを確認します
  • 最も近いヒットは、最終的にピクセルに描画されるものです(深度バッファーなど)
  • 与えられた点の光を計算します 光の計算

....

これがレイトレーシングの出発点であるため、ここではリストを停止します。

ポイントがヒットしたかどうかだけをチェックする代わりに、ほとんどのレイトレーサーは計算を開始します:

  • 表面が透過する光の量
  • 反射される光の量
  • 光源に到達するまで、ヒットポイントからシーンに新しいレイをキャストします

シーン内の特定のポイントの光を計算するために使用できる、さまざまな程度のリアリズムを備えた多くのテクニックがあります。

TL; DR 要旨は、レイトレーサーは照明が来ると物理的に正確にしようとするため、ピクセルあたりの計算量が多い(時には何千もの光線を照射する)一方でゲームは速度を上げることですより単純な光の計算と、リアルに見えるようにする多くのシェーダートリックを使用して、画面の大きな部分を描画します。


7

リンゴとオレンジを比較している

ゲームは、モデリングアプリのビューポートのようなものです。レンダリングにビューポートを使用でき、同じ60fpsの速度が得られます。

Mayaや3DS Maxのようなモデリングソフトウェアでは非常に優れたリアルタイムグラフィックスを取得できない理由はありません。多くのゲームに匹敵する結果。ゲームと同じようにビューポートシェーダーがあります。また、可能な限り高速にフレームをディスクにチャンクするビューポートレンダリングオプションもあります(Mayaから30 fpsでフルHDレンダリングを実行しました)。あなたがしなければならないのは、提供されたソフトウェアレイトレーサーの使用をやめることです。

ただし、いくつかの違いがあります。主な違いは、ユーザーとしてのあなたは、ゲーム開発者ほど多くのものを最適化しないことです(最適化は本のすべてのトリックを使用しています)。次に、柔軟性が必要なため、アニメーションプリミティブがCPU上で動作します。ゲームでは、最適化を行う余裕があります。結局のところ、あなたの隣にプログラミングチームがいないことに対して支払うのです。

実際、多くのものは事前に計算されている可能性があります。そのため、それらはそれほどうまく編成されていません。間接照明をベイク処理すると、ベイク処理されていない結果が毎日打ち消されます。

レイトレーサーが遅いのはなぜですか?

それらは*ではなく、レイトレーサーは簡単なので、より多くの作業を行う傾向があります。機能ごとに、計算サイクルでそれほど遅くはありません。たとえば、レイトレーサーでセカンダリレイをキャストする必要はありません(その場合、ライフトレーサーはジオメトリをカリングするか、ジオメトリをロードしません。実際、mental rayはそれを行います)。これは通常、簡単に実行できるためです。これがレイトレーサーの明らかな利点です。場合によっては、CPU上で実行するように構成することもできます。これらは、さまざまなことに最適化されています。

  1. フレームだけでなく、すべてのデータをディスクに送信します。ほとんどのゲームのスピーディネスを即座に破る何か。

  2. 一般的なハードウェアでの作業。GPU用に最適化すると、GPUは特定のものに対してはるかに高速になります。ただし、すべての負荷で機能するわけではありません。実際、Intel CPUはGPUよりもコンピューティング全般が高速です。GPUはCPUとは異なり、超並列です。GPUにとどまり、転送を最小化し、GPUアーキテクチャ用に最適化できる場合、アーキテクチャが優先されます。

そのため、柔軟性と使いやすさに料金を支払うことになります。しかし、マヤとマックスの両方が極端な老齢に苦しんでいることを認めています。そのため、より高速になります。

TL; DR主な違いは、最適化(多くのトリックを読む)と利用可能な外部リソースです。

PS:これは物理的に正しいからだという誤解があります。それは確かに可能ですが、レイトレーサーは、平均的なゲームや他の計算よりも本質的に物理的に正確ではありません。実際、多くのゲームは本当に優れたモデルを使用していますが、多くのモデラーは使用していません。

* http://www.graphics.cornell.edu/~bjw/mca.pdf参照


2
申し訳ありませんが、それは明らかに間違っています。OpenGLとDirectXは、正確なレイトレーシングよりも本質的に高速な近似を使用します。等、ゲーム、CADを、:加速3Dグラフィックスの全体のポイントは、リアリズムと速度とのバランス、最も実用的な用途のための良好な十分探しアルゴリズム有している
IMil

2
@IMil OpenGLはレイトレーシングに使用できます。問題のハードウェアに最適化されているため、高速です。しかし、Mayaはレイトレースする必要はありません。MayaとMaxは、ゲームと同じようにopenGLとdirectXを使用できます。Maya(および3ds)ビューポートはopenglまたはdirectX(任意)です。特定の並列処理の負荷でプロセッサが遅いという事実は別のことです。したがって、答えは立っています。Mayaの標準設定は、標準スキャンラインよりも現実的ではありません。
joojaa

5

リアルタイムプレビュー

業界のVFX側で作業している場合、プロダクションレンダリングではなくリアルタイムビューポートプレビューについて話している場合、Mayaと3DS Maxは通常OpenGL(または場合によってはDirectX-ほぼ同じ)も使用します。

VFXアニメーションソフトウェアとゲームの概念上の主な違いの1つは、想定できるレベルです。たとえば、VFXソフトウェアでは、アーティストが数十万から数百万のポリゴンにまたがる単一のシームレスキャラクターメッシュをロードすることは珍しくありません。ゲームは、シンプルで最適化されたメッシュ(それぞれ数千の三角形)のボートで構成される大きなシーンで最も最適化される傾向があります。

プロダクションレンダリングとパストレース

また、VFXソフトウェアは、リアルタイムプレビューではなく、光線が実際に1つずつシミュレートされるプロダクションレンダリングにも重点を置いています。多くの場合、リアルタイムプレビューは、それだけであり、高品質の制作結果の「プレビュー」です。

ゲームは最近、リアルタイムの被写界深度、ソフトシャドウ、拡散反射などのような多くの効果を近似するという美しい仕事をしていますが、それらはヘビーデューティ近似カテゴリに属しています(例:拡散のぼやけたキューブマップ実際に光線をシミュレートする代わりに反射)。

コンテンツ

このテーマに戻ると、VFXソフトウェアとゲームの間のコンテンツの仮定は大きく異なります。VFXソフトウェアの主な焦点は、あらゆる種類のコンテンツを作成できるようにすることです(少なくとも理想的ですが、実際にはほとんどどこにも近くありません)。ゲームはより多くのより重い仮定でコンテンツに焦点を合わせます(すべてのモデルは数千の三角形の範囲内にあり、法線マップは偽の詳細に適用されるべきです、実際には130億の粒子を持ってはならず、キャラクターは実際に筋肉によってアニメーション化されませんリグおよび張力マップなど)。

これらの仮定により、ゲームエンジンは、錐台カリングなどの高速化技術をより簡単に適用できます。これにより、高いインタラクティブなフレームレートを維持できます。一部のコンテンツは静的で、事前に焼き付けられると想定することができます。VFXソフトウェアは、コンテンツ作成の柔軟性がはるかに高いため、こうした種類の仮定を簡単に立てることはできません。

ゲームはそれをより良くする

これは議論の余地のある意見かもしれませんが、ゲーム業界はVFXソフトウェアよりもはるかに有利な業界です。単一のゲームの予算は数億ドルに及び、数年ごとに次世代エンジンをリリースし続ける余裕があります。彼らの研究開発努力は驚くべきものであり、何百ものゲームタイトルが常にリリースされています。

一方、VFXおよびCADソフトウェアは、それほど有利な場所ではありません。R&Dは学術的な環境で働く研究者によって外部委託されることが多く、多くの業界では、何年も前に公開された技術を新しいものであるかのように実装することがよくあります。そのため、AutoDeskほどの規模の企業から提供されたVFXソフトウェアでも、最新のAAAゲームエンジンほど「最先端」ではありません。

また、はるかに長い遺産を持つ傾向があります。たとえば、Mayaは17年前の製品です。何度も改装されましたが、そのコアアーキテクチャは同じです。これは、Quake 2を使用して、2015年までずっと更新と更新を続けようとすることに似ている場合があります。努力は素晴らしいものですが、おそらくUnreal Engine 4とは一致しません。

TL; DR

とにかく、それはトピックのその側面を少し理解しています。ビューポートでのリアルタイムプレビューとプロダクションレンダリングのどちらについて話しているのかわかりませんでしたので、両方を少しだけ取り上げようとしました。


時間の問題でもあります。たとえ約60 fpsでレンダリングし、許容できる結果が得られたとしても、最適化のためにパンアウトすることはほとんどありません。フレームごとに3分かかり、200フレームをレンダリングするとします。シェーダーライターを雇って最適化することで60 fpsを得ることができるかもしれませんが、それは少なくとも1〜2時間かかります。ただし、3分間で200フレームは10時間しかかからないため、コストを節約できます。実際には、より多くのハードウェアを購入する方が安く、あまり心配する必要はありません。ゲームはこのアプローチを取ることができません。
joojaa

@joojaaまた、少し複雑です。Mayaで非常に優れたリアルタイムシェーダーを実行するには、経験豊富なシェーダー開発者(ゲインの低い)でも、少なくとも1年程度かかる場合があります。ノードシステムの柔軟性はプロダクションレンダリングを対象としているためです。これらの汎用シェーダーノードをUE 4の効果の範囲をキャプチャするリアルタイムシェーディングシステムに変換するには、リバースエンジニアリングの考え方と一種のGLSL / HLSLコード生成手法(メタプログラミングシステムなど)が必要です。例えば
ドラゴンエナジー

@joojaa UE 4のシェーダーエンジンは、非常に近いPBRマインドセット(DisneyのPBRシェーダーの非常に小さなサブセット)を直接対象としています。Mayaのマテリアルシステム(レイトレーシング用に設計された)のようなものから始めるのではなく、高速でリアルタイムの目的のためにマテリアルシステムさえも設計しました。たとえ最も明るいUE 4がVP 2.0で動作したとしても、この種のことを意図していない設計に対して同じ結果を達成するために、おそらく何年も日夜働かなければなりません。
ドラゴンエナジー

しかし、VFXアプリでそのパイプラインを使用している場合でも、各シーンで追加の最適化が必要になる場合があります。同じシェーダー開発プラットフォームの場合、MayaユーザーがUDKでレンダリングできない理由はありません。
joojaa

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.