私は、投影されたスクリーンの適切なキャリブレーションが非常に重要な VR フィールドで働いています。調整が難しい天井マウントやその他のハードウェアの特性のため、スクリーンの形状を「修正」するためのフルスクリーン シェーダー メソッドを探しています。
ほとんどの 2D または 3D エンジンでは、カスタムの方法で変形またはレンダリングできるクワッドでレンダリング結果を再描画することにより、フルスクリーン エフェクトまたは変形を適用できます。
最初のアイデアは、頂点シェーダーを使用してこの画面クワッドのコーナーをオフセットすることでした。そのため、イメージは四角形として変形されます (プロジェクターのハードウェア キーストーンのように) が、要件には十分ではありません (このアプローチはmath.stackexchangeでライブ フィドル デモで説明されています)。
私のターゲットケースでは:
- ほとんどの場合、画像の変形は非線形でなければならないため、より細かく調整するには 9 ~ 16 個の制御点が必要です。
- 画像の境界はまっすぐではない (たる型またはピロー効果) ため、コントロール ポイントがほとんどない場合でも、画像はその間で曲線状に歪む必要があります。そうしないと、変形によって、各コントロール ポイントの境界で線状の継ぎ目が表示されます。理想的には、3x3 または 4x4 グリッドの各コントロール ポイントの修正された位置がわかれば、フル スクリーン クワッドに描画される画像のテクスチャ座標の連続変換を定義することができます。
u,v => 修正された_u、修正された_v
ここでイラストを見つけることができます。
- 2D または 3D で動作し、画像やメッシュをゴムでできているかのように「ソフトに」変形できる FFD アルゴリズムを見たことがありますが、実装はリアルタイム シェーダーには重いようです。
- 骨格/ソフト ボディ アニメーションにあるように、ウェイト ベースの変形も考えましたが、コントロール ポイントを適切にウェイト付けするのは不確実なようです。問題を解決するのに役立つ方法、アルゴリズム、または一般的なアプローチを知っていますか?
- 新しい Oculus Rift DK2 が独自の変形に必要とするようなメッシュベースの変形を見ましたが、ほとんどの 2D/3D エンジンは標準でのみ 4 つの頂点で構成される単一のクワッドを使用します。