OpenGL®カメラとは何ですか?
「OpenGL®カメラ」は、Open GraphicsLibrary®(OpenGL®)シーン内の視聴者の仮想位置に付けられた名前です。 これは、シーン内の視聴者の位置と、視聴者が見ている場所または方向によって定義されます。 OpenGL®シーンでのカメラの位置により、シーンのどの部分がディスプレイデバイスにどの角度でレンダリングされるかが決まります。 OpenGL®カメラの記述には、モデルビューマトリックスと投影マトリックスの2つのマトリックスが使用されます。これらはそれぞれ、カメラの位置と、カメラが見ているオブジェクトのレンダリング方法を記述します。 カメラをシーン内で移動してさまざまな領域を表示したり、モーションをシミュレートしたりできますが、多くの場合、カメラではなくシーン内のオブジェクトを移動する方が簡単または効率的です。
OpenGL®を学習する際、一部のプログラマーはOpenGL®カメラの比較的抽象的な特性を理解するのが困難です。 これは主に、一部の変換やその他の機能が、標準のOpenGL®オブジェクトで実行するのと同じようにカメラで動作しないためです。 さらに、OpenGL®カメラを使用した複雑な操作には、通常、行列演算の知識とOpenGL®変換パイプラインの理解が必要です。 OpenGL®ライブラリのサポートには便利な機能がいくつかありますが、よりインタラクティブなアプリケーションのサポートツールキットだけに依存することは困難です。
OpenGL®カメラの位置は、modelviewマトリックスを使用して定義されます。 カメラはシーン内のどこにでも配置でき、任意の軸に沿って移動または回転できます。 多くのアプリケーション、特に少数のオブジェクトのみを含むアプリケーションでは、シーン内のオブジェクトに逆変換を適用してモーションの外観を与える方が簡単です。 基本的に、この場合、シーン全体が静的カメラの周りを動きます。 より大きなシーンの場合、パイプラインとマトリックス演算の複雑さを処理して、カメラを自由に動かし、シーンを静止したままにする方が簡単です。
OpenGL®カメラの属性は、投影マトリックスによって制御されます。 カメラの類推を使用するために、投影行列は使用されているレンズのタイプと考えることができます。 射影行列は、遠近感の調整がない正射投影法と、オブジェクトのサイズを決定する際の距離を考慮した遠近法射影を行うために頻繁に変更されます。 魚眼レンズ、焦点距離、異なるアスペクト比などのその他の効果はすべて、投影行列を使用して設定できます。