码迷,mamicode.com
首页 > 其他好文 > 详细

三维渲染引擎设计与实践(八)

时间:2017-07-28 01:00:10      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:phi   分发   内容   set   场景   人机交互   拖拽   文件格式   2.3   

8.2三维人机交互工具

osg实现了三维场景的漫游以及场景中三维对象的操纵。

8.2.1漫游器

osgGA::MatrixManipulator类

漫游器也是事件处理器GUIEventHandler的一种。 viewer使用setCameraManipulator()函数来设置一个针对此视景器的漫游器。

8.2.2拖拽器

为要操纵的物体设置一个MatrixTransform父节点,通过改变这个父节点的变换矩阵的内容,进而改变作为操控对象的子节点的表现形式。

osgManipulator库中拖拽器Dragger的实现方式

osgManipulator::Selection类和Dragger类

使用拖拽器实现三维交互动作的整个运作流程:

(1)新建一种新的拖拽器,并指定作为备选对象的节点

(2)将拖拽器和一个或多个备选对象进行绑定,如有必要,也可以与一个或多个约束对象向绑定

(3)当用户执行交互动作时,其信息首先反映到Dragger::handle()中,并生成相应的运动命令。

(4)分发命令dispatch()中简单地执行了这个命令

(5)在接收者的接收函数中,完成拖拽器对备选对象的操控

8.3二维图形用户接口

8.3.1窗口设备

OSG中的图形设备类(GraphicsContext)定义了场景渲染所处的设备平台,他可以是一个图形窗口,也可以是一个离屏渲染设备

GraphicsWindow类是GraphicsContext的派生类,用于表达一个图形窗口;同时也继承了动作适配器GUIActionAdapter的成员函数

8.3.2windows下窗口设备的实现

P234  在普通windows窗口上嵌入osg视景器

第十章 文件的读写机制

10.1数据文件支持机制

10.1.1文件格式概述

(1)模型文件 

(2)图像文件  主要作为纹理数据使用

(3)视频文件

(4)字体文件   矢量字体和点阵字体

(5)其他类型数据

10.1.2 osg支持的文件格式

P283

10.1.3 基本文件读写接口

由osgDB负责实现,可读写的文件包括模型、图像、视频,以及字体、文本文档等。

模型数据可以用节点类(node)来表达;图像和视频数据则使用Image对象及其子类进行存储;其他文件由基类Object保存

读取文件得到的模型节点始终是node,

用于保存各种文件读写参数的Options类。

10.2文件读写插件

10.2.1插件的编写和注册

文件读写插件的公共接口是osgDB::ReaderWriter类

职责链模式,由osgDB::Registry类负责

osg中的文件读写过程大致分为两步:  首先使用职责链的机制,从已注册的插件链表中寻找一个也许能够解析当前文件的插件,并返回它得到的节点指针;如果已注册的插件不存在能够读取该文件的插件,则根据文件扩展名自动尝试加载一个同名插件,并返回它解析的结果。

10.2.3 文件的读写回调

osgDB定义了四种文件回调:P295

三维渲染引擎设计与实践(八)

标签:phi   分发   内容   set   场景   人机交互   拖拽   文件格式   2.3   

原文地址:http://www.cnblogs.com/hanmolabi/p/7248058.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!