查看: 1899|回复: 7

请教视口设置的问题

[复制链接]

该用户从未签到

发表于 2010-3-30 17:13:09 | 显示全部楼层 |阅读模式
我想设置相机的视场角为某一固定值,比如说4:3,那么渲染窗口的尺寸应该也是tan(4):tan(3),才能保证所显示的场景中的物体不会因宽高比异常而变形,那么在程序界面的窗口尺寸变化时,在哪里设置视口才能保证其为固定的宽高比呢?

我想实现的效果就是那种类似于用视频播放器看电影时,当缩放播放器尺寸时,播放器会自动缩放电影画面,并通过调整上下黑边的比例来保证影片的宽高比不变。

不知道这个OnSize应该在哪里设置,望高人指点。

该用户从未签到

发表于 2010-3-30 17:31:59 | 显示全部楼层
GUIEventHandler里的osgGA::RESIZE消息

该用户从未签到

 楼主| 发表于 2010-3-30 19:41:07 | 显示全部楼层
2# emhxj

那在resize里怎么设置视口呢,可以讲详细些吗,我还是个小菜,呵呵
在camera->setviewport设置过,但感觉不是我想要的效果,一方面觉得尺寸不准,另外视口外的黑色部分不会自动刷新,是不是要用glclear那样的命令清屏啊?

该用户从未签到

发表于 2010-3-30 20:28:21 | 显示全部楼层
设置投影矩阵,使视锥体的宽高比例固定为4:3

该用户从未签到

 楼主| 发表于 2010-3-31 09:33:36 | 显示全部楼层
4# tianxiao888
问题就是如果视锥体比例是4:3,但渲染窗口的比例在缩放后不是4:3的话,物体就会变形了;
osgviewer在浏览模型时,之所以任意缩放窗口物体也不会变形就是因为他的视锥体不固定,而是跟随窗口比例在变化的吧

我现在想做相反的事情,让视锥体固定,变化viewport,不知道该用什么函数

该用户从未签到

发表于 2010-3-31 12:18:22 | 显示全部楼层
每次窗口尺寸发生变化之后,必须重新设置投影矩阵

该用户从未签到

 楼主| 发表于 2010-3-31 16:19:24 | 显示全部楼层
6# array
按照什么准则设置呢,用窗口的宽高比吗?可是我想用固定的视场角啊

该用户从未签到

发表于 2010-4-1 11:00:52 | 显示全部楼层
您可以获取当前的GraphicsContext,给它设置一个setResizedCallback并执行自己定义的操作,即,当窗口发生变化之后,您的视口和投影矩阵应当发生什么样的变化。不设置这个回调的话,OSG默认会自动改变投影矩阵以适应窗口的尺寸变化,其实现位于resizedImplementation()函数中
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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