查看: 2976|回复: 3

请教大家关于自定义漫游器的camera初始位置的问题

[复制链接]

该用户从未签到

发表于 2011-2-7 23:22:54 | 显示全部楼层 |阅读模式
不好意思,又来打扰各位了 ,问题描述如下:
    我自己自定义了一个漫游器,从osgGA::MatrixManipulator中派生而来,自己仿照FreeSouth的例子写完了这个漫游器(CTravelManipulator类)后,发现camera的初始化并不符合我实际的要求,因此我对这个类的构造函数进行了一下修改,改动部分如下:
   
  1. CTravelManipulator::CTravelManipulator(osgViewer::Viewer* currentViewer):m_fMoveSpeed(1.5f)
  2. ,m_fAngle(2.5f)
  3. {
  4. m_vPosition = osg::Vec3(0.0f, 0.0f,5.0f);//初始位置
  5. m_vRotation = osg::Vec3(osg::PI_2, 0.0f, 0.0f); //初始角度
  6. m_viewer = currentViewer;//将main函数中的viewer传入
  7. m_viewer->getCamera()->setViewMatrixAsLookAt(osg::Vec3d(0.0f,0.0f,30.0f),osg::Vec3d(50.0f,0.0f,30.0f),osg::Vec3d(0.0f,0.0f,1.0f));//根据我的需要初始化camera
  8. }
复制代码

    main函数中的情况是:
  
  1. root->addChild(node);
  2. viewer->setSceneData(root);
  3. viewer->setCameraManipulator(new CTravelManipulator(viewer)) ;
复制代码


     我预期的目标是,当我在main函数中将viewer传入给这个漫游器类进行构造时,在构造函数中可以将camera按照我的需要进行重新设定。
     不过,运行的效果与未作改动之前一样,感觉camera还是在(0,0,0),向Y轴的负方向看的~~(不过不设置的话这个应该是初始状况吧,惶恐不对。。)
     不知道这是什么原因导致的呢?

附注:
    我也做了如下实验:
    在漫游器类的构造函数中并不改变camera的设置,而是在main函数中设置,发现这样的效果还是没有改变,代码如下:
  1. root->addChild(node);
  2. viewer->setSceneData(root);
  3. viewer->setCameraManipulator(new CTravelManipulator(viewer)) ;
  4. viewer->getCamera()->setViewMatrixAsLookAt(osg::Vec3d(0.0f,0.0f,30.0f),osg::Vec3d(50.0f,0.0f,30.0f),osg::Vec3d(0.0f,0.0f,1.0f));
复制代码


    麻烦各位了~~~~

该用户从未签到

 楼主| 发表于 2011-2-7 23:26:53 | 显示全部楼层
自己先给自己打个气吧~~~
  • TA的每日心情
    开心
    2019-11-11 10:36
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2011-2-7 23:45:56 | 显示全部楼层
    你代码写的不行,首先构造函数没有传m_vPosition这个参数,所以构造时设定不了。传入个position,把值赋给m_vPosition就可以了。

    然后你的代码写的也不太好,构造函数里写这个干嘛:
    m_viewer->getCamera()->setViewMatrixAsLookAt(osg::Vec3d(0.0f,0.0f,30.0f),osg::Vec3d(50.0f,0.0f,30.0f),osg::Vec3d(0.0f,0.0f,1.0f));//根据我的需要初始化camera

    通过上面的m_vPosition和m_vRotation完全可以控制出生点和朝向。你试试吧。

    该用户从未签到

     楼主| 发表于 2011-2-8 00:10:38 | 显示全部楼层
    谢谢,我的理解有误,其实我只需要设置好m_vPosition和m_vRotation的初始值就可以得到我要的效果了,再次感谢
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

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

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

    联系我们

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