code: public void processPosition(float x, float y, float z) {
          GVRScene scene = context.getMainScene();
          if (scene != null) {
              float depth = z * MAX_DEPTH;
              float frustumWidth, frustumHeight;
              // calculate the frustum using the aspect ratio and FOV
              // http://docs.unity3d.com/Manual/FrustumSizeAtDistance.html
              float aspectRatio = scene.getMainCameraRig().getCenterCamera()
                      .getAspectRatio();
              float fovY = scene.getMainCameraRig().getCenterCamera()
                      .getFovY();
              float frustumHeightMultiplier = (float) Math
                      .tan(Math.toRadians(fovY / 2)) * 2.0f;
              frustumHeight = frustumHeightMultiplier * depth;
              frustumWidth = frustumHeight * aspectRatio;
  
              Matrix4f viewMatrix = scene.getMainCameraRig().getHeadTransform()
                      .getModelMatrix4f();
              Vector3f position = new Vector3f(frustumWidth * -x,
                      frustumHeight * -y, depth);
              position.mulPoint(viewMatrix);
              setPosition(position.x, position.y, position.z);
          }
      }
docs: This is a convenience wrapper around the {@link #setPosition(float, float, float)} call.
  This method applies the cameras model matrix to the x, y, z to give relative positions
  with respect to the camera rig.
  
  This call is made from the native layer.
  
  @param x normalized values for the x axis. This values is adjusted for the frustum in this
  method.
  @param y normalized values for the y axis. This values is adjusted for the frustum in this
  method.
  @param z normalized values for the z axis. This values is multiplied by {@link #MAX_DEPTH}
  for the absolute position.