基于Web的热轧虚拟仿真实验平台设计
2018-10-15张杰李红斌吴正源石志伟张畅维
张杰,李红斌,吴正源,石志伟,张畅维
(武汉科技大学计算机科学与技术学院,武汉430065)
0 引言
钢铁工业是国民经济的基础产业。一般情况下想要很好地了解钢铁的生产工艺流程,需要去工厂实地参观,但是现场恶劣环境容易造成危险。
随着计算机技术的迅猛发展,计算机模拟技术普遍应用于制造业中,如何将计算机模拟实验运用于工程教学也受到广大学者的重视。目前虽然有一系列的教学实验平台去解决这方面的问题,但是基于虚拟现实的热轧生产流程互动平台还不多,并且其中大多是单机运行,需要额外安装整个软件,存在过程繁琐、交互操作较少等问题。
所以我们提出了利用基于Unity3D、3dsMax等软件实现钢铁行业中热轧过程的Web端虚拟仿真。本文针对热轧轧制现场,提出了一种基于计算机仿真技术的热轧模拟平台方案,实现了三维虚拟现实仿真,建立了融合计算机仿真技术的模拟培训系统,以解决传统仿真平带的局限性问题。通过网页远程直接浏览整个虚拟仿真工艺过程,不仅易于操作、具有良好的交互性,并且可以降低硬件投资,也不存在现场恶劣环境所带来的危险性,具有理论培训、实验教学等功能。
1 开发过程
1.1 开发工具
开发环境:Unity3D、3dsMax和Substance Painter
编程语言:C#
模型贴图制作工具:3dsMax、Substance Painter
Web端制作工具:Unity3D
1.2 3D模型及动画的构建
在3dsMax中利用多边形建模制作出热轧过程相关的机械模型。
热轧过程相关的机械模型在3dsMax中的仿真效果如图1所示。
使用3dsMax的动画系统,对需要运转的机器部件等物体进行了动画的制作:
(1)设置物体运动的关键帧,使物体具有基本的动画变换状态。
(2)调整动画曲线,使动画更加平滑稳定。
图1
图2
由于整个热轧过程比较长,所以采用了分段制作动画的方式,便于精确地调整每个工作段的动画关键帧。
最后在Substance Painter中制作出基于物理的渲染(Physically Based Rendering)的逼真材质。利用Sub⁃stance Painter可以在三维模型上直接绘制纹理的特点,解决了UV接缝造成的贴图不协调问题。
1.3 Unity3D中虚拟运行
将模型动画导入Unity3D并写入脚本,利用了关键帧提取和关键帧插值,使用四元数控制用户视角相机的移动使相机的平移旋转更加平滑,解决了视角生硬的问题,四元数q表示旋转运动可以等价绕轴向K旋转角度φ,旋转矩阵R与q的关系可以表示为:
QuaterlionLerp为插值函数,其中ω∈[0,1],代表了插值矢量t末端在弦q0-q1上的位置:
结合使用Occlusion Culling技术针对热轧场景进行渲染优化,通过调整 Smallest Occluder、Smallest Hole、Backface Threshold三项参数,减少了40%Draw call和30%GPUmemory占用后期使用Bake Global Il⁃lumination,烘焙出热轧场景的光照贴图以及环境光、环境反射,并通过C#脚本动态加载贴图信息,减少了渲染期间的光照开销,大幅度降低了CPU占用率。
图3
SH是定义在二维球面上的,一个定义在二维球面s上的函数可以用SH基函数以及系数近似表示,若用l和m表示SH的两个参数,f(s)表示定义在球面上的函数,ylm表示基函数,则f(s)在SH上的投影系数可以表示为:
f(s)则可以近似表示为:
考虑物体表面某一点x,其法线方向为n,则该点从ω0方向反射出的光P(x,ω0)可表示为:
热轧冷却部分的粒子效果由Shuriken Particle Sys⁃tem实现,通过控制粒子发射周期、预热系统、噪音等属性控制画面效果。
在导出到Web端之前使用Post Processing Stack调整整体画面的质量,加入了AmbientOcclusion、User Lut、Vignette、ColorGrading 等效果。
Unity3D自带的Mono VM在各个平台移植、维护非常耗时,有时甚至不可能完成。Mono的跨平台是通过Mono VM实现的,有多少平台,就要实现多少个VM,Mono VM肯定是不能满足需求的。所以针对不同的新平台需要使用IL2CPP,同时解决VM里面的bug,耗时耗力。例如WebGL这种基于浏览器的平台。要WebGL支持Mono VM几乎是不可能的,必须利用IL2CPP技术实现热轧虚拟仿真的跨平台。
网页中包含了 JavaScript、HTML5,Three.js是其中的核心组件,WebGL接口多且复杂,在浏览器中直接调用硬件加速进行图形渲染,创建三维场景非常繁琐。所以,通过IL2CPP可以避开这些问题。
图4
2 系统测试
2.1 测试系统实现细节
图5中有对流水线各个部位的展示和介绍,并且还有教学测试系统,通过使用教学测试系统,可以对用户知识进行检测,在测试的最后会给出用户答案和参考答案的详细信息,整个测试系统是基于Unity3D引擎进行开发的,通过C#语言对测试系统进行逻辑控制,导入3dsMax中制作好的流水线动画。另外通过对模型材质的动态替换实现物体加热效果。冷却装置用Unity3D中的Particle System更改参数实现。
图5
相机控制使用了Vextor3.Lerp插值计算空间位置,在使用过程中观察场景更方便。
Lerp插值函数基本原理:
通过在Update函数中每帧进行摄像机位置到目标位置的Lerp插值,可以起到摄像机平滑衰减速度逐渐到达目标位置的效果。
摄像机当前位置与目标位置的距离表达式为:
其中targetPos代表目标位置,cameraPosn代表摄像机当前位置,distance0代表摄像机初始位置与目标位置的距离,f代表插值系数,n代表插值次数。
图6
通过调整Camera远剪裁面,一定程度上减少了Overdraw。
2.2 核心代码控制流程
动画系统、相机控制的部分核心代码流程:
在Update函数中逐帧调用代码段,通过动画播放时间控制提问过程是否执行,并且设置两个计时器,分别控制平台运行时间和测试时间,并计入最终报告。
流程图如图7所示:
图7
相机上层代码实现:通过四元数插值计算出下一帧的相机位置及角度,平滑过渡,并且加入了运动模糊Motion blur。
3 结语
本文利用相关软件实现了热轧虚拟仿真实验平台的研究与开发,在Web端进行仿真交互、学习。结果表明,Web端仿真在一定程度上解决了传统虚拟仿真平台安装过程繁琐的弊端,能够做到在线学习。充分发挥了虚拟仿真的优势:既能引导学生自主学习和增强学生的参与感,又能与线上教学系统相结合。在一定程度上解决了学生只停留在书本知识,无法参与真实实验获得更多细节观察机会的问题。使人们享受到信息化以及计算机模拟技术给教育带来的时代红利。