


リアルタイム コンピュータ グラフィックスまたはリアルタイム レンダリングは、リアルタイムで画像を作成および分析することに重点を置いたコンピュータ グラフィックスのサブフィールドです。この用語は、アプリケーションのグラフィカル ユーザー インターフェイス ( GUI ) のレンダリングからリアルタイム画像分析まで、あらゆるものを指すことができますが、通常はグラフィックス プロセッシング ユニット(GPU) を使用するインタラクティブな3D コンピュータ グラフィックスに関連して最もよく使用されます。この概念の一例として、変化する 3D 環境を高速にレンダリングして動きの錯覚を生み出す ビデオ ゲームがあります。
コンピュータは発明されて以来、単純な線、画像、ポリゴンなどの 2D 画像をリアルタイムで生成できるようになりました。しかし、詳細な 3D オブジェクトを素早くレンダリングすることは、従来のフォン ノイマン アーキテクチャベースのシステムでは困難な作業です。この問題に対する初期の回避策は、3D グラフィックスを模倣できる 2D 画像であるスプライトの使用でした。
現在、レイトレーシングやラスタライゼーションなど、さまざまなレンダリング手法が存在します。これらの手法と高度なハードウェアを使用することで、コンピューターは、ユーザー入力を同時に受け入れながら、動きの錯覚を生み出すのに十分な速さで画像をレンダリングできるようになりました。つまり、ユーザーはレンダリングされた画像にリアルタイムで反応し、インタラクティブな体験を生み出すことができます。
リアルタイム 3D コンピュータ グラフィックスの原理
コンピュータ グラフィックスの目的は、特定の望ましい基準を使用して、コンピュータ生成画像、つまりフレームを生成することです。そのような基準の 1 つは、特定の秒間に生成されるフレームの数です。リアルタイム コンピュータ グラフィックス システムは、非リアルタイム グラフィックスが通常レイ トレーシングに依存するという点で、従来の (つまり非リアルタイムの) レンダリング システムとは異なります。このプロセスでは、詳細なレンダリングのために、数百万または数十億のレイがカメラから世界までトレースされます。このコストのかかる操作では、1 つのフレームをレンダリングするのに数時間または数日かかることがあります。

リアルタイム グラフィックス システムでは、各画像を 1/30 秒未満でレンダリングする必要があります。レイ トレーシングはこれらのシステムには遅すぎるため、代わりにZ バッファ トライアングル ラスタライゼーションという手法を採用しています。この手法では、すべてのオブジェクトが個別のプリミティブ (通常は三角形) に分解されます。各三角形は画面上で配置、回転、拡大縮小され、ラスタライザハードウェア (またはソフトウェア エミュレータ) が各三角形内にピクセルを生成します。次に、これらの三角形は、ディスプレイ画面での表示に適したフラグメントと呼ばれる原子単位に分解されます。フラグメントは、複数のステップで計算された色を使用して画面に描画されます。たとえば、テクスチャを使用して、保存された画像に基づいて三角形を「ペイント」し、シャドウ マッピングを使用して、光源への視線に基づいて三角形の色を変更できます。
ビデオゲームのグラフィック
リアルタイムグラフィックスは、時間とハードウェアの制約に応じて画質を最適化します。GPU やその他の進歩により、リアルタイムグラフィックスが生成できる画質が向上しました。GPU はフレームごとに数百万の三角形を処理でき、最新のDirectX / OpenGLクラスのハードウェアは、シャドウボリューム、モーションブラー、三角形生成などの複雑な効果をリアルタイムで生成できます。リアルタイムグラフィックスの進歩は、実際のゲームプレイグラフィックスと、従来ビデオゲームで見られるプリレンダリングされたカットシーンとの間の漸進的な改善によって証明されています。[1]カットシーンは通常、リアルタイムでレンダリングされ、インタラクティブである場合があります。[2]リアルタイムグラフィックスと従来のオフライングラフィックスの品質の差は縮まってきていますが、オフラインレンダリングの方がはるかに正確です。
利点

