采用Open Inventor类库开发的

时间:2022-08-08 08:56:08

【摘要】Open Inventor(以下简称OIV)是SGI公司开发的基于OpenGL的面向对象三维图形软件开发包。使用OIV开发包,程序员可以快速、简洁地开发出各种类型的交互式三维图形软件。OIV具有平台无关...

采用Open Inventor类库开发的

摘要: 虚拟现实(VR)软件是被广泛应用于虚拟现实制作和虚拟现实系统开发的一种图形图像三维处理软件。介绍open inventor类库的架构和体系,通过对场景数据库的合理设计和驱动引擎的编程,实现一台具有6自由度的医疗机器人的运动控制过程进行虚拟仿真,对于其他领域的虚拟现实技术开发具有一定的参考意义和较好的市场应用前景。

关键词: 虚拟现实;Open Inventor;场景数据库;驱动引擎

1 绪论

计算机仿真技术是建立在控制理论、相似理论、信息处理技术和计算技术等理论基础之上的,以计算机以及其专用辅助设备为工具,利用系统模型对真实或者假象的模型进行实验,并借助专家的经验知识、统计数据和信息资料对实验结果进行分析研究,进而做出决策的一门综合性的和试验性的学科[1,2]。它具有经济、可靠、实用、安全、灵活而多次重复使用等优点,已经成为许多复杂系统或工程分析、设计、实验、评估等不可缺少的重要手段。目前,计算机仿真已经在诸如科学实验、军事工程、医疗手术等领域中广泛应用开来[3,4]。

虚拟现实技术(简称VR),又称灵境技术,是以沉浸性、交互性和构想性为基本特征的计算机高级人机界面[5,6]。它综合利用了计算机图形学、仿真技术、多媒体技术、人工智能技术、计算机网络技术、并行处理技术和多传感器技术,模拟人的视觉、听觉、触觉等感觉器官功能,使人能够沉浸在计算机生成的虚拟境界中,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间,具有广阔的应用前景。

Open Inventor(以下简称OIV)是SGI公司开发的基于OpenGL的面向对象三维图形软件开发包。使用OIV开发包,程序员可以快速、简洁地开发出各种类型的交互式三维图形软件。OIV具有平台无关性,它可以在Microsoft Windows、Unix、Linux等多种操作系统中使用。OIV允许使用C、C++、Java、DotNet多种编程语言进行程序开发。经过多年的发展,OIV已经基本上成为面向对象的3D图形开发“事实上”的工业标准。[7,8]广泛地应用于机械工程设计与仿真、医学和科学图像、地理科学、石油钻探、虚拟现实、科学数据可视化等领域。

2 Open Inventor架构

Open Inventor就是这样一个基于面向对象封装OpenGL库,当前基于Open Inventor的库有三个:SGI的Open Inventor、TSG(VSG)的Open Inventor和SIM的Open Inventor[9,10]。由于前两个都是商业开发包,使用必须支付十分庞大的费用所以代价很高,但是最后的SIM的既有商业版也有开源的教学版,这就方便了广大学生和初学者来学习Open Inventor。SIM的Open Inventor库又叫Coin3D,可以在网上非常容易的下载到。Open Inventor成功的将OpenGL的状态机抽象封装化,程序员只需要关注如何创造场景对象,而不是如何绘制场景。Open Inventor提供了很多方便机制来完成这些功能,比如场景数据库、结点、引擎、路径、传感器、观察器和照相机等类,用户只需要创建相关对象,配置一些简单的属性连入场景数据库中就可以实现很多复杂的功能。

3 三维虚拟现实方法

3.1 仿真对象建模

选择合适的3D造型软件对机器人进行三维建模,同时利用相应的应用程序框架和图形库编写出一个机械臂运动仿真软件。本课题给定的仿真对象一台六自由度医用机器人,本虚拟仿真软件的设计目的即:利用现有的手控器遥控操作仿真机器人的6个自由度,同时实时显示出仿真机械臂6个自由度的坐标参数。SGI公司的一款叫做COSMO World的VRML建模软件是比较理想的建模环境。

3.2 场景数据库设计

Open Inventor场景数据库是一个使用非对等结点的树状无环图来组织各个场景中要显示的元素的。根结点是一个没有祖先的结点,直接传递给场景数据库管理器,这个功能在初始化视类的时候实现。最右侧的场景坐标显示是一个二维文字结点,独立显示坐标,其显示内容是从场景数据库的引擎网络中实时获取的。然后是右侧7个机械臂元件结点,除了第一个结点是静态的、不能移动的结点之外,其他6个结点都是可以运动的,且对应着6个自由度中的X、Y、α、β和Z''。每个元件结点的组织都是类似的,一个分隔结点作为根结点,然后最左子结点是一个从磁盘读入的3D模型文件的分割节点,然后右侧有一个初始向量变换和一个初始化为零向量的动态向量,静态向量和动态向量配合引擎网络可以实现不同自由度的移动变换和位置记忆功能,这一点的实现主要在下一节叙述。然后静态向量和动态向量都是要连入引擎网络进行数据更新的。

3.3 驱动引擎网络设计

整个引擎网络的组织基本思想是:使用时间引擎提供正比于开通时间的输出数据流,输出数据流送入运算器引擎中,运算器引擎根据用户操作改变的运动标志变量来确定数据输出的方向是正还是负,进行简单计算和标度变换后送出到一个向量组合引擎,将输出数据整合成一个向量。之后这个向量使用Open Inventor内建的数据更新机制直接连接到动态向量上去,这样就可以实现平移动画了。当用户选择停止移动时,这用户松开移动按键,在消息回调函数中将静态向量和动态向量求和然后回送静态向量,同时对动态向量进行置零操作,这样就够建了一个简单的反馈网络实现了移动位置的自动记忆。

3.4 虚拟现实效果

机械臂的六个自由度所对应的坐标轴正如图1所示。由于使用的各个自由度都是单一自由度,所以只需要两个按键就可以完全地控制该自由度。因此,只需要使用手控器上的2轴方向键控制X轴、Z轴的联动,同时使用手柄上的其他八个按键控制其余4个轴的运动。同时手控器可以实现多轴联动,只要同时按

上一篇:数据挖掘技术在图书馆构建中的应用 下一篇:从战略性新兴产业看纤维产业的发展(四):合纤长...