OSG程序设计之Hello World 3.0
阅读原文时间:2023年07月10日阅读:1

  直接上代码:

#include
#include
#include

#include
#include
#include
#include
#include
#include
#include

void main()
{
osgViewer::Viewer viewer;
viewer.setSceneData(osgDB::readNodeFile("glider.osg"));

//添加状态事件  
viewer.addEventHandler(new osgGA::StateSetManipulator(viewer.getCamera()->getOrCreateStateSet()));  
//窗口大小变化事件  
viewer.addEventHandler(new osgViewer::WindowSizeHandler);  
//添加一些常用状态设置  
viewer.addEventHandler(new osgViewer::StatsHandler);

//添加一些操作器  
osg::ref\_ptr<osgGA::KeySwitchMatrixManipulator> keyswitchManipulator = new osgGA::KeySwitchMatrixManipulator;  
keyswitchManipulator->addMatrixManipulator('', "Trackball", new osgGA::TrackballManipulator());  
keyswitchManipulator->addMatrixManipulator('', "Flight", new osgGA::FlightManipulator());  
keyswitchManipulator->addMatrixManipulator('', "Drive", new osgGA::DriveManipulator());  
keyswitchManipulator->addMatrixManipulator('', "Terrain", new osgGA::TerrainManipulator());  
viewer.setCameraManipulator(keyswitchManipulator.get());

//添加路径记录  
viewer.addEventHandler(new osgViewer::RecordCameraPathHandler);

viewer.realize();  
viewer.run();  

}

  3.0版本主要是添加了一些操作器。

  关于什么是操作器,菜鸟表示完全不懂。现在的理解就是:不同的操作器对应不同的交互模式。

  从Hello World1.0可知,用户通过鼠标可以操作模型。添加操作器之后,用户通过1 、2、3、4按键选择不同的操作器,就会对应不同的交互模式。

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章