osgGA::AnimationPathManipulator的使用(实现固定路径漫游)

osgGA::AnimationPathManipulator的使用(实现固定路径漫游)

首先定义AnimationPathManipulato操纵器,在构造函数中输入路径文件名字,然后将其加入键盘选择器(keyswitchManipulator)。

 

l         可以直接设置操纵器

 

viewer.setCameraManipulator(apm.get());

 

l         也可以通过keyswitchManipulator设置

 

keyswitchManipulator->addMatrixManipulator( keyForAnimationPath, "Path", apm );

viewer.setCameraManipulator( keyswitchManipulator.get() );

 

l         下面是osgViewer的一段代码:

 

     // set up the camera manipulators.

     {

         osg::ref_ptr<osgGA::KeySwitchMatrixManipulator> keyswitchManipulator = new osgGA::KeySwitchMatrixManipulator;

 

         keyswitchManipulator->addMatrixManipulator( '1', "Trackball", new osgGA::TrackballManipulator() );

         keyswitchManipulator->addMatrixManipulator( '2', "Flight", new osgGA::FlightManipulator() );

         keyswitchManipulator->addMatrixManipulator( '3', "Drive", new osgGA::DriveManipulator() );

         keyswitchManipulator->addMatrixManipulator( '4', "Terrain", new osgGA::TerrainManipulator() );

 

         std::string pathfile;

         char keyForAnimationPath = '5';

         while (arguments.read("-p",pathfile))

         {

              osgGA::AnimationPathManipulator* apm = new osgGA::AnimationPathManipulator(pathfile);

              if (apm || !apm->valid())

              {

                   unsigned int num = keyswitchManipulator->getNumMatrixManipulators();

                   keyswitchManipulator->addMatrixManipulator( keyForAnimationPath, "Path", apm );

                   keyswitchManipulator->selectMatrixManipulator(num);

                   ++keyForAnimationPath;

              }

         }

 

         viewer.setCameraManipulator( keyswitchManipulator.get() );

     }

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值