360度(全天球パノラマ)のシーンの写真を撮りたいと思っています。どうすればこれを最善に行うことができますか?私がそれを正しく持っていれば、パースペクティブを360に設定する通常の方法ではこれを行うことはできません。
頂点シェーダーが必要な場合、利用できるものはありますか?
これは実際には重要なことです。
素朴なアプローチでは、行列の乗算ではなく、三角関数を介して頂点の位置を変換する頂点シェーダーがうまくいくように見える場合があります。問題は、これによって直線が「曲がりくねった」状態にならないことです。テッセレーションシェーダーを使用して、これを補正するのに十分なジオメトリを追加できます。
最も簡単なアプローチは2つあります。まず、シーンをキューブマップにレンダリングします。つまり、立方体を構成する6つの方向に90°×90°のFOVでレンダリングします。これにより、シーンをレンダリングする通常のアフィン投影を使用できます。
2番目のステップでは、生成されたキューブマップを使用して、各頂点のテクスチャ座標が方位角と仰角である画面塗りつぶしグリッドをテクスチャリングします。
もう1つのアプローチは、FOVが非常に小さいタイルレンダリングを使用し、「カメラ」を回転させることです。これは、広角レンズを使用せずにパノラマ写真を作成するようなものです。実際のところ、キューブマップベースのアプローチはタイルレンダリングですが、カメラの方向とビューポートの配置を変更して直接これを実行するよりも、正しく実行する方が簡単です。