OSG学习:响应键盘鼠标示例
2024-09-22 09:19:36
示例功能:示例里面有两个模型,一个是牛,另一个是飞机。鼠标右键时牛和飞机都隐藏,鼠标左键双击时牛和飞机都显示,按键盘上面的LEFT键,显示牛,按键盘上面的RIGHT键显示飞机。其中显示与隐藏节点使用的是setNodeMask(bool)。bool的值为0的时候是隐藏,1的时候是显示。
#include<osgDB\ReadFile>
#include<osgViewer\Viewer>
#include<osg\Node> class UseEventHandler :public osgGA::GUIEventHandler
{
public:
virtual bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa)
{
osgViewer::Viewer* viewer = dynamic_cast<osgViewer::Viewer*>(&aa);
if (!viewer)return false; switch (ea.getEventType())
{
case osgGA::GUIEventAdapter::KEYDOWN:
{
if (ea.getKey() == 0xFF51)
{
viewer->getSceneData()->asGroup()->getChild(1)->setNodeMask(0);
viewer->getSceneData()->asGroup()->getChild(0)->setNodeMask(1);
}
if (ea.getKey() == 0xFF53)
{
viewer->getSceneData()->asGroup()->getChild(0)->setNodeMask(0);
viewer->getSceneData()->asGroup()->getChild(1)->setNodeMask(1);
}
break;
}
case osgGA::GUIEventAdapter::PUSH:
if (ea.getButton() == 4)
{
viewer->getSceneData()->asGroup()->getChild(0)->setNodeMask(0);
viewer->getSceneData()->asGroup()->getChild(1)->setNodeMask(0);
}
break;
case osgGA::GUIEventAdapter::DOUBLECLICK:
if (ea.getButton() == 1)
{
viewer->getSceneData()->asGroup()->getChild(0)->setNodeMask(1);
viewer->getSceneData()->asGroup()->getChild(1)->setNodeMask(1);
}
break;
default:
break;
}
return false;
}
}; void main()
{
osgViewer::Viewer viewer;
osg::ref_ptr<osg::Group> root = new osg::Group();
root->addChild(osgDB::readNodeFile("cow.osg"));
root->addChild(osgDB::readNodeFile("glider.osg"));
viewer.setSceneData(root.get());
viewer.addEventHandler(new UseEventHandler);
viewer.realize();
viewer.run();
}
结果图:
最新文章
- maven打包插件:appassembler
- 为SubSonic3.0的查询(SubSonic.Query.Select和存储过程)添加更多的执行功能
- 清北学堂模拟赛day7 石子合并加强版
- install Hadoop
- 升级到iOS9之后的相关适配
- Parallel的陷阱
- python pickle 和 shelve模块
- .NET GC Server-Background-GC
- Protobuf动态解析那些事儿
- kruskal算法-Pascal
- Resizable(调整大小)组件
- HLS 协议
- Centos7新功能
- ActiveMQ入门示例
- js调用百度地图接口绘制任意多边形并获取每个点的经纬度等
- linux $参数
- BZOJ4269再见Xor——高斯消元解线性基
- https遇到自签名证书/信任证书
- javascript 获取多种主流浏览器显示页面高度(转)
- LDO选型注意事项