查看: 3037|回复: 4

为啥osgEarth显示的地球很扁

[复制链接]

该用户从未签到

发表于 2010-8-17 19:08:18 | 显示全部楼层 |阅读模式
利用osgViewerMFC程序观察osgEarth的.earth文件,里面的地球模型很扁(图1),而利用osgviewer在cmd情况下观察同样的.earth文件,地球很正常(图2),请问这是怎么回事?
osgMFCViewer.jpg
osgviewer_cmd.jpg

该用户从未签到

发表于 2010-8-17 19:43:45 | 显示全部楼层
这是投影矩阵设置的不对  就是投影的纵横比不对了  论坛中有一个单文档的程序修改了这个投影矩阵  使场景看着不是扁的  你可以找找看

该用户从未签到

 楼主| 发表于 2010-8-19 07:32:50 | 显示全部楼层
谢谢,加了:
traits->width = GetSystemMetrics (SM_CXSCREEN);
traits->height =GetSystemMetrics (SM_CYSCREEN);
没有作用啊,还是扁的

该用户从未签到

发表于 2010-8-19 09:26:08 | 显示全部楼层
您上面的做法应该只是改变窗口的大小,并没有影响到viewer的摄像机的投影矩阵。您可以尝试下在没有MFC的情况下用getProjectionMatrixAsPerspective函数来得到投影矩阵的fov、aspect ratio,然后在使用mfc的程序里viewer->getCamera ->setProjectionMatrixAsPerspective(fov,aRatio,.......),来调整相机的投影矩阵。

该用户从未签到

 楼主| 发表于 2010-8-19 21:52:02 | 显示全部楼层
找到解决方案了:
void cOSG::InitCameraConfig(void)
{。。。
        traits->height =GetSystemMetrics(SM_CXSCREEN)* (rect.bottom - rect.top)/GetSystemMetrics(SM_CYSCREEN);
。。。
}
谢谢各位。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表