hereのように、頂点変位を使用してGoogleのCardboard用のQTとOpenGL-ESで小さなVRデモを作成しようとしています。ショート
は:頂点変位を使用した歪み補正
X/y_distorted = X/y_undistorted *(1.0 + K1 * R^2 + K2 * R^4:それは次の式でlense歪みを打ち消すために、すべての頂点に褐色コンラディモデルapplys )
係数として、私はgvrのJavaソースコードからK1 = -0.55とK2 = 0.34を得ました。ここで
は、関連するシェーダコードです:
vec4 tmp = vec4(a_position,1.0);
tmp = uMVMat * tmp; //Applying the ModelView Matrix
float r2 = dot(tmp.xy,tmp.xy); //Calculating the squared radius
tmp.xy *= 1.0f + (-0.55+0.34*r2)*r2; //Applying the Formula to x and y
gl_Position = uPMat * tmp;
これは飛行機のレンダリング時に画像を以下のような結果になります。 Distorted Plane
私は間違って何をしているのですか?私は係数を入れ替えて、逆さまにしてみました...私はいつもちょっとした歪みがあります。