查看: 1848|回复: 5

osg相机动态设置位置问题

[复制链接]

该用户从未签到

发表于 2009-11-23 17:41:32 | 显示全部楼层 |阅读模式
大家好!我想问个问题,就是我有个文件存放相机的位置坐标,我要实现每帧从文件里读出个坐标,然后给相机进行设置。不知道大家有什么好的方法或思路给我提示下,谢谢啦!

该用户从未签到

发表于 2009-11-24 08:59:15 | 显示全部楼层
没有什么需要提示的?您只要按照自己所说的去做就好了

该用户从未签到

 楼主| 发表于 2009-11-24 09:55:42 | 显示全部楼层
恩我就是想知道怎么能在回调里面,让它每一帧设置一次位置。。。 2# array

该用户从未签到

 楼主| 发表于 2009-11-24 11:28:14 | 显示全部楼层
恩就是我的回调是这样写的,达不到我要的效果,大家能帮我改一下吗。万分感谢!
class SetCameraPosMatrixHandler : public osgGA::GUIEventHandler
{
public:
        float _eyeData[5][3];
        float _centerData[5][3];
        osgViewer::Viewer* _viewer;
        SetCameraPosMatrixHandler( osgViewer::Viewer* viewer ,float eyeData[5][3],float centerData[5][3] )
        {
                _viewer=viewer;
                for (int i=0;i<5;i++)
                {
                        for (int j=0;j<3;j++)
                        {
                                _eyeData[i][j]=eyeData[i][j];
                                _centerData[i][j]=centerData[i][j];

                        }
                }
        }

        bool handle( const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa )
        {
                int i=0;
                osg::Vec3 eye, center,up;
                up=osg::Vec3(0,1,0);
                if(ea.getEventType()==ea.FRAME)
                {       
                       
                                osg::Vec3 eye=osg::Vec3(_eyeData[i][0],_eyeData[i][1],_eyeData[i][2]);
                                osg::Vec3 center=osg::Vec3(_centerData[i][0],_centerData[i][1],_centerData[i][2]);
                                _viewer->getCamera()->setViewMatrixAsLookAt(eye,center,up)
                                i++;
                }
                return false;                                                


        }

};

该用户从未签到

发表于 2009-11-24 12:05:14 | 显示全部楼层
您的设置可能被漫游器重置了,这种情况下,请不要设置setCameraManipulator(并且不要使用viewer.run(),它会自动设置一个默认漫游器);另一种方法是继承并写一个自己的漫游器MatrixManipulator类

该用户从未签到

 楼主| 发表于 2009-11-24 12:38:29 | 显示全部楼层
哦谢谢版主的回复啊, 弱弱的问下我的回调写的有问题没 。。。呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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