2016-05-18 1 views
2

3つの画像(左ビュー、中央ビュー、右ビュー)を水平90°でレンダリングし、全体的な画像(基本的に、キューブマップテクスチャの左、前面、右のビューと同様)。したがって、3つのユニークな画像は何とかして一緒に収まる必要があります。アスペクト比が1.0の透視投影!全体画像のキューマップのような作成のために1.0

私はこのように各画像の投影行列を定義する場合すべてが正常に動作します:

gluPerspective(90, 1, 0.1, 500) 

しかし、私は(水平)210°と60°(垂直)フィールドでイメージを作成しようとしているので、ビューの、私はこのようにそれを定義したいと思います:

gluPerspective(60, 1.5, 0.1, 500) 

しかし、これを使用して、3枚の画像は、その画像コンテンツ、FOV、錐台または任意の点で一緒に適合しません。

私の質問は次のとおりです。イメージを合わせたい場合は、縦横比1を使用する必要がありますか。そしてもし私がする必要があれば、なぜですか?

いくつかの追加情報:

は私が私のhor./verのように同じアスペクト比を有する解像度のFBOの画像をレンダリングします。ビューポートは次のように定義されています。glViewport(0、0、width、height);

3つのビューのモデルビュー定義:

  1. レフトビュー:gluLookAt(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0);
  2. 中心ビュー:gluLookAt(0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 1.0);
  3. 右図:gluLookAt(0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0);
+0

徹底的な答えを書く時間があることを願っています。要点は、FoVとアスペクトがクリッププレーンの角度を決定し、まさにその角度でカメラを回転させなければならないシームレスな画像を得ることです。 'gluLookAt'と' gluPerspective'は、実際にあなたが望むことをするためのやや貧弱なメソッドです。 l、r、b、tの観点から*錐台*を直接操作し、ビュー回転行列の一致するセットを評価する方が良いでしょう。 – datenwolf

+0

あなたの答えをありがとう。何らかの理由で、gluPerspectiveの代わりにglFrustumを使用すると動作しますが、理由はわかりません。だから私は本当にそれについての説明を感謝します。対称型錐台にしか興味がない限り、glFrustumやgluPerspectiveを使用するかどうかは関係ありません。 – Dennis

+0

@Dennis:彼らは同じ行列を生成します。しかし、あなたが 'glFrustum'ベースの行列を使っているなら、あなたの使い方のためにそれを理解して使用する方が簡単です。方向や角度を計算するのではなく、投影面を直接使うことができます。 –

答えて

関連する問題