OSG拖拽器Dragger简介之一 OSG学习经典入门教程,浅显易懂,新手必备!本文基于 osg 2.4,引用了其 example 目录下的 osgManipulator 例子。 知识点一:什么是 Dragger? Dragger,即拖拽器,可以使得用户通过鼠标交互的方式对场景数据进行操作(如平移、缩放等等)。Dragger 操纵的是数据,这个时候,我们的视点是不会变动的,而 Manipulator 一般是针对场景相机进行的操纵。 知识点二:Dragger 与 Manipulator 的区别 Manipulator 是针对场景相机进行的操纵, Draggeer 操纵的是数据。Manipulator 是不会更改场景数据的,而 Dragger 则可以。通过一个实验可以证明这一点:打开 osg 自带的 example 里的 osgManipulator 例子程序,使用 Manipulator 转动相机,得到右图场景,然后按下空格键,场景变回到了左图,这说明 Manipulator 改变的只是相机的位置与姿态而非场景数据。 知识点三:如何使用 Dragger 使用 Dragger 需要进行以下步骤: 1. 申请一个 osgManipulator::CommandManager 对象,用于链接 dragger 和 selection。 2. 申请并配置相应 dragger 对象以及 selection 对象。 3. 设置 dragger 的大小,使其比要拖拽的场景稍大一点。 4. 将 selection 对象作为我们需要进行拖拽的场景或部分场景的父节点。 5. 再将 dragger 和 selection 分别添加为场景根节点的子结点。 6. 通过 cmdMgr->connect(*dragger, *selection) 将 dragger 和 selection 链接,是的后者可以相应于前者进行变换。 7. 编写 GUIEventHandler 类,在内部重写 handle 函数,将消息传入 dragger,写自己的handler 时可以借鉴 osgManipulator 的例子。 8. 将该 handler 添加至 viewer 的 handler 列表,至此完成了 dragger 和 selection 联合使用的设置。 知识点四:OSG 内置 Dragger osgManipulator 例子程序中提供了多种 Dragger,例如 TrackballDragger,可以根据需要选择合适的 Dragger。 Dragger 是 OSG 中的一种重要的交互工具,可以使得用户通过鼠标交互的方式对场景数据进行操作。 Draggeer 操纵的是数据,而 Manipulator 是针对场景相机进行的操纵。使用 Dragger 需要进行相应的设置和配置,osgManipulator 例子程序中提供了多种 Dragger,供用户选择。
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助