Buenas! Estoy desarrollando una app de realidad virtual usando el VR SDK de google para android, el problema es que yo tengo un objeto que muestro en mi aplicación, pero dicho objeto se encuentra estático, necesito saber como manejar las funciones que aporta el objeto HeadTransform dentro del metodo onNewFrame para conseguir que mi objeto siempre se muestre en el centro de la pantalla. Gracias de antemano. Un saludo !
Aqui obtengo el quaternion que produce la rotación de la cabeza:
public void onNewFrame(HeadTransform headTransform) {
// Build the camera matrix and apply it to the ModelView.
Matrix.setLookAtM(camera, 0, 0.0f, 0.0f, CAMERA_Z, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f);
headTransform.getHeadView(headView, 0);
headTransform.getQuaternion(headRotation, 0);
gvrAudioEngine.setHeadRotation(
headRotation[0], headRotation[1], headRotation[2], headRotation[3]);
// Regular update call to GVR audio engine.
gvrAudioEngine.update();
}
Dentro del metodo onDrawEye es donde debo aplicar la rotación al objeto para que se mueva en consonancia con la dirección de vision de la cámara, pero no se cómo hacerlo:
public void onDrawEye(Eye eye) {
GLES20.glEnable(GLES20.GL_DEPTH_TEST);
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);
checkGLError("colorParam");
// Apply the eye transformation to the camera.
Matrix.multiplyMM(view, 0, eye.getEyeView(), 0, camera, 0);
// Set the position of the light
Matrix.multiplyMV(lightPosInEyeSpace, 0, view, 0, LIGHT_POS_IN_WORLD_SPACE, 0);
// Build the ModelView and ModelViewProjection matrices
float[] perspective = eye.getPerspective(Z_NEAR, Z_FAR);
--> Aplicar rotacion al objeto aqui <--
Matrix.multiplyMM(modelView, 0, view, 0, model, 0);
Matrix.multiplyMM(modelViewProjection, 0, perspective, 0, modelView, 0);
drawObject();
}