查看: 1718|回复: 10

如何实现多个相机从不同的角度同时拍摄场景

[复制链接]

该用户从未签到

发表于 2012-10-11 15:24:13 | 显示全部楼层 |阅读模式
问题描述:我想从不同的角度观看地球,需要多个相机,比如分别从X,Y,Z正方向看场景,将相机从这三个方向上拍摄的投影分别显示在三个不同的窗口,当主场景变化的时候,三个小窗口做相应的变化。

该用户从未签到

发表于 2012-10-11 15:56:28 | 显示全部楼层
你把x,y,z方向上的摄像机分别用3个不同的窗口显示,你看下osgCamera这个例子吧,记得里面有

该用户从未签到

 楼主| 发表于 2012-10-11 16:12:45 | 显示全部楼层
谢谢你的回复,那个例子我看啦,和我想要的效果不一样,里面虽然是实现了多窗口,但是视图是同一个,我想要的效果是用两个窗口分别看场景的前面和后面

该用户从未签到

发表于 2012-10-12 08:20:18 | 显示全部楼层
设置两个GC就可以了 slavecamera

该用户从未签到

 楼主| 发表于 2012-10-12 09:14:49 | 显示全部楼层
您说的是主场景添加从相机吧,然后分别设置从相机的GC,然后viewer->addSlave(camera,projectionoffset,viewoffset),在这里对viewoffset设置一直不对(我想将相机放置到X正方向来看地球应该怎么设置)烦请指点

该用户从未签到

发表于 2012-10-13 01:08:14 | 显示全部楼层
setViewMatrixAsLookAt(eye,center,up)
比如从X正方向看:eye设置为(10,0,0),center(0,0,0),up(0,0,1)
同理设置其他。。。

该用户从未签到

发表于 2012-10-13 01:10:07 | 显示全部楼层
如果主场景发生变化,次相机需要做出反正,那么要使用getViewMatrixAslookAt得到主相机的变换矩阵。。。

该用户从未签到

发表于 2012-10-15 08:23:34 | 显示全部楼层
buaahc 发表于 2012-10-13 01:10
如果主场景发生变化,次相机需要做出反正,那么要使用getViewMatrixAslookAt得到主相机的变换矩阵。。。

slavecamera不用设置,在Update时候会根据masterCamera的viewmatrix和offset进行从新计算

该用户从未签到

 楼主| 发表于 2012-10-15 09:51:09 | 显示全部楼层
为什么我获取地球场景的时候center = osg::vec3(-307950.0,0,0),raduis = 10588472, 而eye = osg::vec3(0.0,0.0,0.0),center = osg::vec3(0.0,0.0,-1.0),up = osg::vec3(0.0,1.0,0.0)
照理说,视点应该是在地球内部,是看不到场景的,但是群能很清晰的看见场景,是不是因为两个坐标所在的坐标系是不一样的,所以无法直接比较

该用户从未签到

发表于 2012-10-15 16:21:35 | 显示全部楼层
nuc752 发表于 2012-10-15 09:51
为什么我获取地球场景的时候center = osg::vec3(-307950.0,0,0),raduis = 10588472, 而eye = osg::v ...

您的漫游器是自定义的么?如果不是自定义的会在初始化的时候 computeHomeposition 包住整个场景

该用户从未签到

 楼主| 发表于 2012-10-16 10:19:18 | 显示全部楼层
明白啦,谢谢啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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