我正在使用 vuforia 制作 AR 视频应用程序。我希望我的视频应该是垂直的,并且当我围绕 Y 轴移动相机时,我的 AR 视频应该垂直。我编辑了 vuforia 示例视频播放并添加了以下代码,但出现了意外行为。
Matrix44F inverse_view = SampleMath.Matrix44FInverse(Tool.convertPose2GLMatrix(trackableResult.getPose()));
// line of sight
Vec3F los = new Vec3F(-inverse_view.getData()[8], -inverse_view.getData()[9], -inverse_view.getData()[10]);
Vec3F z_axis = new Vec3F(0, 0, 1);
Vec3F x_axis = Vec3FNormalize(Vec3FCross(los, z_axis));
Vec3F y_axis = Vec3FCross(z_axis, x_axis);
float[] orientationMatrix = new float[]{
x_axis.getData()[0], x_axis.getData()[1], x_axis.getData()[2], 0,
y_axis.getData()[0], y_axis.getData()[1], y_axis.getData()[2], 0,
z_axis.getData()[0], z_axis.getData()[1], z_axis.getData()[2], 0,
0, 0, 0, 1
};
// calculate the model view projection matrix
float[] viewMatrixVideo = Tool.convertPose2GLMatrix(trackableResult.getPose()).getData();
float[] modelViewVideo = new float[16];
Matrix.multiplyMM(modelViewVideo, 0, viewMatrixVideo, 0, orientationMatrix, 0);
float[] modelViewProjectionVideo = new float[16];
Matrix.scaleM(modelViewVideo, 0,
targetPositiveDimensions[currentTarget].getData()[0],
targetPositiveDimensions[currentTarget].getData()[0]
* videoQuadAspectRatio[currentTarget],
targetPositiveDimensions[currentTarget].getData()[0]);
Matrix.multiplyMM(modelViewProjectionVideo, 0, projectionMatrix, 0, modelViewVideo, 0);
但是使用上面的代码,我得到了如下视频所示的轮换:
https://www.youtube.com/watch?v=b032rThCseU
但我希望我的视频应该像下图一样旋转:
请帮助我。