2017-01-29 3 views
0

here과 같이 버텍스 변위를 사용하여 Google Cardboard 용 QT 및 OpenGL-ES로 작은 VR 데모를 만들려고합니다. 짧은
는 :버텍스 변위를 사용한 왜곡 보정

X/y_distorted = X/y_undistorted * (1.0 + K1 * R^2 + K2 * R^4는 다음 식으로되어 렌즈 왜곡을 상쇄하도록 각 정점에 갈색 conrady 모델 시만)

계수로서 나는 gvr에 대한 자바 소스 코드에서 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

내가 잘못하고 있어요 무엇을 여기
는 관련 쉐이더 코드? 나는 심지어 계수를 바꾸어서 반전시켜 보았습니다 ... 나는 항상 어떤 종류의 핀카 디스토션을 얻었습니다.

답변

1

그냥 골판지 왜곡 vertex shader을 기반으로하면, 다음과 같이 나누는 투영 단계가 누락 된 것처럼 보입니다. z^2. Other 배럴 왜곡 방법은 NDC 공간을 가정합니다.

// should be 
float r2 = dot(tmp.xy,tmp.xy)/(z*z); 

또한 핀쿠션 왜곡 양수

그래서 계수들은 확인되어야한다 것 반면 K1 대한 부정적인 용어 것이다

배럴 왜곡 보통 위키 페이지를 장치.