OSG学习笔记13Pick点选物体

玩了一个暑假。。。要好好学习了。。

想要实现一个通过鼠标来单击选择一些物体的功能,先来试一试书上的例子吧。

学习一下OSG对事件的处理

OSG中主要使用osgGA库来处理用户的交互动作。

GUIEventHandler提供了可供扩展的虚函数handle()。通过类的派生和虚函数的重构,即能实现用户自定义的交互事件处理工具。

 virtual bool handle(const GUIEventAdapter& ea,GUIActionAdapter& aa, osg::Object*, osg::NodeVisitor*) { return handle(ea,aa); }
事件处理函数,重构此函数以完成用户自定义的交互操作。

传入的参数:

事件适配器ea表示当前传入次处理器的事件

动作适配器aa是一个可以获取也可以修改的参数,大部分时候,这个传入值表示当前所用的视图对象View,可以用它来获取或控制视景器的状态变化。

保存该处理器的对象以及传递该事件的访问器EventVisitor

1、创建一个点选事件处理类

这个类从GUIEventHandler公有派生来。

  • 实现handle函数,该函数在每帧的事件遍历时会调用。
  • 响应PUSH事件,即响应单击事件    case(osgGA::GUIEventAdapter::PUSH):
  • 如果是左单击事件,则将坐标输入到Pick函数中进行处理。Pick(e

你可能感兴趣的:(osg)