查看: 3721|回复: 10

osg中主相机的视野范围

[复制链接]

该用户从未签到

发表于 2010-4-9 14:05:38 | 显示全部楼层 |阅读模式
如何计算屏幕显示的最大场景范围,即屏幕四个角的三维坐标

该用户从未签到

 楼主| 发表于 2010-4-9 14:22:31 | 显示全部楼层
我使用矩阵变换将屏幕坐标转换为三维坐标  但是转换的结果感觉不对  
自己感觉是场景中没有物体导致的,如果场景中没有物体  该如何计算场景的视野大小?

该用户从未签到

发表于 2010-4-9 16:19:49 | 显示全部楼层
这是否可以理解为计算视锥体?您可以沿着这个思路再考虑一下

该用户从未签到

 楼主| 发表于 2010-4-9 17:25:32 | 显示全部楼层
刚开始我也想到了视锥体,但是视锥体和最后场景中显示的物体还不一样, 主要是相机、视锥体和视口之间的关系不清楚,感觉相机应该会影响到最后在屏幕上显示的场景,但是又不知道这之间是如何作用的。

该用户从未签到

 楼主| 发表于 2010-4-10 14:00:21 | 显示全部楼层
本帖最后由 zhufu0208 于 2010-4-12 09:07 编辑

视锥体的参数信息是不是在相机坐标系下定义的?
视锥体中的left  right  bottom top等信息


如果(left,bottom,-near)、(right,top,-near)是相机近裁剪面的坐标  我使用视图矩阵和投影矩阵的逆矩阵计算出的三维坐标是不对的

该用户从未签到

发表于 2010-4-12 09:24:47 | 显示全部楼层
我使用视图矩阵和投影矩阵的逆矩阵计算出的三维坐标是不对的
事实上osg:: Polytope类就可以用于构建视锥体,您可以参考它内部的实现,或者直接使用这个类来完成您自己的工作:
polytope.setToUnitFrustum(true, true);
polytope.transformProvidingInverse(projMatrix);
就可以得到投影矩阵对应的正确视锥体了

该用户从未签到

 楼主| 发表于 2010-4-12 11:57:46 | 显示全部楼层
polytope.transformProvidingInverse(projMatrix);
就可 ...
array 发表于 2010-4-12 09:24

如果projMatrix为当前的mvp矩阵的话  获取的视锥体是相机坐标系下的视锥体还是世界坐标系下的视锥体?
获取的六个面是按照什么顺序存储的?

该用户从未签到

发表于 2010-4-12 12:33:19 | 显示全部楼层
您不妨自己试验一下,我只是提供了思路。注意,这里的projMatrix只是投影矩阵,不要直接把观察矩阵送入到PolyTope中进行运算

该用户从未签到

发表于 2014-8-8 16:24:27 | 显示全部楼层
请问这个问题解决了吗?我现在也要求四个角的坐标范围,用于做二三维互动

该用户从未签到

发表于 2014-8-20 11:15:21 | 显示全部楼层
顶一个,求解答

该用户从未签到

发表于 2014-8-20 11:15:32 | 显示全部楼层
顶一个,求解答
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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