三维渲染引擎设计与实践

Posted 非宁静,无以致远

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三维渲染引擎设计与实践相关的知识,希望对你有一定的参考价值。

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

以上是关于三维渲染引擎设计与实践的主要内容,如果未能解决你的问题,请参考以下文章

三维渲染引擎设计与实践

三维渲染引擎设计与实践

三维渲染引擎设计与实践

三维渲染引擎设计与时间

不同三维引擎渲染IFC数据效果对比

基于三维GIS技术的动态LOD渲染方法的实验及验证