增强现实中经常需要将三维虚拟物体利用OpenGL绘制到真实场景中。因此,我们需要将OpenGL流水线配置成真实图片的相机设置以得到逼真的透视效果。那么,问题是如何做到这一点?
配置第一步:坐标系转换
图1. 坐标系转换
这一步需要注意的是:相机定标算法采用坐标系的Y轴从图像上方到下方,Z轴指向图像内部。OpenGL的坐标系则Y轴从图像下方到上方,Z轴指向图像外部。因此,两个坐标系之间需要进行转换。具体就是将定标的相机坐标系的Y轴和Z轴取反,就得到的OpenGL坐标系的朝向。同时,相机光心坐标的Y值和Z值取反。
配置第二步:利用定标相机内参设置OpenGL投影矩阵, 示例代码:
- (void)buildProjectionMatrix:(Matrix33)cameraMatrix: (int)screen_
width: (int)screen_height: (Matrix44&) projectionMatrix
{
float near = 0.01; // Near clipping distance
float far = 100;