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