手术虚拟仿真系统
手术虚拟仿真系统(精选11篇)
手术虚拟仿真系统 第1篇
虚拟手术系统是当今数字医学领域研究的前沿课题。通过使用虚拟手术系统, 医生可以进行临床诊断、手术训练及手术规划, 确定合理的手术方案, 提高手术的成功率。目前一些虚拟手术系统如开放式手术仿真系统[1,2]、虚拟内窥镜手术系统[3,4]等, 在血流特效的真实性和实时性方面仍有一定的发展空间。血流特效场景可以增强虚拟手术的真实度, 可以提高手术的训练效果。
本文主要研究了虚拟手术中血流特效场景中的物理模拟及场景渲染两大方面, 其中物理模拟方面关注血液的物理运动及血管壁的弹性形变、切割, 渲染方面关注血液表面快速、真实的渲染算法。最终实现了两个实时特效场景:血管内血液的流动以及虚拟手术过程中血管壁破裂流血特效场景。
1 血流特效场景仿真研究现状
在血流特效场景仿真方面, 国内外学者针对不同虚拟手术场景进行了研究。徐凯[5]等人针对组织表面小量流血形成的弯曲血槽, 采用元球组合绘制血槽, 模拟出小量流血的效果。黄雷[6]等人使用基于网格的稳定半拉格朗日方法模拟血流的物理运动, 实现了虚拟内窥镜下快速的二维血流模拟。
Matthias Müller-Fische[7]等人实现了基于SPH方法使用3 000个粒子实现无用户交互下血管破裂血液溅出的特效场景。Wai-Man Pang[8]等人使用PPU加速的SPH方法, 实现了6 000个粒子下实时模拟骨科手术中皮肤划开后小规模流血的场景。
2 基于SPH方法的血流模拟
虚拟手术系统必须在实时性和仿真度两方面保持平衡, 因此血流物理模拟方法也需要兼顾到这两个方面。我们选择了基于光滑粒子流体动力学的Physx物理引擎的SPH流体来模拟血流的物理形态。选择此方法的原因有:一是基于SPH方法的流体可以模拟与刚体、软体如血管壁、手术器械的碰撞, 满足交互性的需求;二是Physx中的SPH流体使用了GPU加速, 可以实时模拟40 000个粒子有交互流体运动, 满足虚拟手术实时性的需求。
2.1 Navier-Stokes方程
纳维叶-斯托克斯 (Navier-Stokes) 方程是计算流体力学中描述牛顿流体的方程, 一般形式为:
其中, v为速度, ρ为密度, p为压力, g为重力加速度, μ为粘滞系数。该方程主要包括了三项:-▽p为压力项, ρg为外力项, μ▽2v为粘性项。
2.2 光滑粒子流体动力学 (SPH)
目前求解Navier-Stokes方程有两种常见的方法:欧拉法和拉格朗日法。欧拉法是一种基于网格的方法, 而拉格朗日法是一个基于流体微团的方法[9]。光滑粒子流体动力学方法 (SPH) 是拉格朗日法的其中一种。2003年Müller[10]等人将SPH方法应用到流体的模拟上, SPH方法具有自适应性强、容易控制计算精度等特点。
SPH法将流体离散为空间中有限个光滑粒子, 每个粒子对其周边的粒子的影响使用基于一定作用半径的光滑核函数来定义, 一般来说, 距离越近权重越大。在SPH方法中, 一个位于x位置的标量A (如密度) 的值可以通过式 (2) 进行计算:
其中, mj表示粒子j的质量, xj为它的位置, ρj为它的密度, Aj为在位置j该标量的数值。W (x-xj, h) 是核半径为h的权重函数, 代表相邻粒子对当前位置的影响权重, 它符合以下条件: (1) ∫W (r, h) dr=1; (2) 当‖r‖>h时, W (r, h) =0。
在使用SPH方法进行流体模拟时, 每个粒子的位置和速度会经过单元时间间隔Δt后发生改变。在流体模拟的初始阶段, 对于所有粒子都定义其初始位置和初始速度, 为了计算下一时间间隔Δt后粒子的变化, 需要计算加速度。因此Navier-Stokes方程可改写为式 (3) , 用于经过计算单元时间间隔Δt后的粒子i的加速度ai:
其中压力项、粘性项根据式 (2) 可得:
其中, fiexternal为外力, 如重力、碰到障碍物后的反作用力及额外添加的力等, 不需要利用SPH方法, 因此不需要使用式 (2) 进行计算, 直接将每个粒子受到的外力添加在式 (3) 中即可。
最终可以得到SPH方法的流体模拟的基本步骤:将流体模拟的时间分割为单位时间间隔Δt, 每经过Δt对每个粒子进行如下步骤的计算: (1) 计算密度ρ (xi) ; (2) 计算压力项fipressure; (3) 计算粘性项fiviscosity; (4) 计算外力项fiexternal; (5) 计算加速度ai、粒子的速度vi及粒子的位置Posi。
2.3 基于Physx流体的血流模拟
在本课题中, 关于血流物理运动的模拟、血管壁的弹性形变、切割以及碰撞检测都是使用Physx物理引擎来实现。物理引擎[11]的主要任务就是在三维场景中, 计算物体与场景、物体与物体之间的运动交互和力学特性。它将物理运动定律引入到虚拟场景中, 使得交互性和真实性大大增强。
Physx的大规模流体模拟是通过SPH方法实现的, 每个粒子都存储了它的局部属性, 如粒子的质量、位置、速度、受力、生存期等, 另外还定义了所有粒子的全局属性, 如粘滞力、粒子的大小、粒子的平均作用距离等。Physx的流体支持与刚体、软体、布料等障碍物的交互。
使用Physx模拟血流的计算步骤可以由图1所示。对于每个时间间隔Δt, Physx中流体的每个粒子都会进行如下的计算:
(1) 粒子划分
输入上一时刻粒子的位置及速度, 根据已建立的空间数据结构, 将SPH粒子进行划分并存储在相应的位置, 以加快邻域查询的速度。
(2) 密度计算
根据SPH光滑核的半径h利用已建立的空间结构, 查找邻域划分单元中符合条件的粒子, 计算当前粒子所在位置的密度。
(3) 受力计算
根据SPH光滑核的半径h查找邻域符合条件的粒子, 根据式 (2) 的计算结果, 计算当前粒子位置上受力 (包括压力、外力、粘滞力) 及更新当前粒子的速度。
(4) 碰撞计算
查找邻域中障碍物的三角面片, 根据碰撞的预设参数 (如摩擦系数) 进行碰撞计算, 更新粒子的速度、位置及返回发生碰撞处面片的法向量。
为了充分利用GPU高度并行架构, 基于Physx模拟的血流使用如下的加速方法:
(1) 哈希均匀网格
粒子划分中使用了哈希均匀网格来存储粒子, 加快邻域粒子的查找速度。首先对空间进行一个有限单元的均匀三维划分, 如由646464单元组成的划分, 对于空间任意一点 (x, y, z) , 可以哈希映射为划分中的某个单元 (x%64, y%64, z%64) , 哈希值为该单元的位置。将哈希值和粒子的ID组对为 (key, particleID) , 以哈希值进行基数排序, 根据排序后的结果, 将其对应粒子ID的属性数据 (如位置、速度) 进行顺序存储, 因此在同一单元内的粒子数据都可被顺序访问, 以便在密度计算、受力计算时进行合并访问, 充分利用显存的高带宽, 加速读取邻域单元粒子的数据。
(2) 并发执行
在密度计算、受力计算中, 充分利用GPU大量线程可以并发执行的特点, 为每个粒子都安排一个GPU线程进行计算, 由于SPH方法计算量比较大, 而GPU属于计算密集型架构, 因此大量线程并发执行可以充分隐藏I/O延迟及发挥GPU大规模并行计算的优势。
另外, Physx通过一个简易的方式来方便用户操纵流体的行为, 它提供了几种控制流体的方法, 包括增加粒子、更新粒子、去掉粒子的方法, 如发射器 (Emitter) 、排水道 (Drain) 及粒子触发事件。在下面的实验1中, 我们使用了Emitter来模拟血流的动力源, 并通过定时器控制发射器的流速, 可以模拟动脉血管内血流随时间的变化。
3 血流表面渲染
在得到血流的物理模拟结果后, 下一步是如何将血流在虚拟手术场景中进行渲染, 展示在用户眼前。流体表面的渲染是流体仿真中的一项重要研究内容, 主要包括了流体表面的提取、表面的光照计算等过程, 其中流体表面提取对渲染效率影响最大。我们使用了Marching Cubes[12]、Screen Space Flow[13]进行了比较, 其中Screen Space Flow算法的效率最高。
Screen Space Flow算法是由Wladimir J van der Laan[13]等人首先提出的, 是一种可以实现大规模流体模拟的渲染算法, 基本思想如图2所示, 以球体绘制流体中的粒子, 在屏幕空间提取当前可见的球体表面进行处理, 最后绘制出流体表面。
该算法的绘制精度与当前摄像机位置及屏幕分辨率相关, 这也符合了流体绘制的需求:在观察者位置远离流体时, 流体表面只需低精度绘制, 而观察者靠近流体时, 流体表面需要高精度绘制。它和Marching Cubes[12]等算法的区别在于:Marching Cubes是顶点操作, 表面提取时不考虑流体是否当前可见, 将流体正背面按预设精度重建出三维顶点构成的网格, 而Screen Space Flow是像素操作, 对已经投影变换并光栅化为像素的可见流体正面提取出来, 进行基于像素的光照计算, 不生成网格, 因此效率比较高。
Screen Space Flow算法只对在摄像机可见的粒子进行流体表面的绘制。我们对血流的渲染主要进行如下步骤:
(1) 绘制球体
将每个粒子以球体形式进行绘制, 我们使用点精灵 (Point Sprite) 来绘制球体, 避免使用大量多边形球体导致的渲染系统效率下降的问题。
(2) 获取深度数据
如图3所示, 球体经过了透视投影后呈现出近大远小的特点, 球体坐标由世界空间坐标系非线性转换为屏幕空间坐标系。我们要获取的深度数据是当前屏幕上可见球体在屏幕空间的z坐标, 不处理被遮掩的球体。另外, 将除球体外的背景深度数据做标志, 方便下一步的平滑操作。
(3) 平滑深度数据
深度数据其实是一张二维的, 像素值为深度值的图像, 由于球体的深度是沿着球体表面发生变化的, 因此目前得到的是凹凸不平流体表面的深度, 需要对其进行平滑处理。我们使用高斯平滑算法, 如式 (6) 所示:
其中I、D分别为平滑前后在像素位置上的深度。w和h为离散高斯模糊模板的大小, G (x, y) 为高斯函数, 为了避免流体表面的深度数据与背景深度数据一起进行平滑后导致的边界模糊现象, 这里的高斯函数区分了流体表面与背景。
(4) 计算表面位置和法向量
首先根据式 (3) 中的深度计算出流体表面像素在屏幕空间坐标系的坐标, 然后通过与邻域像素进行有限差分, 计算出每个像素点对应的x方向梯度Gx及y方向梯度Gy, 像素点的法向量为这两个向量叉乘的结果GxGy。
(5) 光照计算
根据表面法向量对表面进行光照处理。我们按式 (7) 进行光照计算, 主要计算三种光照:反射、折射和镜面光。把三种光照的结果进行叠加, 得到最终光照效果。
其中, Cout为光照计算的最终颜色, F为Fresnel函数[13], a为折射光强, b为环境反射光强, ks为镜面反射系数, α为高光系数, n为表面法向量, v为摄像机的方向向量, h为摄像机与光源的半角方向向量。
(6) 背景合成
将处理后的流体表面的像素与背景图像合并, 得到最终流体渲染的效果。
4 血管壁模拟
除了血液流动的模拟之外, 血流特效场景的另一目标是模拟有弹性形变、可切割的血管壁, 以用于模拟虚拟手术过程中血管壁受压及被器械切割。我们使用了基于质点-弹簧模型的Physx布料来模拟血管壁, 优点主要有: (1) 可以与血流模拟无缝结合, 以便实现血管壁与血流的交互场景; (2) 使用GPU加速, 可以实现精细网格的实时切割和弹性形变。
4.1 质点-弹簧模型
质点-弹簧模型将血管壁等厚度小的物体假设为厚度为0的空间曲面, 曲面由有限个质点构成, 曲面的质量分布在这些质点上, 质点与质点之间有弹簧相连, 主要有三种弹簧[11]:结构弹簧、剪切弹簧和弯曲弹簧。不同的弹簧具有不同的特性, 如弹簧系数、阻尼系数等。结构弹簧抗拉伸, 剪切弹簧抗剪切形变, 弯曲弹簧抗压缩, 在结构弹簧和剪切弹簧都满足约束的情况下, 弯曲弹簧也会满足约束。图4为Provot弹簧质点模型[14]。
4.2 基于Physx Cloth的血管壁
Physx基于质点-弹簧模型提供了布料 (Cloth) 来模拟类似布料等薄且有延展性的物体。Cloth是通过用户自定义精度的网格来定义的, 该网格指明了布料质点的位置以及连接各质点的边的约束。网格的拓扑结构允许Physx构造一些用来模拟布料如何弯曲和伸展的约束。如图5所示, Physx主要提供了两种约束: (1) 伸展约束。它用于维持同一条边的两端顶点间的距离。如果指明一个小的伸展约束因子则可以模拟更具弹性的布料, 反之, 指明一个较大的约束因子可以定义更硬的布料。 (2) 弯曲约束。它用来保持网格中的边与边之间的角度。如果指明一个小的弯曲约束因子则可以模拟更易弯曲的物体, 反之可以模拟类似厚纸板的物体。
Cloth模拟血管壁流程如图6所示。
对于每个时间间隔Δt, 都会进行如下步骤的计算:
(1) 空间划分
与Physx流体计算中的粒子划分类似, 首先将空间划分为有限均匀的网格, 对障碍物的网格建立AABB包围盒并存储进有限均匀网格中。
(2) 质点计算
对每个质点, 并行执行如下计算:根据当前的位置、速度、受到外力及伸展约束、弯曲约束的情况等, 计算无碰撞情况下该粒子的下一时间间隔的速度及位置。
(3) 碰撞检测
输入质点的候选位置, 及障碍物空间数据, 进行两层的碰撞检测:第一层粗判断, 判断粒子是否与障碍物的AABB包围盒相交。第二层精确判断, 与可能发生碰撞的网格进行精确的碰撞检测, 并输出碰撞的位置、碰撞接触约束参数 (如障碍物的材质属性、布料是否可撕裂) 。
(4) 布料求解
将接触约束与质点的候选速度等输入Physx专有的布料求解器中, 求解器根据碰撞检测的结果, 重新调整质点的速度及位置。布料的形变及撕裂效果都由此产生。
由于Cloth的有限伸展性, 当向Cloth某个质点施以一个较大的力, 超过其撕裂容忍度时, 它将被撕裂。在Physx中, 撕裂的实现是通过分裂顶点, 而不是通过切断顶点之间的边来实现。因此撕裂时, 顶点的数目会增加。撕裂容忍度是通过设置延伸因子n来实现的。当拉伸布料使得网格的顶点之间的距离超过了标称距离的n倍时, 布料就被撕裂。
另外, 作为Physx中的一个实体, Cloth提供了事件机制 (如碰撞、挤压、撕裂等) 来进行交互, 可以自定义触发函数。当Cloth发生了已定义事件时, 会触发相应的自定义函数。如实验2中, 当基于Cloth的血管壁被撕裂后, 触发了撕裂处喷射出流体的函数。
5 实验
我们进行了两个实验用于针对虚拟手术中的两种情况, 实验1为模拟血管内的血流运动, 实验2为模拟虚拟手术中血管被切割后血液流出的交互式场景。实验环境如下:2.60 GHz AMD Athlon 64 X2 5000+CPU, 2.0GB内存、NVIDIA GTX480显卡、Physx版本为2.8.4。
5.1 实验1肺动脉内的血流仿真
本实验主要模拟血管内的血液流动, 肺动脉作为刚体与血液进行有交互的物理模拟, 肺动脉的血管壁与模拟血流的粒子之间会产生碰撞, 这种碰撞会影响到血流的运动状态。实验所用血管模型为从CT数据中重建的肺动脉血管模型, 顶点总数为9191, 三角形总数为14353。
如图7所示, 实验1实现了以不同血流渲染方式 (面片、球体、Marching Cubes (MC) 、Screen Space Flow (SSF) ) 绘制血流, SPH光滑核半径为2.0, 粘滞系数为40.0, Marching Cubes精度为256256256, 渲染窗口为512512。这几种渲染方法在不同的粒子数得到平均帧数 (FPS) 如表1所示。
由实验数据可见, 使用Physx物理引擎与Screen Space Flow算法结合来模拟血流是一种高效率的实现方式, 即使粒子数量达到了40 000个仍然能保持很好的实时性。从渲染效果上看, Screen Space Flow渲染效果也相对另外三种方法要好, 可以根据视角的远近控制表面渲染的精度, 光照效果也相对明显。
5.2 实验2虚拟手术中血管破裂后流血特效场景
本实验实现了血管被切割后血液流出的场景。本实验的目的在于模拟用户交互与血管壁碰撞导致血管壁破裂的场景, 只需关注血管的表面结构以及血管破裂后流血的触发事件, 因此本实验中的血管内并无血液流动, 避免因血流与弹性血管壁之间的碰撞计算影响场景的实时性。如图8所示, 使用Physx Cloth模拟的血管壁受力后会发生弹性形变。如图9所示, 当形变达到撕裂容忍度时, 血管壁破裂, 利用血管破裂的触发事件和Physx的SPH流体, 实现了血管壁破裂处流血的场景。其中SPH光滑核半径为2.0, 粘滞系数为40.0。布料伸展约束因子为1.0, 弯曲约束因子为1.0, 撕裂容忍度为3.5, 血管模型顶点数为6 552, 三角形数为13 100。表2为不同粒子数下的平均帧数。
从实验数据中可见使用Physx Cloth与SPH流体结合模拟有用户交互的血管壁弹性形变及破裂流血能高效地实现场景模拟, 即使在使用40 000个粒子模拟伤口大规模流血的情况下, 场景仍能保证接近实时的绘制。
6 结语
本文探讨了虚拟手术中血流模拟交互场景的血流、血管壁物理模拟方法及渲染方法, 实时、真实地模拟了血管内的血流及血管壁在手术中破裂后的流血特效。虚拟手术中血流模拟关键技术的突破, 能为将来在虚拟手术系统中如何获得更真实的手术场景, 如何提高手术训练效果等问题提供了一条可行解决的路径。下一步我们将此方法运用到实际的虚拟手术系统当中, 针对不同的临床需求研究相应的解决方案。
摘要:血流特效场景可以增强虚拟手术的真实感。虚拟手术中的血流特效场景包括了有交互的血液模拟及血管壁模拟。首先基于光滑粒子流体动力学, 使用Physx物理引擎模拟血液流动的物理形态, 并利用Screen Space Flow算法对血流表面进行实时渲染。然后基于质点-弹簧模型, 提出使用Physx物理引擎模拟可交互、有弹性形变及可切割的血管壁。最后实现两个实验场景:场景一实现肺动脉内大规模血液流动的特效;场景二实现在用户交互下的血管壁形变和切割, 并通过触发事件实现血管壁破裂流血的特效。实验结果表明, 该血流及血管壁模拟方法在40 000个粒子下仍能保证实时绘制, 满足虚拟手术的需求。
什么是虚拟仿真实训系统 第2篇
虚拟仿真实训系统较之传统教育方式有哪些优势?接受职业教育者又将如何受益?今天华锐视点就来为大家做一下解读。
什么是虚拟仿真实训系统
虚拟仿真实训系统就是针对特定学科的真实课件内容进行3D数字内容的模拟开发,并借助3D虚拟环境或3D立体显示设备模拟该学科的训练环境、条件和流程,使教师和学生能够获得和真实世界中一样或者相近的实训体验,达到替代或者部分替代实训效果的作用。虚拟仿真实训系统在职业教育领域的优势是什么?
1.创造实训环境
依托虚拟仿真、人机交互技术建立起来的虚拟仿真实训系统,可以逼真的模拟操作的流程,如搭设脚手架、护理过程、机械维修、起重机操作;逼真的模拟对工具设备使用,如对工具摆放环境的模拟、工具外形的模拟、对工具操作方式的模拟、以及对工具操作效果的模拟。高度逼真的训练环境,使得学生能够获得生动直观的感性认识,增进对抽象的原理的理解。
2.节省时间和成本比起传统的实物实景教学以及单纯的实物培训,虚拟仿真实训系统能够大大缩短建立实物和获取实训环境的时间,而且一套虚拟实训系统可以多人同时、单人多次使用,实现在更短的时间和成本内培养更高素质人才的目标。
3.增加安全可靠性
虚拟实训系统使得培训过程中的失误,不再带来人身伤害和环境危害,也不会浪费任何财力、物力,使用者可以通过虚拟培训熟练掌握知识原理和操作流程,日后上岗将应对自如。.考评结合 提升教学效果
手术虚拟仿真系统 第3篇
练习、考试”三个过程。
【关键词】:仿真、实训演练、系统设计
中图分类号:TP391.9 文献标识码: A文章编号:1003-8809(2010)-08-0189-01
1. 系统开发背景
铁路信号设备种类多,现场作业难度大,技术含量高,培训工作由于职工数量多,使用中的设备不能动,现场实验设备数量少,加之一线职工的文化层次的差异,造成对职工实训演練的工作难度增大,系统全面地掌握类似技能其周期就更长。虚拟仿真技术可将原本平面静态的文字、图形、作业流程及实训演练等内容以三维仿真方式来表现,配合文字、图像、动画、视频、声频、音效等数字资源,模拟仿真信号设备现场工作环境,把原本枯燥无味的学习模式变成三维仿真交互手段来实现。激发了培训者深入了解的兴趣,提高学员的学习效率,缩短学习周期,解决现场实做内容培训工作的难题。
2.系统设计特点
本系统采用先进的三维虚拟现实技术实现信号设备的仿真与传统的仿真系统相比,具有以下优点:
(1)、用计算机实现信号设备操作的完全三维软件仿真,节约成本,无需建实验室。
(2)、在电务段局域网环境下,实现多用户任意计算机终端登陆后,都可以使用本系统的全部仿真功能。
(3)、采用最新开发的BS嵌套CS架构和BS三维引擎,真正实现了网络环境浏览器方式的三维仿真。计算机终端采用浏览器方式,使用简单方便,同时具备CS的速度与功能。
(4)、本系统在一个软件平台下,实现不同设备的仿真,设备种类全。当增加新设备后,可单独开发该设备的仿真模块即可,完全满足电务段的培训需求。
(5)、本系统针对每个信号设备具有三维仿真练习库,试题库,改变了传统的学习考试方式,实现了信号设备练习、考试的实做仿真,并实现实做考试的自动评分。
(6)、自动记录、统计、查询学员的学习时间、练习内容、考试成绩等。
3.系统表现形式(角色)及模型
3.1角色定义
通过对项目提出方提供的脚本分析,本系统定义如下角色:
虚拟三维仿真(矢量模型)类。直观性更强,效果更好 ,使原本枯燥无味的知识变成双向互动的学习。激发了浏览者的兴趣。
360度物体型三维全景类。互动操作,真实性极强。
平面动画类。原理关系表现明了、色彩鲜明、动感强烈、逻辑关系把握准确,与传统的图例模式相比浏览者更容易理解。
图片表现类。直观真实。
视频表现类。观看性强、信息量大。
3.2系统表现模型
通过电务仿真实训演练系统,解决实做培训工作的难题。给使用者提供一个互动的学习环境,提高使用者的业务素质;给培训者创造一个高效崭新的学习方法,不断提高电务职工维修设备的质量水平及分析判断处理故障的能力,为行车安全的良好运行保驾护航。
参考资料:
手术虚拟仿真系统 第4篇
随着虚拟现实领域研究的进展和外科手术方式的复杂化和精细化,虚拟手术渐渐成为热门的研究课题。传统的外科手术面临如下困难:一方面,手术过程越来越复杂,需要详细的手术规划和术前预演。通过预计在实际手术中可能出现的复杂和险要情况,制定合理的个体化手术方案,提高手术成功率[2]。另一方面,医学院医生在手术室中的训练计划越来越少,需要通过计算机辅助技术或虚拟手术器械进行手术过程的仿真和模拟,来延长医生的学习曲线。此外,虚拟手术还可以将熟练医生的手术操作进行保存,用于解剖学和临床手术的教学,这也有利于医生重复训练重要的手术操作[3]。总之,虚拟手术具有非常巨大的社会价值和经济价值。本课题将建立一个用于手术训练的虚拟腹部外科手术系统。
腹部外科手术一直被认为是难度高、风险大的手术,主要因为腹部器官内部结构的复杂性和变异性[4]。虚拟手术系统在计算机中建立一个虚拟3D环境,通过虚拟手术器械,提供精确的视觉仿真和细腻的力觉反馈,仿真模拟手术过程。人体对触觉相较视觉而言更加敏感,25 Hz以上的视觉图像看起来就是连续的,而力觉信息的频率要达到250 Hz以上才会平滑。也就是说,力觉绘制线程每4 ms要运行1次以上,将耗费大量的CPU时间。在实现物理真实的形变模拟的同时,还要进行真实的力觉绘制,所以系统需要解决模拟的真实性和系统效率的问题。
对虚拟手术系统而言,力反馈具有特殊的价值,因为触觉手感是外科医生手术技巧的基础。目前,虚拟手术的研究和开发己经有了很大的进展。法国的INRIA研究小组一直致力于肝脏切割模拟器的研究,并在此基础上实现了对肝脏等软组织的切割和撕裂等仿真操作[5]。德国Karlsruhe研究中心成功开发了用于妇科手术的内窥镜虚拟手术系统,并能实现对软组织进行切割、烧灼和捏等手术操作的仿真。与国外研究情况相比,我国的研究才刚刚起步。上海交通大学谢叻等开发了一种多功能的虚拟手术器械[7],可实现手术刀、手术剪和手术钳等操作,但还不具备力反馈功能。国防科技大学与301医院联合开发了带有力反馈的虚拟膝关节镜手术系统[8]和虚拟心脏介入手术系统[9]。为了提高虚拟切割的性能,青岛大学贾世宇等提出了一种先细分后分裂的新式交互切割方法[10]。针对虚拟软组织形变多为大变形的特点,哈尔滨工程大学朱玲等提出了一种改进的质点积分无网格的力反馈技术[11]。
目前使用的基于物理的变形方法主要有mass-spring方法和FEM[12]。相较FEM模型,mass-spring模型的计算复杂度低,拓扑结构修改方便,所以目前我们使用mass-spring模型来模拟变形。但mass-spring模型基于连续物体离散化的理论,精度系数和阻尼系数不易确定,在模拟的真实性方面不如FEM模型。文献[13]提出了使用模拟退火法参照FEM模型来调整massspring的劲度系数和阻尼系数的方法。用mass-spring模拟整体形变效果也是一个挑战,文献[14]实现了使用广义弹簧保持几何形状和体积、使用形状匹配实现整体形变、使用逆向动力学修正“超弹性”的mass-spring模型。而在实时力觉视觉交互的系统之中,即使易于求解的mass-spring模型的效率也有待提高。
1 虚拟手术系统的设计
整个系统分为预处理和实时计算两大部分,如图1所示。
(虚线框平行四边形部分不属于本文讨论范围)
目前我们系统的基本架构已经基本完成[15]。系统可以读入.obj格式的三维模型,使用线段来表示手术器械的形状,并进行线段与表面三角网格的碰撞检测;进行弹簧—振子的触觉绘制;使用广度优先的力传播模型来实现局部变形,降低了系统的计算复杂度;使用基于四阶Runge-Kutta方法的表面网格massspring模型进行变形仿真,从而在使用更大的仿真步长的同时还能得到更好的仿真效果,减少了单位时间的计算量;可以实现实时的视觉和力觉反馈。
2 力反馈算法的设计
2.1 手术器械表示
在众多的手术器械当中,手术刀和电刀无疑是应用最为广泛的。它们是在腹部外科手术操作过程中,在组织或器官上造成切口的必备工具。本文分别采用线段来表示其几何特征,其他笔杆状器械也可采用该形式表示。如图2所示,灰色区域代表外形;点P是手术器械的质点,对应着笔杆状器械的尖点;点Q是器械的手柄代表点,对应着笔杆状器械的末端;方向n是器械表面的法线方向;点R是手术器械的受力代理点。本文通过这样的方式把笔杆状的手术器械表示为线段PQ,进行有关碰撞检测、力传播模型、触觉绘制方面的交互计算。
2.2 碰撞检测
由于本文用一条线段来表示笔杆状的手术器械,用三角网格表示腹部外科组织表面,所以手术器械和脏器组织之间的碰撞检测问题就可以简化为线段与三角网格的相交检测问题。如图3所示,线段的两个端点为P(Px,Py,Pz)和Q(Qx,Qy,Qz),三角形的三个顶点分别为P0(x0,y0,z0)、P1(x1,y1,z1)和P2(x2,y2,z2)。相交检测的任务则是判断线段有否与模型的三角片相交,若相交,则求出交点R(Rx,Ry,Rz)。关于线段和三角形的相交检测方法分两步:
第一步是判断线段与包含三角形的平面是否相交,若相交,则求交点。
点R在线段PQ上,同时点R在三角形P0P1P2上,则有:
其中t是比例系数,n为三角形的法向量,d为常量。可以求出:
若比例系数t满足0≤t≤1,则线段与该平面相交,代入式(1),求出交点R。
第二步是判断点R是否在三角形P0P1P2内。
为了减少计算量,本文通过三角形投影,把3D问题转化到2D中。通过降维操作,将三角形投影到某一个基本水平面上。为了避免垂直或者接近垂直的情况,一般挑选投影面积最大的投影面。这可以通过检查三角形平面的法向量做到,去掉其绝对值最大的分量对应的坐标。如图4所示,这里假设投影面为XOY平面,去掉z坐标。
此外,本文通过计算交点的重心坐标,来判断它是否在三角形中。其中,重心坐标(α,β,γ)即是三角形所在平面的任意点都能表示为顶点的加权平均值。若满足0<α<1,0<β<1,0<γ<1,则点R在三角形P0P1P2中。其具体计算公式如下:
解方程组可得:
2.3 触觉绘制
在检测出手术器械与物理模型碰撞之后,系统将构造反馈力并在力反馈设备Phantom上进行触觉绘制。对于这类笔杆状的手术器械,本文假定切割中的反馈力作用于尖端P上(如图2所示)。软组织对器械的约束力fh通过定义手术器械与接触点的弹性约束kconstraint来实现触觉绘制。kconstraint描述的是一个虚拟弹簧的约束力刚度,如图5所示。虚拟弹簧的两个端点分别是手术器械上的接触点和物体上的接触点。刚开始两个接触点重合,虚拟弹簧初始长度drelease=0,当手术器械进入物体,手术器械上的接触点移动,弹簧的长度变为d,那么反馈力是:
2.4 广度优先的力传播模型
很多手术操作并不会引起组织的全局变形,例如手术刀在胆囊上切割一道入口、止血钳钳住血管等。我们假设以线段表示的手术器械和物体只有一个接触点R,当这个接触点在外力的作用下发生运动时,此接触点就成为受激发的节点,在该中心受力节点上产生的应力通过与其相连接的弹簧作用在其他相邻质点上,从而把力向周围传递,带动相邻的节点运动。这样,物体的变形就由于节点的运动而产生了。广度优先的力传播模型如图6所示。
图6中,接触点R是广度优先搜索的第一层变形顶点,它的相邻点形成第二层变形顶点,第二层变形顶点的没有被访问过的相邻点形成第三层变形顶点。
本文使用广度优先力传播模型来实现变形的局部性[16,17],其基本思想是外力先作用于该接触点,然后以广度优先遍历的顺序,先传播到接触点的最近邻点,然后是最近邻点的未被访问的相邻点,这样传播直到最大的遍历深度为止。如图6所示,在最大深度为2的情况下,按照广度优先的方法,接触点的反馈力在第一层传播中更新与该节点相连接的6个邻接节点的位置信息,在第二层传播中则依次更新这6个节点的邻接节点(12个邻接节点)的位置信息。具体步骤描述如下:(1)确定遍历深度n,一般遍历深度取值越大,形变仿真的逼真程度则越高,这需要在计算复杂度和虚拟仿真度之间做出平衡,本文设定n=3。(2)建立一个空集L0,将接触点集V0中的初始接触点加入L0,其中,在初始状态下,V0只有一个接触点R(手术器械的受力代理点)。(3)依次创建Li={Li|i=1,2,…,n},并将接触点集V={Vi|i=1,2,…,n}中所有的点加入L0,对每一个在Li中的顶点,访问其相邻点,如果该相邻点已经被访问过,不做任何工作,否则置该相邻点的状态为被访问并将该相邻点加入Li+1。(4)当达到最大的遍历深度n时,输出变形顶点集合{L0,L1,…,Ln}。
对于手术工具和物体有多个接触点的情况,则独立地以各个接触点为树根做广度优先的遍历。若遍历到的顶点没有被访问过(可能是来自任何接触点的遍历的访问),则将顶点状态置为已访问并将之加入变形顶点集合,否则不做任何工作。
2.5 基于四阶Runge-Kutta方法的表面网格mass-spring模型
本文采用四阶Runge-Kutta方法来求解mass-spring网络,以容忍较大的仿真步长,从而减轻系统单位时间内的计算负载。Euler和Runge-Kutta方法都是求解离散差分问题的经典方法。其中,Euler方法计算简单,但精确性和稳定性不够强,而且要求较小的时间步长;而四阶Runge-Kutta方法在提高精确度的同时增加了计算量,但仍不失为一个平衡了精确度和计算量之后较好的选择[18]。
在系统中,我们定义tn表示第n+1次仿真迭代开始时的系统时间,那么自变量:
定义yn表示mass-spring系统的状态集合:
其中Xn是质点空间坐标的集合,Vn是质点速度的集合。
那么,对于每一质点,作用力是:
式中,Fi表示外力,mi表示质点的质量,kd是阻尼系数,分别是质点位移的一阶差分和二阶差分。表示与该质点连接的弹簧产生的弹力的代数和:
式中,ks表示弹簧的劲度系数。Δdij表示弹簧的弹性形变:
式中,d表示弹簧当前长度,drelease表示零张量长度。
由式(1),得到质点的加速度,即速度的差分:
式中,m是质点的质量。
而位置的差分:
式中,V是质点的当前速度。
故f函数计算差分的表达式是:
使用四阶Runge-Kutta方法求解,系统在h=40 ms的步长下,得到了较为真实的模拟效果。
3 实验与结果
在虚拟手术框架(如图1所示)下,本文利用力反馈设备PHANTo M和图形工作站(CPU:Xeon 2.80 GHz,内存:4 GB,显卡:NVIDIA Quadro FX5500)的平台,使用VC++和Open Haptic开发包开发了带力反馈的虚拟手术系统MIPS,实现了实时力觉和视觉交互的物理变形。为了验证本文方法的有效性,本文进行了力反馈的物理变形仿真、带力反馈的虚拟手术两方面的实验。
3.1 力反馈的物理变形仿真
由于力反馈在精度和实时性方面的要求较高,数据计算量比较大。因此,本实验目的在于测试本文力反馈算法在不同模型规模下的性能。如图7所示,系统可以实时模拟外力作用下的三维形变。如表1所示,对不同规模三角面片数的obj文件,使用广度优先的力传播模型后,依次求解mass-spring网络的时间大致相同。此外,图像绘制和触觉绘制的帧频与模型结点数是呈线性关系的。可以推算当表面网格的结点数为2500以内的模型,其图像绘制的频率可达30 FPS,力反馈频率可达300 FPS。此算法的运算速度基本能满足虚拟手术的需求,具有满足交互的实时性。
3.2 带力反馈的虚拟手术
为验证所开发的虚拟手术系统的可操作性和变形效果,设计了左半肝切除的实验任务,由一名外科医生进行力反馈的手术仿真操作。由于PHANTo M(虚拟手术刀)操纵杆也是笔杆状,因此手持操纵杆的方式可以模仿真实手术,采用指压式、握持式或执笔式。医生首先把肝脏模型导入系统,并把组成表面网格的三角面皮可视化,如图8所示。然后,通过操纵PHAN-To M手柄来操作虚拟手术刀,进行带有力反馈的切割操作,效果如图9所示。
医生操纵虚拟手术刀进行左半肝切除的一系列操作。在操作过程中,医生可明显感受到来自PHANTo M的作用力。图10把操作过程中虚拟手术刀的三维力反馈信息显示出来。其中,x轴为仿真手术的时间,y轴为力反馈的大小。从图10中可以看到,在左半肝切除的200秒仿真手术过程中,虚拟手术刀产生的作用力在三个维度的分量(x方向、y方向和z方向)的变化呈现一定的规律。例如,在78秒和176秒,虚拟手术刀在x、y、z方向上均呈现出一个反方向的反馈力。此外,反馈力在x、y、z方向的大小在200秒虚拟手术过程中均保持在[-1.5,1.5]的范围内。这表明反馈力分量的变化基本符合医生在左半肝切除手术过程中的运动期望,表现出稳定而连续的力觉交互效果。对于本仿真过程,医生认为虽然只是粗略模拟了仿真手术的过程,但他始终能感受到连续变化的反馈力,并在这种牵引力的引导下操纵虚拟手术刀完成模拟操作。虚拟手术中脏器的形变、手术刀的力反馈、以及整个交互操作等效果已达到仿真训练的最简单要求。
4 结语
本文从虚拟手术仿真系统的设计与实现出发,围绕着表面网格的力反馈算法,对手术器械表示、碰撞检测、触觉绘制、力反馈传播模型以及mass-spring模型的求解等方面进行深入的研究。下一步的工作是构造手术钳、剪刀等手术器械的几何模型和物理模型,并实现相应的手术操作。在触觉绘制方面,构造虚平面来产生更细腻、更真实、更复杂的反馈力。
摘要:提出一个带力反馈的虚拟腹部外科手术系统,并重点研究及实现了基于表面网格模型的力反馈算法。为了提高系统的稳定性,使用基于线段与表面三角网格的碰撞检测方法;基于四阶Runge-Kutta方法的表面网格mass-spring模型进行变形仿真;基于力的广度优先传播来解决变形仿真的局部性。通过仿真实验验证了该原型系统可以实现与可变形的三维模型的实时力觉交互。最后,把该方法应用到虚拟腹部外科手术系统中,并实现带力反馈的手术仿真操作。
手术虚拟仿真系统 第5篇
虚拟仿真实训平台中操纵不是真实的实训设备和仪器 , 而是使用软件虚拟仿真出来的实训设备。但是虚拟设备与真实设备具有一样的属性及功能特点。基于 WEB 方式的虚拟仿真实训平台可以让学生在不同时间不同地点都能通过互联网进行实训,因此,基于 WEB 的 B/S 模式是实现虚拟仿真实训平台的趋势。虚拟实训的实现方法。
虚拟实训实现的相关技术内容包括:建立共享型实训教学资源库、建立共享型数据库、能够支持教师与学生之间的沟通交流、可靠的安全机制、协同虚拟环境实现技术、面向对象编程方法的实现。
在设计虚拟实训室应当考虑如下:(1)虚拟实训室的设计应考虑友好的操作页面并且注重交互性;(2)虚拟实训室系统的运行应遵循安全性和可靠性原则;(3)虚拟实训室的软件系统应具备良好的可拓展性和可维护性,在实训内容发生改变或实训内容有所增加的情况下能方便的做出调整。虚拟仿真实训平台的设计。
3.1 设计原则。
虚拟仿真实训平台设计依据互动性、易用性、实用性、经济性、可拓展性,可维护性的原则来设计。充分结合三维模型构建技术、虚拟仪器技术、实验场景虚拟构建技术、信息安全技术、网站建设技术。虚拟仿真实训平台采用 ASP.NET(C#)语言编写 , 数据库采用 SQLSERVER2005.3.2 总计设计。
虚拟仿真实训平台是基于实训项目系统。WEB 服务器是后台服务器与客户端浏览器之间的桥梁,学生通过浏览器登陆虚拟仿真实训平台,用户认证服务器验证用户身份,颁发在线实训平台网站数字证书。学生通过浏览器请求实训服务 ,WEB 服务器根据请求服务发给虚拟仿真实训服务器,再由实训后台服务执行相应的训练业务逻辑处理。
实训项目数据库服务器用于存储实训项目相关数据、用户使用的信息数据、项目的信息数据、服务器设备的信息数据等实训项目的数据管理工作 , 包括实训项目相关数据的创建、查询、修改等功能。
虚拟仿真实训平台的开发采用 MVC 的设计模式及把业务逻辑层与数据层、表示层分开。系统做到低藕合 , 即某功能模块的业务逻辑发生改变也不会对其它功能模块造成任何影响。系统采用分工协作开发 , 实现系统的快速开发 , 同时系统也达到高稳定性、可扩展性和可维护性的标准。
遵循上述设计原则 , 将虚拟仿真实训平台系统从逻辑上分为门户层、服务应用层、核心服务层、服务支撑层、数据层。
3.3 虚拟仿真实训平台的模块设计。
平台的主要模块及功能如下:
站:包括学院实训信息及动态,实训教学安排情况,各课程的实训内容介绍等信息的发布。
实训教学资源库:包括各课程实训教学资源,包括实训指导书,任务书,具体的实训内容及步骤的文字,视频资源。
实训教学管理:包括实训教学的安排,实训教学计划,实训地点的管理,各实训室的介绍。
实训教学互动答疑:课前课后学生与教师的互动平台,学生可以在此模块下进行提问,教师可以对学生进行辅导答疑。
实训教学效果评估:学生可以通过此模块了解到自己的实训成绩,并且此模块可以通过对学生的实训成绩进行统计与分析,总结出学生掌握实际操作的薄弱环节。结束语。
虚拟仿真实训平台的建设对高职院校的信息化建设的完善有着支撑作用,对高职院校的实训教学的管理以及实训教学水平的提高有着辅助及推动作用。
参考文献:
[1] 蔡卫国.虚拟仿真技术在机械工程试验中的应用 [J].实验技术与管理 ,2011(08)。
[2] 高洪波 , 王凤先基于的虚拟实验系统体系结构设计 [J].河北省科学院学报 ,2003(02)。
手术虚拟仿真系统 第6篇
摘要:传统体育馆售票方式无法使购票者在购票时实时感知座位的具体视角。本文提出一种解决思路,其基本思想是根据设计图纸提取场馆的拓扑结构和几何信息,并对场馆三维建模,虚拟仿真体育馆内部场景,再使用OpenGL库函数将模型导入系统来实现场景旋转、转换和购票等人机交互操作。为使用户在购票时更好地感受逼真的三维视角效果,运用画法几何中射线和三角形求交算法解决三维仿真交互中座位定位等问题。
关键词:虚拟仿真;OpenGL;三维建模;画法几何
中图分类号:TP391.9文献标识码:A
Abstract:The traditional way of ticketselling can not make buyers perceive the concrete perspective of the seat in real time when buying tickets. In this paper, we propose a solution, the basic idea is according to the design drawings, extracting the topology and geometry information of the stadium, and accomplishing threedimensional modeling of venues, virtually simulating the inner scene of the gym, then using OpenGL graphics library to import external model into the system to achieve scene rotation,conversion, ticketing and other manmachine interaction. In order to allow users to feel vivid 3D perspective better when buying tickets, we use ray and triangle intersection algorithm based on descriptive geometry to solve the problems of threedimensional simulation and interaction in seat positioning.
Key words:virtual simulation; OpenGL; Threedimensional modeling; descriptive geometry
1引言
传统购票方式,人们只能根据不同票的价格来判断看台座位的基本情况,无法感知所购座位的具体视角。其实同一票价的座位,其视角可能有很大的差别,而且不同的球迷有自己特有的喜好。因此,对于体育馆来说,如何根据用户心理需求,设计一个具有高度仿真体验的购票系统,以提高运营效率和服务质量显得尤为重要[1]。通过采用虚拟仿真技术和三维建模技术对体育场馆进行建模,构建3D虚拟仿真体育馆,使购票者购票时就能提前预览每个座位的真实视野范围,身临其境地感受和体验到所选座位的视角,充分调动广大球迷观看球赛和表演的欲望,提高门票的销售率,帮助体育馆运营商高效管理体育赛事。
2体育馆场景模型的构造
我们知道,建立场景模型要对实际场景进行抽象仿真,尽可能地符合真实情况。因此我们利用3Dmax根据设计图纸构造体育场馆的场景模型,再处理模型的光照和纹理映射对场景进行渲染[2]。建模数据来自场地、座位、区域、视角等,空间形态的参数主要有座位的三维坐标、二维场景平面,法向量等,场景中的物体基本上由简单几何体构成,接下来以某地体育场馆为实例进行设计说明。
2.1构建场地
根据体育馆的设计图纸构建模型,按一定的比例(此比例根据实际需求设定,可进行缩放)在场景中设计边线、端线、中线、三分投篮区、限制区、罚球线、罚球区等球场参数,均由平面构成,另设置材质、纹理信息。3Dmax中包含绘图编辑命令和修改命令以及点、线、面图例,通过图形元素来建立模型的场地模块。
2.2构建座位
在该场景中,座位主要分东、西、南、北四个区域,每个区域占三排,每排14个座位均匀排列,座位由小方格表示,共164个。由于实际需要,根据座位离中心点的距离对座位进行分类,每区前两排中间5个位置为视觉享受模式的座位、其余由座位的物理位置分为并排、尽量集中、价格便宜模式,后期用OpenGL的颜色渲染函数标记座位的售出、待售、未售三种不同的状态。
2.3构建区域
本体育场馆划分为四个区域,东西和南北两个区域分别对称,因此购票者在查看座位视角时,系统会根据中心对称原理拣选座位,其中对称位置的视角是一致的。
2.4构建视角
建模的目的主要是为了实现座位三维视角的实时查看,在切换过程中,每个座位会呈现不同的观测视角,该功能主要由OpenGL交互函数实现。在后期建模中要解决座位拣选问题,所以在3Dmax中要初步设计出座位的二维平面视角。如图1是在3Dmax中从场地、座位、区域、视角等方面对体育馆进行仿真后的模型场景图。3三维几何建模
利用3Dmax对虚拟场景建模,将体育场馆的几何信息和拓扑结构数值化,并定义实体模型的数据结构,以便在读取模型文件时组织和封装虚拟场景[3]。建模时应注意合理的拓扑结构能有效建立场景模型,优化空间数据,使用三维数据结构描述场馆时,要符合场馆的空间几何特点,才能准确表达出真实场景的几何形状。
通常在结构体中定义数据模型的点、面、材质、光源、颜色信息,用来保存从3DS文件中读取的数据。本系统的各结构体定义如下[4-5]:
4基于OpenGL的外部场景模型导入与重绘
在3Dmax中对体育场馆完成场景建模后,把文件以3DS格式导出,使用OpenGL函数库中相应函数文件导入系统[6]。
4.1场景模型的导入
为了读取和重绘3DS文件,需定义名为3DSload的类,在导入过程中,通过3DSload类中递归函数的组合,将3DS文件中的数据全部读出并存储在自定义的数据格式中。这三个递归函数如下:
//读取3DS文件
M3DSObject*Load3DSObject(char*filename);
//3DS模型重绘函数
void Draw3DSObject(M3DSObject*object);
//3DS模型归一化函数,将3DS模型归一化,即将模型平移到原点,并缩放到每个坐标均在[-1,1]的立方体中
void Unitize3DSObject(M3DSObject*object);
4.2场景模型的重绘
导入3DS文件后,3D虚拟体育馆模型的所有信息都保存在自定义的数据结构中,通过OpenGL函数调用这些数据,便可重新绘制体育馆三维模型,这样避免了大量绘制体育馆三维实景图像占用资源的问题,为设计和部署带来方便。
1)计算法向量
构造三维模型时法向量非常重要,与光照模型紧密相关,处理不当就会对三维模型的重现造成影响。通过自定义函数CalculateVertexNormals()计算对象的法向量,在函数中遍历对象的所有面和顶点,并通过规范化后将法向量添加到法向量列表中。重绘场景模型时,把列表中的每个数据元素传递给OpenGL函数OutGLAddVertex()来设置顶点的法向量。
2)绘制场景
OpenGL函数从存储了场景数据的数据结构中获取信息,以一定的绘制模式将模型重绘出来[7]。主要步骤包括:1)读入形体的数据结构;2)读入浮点型的颜色三元组;3)3DS模型重绘。
3)实现交互功能
系统要求与场景进行交互,除了对话框和菜单栏之外,大多通过鼠标来实现,OpenGL函数可实现交互功能[8]。将之前生成的3DS文件类导入三维模型,使用模型图的平移函数glTranslatef()和旋转函数glRotatef()实现平移、缩放、旋转等人机交互控制。
当用户在虚拟体育馆视图界面上用鼠标点击某个座位时,如果有函数响应鼠标的操作,则实时计算顶点坐标并生成该座位的三维视角,执行对场景的重绘。
5画法几何思想解决模型的座位定位
为了使用户购票时能够体验座位的三维可视化视角,本文运用画法几何中射线和三角形求交算法解决三维仿真交互中座位定位等问题。具体是:(1)3Dmax模型的读取;(2)3Dmax模型的OpenGL操作,比如旋转、缩放等;(3)3Dmax模型的定位。本文中主要涉及座位定位,射线和三角形求交算法应用情况如下:
图2是OpenGL中的坐标拣选[9],即从屏幕二维坐标到三维坐标的变换,利用近景点和远景点定位一条射线,如图3所示,近景点P和远景点P′构成了OPP′射线,利用这条射线和OpenGL模型中的每一个三角形相交确定三角形属于哪个座位,则屏幕上选择的就是这个座位。设空间平面方程为:
N·P+D=0(1)
这里是向量的点乘,N是平面的法向量,P是平面上的任意一点,D表示原点到平面的距离。
O是原点,x和y就是在这个坐标系下的坐标, 且对空间中的任意点,在此坐标系中的坐标都是唯一的。
取三角形的某个顶点作为仿射坐标系的原点,由此延伸出的两条边作为坐标轴的单位向量,则对于平面内的任意一点,通过其坐标数值就可判断点和三角形之间的关系。假设坐标是u、v,则在第一象限的点满足u>0、v>0,点在三角形内部则满足u+v≤1,由这个原理就可判定点是否在三角形内部。
具体计算方式:
三角形的三个顶点分别是P1,P2,P3,同平面的点P0,两个边向量就是 U=P2-P1,V=P3-P1,此坐标系内的坐标为:
P′0=P0-P1(6)
解这个方程就可以获得到仿射坐标系下的坐标:
P′0=u×U+v×V(7)
根据u,v判断交点是不是在三角形内。
6验证分析
为验证建模方法和定位算法的有效性,分别从两个参考指标进行测试评估:
1)虚拟仿真体育馆模型与实际场景在形态特征上是否相似。在实验中通过与实地的对比勘查可得:构建的虚拟体育馆与实际图纸及空间相似度为83%,误差来源于对纹理材质细节的粗糙处理。
2)运用定位算法形成的三维视角与实际观测的视角范围是否有较大的相关性。将在虚拟体育馆的四个区域随机获取的座位仿真视角数据,与实测数据利用统计分析软件SPSS进行相关性分析,结构表明两者间的相关系数较高,且南北方向座位比东西方向高,分别为0.90和0.85,说明模拟仿真具有一定精度。
7小结
本文将OpenGL图形函数库与三维几何建模相结合,设计3D虚拟仿真体育馆购票系统,提出一种能实现可视化实时预览场馆座位三维视角的方法,与现有的体育馆售票系统对接,使用户足不出户就能身临其境地选择座位,进一步激发人们去现场观看比赛的热情和欲望。但是,如何更有效地部署和优化体育场馆三维空间模型及座位定位算法,提高虚拟仿真精确度,是一个值得深入思考的方向。
参考文献
[1]张涛,姚俊锋,杨献勇.基于Web 3D的体育馆展示并售票系统的研究[J].计算机仿真.2006,23(9):236.
[2]徐岚.三维虚拟场景建模技术[J].湖北第二师范学院学报.2009,26(2):74-75.
[3]禇维翠.基于OpenGL的室内体育馆虚拟系统的研究与实现[D].合肥:安徽大学,2011:6-7.
[4]安葳鹏,蔡治邦.煤矿虚拟巷道三维几何建模的研究[J].微计算机信息,2010,26(8-1):224-225.
[5]侯湘.虚拟现实技术中的三维建模方法研究[D].重庆:重庆大学,2006:18-19.
[6]吴斌,段海波,薛凤武译.OpenGL编程权威指南[M].北京:中国电力出版社,2001.
[7]江早.OpenGL VC/VB图形编程[M].北京:科学出版社,2001.
[8]周长发.计算机图形学几何工具算法详解[M].北京:电子工业出版社.2005.
手术虚拟仿真系统 第7篇
一、平台构架
虚拟教学仿真平台必须具有可视化的特点, 操作方便、直观, 学生通过平台界面进入相应的环境后, 可以直接进入教学实验界面项目, 设置和调整相应的仿真参数, 进行教学和实验内容的理解、验证。或者任意进入感兴趣的实验项目, 通过对仿真教学实验结果进行比较分析, 自觉发现自己学习中存在的问题, 提高独立思考问题、分析问题的能力。整个平台系统按照教学内容包括:信号基础、信号分析、信号变换、系统分析、系统响应、系统设计、通信系统和DSP应用等几个环节, 将《信号与系统》与实际应用以及后续的教学课程有机结合起来。
仿真平台的设计内容:本仿真系统结合信号系统课程的重点和难点, 由若干个子系统构成组成, 每个子系统由若干个实验构成, 效果形象逼真, 纯软件的操作环境, 使师生在课堂上可以使用该软件模拟实际信号和系统, 完成课程教学和知识拓展的相关要求, 并可以在课堂教学中动态演示, 丰富教学内容, 强化学生对重点难点的理解。
每个可以仿真的内容都综合了目前国内外的教材, 概括了所有的知识点。例如, 信号基础主要是产生模拟和离散的方波、正弦波、指数信号等各种基本信号以及这些信号的基本运算, 包括微分、差分、积分和卷积等, 这些信号的基本参数可以根据需要进行调节, 也可以根据需要向虚拟平台内添加合适的信号, 保证虚拟平台的灵活性。该虚拟平台系统中信号基础的主界面如图2所示。在该界面中, 只需点击相应的按键, 在弹出的实验界面中输入相应参数, 系统平台就会执行后台M文件, 显示实验运行结果数据和图形。当然, 该平台对学生理论基础也提出了很高要求, 对现象的原理性分析和总结可以达到提高学生分析理解和总结问题的能力。例如, 对周期锯齿波信号的分解与合成 (如图3所示) , 需要学生掌握周期信号分解与合成的原理, 理解各次谐波分量的幅度和频率之间的关系, 理解周期信号频谱的特点, 理解合成信号的吉布斯现象产生的原因等。
该平台系统通过友好的人机交互界面就可以操作软件, 演示《信号与系统》课程的重点和难点, 以图形的形式形象、生动地重现各种现象, 便于学生理解, 同时增强了学生的学习兴趣和积极主动性, 让学生把精力重点放在理论内容的理解上。
二、结论
论文主要介绍了《信号与系统》虚拟仿真平台的设计思想和方法, 通过具体示例说明系统的实现过程。该系统可以使学生由浅入深地进行动态交互式学习, 克服了实际试验仪器的部分缺点, 可以有效地提高教学质量, 加深学生对各知识点的理解。
摘要:本文介绍了基于MATLAB的《信号与系统》课程的虚拟教学仿真平台。该平台包含了《信号与系统》教学中的重点和难点内容, 通过图形化方式和交互式平台, 直观显示教学实验内容和结果, 帮助学生理解《信号与系统》的原理和分析方法, 提高学生学习该课程的兴趣和学习效果。
关键词:虚拟教学仿真平台,信号与系统,Matlab
参考文献
[1]余志荣, 杨莉.基于NI-VISA与LabVIEW的USB接口应用设计[J].单片机与嵌入式系统应用, 2007, (1) :66-69.
[2]吕治国, 丁国强.信号与系统课程实验系统设计[J].实验科学与技术, 2010, (1) :51-53.
[3]游春霞, 魏明生“.信号与系统”虚拟实验软件平台设计[J].江苏教育学院学报 (自然科学) , 2012, 28 (9) :34-37.
[4]金波.基于MATALB的“信号与系统”实验演示系统[J].实验技术与管理, 2010, (27) .
手术虚拟仿真系统 第8篇
1 VRML的优缺点
1.1 VRML的概念
虚拟现实建模语言的中文缩写就是VRML, 他是一种以文本为基础的通用编程语言, 也是一种描述三维环境的场景描述语言, 是对于三维的模拟, 在网络上经常会用到。他的诞生改变了原来3W上的平面和单调的缺陷, 将人的行动当成浏览的主体, 即所有的表现都会随着操作者的行为改变而改变, 功能设计更加人性化。VRML直接由浏览器解释执行, 不需要任何编译。当用户打开VRML文件时, 系统会首先装入一个内嵌的VRML浏览器, 该浏览器会的作用是将VRML语言中的信息解释成空间中目标的几何体描述, 如球体, 长方体, 不规则其他三维物体等等, 同时它还有提供实时显示的功能, 且一秒显示多次, 这样用户在操作计算机时会有一个活动场景的感觉。
1.2 VRML的特点
VRML采用的是“可执行的代码”技术, 能够有效地解决网络带宽所造成的问题。VRML性价比也很高。Web浏览器用统一通用的客户端程序, 处理显示来自于不同服务器的数据, 而这些服务器能以不同的格式、不同的协议来传递文件。由于Web应用框架中含有开放标准, 所以客户端程序可以使用HTTP协议访问Java Applet或HTML文件、使用FTP协议下载文件、使用SMTP或POP协议收发Email、通过VRML文件访问3D影象、以及访问许多其他不同的网络资源。现在的C/S应用中很多时候不同的客户端软件会带来隐含费用支出, 而这个通用的客户端程序则消除了这一情形。通用的客户端程序还可以使用户能够用同样的方式与所有基于Web的应用交互, 这样也减少了技术支持和相关的培训费用。所以从以上各方面来看, 基于Web的虚拟产品技术具有良好的性能价格比。另外, 从LAN到Internet的可扩展性相对较好。由于VRML和其他Web程序都有共同的网络通信协议TCP/IP, 所以基于Web的虚拟产品技术不仅能在小型局域网上应用, 也可以在大型广域网乃至Internet上应用。
1.3 VRML的缺点
首先, 几乎所有的VRML浏览器都是利用拖动鼠标或敲击键盘的箭头用以改变视角的方式来观看VRML世界, 控制手段相对比较不精确, 定位比较困难。其次, VRML和外界的信息互换能力比较差, VRML几乎不和HTML文件进行信息互换, 仅仅是作为一个插件嵌入到网页中的, 所以VRML的数据无法传送到HTML中, HTML也无法读取VRML的数据。最后, VRML与用户的交互界面引对较差, VRML的交互目前还仅仅限于单击或移动鼠标, 没有提供其它的友好用户界面, 特别是它没有提供用户输入数据的功能, 这对于一般的用户, 特别是课件的使用者来说, 都造成了极大的不便。教学课件根据学习者输入的数据信息作出不同的响应, 这点是教学课件必须具备的交互手段之一, 但VRML在这方面就显得无能为力了, 这就大大影响了它在网络课件中的发展进度和空间。
2 JAVL的优点以及缺点
JAVL于1991年被研发问世, 但当时并没有受到人们的普遍重视, 一直到1994年才得到发展。JAVL语言同时具有编译型语言和解释型语言两者的优点, 有着执行效率高、程序的可移植性以及安全性好的特点。首先JAVL是一种针对网络的应用而专门开发的语言, 真正面向对象。并取消了指针的概念, 他由计算机自动管理内存, 所以非常的安全可靠。而且结构标准、移植性高, 具有跨平台性, 同时也具有很高的可拓展性。其次, JAVL可以生成不管是简单还是复杂的形体, 也可以直接调用现有的三维形体;并使形体具有透明效果、颜色、贴图等处理效果;他还可以在三维环境中生成灯光、移动灯光;可以具有键盘、定时、鼠标等行为的处理判断能力;并可生成雾、背景、声音等效果;还可以使形体变形、移动、生成三维动画, 也可以编写非常复杂的应用程序, 用于各种领域, 比如VR。但是, 他的缺点是编程要求复杂, 运行速度缓慢, 所以限制了其自身的发展。
3 通过JAVL和VRML实现虚拟仿真系统
1) 简单的说, 虚拟仿真系统的第一步, 是从CAD系统中创建装配模型, 从CAD中提取出一些模型的相关的信息, 再利用这些信息在虚拟的环境中实现虚拟的装配。所以, 我们要设计一个实用的、可以拓展的虚拟装配平台。与面向对象的编程语言相比, VRML对CAD数据的描述能力也比较有限, VRML2.0中支持的一些简单行为, 可以用JavaScript来完成一些http文件调用的功能和基本的数学功能, 但对于一些相对比较复杂的工作比如场景交互等, 由于网络的程序语言功能和跨平台等原因, 所以当前Java语言基本上是这一应用领域的首选。通过外部编程接口 (EAI) 和内部Script节点使Java与VRML相结合, 应用VRML中的Script节点从VRML场景内部提供了与Java的连接, 来实现与VRML场景的交互。
2) 选择开发工具时, 首先要从成本考量, 具有成本意识, 尽量降低虚拟环境开发的成本, 降低对设计平台的依赖性和进行网络数据传输的要求, 所以由此看来, JAVL和VRML是开发低成本虚拟环境比较有效的途径。
3) JAVL和VRML的交互方法:JAVA属于一种跨平台程式语言, 他能够很好的支持在网络环境下的编程, 而VRM L的优势在于构建虚拟现实场景。解决VRML与JAVA程序之间的交互, 一般采用以下3个方法:第一是通过语言的方法, 就是把VRML的3D数据全部转化为程序语言, 它不仅可以使浏览器得到场景的完整信息, 也具备基本语言的控制结构。不过文件容量过大, 不太适用于网络的传输;第二是E AI的方法, 作为一种应用程序的接口, EAI是基于JAVA和VRML小应用之间的事件传递而提出的一种规则, 他可以用于实现JAVA Applet和VRML中虚拟场景之间的相互通信。EAI几乎囊括了浏览器脚本接口的所有功能, 比如查询浏览器状态、增删路由等, 所以如果需要集成多种媒体, 进行比较复杂的网络控制, 一般都会采用EAI方法进行;第三是SAI的方法, 它是使用路由和事件机制, 也就是说利用事件发生器、script节点、dff/use命名规则和路由route, 来连接VRML场景中对应的域和节点, 用以实现JAVA与VRML的交互, 一般作法为:先通过eventin将事件传至Script节点中的URL字段, 然后再在Scrip节点中的脚本中调用相应的JAVA类来做处理;最后再通过Script节点的evenout事件, 把处理结果送回到VRML场景中, 用以实现动画或交互。这种方法是目前最常用到的一种JAVA和VRML结合用以实现交互的方法。VRML不太考虑对象行为, 比较着重于虚拟场景中对象的特征;而JAVA则很少涉及外部特征, 他主要讨论是对象行为, 所以二者各有千秋, 相互作了很好的补充, 因此普遍都认为VRML与JAVA的结合, 是可以实现相对比较高等级交互功能 (如复杂动态场景控制等) 的有效方法。VRML中使用JAVA有两种方式, 即通过外部授权接口EAI访问以及通过脚本编程接口SAI访问。JAVA能够自由运用于3D场景[3], 获得了一个结合VRML世界和JAVA世界的机制。VRML世界通过其扩展执行模式进入JAVA世界, 即活动行为通过一个特殊结点来连接两个模块。
4) JAVA程序与VRML场景间的连接:JAVA通过他的附加封装类CLASS来实现对VRML的扩展和支持。类是指所有相似对象的状态变量与行为构成的模板 (template) 或原型 (prototype) 。可以避免冲突出现的包 (package) 中又包含着每一个类和界面的名字。通过这些类, VRML中的所有场景, 在接受和发送事件等各个环节都能被JAVA访问到。目前, JAVA对VRML场景的访问控制有两种方式:第一种是SAI脚本编程接口方式, 也就是说JAVL利用Script, 来实现VRML和JAVL交互的交互流程图本语言;第二种则是EAI外部编程接口来访问。
Applet和VRML场景都内置在超文本标记语言页面上时一般用这种方式连接。在这类情况下, Applet主要利用封装在VRML包中的Broseser类来控制访问场景Browse r类的基类IBroser的接口类, 它封装的内容不仅有VRML场景中除了SAI可使用的函数, 还有getNode () 函数直接获得场景中使用DEF语句定义的节点。与SAI方式相类似, EAI中也可调用geteventout、geteventin来获取那些事件的输出或输入的实例, 从而引起场景的变化。
5) 相对于基于VRML的其他的虚拟仿真系统, 首先它具备快速而且方便的冲突检测机制, 能够执行较为负载的装配操作;其次, 系统具有独立性, 在VRML模型由CAD系统生成后, 在整个装配过程就脱离了对其他CAD系统的依赖, 再也不需要任何CAD系统的支持, 这就加快了系统的运行速度, 实现了系统平台的无关性。另外可以独立的工作, 完全支持网络化协同设计, 也大大的方便了与其他虚拟设计系统的集成。最后可以通过JAVL来实现细腻模型的人机交互控制, 实现虚拟仿真。
随着VRML技术以及JAVL技术的不断完善和发展, VRML和JAVL的交互在人们的日常生活中的功能开发的作用也日益显著, 运用也逐渐增多, 后续将会受到人们越来越多的关注。我们也要不断地解决VRML和JAVL在发展中暴露的问题。可以通过VRML和JAVL在浏览器上进行多场景、多视点的浏览对象, 并运用多种方式、方法来控制场景中物体的运动与交互, 使人感受到逼真的并联机构平台效果, 为基于设计结果的异地评价和Internet的异地协同提供支撑环境, 继续不断的探索在虚拟现实环境中机械机构运动仿真的实现方法。
参考文献
[1]章银娥.基于VRML&JAVL的火灾仿真系统的设计与应用[J].科技广场, 2006 (8) .
[2]张小强.Web3D技术及其在产品仿真系统中的应用[J].重庆大学学报, 2002 (5) .
[3]章银娥.VRML虚拟现实技术在火灾仿真系统的应用[J].赣南师范学院学报, 2006 (6) .
[4]薛强.一个基于JAVL3D的虚拟装配图形仿真系统[J].交通与计算机, 2005 (2) .
手术虚拟仿真系统 第9篇
虚拟训练一般是在计算机生成的虚拟环境中进行的,然而通常的电路仿真则是在专用的仿真软件环境中进行的,这不符合虚拟训练的应用需求。因此有必要研究电路的后台仿真方法,使得在虚拟训练时,计算机根据测试点的位置在后台对电路进行仿真,得到其应有的信号。在虚拟训练系统中对电路做后台仿真的相关研究非常少,文献[3]中,作者指出电路仿真技术和虚拟训练技术的融合难度较大,但是基于电路仿真的专门针对装备电路的虚拟训练技术将是该技术领域的重要发展方向之一,并提出了基于Spice(Simulation Program for Integrated Circuits Emphasis)仿真引擎对电路进行后台仿真的方法。然而该方法需要开发人员对Spice语言非常熟悉,才能编程实现对Spice网表文件的解析和仿真。根据虚拟训练的实际需求,本文提出了一种基于Multisim的Automation API的电路后台仿真方法。本方法成功实现了在虚拟训练程序运行过程中,根据测量的电路节点的位置,利用Multisim仿真引擎实时生成电路信号的功能。
1 系统结构
系统的软件结构如图1所示。本文所设计的虚拟训练系统是在Virtools中开发主程序和虚拟训练界面,并利用动态链接(Dynamic Link Library,DLL)技术和组件对象模型(Component Object Module,COM)技术调用Multisim仿真引擎,实现虚拟训练和电路的后台仿真。首先对开发工具和相关技术做一些简单说明。
Virtools:是由法国达索公司开发的虚拟现实系统制作平台,能够整合三维模型、逻辑行为、人工智能、物理属性、视频和音频等多媒体元素。其最大的优点是具备一套丰富的行为交互模块(Building Block,BB),开发时只需用鼠标拖曳BB就可以构建出复杂的应用程序,这种流程图式的可视化编程方式简单易用、交互性好,可有效缩短开发流程。Virtools除了有大量的BB可以使用外,还提供了脚本语言(Virtools Scripting Language,VSL),其语法和C++相似;还可以通过软件开发工具包(Software Development Kit,SDK)编写BB模块扩展Virtools的功能。
Multisim:是美国国家仪器公司(National Instruments)推出的电路仿真软件,适用于元件级的模拟/数字电路仿真。在其新版本中提供了Automation API,允许第三方应用程序调用它的仿真引擎[4]。本文使用的是其最新版Multisim 12。
DLL:动态链接库,是微软公司在Windows中实现共享函数库的一种方式,是程序模块化的重要方法,也为程序的复用提供了可能,同一个动态链接库可以被不同的进程加载。采用动态链接库后,同样的代码只需要有一份就可以,每个需要使用这些功能的程序都使用同一份代码。将不同程序都可能使用的一系列函数和数据放置在DLL中,可以大大减小应用程序的体积(多个程序共用一个模块),使程序更易于升级和维护(如果程序需要更新,则只需要修改一个模块,不需要修改所有的程序)[5]。
COM:组件对象模型,这是微软为了实现软件组件之间的通信以及开发可重用的软件组件而提出的一种技术。COM要求软件组件必须遵照一个共同的接口,该接口与实现无关,因此可以隐藏实现的内容,并且被其他组件在不知道其内部实现的情形下正确地使用[6]。Multisim就是利用了该技术,既隐藏了电路仿真的实现细节又开放了电路仿真的功能接口,供其他程序调用。
图1中,Multisim 12通过COM技术将其仿真引擎接口开放出来,但是Virtools并不能直接调用,因此首先编写一个可以调用Multisim的DLL,然后再利用Virtools的SDK开发一个BB,该BB通过DLL间接地调用Multisim仿真引擎。
2 调用Multisim API的DLL的设计
Multisim的COM组件是采用Visual Basic实现的,而Virtools的BB模块必须用C++语言来开发,因此首先需要研究用C++语言调用Multisim仿真引擎的方法。然后将调用程序发布成DLL的形式,供Virtools使用,实现代码的重用性。需要说明的是,在Visual Studio中新建工程时要选择MFC DLL项目,并勾选“自动化”选项,否则无法正常使用Multisim API中的功能。因为Multisim 12在安装时会在操作系统的类库中注册,所以可以在添加类向导中通过添加TypeLib中的MFC类,选择NI Circuit Design Suite Multisim 12.0,即可添加API提供的类。Multisim API提供了两个类:CMultisimApp和CMultisimCircuit。CMultisimApp类主要用于在后台启动Multisim实例并与之建立连接,其中包含了Connect、Disconnect、OpenFile等方法,这三个方法主要用于连接、断开与Multisim的连接和载入要仿真的电路文件;CMultisimCircuit类主要用于对载入的电路进行仿真,包含了40个相关的方法,重要的有:EnumInputs,EnumOutputs,SetOutputRequest,RunSimulation,get_OutputReady和GetOutputData等,它们的主要功能如表1所示。
Multisim中的输入指的是各种信号源和电源,既可以是电路中预先设置好的源,也可以在仿真开始前指定和替换,这为将电路作为子系统接入装备中提供了可能。输出是指利用Static Probe(静态探针,Multisim中的一种元件)标记的电路节点,可以获取该节点处的电压和电流等信号。在仿真之前,首先要根据装备的实际在Multisim中绘制电路图,放置输入源并用Static Probe标记要测试的节点以备仿真时使用。通过Multisim API在后台仿真电路的基本流程如图2所示。
在DLL程序中首先初始化COM接口,然后实例化CMultisimApp和CMultisimCircuit对象,利用Connect方法在后台启动Multisim进程,再用OpenFile方法载入要仿真的电路文件。用EnumInputs和EnumOutputs方法获取电路中可用的输入源和输出节点名。用SetOutputRequest方法设置仿真条件,主要包括仿真计算的插值方法、仿真采样率(sampleRate)和总的样点数(numSamples)。Multisim中仿真的插值方法有5种,会对仿真步长产生影响,如表2所示。
一般情况下,采用SimulationInterpolationForceStep插值方法,即定步长,这样可以使仿真引擎严格按照SetOutputRequest中设置的采样率进行仿真,并保证仿真数据是等间隔的。
仿真条件设置好后,即可利用RunSimulation对电路进行仿真,这里需要设定仿真的时长(time),一般取:
undefined
这是因为仿真时间必须足够长以填满一个输出数据块,即达到SetOutputRequest中设置的仿真总点数(numSamples),否则会发生“没有找到输出”这样的错误。所以,实际仿真时,时间必须大于等于式(1)中的time。仿真结束后即可利用GetOutputData方法得到指定输出节点的仿真数据,该数据用于驱动虚拟训练系统中的测量仪器。
3 Virtools BB的设计
如前所述,用C++语言直接调用Multisim API不是很方便,为了实现代码的重用性和易用性,将访问Multisim API的功能封装在一个DLL里,这时即可利用Virtools提供的SDK开发BB模块,通过调用DLL间接访问Multisim API。本文采用DLL的动态调用方法,即只需DLL文件而不需要相应的*.lib和*.h文件。动态调用DLL的一般方法如下:
(1) 定义一个指向DLL中导出函数的指针类型;
(2) 定义与DLL关联的句柄;
(3) 用LoadLibrary函数加载DLL文件,并赋给(2)中定义的句柄;
(4) 用GetProcAddress函数获取DLL中函数的指针并赋给(1)中定义的函数指针;
(5) 通过函数指针调用DLL中的函数;
(6) 用FreeLibrary函数释放DLL;
利用同样的步骤,在BB模块源程序中编辑相应的代码即可,程序流程与图2一致。然而,与Multisim建立连接这一步非常消耗时间,在一台CPU为酷睿双核2.5 GHz,内存为4 GB,硬盘在7 200 r/min的计算机上耗时17 s,这显然不符合虚拟训练的实时性要求,而仿真电路所需的时间非常短,可以忽略不计。尽管可以靠升级硬件来提升性能,但那样成本太高,因此,必须从软件结构上着手。考虑到虚拟训练系统在启动时需要初始化,这段时间是不需要操作的,因而可以在初始化时就在后台启动Multisim并连接,当测量仪器测量到装备相应的测试点时再选择相应的电路并实时地运行仿真。这可以通过Virtools的BehaviorCallback Function(行为回调函数)来实现,即当CKM_BEHAVIORRESUME(表示Virtools项目开始运行)事件发生时就建立与Multisim的连接,待虚拟测量时再激活该BB模块。开发出的BB模块如图3所示,它有2个输入参数,分别是电路文件的路径和测试的节点名称(或编号)。当单击Virtools的运行按钮后,该BB会加载DLL并调用Connect方法在后台启动Multisim进程,然后开始等待。当操作人员用测量仪器测试电路时,BB根据电路文件路径调用DLL中的OpenFile方法载入相应的文件,并对电路进行仿真,然后根据节点名(或编号)获取指定测试点处的信号数据。当系统运行结束时,BB调用Disconnect方法关闭后台的Multisim进程并释放DLL。
4 虚拟训练系统中的应用
本文研究电路的后台仿真主要是为了解决虚拟训练系统中电子装备的信号生成问题(包括正常时的信号和故障时的信号),不仅可以使受训人员掌握装备正常时的工作特性,也能训练其检查故障和排除故障的能力,在全任务模拟训练器中有很高的应用价值。
以某型装备为例,其电子系统中包含一个运算放大器电路,其输入/输出电压的关系为:
undefined
当Rf=Ri=1 kΩ时可以将输入信号的幅值放大2倍。首先在Multisim中对其建模,保留输入输出接口(见图4),然后存储为文件以备使用。
虚拟测量训练系统的运行(操作)流程如图5所示。
此处的初始化即指在后台启动Multisim并连接。当表笔接触虚拟装备上的测试点后,系统根据接触点的位置判断当前测试的电路及测试点,Multisim在后台载入该电路文件并对其仿真,得到输出数据进而驱动测量仪器。在图6中,(a)表示当表笔接触电路的输入端时,示波器上显示1 V的信号,(b)表示当表笔接触电路的输出端时,示波器上显示2 V信号。
5 结 语
为了获取虚拟训练系统中虚拟装备电路上任意节点的信号,本文重点研究了电子装备的机理建模及后台仿真方法。首先在Multisim中对电路进行元件级的建模;然后,用C++语言开发了一个DLL和一个BB模块。该DLL用来访问Multisim API提供的仿真引擎,BB模块通过DLL间接调用仿真引擎,于是便实现了虚拟训练界面在前台运行,装备机理模型在后台仿真,仿真结果实时驱动测量仪器,使其显示测试点的信号。经过应用实践,本方法能够达到很好的训练效果。
参考文献
[1]张天辉.雷达装备虚拟维修训练系统体系结构研究与设计[D].石家庄:军械工程学院,2005.
[2]朱元昌,邸彦强,全厚德,等.通用雷达装备模拟训练系统及其关键技术研究[J].系统仿真学报,2005,17(11):2633-2637.
[3]韩路杰.基于电路仿真的装备虚拟维修技术研究[D].石家庄:军械工程学院,2009.
[4]NI.NI multisim[EB/OL].[2012-07-05].http://www.ni.com/multisim/zhs.
[5]范文庆,周彬彬,安靖.精通Windows API[M].北京:人民邮电出版社,2009.
手术虚拟仿真系统 第10篇
虚拟加工过程仿真是虚拟制造的底层关键技术,包括几何仿真和物理仿真两部分。几何仿真是数控加工过程仿真的前提,通过刀具扫略体和工件模型连续的布尔运算可得切屑的去除加工过程仿真,它也提供了物理仿真评估切削力和加工误差所需的主要参数。物理仿真主要是力学仿真,它是虚拟数控加工过程仿真的核心部分,其内涵就是综合考虑实际切削中的各种因素,建立与实际切削拟合程度高的数学模型,从真正意义上实现虚拟加工与实际加工的“无缝连接”。通过物理仿真与几何仿真的集成,在进行数控加工过程几何仿真的同时,显示和预测加工过程中物理量的变化,可以节省数控程序的调试时间,减少数控加工的试切费用,提高机床的安全性,预测工件的加工质量和机床的加工效率。
2 仿真系统的构成
本系统以UG软件为平台,以UG/ISV模块为基础,利用UG二次开发技术,扩充软件功能,通过考虑切削过程的各个物理因素,通过建立各个物理模型,然后利用遗传算法优化得出优化的切削参数并优化NC程序,从而缩短准备时间,降低操作难度,优化铣削结果,构建具有实用意义的虚拟数控铣削几何及物理仿真系统。系统主要由几何仿真模块和物理仿真模块两部分组成。其中,几何仿真模块主要利用ISV模块完成虚拟模型建立,刀轨建立以及干涉校验实现数控机床虚拟加工仿真;物理仿真模块主要通过建立影响加工的各物理模型,进行铣削参数优化,然后通过UG二次开发技术把物理仿真模块无缝集成与UG软件内,操作人员只需通过UG平台就可以实现几何及物理仿真。虚拟数控铣削系统总体结构如图1所示:
3 系统的实现
3.1 几何仿真模块的实现
几何仿真模块主要包括标准件库的建立,虚拟机床运动模型的建立,虚拟加工仿真校验模块三个部分。通过几何仿真模块可以描述刀具的真实运动轨迹,完成碰撞、干涉检验等功能。
3.1.1 虚拟机床运动模型的建立
在建立机床虚拟装配模型的基础上,定义装配模型中各移动部件间相互运动关系(即机床运动模型),指定机床各轴(如直线轴和旋转轴)的移动方向,行程及运动范围等。利用机床构建器(Machine Tool Builder)模块机床运动模型进行定义。运动模型是用来描述机床运动的,定义运动模型后,机床各组件的运动方式得以确定。
3.1.2 虚拟加工仿真
在完成机床加工工艺系统环境模型后,即可进入UG/ISV模块进行加工仿真。依据工艺文件各工序内容安排,合理选择加工对象,设定相关参数,生成刀轨。而后切换到程序视图,进入操作导航器,选择刀轨名称及模拟方式即可进行加工仿真,仿真过程如图2所示。
3.2 物理仿真模块的实现
物理仿真通过几何仿真预先获得加工过程中一些几何加工参数和物理过程变化量,并以此为依据建立综合目标优化模型,
在约束限定范围内通过遗传算法得出的最优加工参数,然后利用UG二次开发技术把物理仿真模块无缝集成与UG软件内。
3.2.1 铣削加工特征段的定义
在一个铣削加工中,切削深度、切削宽度、切削速度和每齿进给量从几何信息的角度对走刀步内的特征进行了描述,走刀步中产生的铣削力、产生的加工误差则构成了走刀步的物理信息。因此,将数控铣削加工过程中所包含有几何信息和物理信息的走刀步定义为铣削加工特征段,经这样构造的加工特征段既包括了数控铣削加工物理仿真关键技术研究,优化加工参数信息又包括了优化目标约束信息。
通过数控铣削加工仿真系统中的几何仿真模块进行仿真,获得每一加工特征段对应的铣削深度和铣削宽度,以每次走刀步作为一个度量单位,获得刀步数和铣削深度与铣削宽度对应的关系曲线,在铣削宽度的最大和最小值之间划分宽度区间,在铣削深度的最大和最小值之间划分深度区间,寻找同一刀步对应的宽度区间和深度区间,组合相同的宽度区间和深度区间中的刀步数,构成一个铣削加工特征组合段如图3所示。
3.2.2 综合目标优化模型的建立
在数控加工中,铣削速度V和每齿进给量fz对加工过程影响显著,本文以V及fz为变量,以效率和成本为目标进行优化。
1.效率目标函数铣削加工中生产零件的时间由铣削时间,换刀时间和辅助时间组成若在工序中使用相同的设计参数,则单一刀具铣削操作中生产以个零件的时间可表达为:
其中:TS为设备准备时间;Tm为铣削时间;Tc为换刀时间;Tt为刀具寿命
由经验得:
其中:V为铣削速度;L为铣削长度;D为有效铣削直;Z为铣刀齿数
所以总的加工时间为:
2.加工成本若在工序中使用相同的参数单个零件加工成本可用下面公式表示:
其中:Ct刀具成本C1单位时间劳动力成本及其余的开支
3.综合优化目标函数由于实际加工情况复杂多变,为了能使在加工成本与加工时间综合条件下寻求加工资源的最佳组合和合理配置,建立一个综合的优化模型采用多目标线性加权求合法,综合函数如下式:
由于各个铣削加工特征组合段的设计参数铣削速度v和每齿进给量fz之间相互独立,又因为铣削加工特征组合段对应的铣削条件组合之间也相互独立,所以综合目标函数转化为:
3.3 几何及物理仿真模块的集成
首先基于UG平台,建立虚拟加工实验装配模型(包括机床、夹具、工件),确保虚拟加工与实际加工的一致性,完成几何仿真模型;然后利用利用UG二次开发技术以及VC++6.0实现物理仿真在UG软件上的集成。
通过UG/OPEN Menu Scrip以脚本的形式实现对UG主界面菜单的加载和修改。物理仿真模块在UG主菜单界面加载下拉式菜单的脚本文件如下:
物理仿真模块集成到UG软件后如图4所示。
完成几何及物理仿真模块的集成后,对实验模型进行干涉检查,确认刀具与夹具和工件都没有干涉后,便可进行虚拟加工。
通过虚拟加工,对生成的NC代码分析得出加工特征组合段曲线,然后在UG平台上进入物理仿真模块,选择参数优化方式并输入相关参数即可实现物理仿真,相关实现界面如图5及图6所示.
利用优化后的加工参数,通过几何仿真获得优化的NC系统,再把改程序应用到仿真系统,使得铣削加工特征组合段内每一个刀步的切削参数得到优化,在保证加工质量的前提下,减少了加工时间和成本,实现了几何及物理仿真模型真实意义上的集成。
4 结束语
本文以虚拟数控铣削仿真为研究重点,建立了虚拟铣削加工环境模型,通过优化切削参数,提高生产效率为主要目的,构建了基于UG的数控加工几何及物理仿真系统。本系统的应用减少生产准备时间,通过选择最优加工参数,保证了综合效益最大化。
参考文献
[1]刘冀伟,杨者青.数控车削加工仿真系统结构研究,航天制造技术,2005,2:79-81.
[2]费广正,乔林.VC++6.0高级编程技术OpenGL篇,中国铁道出版社2000.
手术虚拟仿真系统 第11篇
在计算机技术快速发展的今天,三维交互仿真技术已经渗透到各行各业,特别在军事上的应用更显出其优势,如虚拟作战系统、模拟飞行系统等。随着仿真技术的发展,在民用工业的应用也越来越多,如汽车测试仿真系统、基于Web的产品展示系统等。
现有的民用仿真系统中,主要集中在对场景或者过程的仿真模拟,而较少考虑真实场景的频繁变动以及用户的交互需求。而且随着网络通信技术和仿真技术的发展,基于网络的仿真是一个适应新的发展趋势的研究领域。
正是通过基于Web的实时仿真,并采用仿真和虚拟现实相结合,实现用户和场景的交互。根据真实场景的具体情况设计数据库,将仿真和交互中需要使用的场景数据存储到数据库中,并通过管理软件实时地将场景信息的变化更新到数据库中,从而得到了反映实时场景状态的数据源。客户端通过网络访问场景时,系统实时生成仿真场景。场景生成后,用户可以在场景中漫游并进行交互操作,当用户点击模型时,则通过Web将数据库中保存的关于该模型的状态属性等信息返回到虚拟场景中,提供给用户浏览。由于数据库中的信息是实时的场景信息,所以,基于该数据库生成的场景以及返回给用户的场景信息都是实时的。设计中需要研究数据库的设计、仿真场景的生成、交互性设计等关键技术。
1系统结构
结合某IDC机房来设计该系统,仿真建模采用VRML语言,Web应用采用JSP技术。通过VRML和JSP的交互通信为场景提供交互功能。该机房为一个放置各种网络设备的服务器机房。房间中放置着配线架、服务器机架、电源柜等机架资源,某些机架上还放置着服务器,交换机,配线器,理线器等网络设备。
系统结构如图1所示。场景信息实时更新程序将真实场景数据实时更新到数据库中,当用户通过网络访问场景时,JSP控制程序根据数据库中的场景信息生成仿真场景,并返回给用户。在生成场景过程中,向模型的自定义域中添加数据库中读取的实时数据,并将场景文件和JSP文件相关联,实现VRML和JSP的交互通信。当用户点击场景的设备时,JSP程序根据场景中的交互信息从数据库中读取设备的相关信息,并返回给用户。
2场景数据库
在本文所设计的实时仿真系统中,数据库起到了纽带的作用,真实场景的信息存储在数据库中,并通过一个管理程序将场景的变化更新进数据库中,从而为仿真提供了实时的数据源。场景的主要单元为服务器机房,其中主要包括机架及机架上的网络设备等。
数据库需要为仿真设计提供的信息主要包括两大类:一类为场景中的物体的类型,如,服务器、交换机或者桌子等;另一类是物体在场景中的位置,如电源柜在机房的第一排,第二列。
为此,需要在数据库的模型的表格数据中加入以下一些域,表1为数据表格的一个示例(只是数据库中真实表格的一部分)。其中,type_ id为物体类型属性,如电脑、桌子等具有不同的type_id;subtype_id为物体子类型属性,如电脑类型下包括,台式机、笔记本等子类型;X、Y分别描述物体在二维平面的坐标,而maxlevel和minlevel则是网络设备在机架上占用空间的最大和最小的坐标值。表1中的信息是实时生成场景时用到的域,在用户交互中,用户关心的设备信息,如设备所属公司,交换机的端口连接和使用情况,设备的电源类型等,这些信息也都是存在于数据库中的,相关表格这里不详细列出。
为了方便仿真设计,还要设计相应的API函数,为其提供前述的两类信息。为不同类型的物体定义相应的类,类中提供的主要的API如下表所示。表2中的API分别对应于表1中的各个数据项的读取。
设计好模型信息后,需要为生成场景提供API,主要API如表3所示。
用户在交互中,通过数据库获得场景真实信息的API,如表4所示。其中,getSummary( )获得模型的摘要信息,getDetailIn-formation( )获得模型的详细信息。
3实时仿真
系统中的实时性主要是通过场景信息实时更新程序把场景中设备位置、状态等相关信息实时地更新到数据库中,建立仿真场景时,主要是通过前面所提到的API来读取数据库,达到实时性的要求。图2为实时场景的一个示例。
仿真场景的生成过程,主要是一个读取数据库,并对读取数据进行处理的一个过程。从数据库中读取的数据无法直接用来生成场景,必须先进行相应的转化,得到物体在虚拟场景中的坐标或相关参数,然后再根据算法生成场景。
读取到的物体的三维坐标分别要转化为虚拟场景中的坐标vrX,vrY,vrZ,设三维场景中的三维坐标单位为lX,lY,lZ,则转化公式如式(1)、(2)、(3)所示。其中,a,b,c为可选参数,最简单情况下,a,b,c全为0,如果考虑场景中存在障碍物,或者模型大小的变化等,则需要加入a,b,c已取得真实的布局效果。式(3)中的maxlevel和minlevel为设备在机架上所占空间的最高位置和最低位置坐标值。
vrX=(x+1)*(lX+a) (1)
vrY=(y+1)*(lY+b) (2)
vrZ=(maxlevel+minlevel)/2*(lZ+c) (3)
JSP控制程序提供生成实时场景的功能,在生成场景过程中,设备和机架是通过原型来生成的,在添加设备前,需要将原型的代码先写入场景文件中。在添加设备和机架时,需要使用设备或机架的ID信息和设备坐标信息。
机架上的设备坐标需要从数据库中读取设备在机架中的位置(getMaxLevel( )和getMinLevel( )),再计算出设备的Z轴坐标。计算设备的Z轴坐标时,lZ为一个基本的设备单位,需要根据不同设备的高度,设置公式(3)中的c值。
在确定了机架或设备在场景中的三维坐标后,就调用函数String Generate(int id,float x,float y,float z,String protoName)在场景中添加该机架,其中id即设备的唯一标识符,x、y、z为设备在场景中的三维坐标,protoName为设备原型名称。该函数在添加设备的同时,把id也写到设备原型的id域中。在交互通信时,可根据id在数据库的读取相关信息。
添加完机架和设备后,还要生成房间等外围场景。在读取数据库的过程中,保存getX( )和getY( )返回的最大数值,根据房间布局仿真出外围场景。
场景生成后,还需将其写入一个wrl文件,并将该文件和Applet在JSP进行关联,支持VRML和Java的通信。
4交互通信
Script节点是连接Java和VRML的桥梁,一个Java程序要想访问VRML场景中的节点,首先要访问Script节点。
外部创作接口(External Authoring Interface,EAI)的主要功能是增强VRML场景与外部环境通信联系和融合能力的一个高层次的Java类包,它使得一个外部程序使用VRML的事件可以访问和控制VRML场景中的节点。
要想在Applet中使用EAI访问VRML场景,要做的第一件事就是获取一个Browser的实例,它可以通过Browser类的get-Brower( )来实现。要对VRML场景中的节点进行控制,必须要先获得该节点在系统中的地址入口。只有用DEF结构命名的节点才能被外部EAI程序通过调用getNode( )取得地址入口。在inline文件中的节点是不能被获取的。
在取得一个被访问节点的引用之后,就可以向该节点发送入事件、读取该节点的出事件以及监听该节点的出事件。Vrml.external.Node类中提供了getEventIn(String name)方法来获取所访问的节点的入事件;getEventOut(String name)方法获取所访问节点的出事件的引用。
系统在动态添加设备时,调用写入函数Generate( ),将设备的ID信息写入了设备原型的域中,从而在交互通信时,可以唯一确定一个设备。当用户点击设备时,设备接受了click信息,并通过出事件通知Applet程序进行相关处理,Applet首先获取设备的ID信息,并根据此ID通过API查询数据库,得到设备的摘要信息,并返回VRML场景显示在信息面板(如图3所示)上,如果用户想了解进一步的详细信息,可以点击“Detail..”按钮向Applet发送事件,Applet会接收该信息,并读取设备的详细信息,详细信息显示在弹出的IE窗口中。点击面板上的红色球体可关闭面板。
5结论
就基于Web的仿真系统的设计进行了研究探讨,对数据库设计、实时仿真及交互通信进行了重点研究,并结合实例实现了系统。
随着计算机技术和仿真技术的发展,仿真支撑软件的功能日益完善,极大地提高了仿真系统开发的水平。虚拟现实的逼真性和实时交互性为系统仿真技术提供了有力的支撑。随着Web应用的深入发展,开发基于Web的实时虚拟仿真系统,将为用户提供更便利、更实用的研究和应用平台。
参考文献
[1]赛博科技工作室.VRML与Java编程技术.北京:人民邮电出版社,2002.
[2]陆昌辉.使用VRML与Java创建网络虚拟环境.北京:北京大学出版社.2003.
[3]何江华.计算机仿真导论.北京:科学出版社,2001.
[4]邱进冬,杨志雄,顾新建.基于Web的虚拟现实的开发与应用.计算机应用研究,2003,3:92-95.
[5]蔡海滨,杨岳湘,刘平.基于Web的虚拟化学化工实验室.计算机工程与设计,2003,12:110-112.
[6]何敏,吕崇德.虚拟现实建模语言在WEB仿真中的应用.系统仿真学报,2001,2:189-191.
手术虚拟仿真系统
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。