虚拟商城漫游系统设计模式及应用

2016-05-14 00:24李辉
现代电子技术 2016年8期
关键词:商城漫游鼠标

李辉

摘 要: 对虚拟商城漫游系统设计模式与流程进行分析,以3DS MAX和Virtools为开发工具进行了系统开发与实现。根据漫游系统的特点和需求,采用了多边形建模技术、纹理贴图技术和烘焙技术实现商城场景和模型细节制作。基于Virtools内嵌脚本语言和内置行为交互模块相结合的方式,实现了商城漫游、商品展示、碰撞检测等交互性能,有助于节约系统资源,提高系统开发效率,提升系统程序的复用性和可维护性,增强用户沉浸感、交互性、构想性。

关键词: 虚拟商城漫游系统; 3DS MAX软件; Virtools工具; 设计模式

中图分类号: TN911?34 文献标识码: A 文章编号: 1004?373X(2016)08?0045?03

Design mode of virtual mall roaming system and its application

LI Hui

(Department of Information Technology, Chengdu Agricultural College, Chengdu 611130, China)

Abstract: The design pattern and process of virtual mall roaming system are analyzed in this paper. The development and implementation of system are completed by 3DS MAX and Virtools. According to the characteristics and demand of roaming system, polygon modeling, texture mapping technology and baking technology are adopted to realize mall scenarios and model details. interactive performances of mall roaming, commodity exhibition and collision detection, were realized based on a combination of Virtools embedded scripting language (VSL) and built?in behavior (BB) interaction module. It is conductive to system resources saving, improvement ment of system development efficiency, reusability and maintainability of the system program, and enhancement of the user immersion and interaction.

Keywords: virtual mall roaming system; 3DS MAX software; Virtools tool; design mode

虚拟现实技术是一种集合多传感器技术、仿真技术、多媒体技术、人工智能技术等为一体的工具,借助计算机建立比较真实的虚拟环境,设置人机接口,确保用户与虚拟环境直接交互,用户感受更直观、立体的现实场景[1]。虚拟商城漫游系统能展现逼真的商城环境和商品信息,支持用户借助网络展开远程访问,在商城产品环境、对外宣传方面起着重要的作用。

1 设计虚拟商场漫游系统所用工具

1.1 3DS MAX软件

3DS MAX是基于PC系统开发出现的三维动画制作软件,该软件广泛应用于广告、动漫、建筑设计、游戏开发、教学等多个领域。相比较而言,我国采用3DS MAX软件设计建筑效果图、动画技术比较成熟,该软件具有扩展性能好、插件丰富、便于操作、功能强大等优点,成为设计、开发虚拟环境的必然选择。

1.2 Virtools软件

Virtools软件是包含多种功能的三维开发工具,可以把已有的档案格式进行整合,主要由开发、生成、发布三个模块相互组合完成。开发模块包含大量的应用程序、软件开发的工具包,其中主要的创作工具有Virtools Dev。在上述开发环境中,用户能够快速、准确地建立应用程序,并依据自身需求,对三维模型、图片、声音等对象展开各项操作[2]。

在Virtools开发模块中,用户能够快速、简便地创建应用程序,并依据自身的需要,生成模块主要有行为引擎、渲染引擎两个部分。行为引擎实现管理、处理对象、输入参数、设置属性等操作。发布模块主要包括EXE文件生成器、Web播放器,前者可将应用程序直接打包成为EXE文件,后者能够创建以B/S为基础的网络虚拟环境,如图1所示。Virtools软件具有强大、方便的交互、实时响应能力,但其自身不具备为三维实体建模或制作动画能力,因此,开发3D产品时,该软件必须与Maya,3DS MAX软件结合使用。

2 设计虚拟商场漫游系统的步骤

虚拟商场漫游系统设计主要流程如图2所示。

2.1 三维场景建模

对整个虚拟场景建设是进行商场漫游系统设计的基础,场景建模质量与系统运行效果、三维画面的逼真程度密切相关,必须对真实的商场场景布局进行研究、分析,确定设计的漫游系统所需的场景和范围[3]。采用3DS MAX软件中的点、线、面、体等工具,逐步构建虚拟场景的各个区域。对于必须精细建模的物体,必须采用精确的几何图形进行创建,如图3所示。

