智能仿真虚拟实验室中的产品展示技术及实现*
2023-04-14林海
林海
(湛江幼儿师范专科学校,广东 湛江 524084)
1 研究背景
随着虚拟现实技术的不断进步,特别是线上经济和MOOC 教育等领域的规模不断扩大,推动了数字化虚拟产品展示技术的发展。产品展示从传统静态展示转向三维呈现、从被动观看转向人机交互体验、从现实空间扩展到虚拟三维空间,将产品的更多细节信息传达给消费者。
许多研究人员围绕虚拟现实技术在产品展示方面开展具体研究[1],例如:基于视觉传达的虚拟产品展示系统[2]在呈现展示效果要求较高的艺术品时,利用图像处理优化技术中的图像增强对通用系统的产品显示模块进行优化,尤其是在产品细节表现程度上,其展示效果提升了13.9%,体现出该系统良好的细节表现能力。数字化博物馆虚拟展示系统[3]采用手势识别方法完成人机交互系统研究。AR 商品展示系统[4]结合区块链技术,将展示的商品虚拟模型与实体商品信息相结合,为消费者电子购物时提供一种单一化的真实商品购物体验环境。
本文以计算机维护维修智能虚拟实验室为例,设计出了基于Away3D 的交互式虚拟产品展示系统Avpdss3D,对CPU、内存、硬盘等比较微小的、不容易观察的电脑配件进行虚拟产品展示。强化了光线的BRDF 双向反射分布效果,让模型的展示显得更加的真实,构建出与实物非常相近的虚拟产品,人机交互便捷,只需要通过鼠标控制,就可以对微小物品实现产品的放大、旋转等功能;通过Flash 的发布系统,可以在Web 端发布与MOOC 相关的虚拟实验室内容。
2 相关工作
2.1 Away3D 引擎
Away3D 是一款开源的、高效的、高速的、功能丰富的3D 引擎[5],由Away3D 创建的三维虚拟世界中包含了view、scene、camera 和三维模型4 部分,该引擎提供了GPU 加速功能,保持了稳定的60 fps 性能;支持常用的Skeleton animation、Vertex animation、Particle animation、Path animation 和Particle System,为设计者提供很好的想像和创意空间。
2.2 Away3D 技术应用分析
随着电子商务和物联网的迅速发展,电商平台及在线放开MOOC 教育等行业对Web 端产品的虚拟三维展示需求日趋强烈。其中,基于Flash 3D 的在线商品展示方法[6],使用Away3D 引擎通过一个应用实例技术说明了该技术的有效性、可行性以及其在在线商品展示上的优势;校园三维模型在Web 中显示的关键技术[7],介绍了利用3D max 进行校园三维建模的流程,并借助于开源的Away3D 引擎实现校园三维模型在Web 中的显示;基于Web 的三维虚拟装配系统[8],利用Flex 中Stage3D API 技术,提出了一种基于Away3D的Web 三维虚拟装配软件系统的方案,客户端无需安装任何软件,就能观看装配过程中各个零件的安装情况,服务器端可以统一更新装配方案,方便软件升级和维护。
以上的基于Web 端的Away3D 的虚拟产品展示系统,还存在着人机交互不方便、模型不够真实、显示效果差、还不能够充分展示产品具体细节等问题,本文的研究将对以上的问题进行优化。
3 技术框架与方法
本文使用Flash CS6.0+Away3D 4.1.6 为开发平台,设计出了虚拟产品展示软件系统Avpdss3D。系统工作主要流程如图1 所示,接下来,以计算机维护维修的智能虚拟实验室为例,对Avpdss3D 的系统虚拟产品展示进行详细描述。
3.1 Avpdss3D 系统的虚拟三维世界构建
计算机维护维修智能虚拟实验室中的Avpdss3D产品展示系统,首先使用3DMAX 设计制作出CPU、内存、电源等产品的三维模型,然后给模型贴图,输出的模型格式为3DS 的文件格式。采用View3D 类创建视口,使用Loader3D 类导入三维模型,接着,使用Vector3D 类设置模型的三维坐标位置,使用URLReques 对象指定3D 模型文件的相对路径,最后对模型在场景中的尺寸进行缩放。以CPU 三维模型为例,关键代码如下:
_loader.load(new URLRequest("cpu.3ds"));
_loader.scaleX=_loader.scaleY=_loader.scaleZ=8;
刚导入虚拟三维世界的模型是不可见的,还需要通过Camera3D 类来创建view 摄像机,并设置view 摄像机的坐标和HoverController 观察视角,该视角的特点是提供针对的观察视点,并限制相机距离不会透视过观察视点,最后通过addChild 函数把view 摄像机加入到虚拟三维世界中,关键代码如下:
view.camera.z=-50;
view.camera.y=-5;
firstController =new HoverController(camera ,mesh,0,0,1000,-90,90,NaN,NaN,8,1);
设置好摄像机后,在虚拟三维世界中还是一片漆黑,需要加入使用PointLight 类创建的点光源,通过ambient 属性定义环境光的大小。除此之外还需要加入使用DirectionalLight 类创建的平行投射光源,通过创建SpecularBRDF 函数,实现光线的双向反射分布效果。在现实中,我们看到产品表面上的点是由许多微光学表面组成,这些表面朝向各不相同,当平行投影光源的入射光照射到产品表面时,光会被微光学表面反射到各个方向,不同方向的反射比例不一样。当光线从l方向照射到某一点时,微光学表面会将光线反射到相对于法线对称的v方向,于是就可以在v方向看到该点,如图2 所示。
图2 微表面理论
用f来表示特定方向的反射光和入射光的关系比例(即BRDF),定义如下:
式(1)中:l是入射光方向;v是观察方向。
组成表面所有微光学表面的法线分布概率使用法线分布函数D(h)来表示,入射光线和反射光线的衰减率通过几何衰减因子[9]G(l,v)来建模,反射比例符合菲涅尔方程[10]F(l,h)。通过上述3 个函数,可以建立高光BRDF 模型的核心算法,公式如下:
式(2)中:h为微表面法线;n为宏观表面法线。
由于该公式过于复杂,会增加系统的计算成本,在Away3D 中使用Fresnel 公式来优化模型,计算出光线的偏振和非偏振值,完整的Fresnel 公式如下:
在式(3)中,c=v(l+h)/(||l+h||),g=sqrt(n2+c2-1)(l+h)/(||l+h||)。向量l加上向量h除以l加h的模为半角向量,为了进一步减少系统的计算成本,使用Schlick 近似Fresnel 项,近似后的Fresnel 项公式如下:
SpecularBRDF 函数的关键参数代码如下:
SpecularBRDF(float NdotV,float NdotL,float NdotH,float LdotH,float VdotH,vec3 F0,float roughness)
3.2 Avpdss3D 系统的交互事件处理机制
完成了模型在三维世界的构建后,还需要建立起交互机制与观众产生互动,首先是模型的自旋转展示,在ENTER_FRAME 事件中,Avpdss3D 系统通过改变模型的rotationY 属性,实现模型以Y轴为中心自旋转。主要代码如下:
_loader.rotationY+=1;
在MOUSE_CLICK 事件中,Avpdss3D 系统将检测用户的鼠标点击的情况,当鼠标点击后,系统将获取鼠标当前的坐标,并停止模型的转动。在MOUSE_DOWN 事件中,Avpdss3D 系统将检测用户鼠标按下的情况,当鼠标按下后,系统先停止模型旋转,然后控制摄像机跟随鼠标的移动方向,改变摄像机以Y轴旋转的角度属性panAngle 的值和以X轴旋转的角度属性tiltAngle 的值,主要代码如下:
firstController.panAngle = 0.3*(stage.mouseX -mouseXAxis)+mX;
firstController.tiltAngle = 0.3*(stage.mouseY -mouseYAxis)+mY;
在MouseEvent.MOUSE_WHEEL 事件中,Avpdss3D系统将检测用户滚动鼠标滚轮的情况,当鼠标滚轮前后滚动时,系统通过改变摄像机的distance 属性来设置相机距离观察点的距离,以达到放大或缩小模型的作用,设置distance 大于0 可以避免透过物体,主要代码如下:
firstController.distance-=10*(e.delta);
设置好以上的交互事件处理机制后,用户就可以通过鼠标来灵活地控制模型的旋转和放大,能更好观察产品的细节。最后,还要将Avpdss3D 系统发布到Web 端,使用Flash6.0 的发布功能,启用HTML 包装器,可以生成Web 端的放映文件,上传云端服务器后,就可以使用Web 浏览器,来观看Avpdss3D 系统的虚拟产品展示。
4 实验与效果
首先使用3DMAX 给CPU、内存、硬盘、电源等产品建模,贴图,并导出。然后在Flash 中加载Away3D三维引擎库,创建3D 视口,导入已经生成的模型文件,然后再为视口添加view 摄像机和设置BRDF 光线效果,完成以上Away3D 虚拟三维世界的构建后,CPU、内存、硬盘、电源等模型在三维世界中的质感表现如图3、4 所示。从图3 和图4 中可以看到,虚拟后的产品模型高光、漫反射和纹理的质感效果真实,硬盘表面和CPU、内存的金属质感强烈。电源外壳和圆形防尘网的2 种金属质感对比也很明显。
图3 CPU、内存等在三维世界中的质感表现
然后加入4 类交互事件处理,分别为:ENTER_FRAME 事件、Mouse.CLICK、Mouse.DOWN事件、Mouse.WHEEL 事件。完成后,Web 端人机交互展示如图4 所示。从图4 中可以观察到,处于初始状态的CPU 模型,以自旋转的方式来展示产品的全方位外观。当用户向后滚动鼠标滚轮时,模型变小,向前滚动滚轮时模型变大,并可以通过拖动鼠标的方式来控制摄像机的角度,从而实现360°的全面观察产品的细节。
图4 Avpdss3D 人机交互系统演示
5 结论
本文以计算机维护维修智能虚拟实验室为例,设计出了基于Away3D 的交互式虚拟产品展示系统Avpdss3D,通过微表面理论来实现虚拟模型的BRDF光线的双向反射分布效果,让模型材质和光线反射等效果更加真实。该系统Web 端的发布简单,人机交互方面更智能化、便捷化只需要一个鼠标就可以控制模型的放大、缩小和旋转到不同的角度,从而实现对产品细节的全面观察。