osg定时器和记录路径

1.OSG本身自带的定时器可以很好的记录程序运行的时间:

int main() {
    osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer();

    viewer->addEventHandler( new osgViewer::WindowSizeHandler );
    osg::ref_ptr<osg::Node> root = new osg::Node();

    //启动一个定时器
    osg::Timer* timer = new osg::Timer;
    timer->setStartTick();
    root = osgDB::readNodeFile( "cow.osgt" );
    printf( "读取模型的时间:%f ms", timer->time_s() );

    viewer->setSceneData(root.get());
    viewer->realize();

    viewer->run( );
    return 0;
}

在上面的程序中添加了一个定时器,用来计算读取一个模型的时间。运行结果:

这里写图片描述
可以看到读取当前这个模型的时间是:0.45秒。

2.生成路径:

viewer->addEventHandler( new osgViewer::RecordCameraPathHandler );//记录路径

在代码中添加这样一句话,就可以了。运行程序:
拖动模型同时点击小写【z】开始记录路径,再次点击小写【z】停止记录。
点击大写【Z】可以回放刚才记录的路径,也就是刚才拖动模型的轨迹。
模型路径文件保存到:当前工程目录下saved_animation.path这个文件中。

以后要使用这个文件:可以之间通过osgViewer实现:

osgViewer cow.osgt -p E:\saved_animation.path

猜你喜欢

转载自blog.csdn.net/wb175208/article/details/80503850