Main Content

投影法について

2 つのタイプの投影法

MATLAB® グラフィックスは 3 次元グラフィックスを表示するために、正投影と透視投影の 2 つのタイプをサポートしています。選択する投影法は、表示対象のグラフィックス タイプによって異なります。

  • orthographic は、直方体 (すなわち、向かい合う辺が平行な箱) として表示ボリュームを投影します。カメラからの相対距離により、オブジェクトのサイズが変わることはありません。この投影タイプは、オブジェクトの実際のサイズとオブジェクト間の角度を維持することが重要な場合に有効です。

  • perspective は、角錐台 (頂点が底面と平行に切断された角錐) として表示ボリュームを投影します。遠くのものは奥行きが短くなります。つまり、カメラから遠いオブジェクトは小さく見えます。この投影タイプは、実際のオブジェクトをリアリティのあるビューで表示したいときに有用です。

既定の設定では、MATLAB は正投影を使用してオブジェクトを表示します。camproj コマンドを使用して、投影タイプを設定することができます。

以下の図は、正投影である、patch を使用して作成した ダンプカーの描画と数学関数の表面プロットです。

ダンプカーを囲む箱の前面と後面の幅を測定すると、サイズが同じであることがわかります。この図は、人が奥行きのある実際のオブジェクトを見ると感じる遠近感が欠けているため、不自然に見えます。これに対し、表面プロットは四角形の空間内部の関数値を正確に示しています。

次に、同じグラフィックス オブジェクトに透視投影が付加されたものを見てみます。ダンプカーは、見ている人から遠くにある部分が小さく表現されているため、より自然に見えます。この投影法は、人の視覚機能を模しています。これに対し、表面プロットは歪んで見えます。

投影タイプとカメラ位置

既定の設定では、MATLAB は CameraPositionCameraTargetCameraViewAngle の各プロパティを調整して、カメラをシーンの中央に向け、すべてのグラフィックス オブジェクトを座標軸内に含めるようにします。グラフィックス オブジェクトがカメラの背後にあるようにカメラ位置を定めると、表示されるシーンは座標軸の Projection プロパティと Figure の Renderer プロパティの両方から影響を受ける可能性があります。次の表は、投影法のタイプとレンダリング手法の相互関係を要約したものです。

 

正投影

透視投影

OpenGL®

CameraViewAngle により CameraTarget におけるシーンの範囲を決めます。

CameraViewAngle により CameraPosition から無限遠点までのシーンの範囲を決めます。

Painters

CameraPosition に関係なく、すべてのオブジェクトを表示します。

グラフィックス オブジェクトが CameraPosition の背後にある場合は推奨しません。

次の図は、正投影と OpenGL を使用した場合に見える範囲 (グレー領域) を図示しています。撮影者からカメラ前方にあるものすべてが見えます。

透視投影では、撮影者からはカメラ画角のコーン角内のものだけが見えます。

MATLAB は表示軸に沿って切り取ることはしないので、Painters レンダリング技法は 3 次元空間でのカメラ移動にはあまり適しません。Painters 技法における正投影では、シーンに含まれるすべてのオブジェクトがカメラの位置に関わらず可視です。

3 次元シーンの出力

前のセクションで説明した同じ効果がハードコピー出力でも発生します。表示結果をスクリーン上に得るには、明示的に OpenGL の出力を指定しなければなりません (print コマンドで -opengl オプションを使用します)。