透視投影カメラとSharpGL

二次元画像表示を3つのだけオフを表示することができるので、世界で三次元ボリュームは、座標系の場合は、寸法を小さくするために三次元ボリュームの投影に頼る必要があります。

投影変換の目的は、シーンの過剰部分は、in vitroで表示されないように、表示ボリュームを定義することです。

透視投影の投影(透視投影)と前面投影(正射影)二つ。

図は透視投影の効果であり、それははるかに極端なポイントを消失する消失、遠くの小さなオブジェクトの観点から、離れた視点の近くに大きな物体から、である、人間の経験の観察と一致しています。道の終わりのようにそれはポイントにまっすぐに見えます。

 

私たちは、プロジェクターの部分についてのコード内のコードを見て、関数の機能に関連するパラメータの意味を説明します。

コードをコピー
1プライベートボイドopenGLControl_Resized(オブジェクト送信者、のEventArgs電子)
 2 { 
 3 // TODO:ここで射影行列を設定します。
 4 OpenGLのGL = openGLControl.OpenGL。
 5 gl.MatrixMode(OpenGL.GL_PROJECTION)。
 6 gl.LoadIdentity()。
 7 
 8 gl.Perspective(20.0f、(二重)幅/(ダブル)身長、0.01、100.0)。
 9 gl.LookAt(-5、5、-5、0、0、0、0、1、0); 
10 
11 gl.MatrixMode(OpenGL.GL_MODELVIEW)。
12}
コードをコピー

 

遠近効果の関数名とプロトタイプを作成します: 

視点(ダブルfovy、ダブル態様、ダブルzNerar、ダブルzFar)。

態様は、ウィンドウのアスペクト比であります

zNerar、zFarは遠近の表面位置を切断しています。

視野角のfovyフィールドは、XY平面内0--180の範囲に制御されます。あなたは、視野パラメータを対応する3DSMAXカメラレンズであると考えることができます。

 

 視野角以下の概略斜視関数は、パラメータfovy、アスペクト= W / H、zNerarが近い面間隔に、遠いzFar平面の距離を指します。

 

 あなたはまだ非常に別の方法の下に説明し、理解していない場合は、より困難、fovyパラメータを理解します。

 

私たちは、3DSMAXカメラパラメータのメタファー(同様の意味)を行うために取得するには、我々が使用する図15ミリメートルレンズ効果を確認するために(視野は100.389度です)。小レンズは、より大きなビューを表示します。このような小型カメラ内の写真は、広角レンズと呼ばれる呼ばれます。

 

今、85ミリメートルのレンズ(23.913度の視野)のみローカルオブジェクトを見ることができます。その視覚的な範囲が狭くなっています。

だから何fovyパラメータの展望()関数は、レンズに相当していることはビジョンの度合いを表しています。

 


投影変換を設定した後、我々は、視点変換を設定しなければなりません。 

提供ルックアット視点変換関数のプロトタイプです。

ルックアット(ダブルeyex、ダブルeyey、ダブルEYEZ、ダブルcenterx、ダブルcentery、ダブルcenterz、ダブルUPX、ダブルupy、ダブルUPZ)。

この機能は、視点変換を行うために使用されている、あなたはそれがカメラの関数であると思うかもしれません。

OpenGLで、デフォルトの視点がZ軸負方向に向かう方向の先頭に位置する原点座標は、我々は、したがって、デフォルトの三次元モデリングが配置され近いワールド座標系の深さZ 0軸にも、前に述べた、及び視点変換することなく、単に近いカメラに対応するオブジェクトにある、何も見ることができなかった理由をZ軸の負方向に向かって一定の距離だけオブジェクトにコードgl.Translate()を有するコードセクション理由。

 

私たちは、3DSMAXカメラ同様にまだありました。カメラの目標点で調整することができるので、私たちが使用している次の図は、「ターゲットカメラ」カメラは、このようなタイトルの理由と呼ばれます。

 

最初の3つのパラメータeyex、eyey、EYEZはカメラ自体がワールド座標系に配置されていることを示します。

 3DSMAXでは、カメラの位置は、変換することができます。

マップ上の私たちの位置はちょうど世界のXY軸の前に座標系の原点に置かれています。正の方向にZ軸は、すべての道を行きます。物体から離れるカメラので、あなたが適切にオブジェクトを表示することができます。

 

 上の図は、オブジェクトが行う変換遠くカメラのXYZからあり、3次元物体の観察程度に相当します。

 

 centery、centerx三つのパラメータの中でも、等価centerz目標点3DSMAX目標カメラの位置を調整します。

 上記のように、観察対象物についても同様の効果を有していて目標点の位置を変化させます。また、物体の距離に対するZ軸方向のこの目標点は無意味である、主な意義は、XYの変化です。この読者はテストを行くことができます。

 

 

 最後の3つのパラメータは、目標回転3DSMAXカメラの等価UPZ、upyをUPX。

しかし、このパラメータの値は、値の観点ではなく、ベクトルは、値の大きさは感覚、正と負の値が理にかなっていることはありません。

 

3DSMAXでは、カメラは、任意の角度で回転させることができます。

しかし、最後の三つのパラメータで、ルックアット()関数は、これらの変換のUPX、のみ上下upy、左右45度の角度、及びUPZ値は無意味と思われます。

 

これら二つの機能を説明する端部、我々は、視点変換および射影変換の効果を試験するために三角形のプログラムを描きます。

図20は、我々は三角形が大きく見える見ることができる効果のための視点です。

 

60へのビジョン、三角形が小さく見えます。

()関数によって上記の分析と展望の上記結果fovy結論は、パラメータと一致している場合。

 

今、私たちは最初の3つのパラメータを変更するルックアット、三角形は私たちのショーが直面しています。

 

我々は今、下方に下向き三角形の結果を回転させてカメラ180に対応し、-1に最後の三つのパラメータをルックアット、Yベクトルを変更します。

 

おすすめ

転載: www.cnblogs.com/bile/p/12069252.html