2

私は、投影されたスクリーンの適切なキャリブレーションが非常に重要な VR フィールドで働いています。調整が難しい天井マウントやその他のハードウェアの特性のため、スクリーンの形状を「修正」するためのフルスクリーン シェーダー メソッドを探しています。

ほとんどの 2D または 3D エンジンでは、カスタムの方法で変形またはレンダリングできるクワッドでレンダリング結果を再描画することにより、フルスクリーン エフェクトまたは変形を適用できます。

最初のアイデアは、頂点シェーダーを使用してこの画面クワッドのコーナーをオフセットすることでした。そのため、イメージは四角形として変形されます (プロジェクターのハードウェア キーストーンのように) が、要件には十分ではありません (このアプローチはmath.stackexchangeでライブ フィドル デモで説明されています)。

私のターゲットケースでは:

  • ほとんどの場合、画像の変形は非線形でなければならないため、より細かく調整するには 9 ~ 16 個の制御点が必要です。
  • 画像の境界はまっすぐではない (たる型またはピロー効果) ため、コントロール ポイントがほとんどない場合でも、画像はその間で曲線状に歪む必要があります。そうしないと、変形によって、各コントロール ポイントの境界で線状の継ぎ目が表示されます。理想的には、3x3 または 4x4 グリッドの各コントロール ポイントの修正された位置がわかれば、フル スクリーン クワッドに描画される画像のテクスチャ座標の連続変換を定義することができます。

u,v => 修正された_u、修正された_v

ここでイラストを見つけることができます。

  • 2D または 3D で動作し、画像やメッシュをゴムでできているかのように「ソフトに」変形できる FFD アルゴリズムを見たことがありますが、実装はリアルタイム シェーダーには重いようです
  • 骨格/ソフト ボディ アニメーションにあるように、ウェイト ベースの変形も考えましたが、コントロール ポイントを適切にウェイト付けするのは不確実なようです。問題を解決するのに役立つ方法、アルゴリズム、または一般的なアプローチを知っていますか?
  • 新しい Oculus Rift DK2 が独自の変形に必要とするようなメッシュベースの変形を見ましたが、ほとんどの 2D/3D エンジンは標準でのみ 4 つの頂点で構成される単一のクワッドを使用します。
4

2 に答える 2

0

非線形変形が必要な場合、ベジエ サーフェスは非常に便利で簡単に実装できます。

CPU で事前にビルドするか、ハードウェア テッセレーションを使用することができます (ここに例を示します) 。

于 2014-09-08T17:25:26.890 に答える
0

研究を続けると、方法が見つかりました。「ランプ」またはコサイン値に対応する 1D RGB テクスチャを作成しました。これは、0..1 軸上のオフセット パラメータの 3 つの影響係数であり、0、0.5、および 1 に 3 つの係数があります。

  • 赤は x=0 で 1 から始まり、x=.5 で 0 になります。
  • 緑は x=0 で 0 から始まり、x=0.5 で 1 になり、x=1 で 0 に戻ります
  • 青は x=0.1 で 0 から始まり、x=1 で 1 になります。

これらを使用して、9 つの float2 ユニフォームから、画像上でパラメーターを非常にソフトに補間できます (水平方向に 3 回、垂直方向に 1 回のルックアップを使用)。

次に、1 つ補間し、これらを使用してテクスチャ座標をオフセットし、動作します :-D これは多かれ少なかれ、スピードアップのためにテクスチャ ルックアップを使用した座標の加重補間です。

于 2014-09-03T08:29:52.227 に答える