查看: 1172|回复: 3

给相机增加一个监控事件,防止场景翻过去,就是视点z>0.

[复制链接]

该用户从未签到

发表于 2013-1-6 14:22:19 | 显示全部楼层 |阅读模式
我的意思是 给相机增加一个监控事件,防止场景翻过去,就是视点z>0.
能实现吗?
让场景不翻过去。下面是我的思路,有些问题。
mViewer->setCamera(camera.get());
    camera->addUpdateCallback(new viewcontrol());
//事件处理函数
void  viewcontrol:perator()( osg::Node* node, osg::NodeVisitor* nv )
{
        
        //
        osg::Camera* camera =dynamic_cast<osg::Camera*>( node );
        camera->getViewMatrixAsLookAt(position,center,up);
        if(position[2]<0)
        {
                osg::Vec3 positionnew(0,-100,100) ;
                        osg::Vec3 centernew(0,0,0) ;
                       osg::Vec3 upnew(0,0,1) ;
                camera->setViewMatrixAsLookAt(positionnew,centernew,upnew);
                                 //这个里面如何让mViewer重新绘制
        }         
  
}
各位高手  谁有更好的办法。

该用户从未签到

发表于 2013-1-7 09:22:27 | 显示全部楼层
更好的方法是用一个自己的CameraManipulator,您可以在Trackball的基础上继承并重写部分函数来实现自己的需求

该用户从未签到

 楼主| 发表于 2013-1-8 15:11:59 | 显示全部楼层
场景翻过去有的不是Trackball旋转造成的,应该时时监控view主相机参数 合适吧

该用户从未签到

发表于 2013-1-9 11:16:13 | 显示全部楼层
直接通过漫游器来添加限制是比较合理的,当然您如果一定要使用更新回调也不是不可以
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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