リアルタイム グラフィックスは、通常、インタラクティブ性 (プレイヤーからのフィードバックなど) が重要な場合に使用されます。映画でリアルタイム グラフィックスが使用される場合、監督は各フレームに何を描画するかを完全に制御できるため、長い意思決定が必要になることがあります。通常、これらの意思決定には複数のチームが関与します。
リアルタイム コンピュータ グラフィックスでは、通常、ユーザーは入力デバイスを操作して、ディスプレイに描画されるものを操作します。たとえば、ユーザーが画面上のキャラクターを移動したい場合、システムは次のフレームを描画する前にキャラクターの位置を更新します。通常、ディスプレイの応答時間は入力デバイスよりもはるかに遅くなります。これは、人間の動きの (高速な) 応答時間と人間の視覚システムの (低速な) 遠近法の速度との間の大きな差によって正当化されます。この差は他の影響ももたらします。入力デバイスは人間の動きの反応に追いつくために非常に高速でなければならないため、入力デバイス (たとえば、現在の[いつ? ] Wii リモコン) の進歩は、ディスプレイ デバイスの同等の進歩よりもはるかに長い時間がかかります。
リアルタイム コンピュータ グラフィックスを制御するもう 1 つの重要な要素は、物理法則とアニメーションの組み合わせです。これらの技術は、主に画面に描画される内容、特にシーン内のオブジェクトを描画する場所を決定します。これらの技術は、現実世界の動作 (空間次元ではなく時間次元)をリアルに模倣するのに役立ち、コンピュータ グラフィックスのリアリティを高めます。
グラフィックソフトウェアでリアルタイムプレビューを行うと、特に照明効果を調整するときに作業速度が向上します。[3]フラクタル生成ソフトウェアでは、画像の変化をリアルタイムで確認しながら パラメータ調整を行うことができます。
レンダリングパイプライン
グラフィックス レンダリング パイプライン(「レンダリング パイプライン」または単に「パイプライン」) は、リアルタイム グラフィックスの基盤です。[4]その主な機能は、仮想カメラ、3 次元オブジェクト (幅、長さ、奥行きを持つオブジェクト)、光源、照明モデル、テクスチャなどに関連して 2 次元画像をレンダリングすることです。
建築
リアルタイム レンダリング パイプラインのアーキテクチャは、アプリケーション、ジオメトリ、ラスタライズという概念的な段階に分けることができます。
申請段階
アプリケーション ステージは、「シーン」、つまり 2D ディスプレイに描画される 3D 設定の生成を担当します。このステージは、開発者がパフォーマンスを最適化するソフトウェアに実装されます。このステージでは、ユーザー入力の処理に加えて、衝突検出、高速化テクニック、アニメーション、フォース フィードバックなどの処理を実行する場合があります。
衝突検出は、アプリケーション ステージで実行される操作の一例です。衝突検出では、アルゴリズムを使用して (仮想) オブジェクト間の衝突を検出し、それに応答します。たとえば、アプリケーションは衝突するオブジェクトの新しい位置を計算し、振動するゲーム コントローラなどのフォース フィードバック デバイスを介してフィードバックを提供します。
アプリケーション ステージでは、次のステージのグラフィックス データも準備します。これには、テクスチャ アニメーション、3D モデルのアニメーション、トランスフォームによるアニメーション、ジオメトリ モーフィングが含まれます。最後に、シーン情報に基づいてプリミティブ(ポイント、ライン、三角形) を生成し、それらのプリミティブをパイプラインのジオメトリ ステージに送ります。
ジオメトリステージ
ジオメトリステージはポリゴンと頂点を操作して、何を描画するか、どのように描画するか、どこに描画するかを計算します。通常、これらの操作は専用のハードウェアまたは GPU によって実行されます。[5]グラフィックスハードウェアによって異なるため、「ジオメトリステージ」は実際には複数の連続したステージとして実装される場合があります。
モデルとビューの変換
最終的なモデルが出力デバイスに表示される前に、モデルは複数の空間または座標系に変換されます。変換では、頂点を変更することでオブジェクトを移動および操作します。変換とは、点、線、または図形の形状または位置を操作する 4 つの特定の方法の総称です。
点灯
モデルをよりリアルに見せるために、変換中に 1 つ以上の光源が確立されるのが一般的です。ただし、この段階に到達するには、まず 3D シーンをビュー スペースに変換する必要があります。ビュー スペースでは、通常、観察者 (カメラ) は原点に配置されます。右手座標系 (標準と見なされる) を使用する場合、観察者は負の Z 軸の方向を向き、Y 軸は上向き、X 軸は右向きになります。
投影
投影は、2D 空間で 3D モデルを表現するために使用される変換です。投影には、正投影(平行投影とも呼ばれる) と透視投影の 2 つの主な種類があります。正投影の主な特徴は、平行線が変換後も平行のままであることです。透視投影は、観察者とモデルの間の距離が増加すると、モデルが以前よりも小さく見えるという概念を利用しています。基本的に、透視投影は人間の視覚を模倣しています。
クリッピング
クリッピングは、ラスタライザ ステージを容易にするために、ビュー ボックスの外側にあるプリミティブを削除するプロセスです。これらのプリミティブが削除されると、残ったプリミティブは新しい三角形に描画され、次のステージに到達します。
スクリーンマッピング
スクリーン マッピングの目的は、クリッピング段階でプリミティブの座標を見つけることです。
ラスタライザステージ
ラスタライザー ステージでは、色を適用し、グラフィック要素をピクセルまたは画像要素に変換します。
参照
参考文献
- ^ Spraul, V. Anton (2013)。『ソフトウェアの仕組み: 暗号化、CGI、検索エンジン、その他の日常的なテクノロジーの背後にある魔法』No Starch Press、p. 86、ISBN 978-1593276669. 2017年9月24日閲覧。
- ^ ウルフ、マーク・JP (2008)。ビデオゲームの爆発的発展:PONGからプレイステーションまでの歴史、ABC-CLIO。p. 86。ISBN 9780313338687. 2017年9月24日閲覧。
- ^ Birn, Jeremy (2013). デジタルライティングとレンダリング: 第3版. New Riders. p. 442. ISBN 9780133439175. 2017年9月24日閲覧。
- ^ Akenine-Möller, Tomas; Eric Haines; Naty Hoffman (2008). リアルタイムレンダリング、第3版: 第3版。CRC Press。p. 11。ISBN 9781439865293. 2017年9月22日閲覧。
- ^ ボレスコ、アレクセイ、エフゲニー・シキン (2013)。『コンピュータグラフィックス:ピクセルからプログラマブルグラフィックスハードウェアへ』CRC Press。p. 5。ISBN 9781482215571. 2017年9月22日閲覧。[リンク切れ]
文献
- Möller, Tomas; Haines, Eric (1999). Real-Time Rendering (第 1 版). Natick, MA: AK Peters, Ltd.
- Salvator, Dave (2001 年 6 月 21 日)。「3D パイプライン」。Extremetech.com。Extreme Tech。2008年 5 月 17 日時点のオリジナルからアーカイブ。2007年2 月 2 日閲覧。
- Malhotra, Priya (2002 年 7 月)。仮想環境のリアルタイム レンダリングに関する問題 (修士)。バージニア州ブラックスバーグ: バージニア工科大学。pp. 20–31。hdl :10919/35382。2007年1月 31 日閲覧。
- Haines, Eric (2007 年 2 月 1 日)。「リアルタイム レンダリング リソース」。2007 年2 月 12 日閲覧。
外部リンク
- RTR ポータル – リソースへのリンクを厳選した「ベスト」セット
