在利用华为AREngine开发的过程的,发现华为AREngine返回的摄像头背景图变形,物体被拉长了。初步定为摄像头的投影矩阵不正确。然后根据投影矩阵打印了一下,fov与aspect,发现aspect为0.78,如果是手机16:9的比例的话,应该大概是0.56左右。因此发现图片的长宽高比例不正确。
那继续研究AREngine的接口,发现ARSession有个设置长宽的接口setDisplayGeometry,可以设置AREngine的长宽比。如果没有设置的话,就会默认使用手机自带的长宽比(1080, 1440)。
设置方法如下:
@Override
public void onSurfaceChanged(GL10 unused, int width, int height) {
session.setDisplayGeometry(width, height);
}