首先来看一张图,如图1所示。
由图1可知,地球模型严重变形,后来发现造成这种问题产生的原因是没有创建对称的透视投影。解决方法是:通过获取视图的主摄像头,并创建对称的透视投影。关键代码如下:
view->getCamera()->setProjectionMatrixAsPerspective(30.0f, static_cast<double>(traits->width)/static_cast<double>(traits->height), 1.0, 1000.0);
其中,创建对称的透视投影用到了setProjectionMatrixAsPerspective(double fovy,double aspectRatio,double zNear, double zFar)方法,参数fovy代表相机镜头对应的视野参数,参数aspectRatio代表长宽比,参数zNerar代表近平面距离, 参数zFar代表远平面距离。
最后,成功实现了正常地球模型的展示,如图2所示。