部分非重点对象在确保其视觉不失真的基础上,构建一系列简单的模型,尽量使用参数化办法进行构建。必须注意,构建对象时,尽量减少使用几何体分段数,复杂的几何对象可以采用纹理贴图进行代替,并将场景内部不可见的面展开删除操作。在图4中,场景中建设的盆栽,借助贴图方式替代传统建模形式,并将该虚拟场景内家具不可见面进行删除,基于不影响整体效果状态下,有效节省创建场景所用时间,提升场景的实时渲染效果和渲染速度。使用3DS MAX软件操作时,一般借助复制的方式增多相同物体数量。进行复制操作时,主要采用Copy(复制)、Reference(参考)、Instance(实例)三种复制方法。文中使用Instance对物体进行复制,如图3中的设计的床头柜,借助Instance形式对物体实施复制操作,所复制的物体可随原物体的改变而变化[4]。因此,根据一个物体就能合理控制所有复制物体,进而输出成为.nmo模式,编辑器自行把上述复制的物体包含原物体输出一个物体状态展开存储操作,能够缩减编译所用时间,缓解或解决存储文件过大、过小的问题。

创建好上述模型后,观看模型发现其逼真度较低。因此,在导入Virtools操作前,必须对创建的模型进行材质、贴图、烘焙等各项操作。材质具有模拟各种材料视觉效果的功能,贴图作为物体表面纹理,采用增设模型纹理、质地、色彩等操作,确保模型具有较强的真实感。在3DS MAX软件中,建立、编辑模型材质或贴图均借助材质编辑器(Meterial)进行操作。因Virtools Dev工具缺少双重材质导入功能,换句话来说,对多维、多面材质模型展开操作,实施烘焙后即可顺利将材料导入Virtools中。烘焙是指将模型场景内的光照等信息渲染形成一张贴图的方式,之后将烘焙完成的贴图重新贴到场景内的技术,上述操作可在实时3D应用系统中降低渲染器负担,提高操作的帧速率。常见的烘焙方式主要包括Complete Map,Lighting Map两种形式。本文使用Complete Map方式展开烘焙操作,该工具几乎支持3DS MAX多数材质,例如:复合材质、多维材质等,烘焙完成的图片光感效果极好。必须注意,想要获得最佳的烘焙效果,需合理设计烘焙尺寸,尽可能做大一些,否则比较模糊,效果不佳。若烘焙完成的物体曝光度过大,必须再次调整灯光倍增值、材质高光等各项参数。物品再次实施烘焙操作时,必须清除上一次物体烘焙结果,不然会出现烘焙贴图错误的情况。烘焙操作流程如下:将编辑器内自动出现的贴图坐标进行删除操作,如果在Render To Textures面板中对烘焙结果实施清除。合理设置再次烘焙各项参数,导出并存储相关数据信息[5]。

3 虚拟商城漫游系统实现效果

3.1 场景模型导入到Virtools

对模型或角色动画进行导出操作前,必须在3DS MAX软件中安装相应的3DS MAX Exporer.exe,同时对是否安装MAX2 Virtools.DLE文件加载项进行检测。对所创建的模型或角色动画进行数据转换,保存成Virtools Dev工具默认的.nmo格式文件。导入Virtools后,若发现导入的图片或模型显示黑色,需在材质设置选项中合理调整自发光参数,即能恢复正常的贴图效果[6]。

3.2 商城漫游场景的交互实现

基于Virtools的虚拟现实系统交互方式主要有内置的行为交互模块(Building Blocks,BB)和Virtools脚本语言(VSL)两种。BB方法操作简便,流程清晰,但模块及功能有限,容易出现参数繁琐,程序臃肿,复用性差等问题;VSL灵活自由,复用率高,有助于提高系统运行效率。本系统中较为常见、简单的交互,采用内置BB实现;对于繁杂场景下灵活多变,可重用性需求高的交互功能,采用VSL实现。

系统采用键盘控制角色动作,一旦用户触发相应按键,系统就会完成用户指令响应。为实现虚拟角色站在地面上,并避免其在行走过程中与墙壁等障碍物发生碰撞,通过Virtools内置BB实现。增设Character Controler至虚拟角色的Script内,对虚拟角色各项参数实施编辑。增加Prevent Collision,Object Slider至虚拟场景角色的Script,并对各项输入参数展开编辑。这时,应该对地面设置“Floor”属性,并对可能出现的碰撞物体赋予“Obstacles”属性[7]。

系统采用一个第一人称摄像机作为用户视角,为角色和摄像机创建Parent关系,摄像机跟随角色产生运动,通过键盘控制角色运动方向,通过鼠标动作控制漫游视角变化。虚拟角色漫游交互采用VSL实现,主要代码如下:

