查看: 1389|回复: 5

请教关于osgmovie中例子中坐标系的问题

[复制链接]

该用户从未签到

发表于 2009-11-16 10:37:45 | 显示全部楼层 |阅读模式
本人研究了一下osgmovie的例子,发现在不加interactive参数运行时,viewer使用setProjectionMatrixAsOrtho2D来设置了投影矩阵,但如果想要切换恢复为一般的场景漫游的话,这里都需要修改什么呢?请教一下各位

该用户从未签到

发表于 2009-11-16 12:19:53 | 显示全部楼层
这里关键是没有使用setCameraManipulator()设置漫游器,所以当然动不了(viewer.run()会自动设置一个缺省漫游器)。
此外您应当针对正射投影编写自己的漫游器;否则将使得Trackball等漫游器的行为产生不正确结果

该用户从未签到

 楼主| 发表于 2009-11-16 19:57:23 | 显示全部楼层
感谢array老师。我这里的问题是,osgmovie只是为了全屏播放视频, 才使用了正射投影,那么如果我希望切换为之前默认的透视投影的话(例如是在全频播放视频与三维场景漫游之间的切换),具体需要怎样来设置呢?请指点~麻烦您了~:loveliness:

该用户从未签到

发表于 2009-11-17 14:13:58 | 显示全部楼层
这个最好是自己写一个类似相机更新回调的功能来实现,因为漫游器是不能更改投影矩阵的;在回调中切换不同的投影方式即可;当然如果两种模式本身不相关的话(例如,全频播放视频与三维场景漫游,这两者没有直接关系),那么直接用HUD相机的子树来管理全屏的图像就好了~~

该用户从未签到

 楼主| 发表于 2009-11-17 15:03:37 | 显示全部楼层
谢谢array的建议
我目前的想法是使用一个switch节点,其孩子设定为:osgmovie播放使用的geode,以及其他的三维场景节点,然后通过控制switch节点孩子的开关,例如是通过按键切换,在handle函数中,设置孩子的开关之前来切换投影矩阵。
不知这种方法是否可行,还有什么需要注意的问题?我试了下使用view->getCamera()进而来设置透视矩阵,貌似结果不对
麻烦各位了:loveliness:

该用户从未签到

发表于 2009-11-17 20:58:26 | 显示全部楼层
只要您自己的设计正确就可以;但我个人还是建议用单独的HUD相机来管理视频数据,并且用Switch管理HUD节点和场景模型节点,注意漫游器对相机矩阵的影响
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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