Void main( ){GUID inputguid=GetInputManagerGuid();

InputManager iM=InputManager.Cast(bc.GetManagerByGuid(inputguid);

Vector oldPos,newPos;

Vector SpeedW(0,0,-0.2), SpeedL(-0.2,0,0), SpeedY(0, -0.2,0), SpeedZ(0,0,-0.2)); //定义各个方向的转动速度

Float rotateAngle=0.02; //定义转动的角度系数

Vector2D MPin;

Vector MosPos;

iM.GetMouseRelativePosition(MosPos);

//获取鼠标实时位移向量MosPos

iM.GetMousePosition(MPin,false); //获取鼠标当前坐标

bool IsMosIn;

if(Mpin.x>=0&&Mpin.x<=800&& Mpin.y>=0&&Mpin.y<=600) IsMosIn=true;

else IsMosIn=false; //判定鼠标是否在窗口内

if(iM.IsMouseButtonDown(CK_MouseButton_Left)&& IsMosIn)

{Vector AxisY(0,1,0);

floatRotateAngleX=MosPos.x*(-0.005);

floatRotateAngleY=MosPos.y*(-0.005);

Man.rotate(AxisY,RotateAngleX); //Man为VSL模块的输入

参数,类型为Character,控制人物在左右方向上移动

VectorAxis;

MyCamera.GetOrientation(Null, Null,Axis, Null);

MyCamera.Rotate(Axis, -rotateAngleY);

//MyCamera为VSL模块输入参数,类型为Camera。控制摄像

机在上下方向上转动

}

//当鼠标在窗口内,且按下鼠标左键时,控制视角方向变动

If(iM.isKeyDown(CKKEY_W)) Man.Translate(SpeedW, Man); //当按下W键,人物向前移动

…… //其他方向移动,同理 }}

3.3 虚拟商品模型三维交互展示实现

商品模型三维展示交互效果包括模型移动、旋转、缩放等。例如:用户进行商品观摩时,可通过鼠标按键对模型进行旋转观看,有助于全方位、多角度了解商品外观和特点。模型角度旋转操作使用基于VSL开发的自定义BB“MouseRotate”和“While”循环,可实现用鼠标按一定轴向(“1”为y轴)和单位角度来旋转模型。

inputManager iM =InputManager.Cast(bc.GetManagerByGuid(GetInputManagerGuid()));

RenderContext rc=bc.GetPlayerRenderContext();

IntersectionDesc desc;

rcx.Pick(x,y,desc);

//根据鼠标的位移来旋转模型,x和y是鼠标的位置坐标

ent=desc.Object; //当鼠标左键点选模型,先将“ent”初始

化为模型的位移

iM.GetMouseRelativePosition(speed);

speed.x*=RSpeed; //RSpeed为单位旋转角度

float delta=bc.GetDeltaTime()/1000;

If(axis==1){ ent.Rotate(1,0,0,0,ent);

//以y轴为旋转轴方向,对模型进行旋转

ent.Rotate(0,1,0,speed.x*delta,ent);

ent.Rotate(0,0,1,0,ent); }

3.4 虚拟商场中自动开关门的实现

采用虚拟场景行为模块内的Proximity判定创设角色与商城门两者间的距离,如果虚拟对象和门之间距离比设置阈值小,自动执行“开门”操作。如果两者距离明显大于所设定阈值,实施“关门”操作。采用“Rotate”对门旋转状态进行控制,如图5所示。

系统以VMO文件格式保存,发布成HTML网页格式,用户可以在浏览器上进行多视点、多场景的交互式漫游浏览,最大程度地提高漫游的真实感,对商城的宣传发挥着重要作用。

4 结 语

本文对虚拟商城漫游系统设计模式与流程进行分析总结,基于3DS MAX和Virtools开发工具进行了系统开发与实现。对复杂场景的虚拟漫游研究是计算机图形学领域的一个重要课题,在确保在线实时漫游速度和漫游真实感的同时,漫游系统的场景优化策略和碰撞检测技术将是本文下一步的研究方向。

参考文献

[1] 朱玉.基于 Unity3D 漫游系统的设计与研究[J].信息安全与技术,2014,23(12):78?81.

[2] 陈山.基于街景地图服务的虚拟实景漫游系统设计[J].计算机与数字工程,2015,13(6):1121?1124.

[3] 唐菲菲,果连成,张珣.智能家居系统全景界面可控点自动识别的研究[J].现代电子技术,2013,36(2):32?35.

[4] 欧阳攀,李强,卢秀慧.基于Unity3D的虚拟校园开发研究与实现[J].现代电子技术,2013,36(4):19?22.

[5] 肖君,霍超尘.基于3DS MAX与VRP的虚拟商城漫游系统的优化[J].中国电子商务,2013,11(2):61?62.

[6] 于力超,张贤锋.基于WebGL的网上虚拟太阳系漫游系统的设计与实现[J].电脑与信息技术,2015,23(1):49?53.

[7] 胡春花,陈晓梅.基于虚拟现实的3D演出场馆漫游系统的设计与实现[J].电脑知识与技术,2014,37(31):7473?7476.

猜你喜欢
商城漫游鼠标
Progress in Neural NLP: Modeling, Learning, and Reasoning
霹雳漫游堂
商城
NASA漫游记
悦居商城
悦居商城shop
51,商城
边走边看:漫游海底 梦想成真
45岁的鼠标
超能力鼠标