基于VR技术的计算机配件模型设计方法

2022-06-27 10:00王出航刘晓理
长春师范大学学报 2022年4期
关键词:菜单栏下拉菜单虚拟环境

王 雪,王出航,刘晓理

(长春师范大学计算机科学与技术学院,吉林 长春 130032)

1 研究背景

随着互联网的普及,更多的学习者开始关注计算机配件,配件价格上调以及品种繁多加大了学生学习计算机配件知识的难度。三维模型的发展已处于成熟阶段,三维模型被广泛应用于教育、游戏和影视特技等行业,三维模型与VR技术的结合可以为学习者创建逼真的虚拟学习场景。近些年,我国逐渐加大对VR行业的支持力度,为VR技术的发展提供了良好契机。将VR技术应用于对计算机配件的研究与学习中,能够有效帮助学习者解决现实学习环境中的诸多问题,及时了解硬件市场的最新动向。VR技术突破传统学习手段的局限,全面实现学习场景立体化、真实化,使枯燥的学习过程变得活灵活现,减轻学习者的厌学心理,使学习者可以在一个生动活泼的虚拟环境内学习。为学习者创设多种问题情景,这不仅使学习者熟练掌握计算机配件的基础知识,还增加了学习者动手操作练习的机会。

2 VR技术

虚拟现实(Virtual Reality)技术,简称VR技术,是运用计算机将计算机图形技术、多媒体技术、传感技术、人机交互技术、网络技术、心理学等学科技术发展形成的综合技术[1]。通过计算机生成真实世界的模拟[2],建立虚拟的仿真环境,为体验者带来截然不同的身心体验。虚拟现实具有以下三个基本特征。

(1)沉浸感,又称为临场感,主要是指学习者在创建的三维环境中有身临其境的真实感觉,对虚拟环境内的事务有所感触。其最主要的特征就是让学习者自认为是虚拟环境中的一部分,随着虚拟环境的变换,身心也受到感染。体验者通过鼠标和屏幕等设备切实感受虚拟环境。

(2)想象性,使学习者跳脱出现实世界,无限发挥想象力,创造出有无限可能的虚拟世界。虚拟世界的所有内容都是学习者想象出来的,彰显学习者原有的设计思路。

(3)交互性,是指学习者对虚拟环境内存在物体的可操作程度,从虚拟环境中得到反馈的自然程度[3]。交互性主要借助计算机的窗口、鼠标、键盘来代替,帮助学习者产生与在现实世界相似的感受。交互性能保证虚拟环境具备更大的创造性,给学习者带来更逼真的体验与更好的感受。

3 计算机配件模型设计方法

计算机配件模型设计全过程主要包括由Maya创建逼真的三维立体静态模型,再导入Unity3D以实现动态交互功能。下面以三维鼠标模型的设计制作为例进行详细说明。

3.1 通过Maya创建鼠标模型

Maya是一款三维建模软件,通过对立方体、球体等基础几何元素进行拉伸、结合[4],构建较复杂的几何场景。三维鼠标模型的创建选用的是Maya2018软件,创建鼠标模型的详细步骤如下:

第一步,导入模型样本。打开Maya软件,“空格+鼠标左键”,先将窗口切换到四视图状态,导入鼠标的正上方图片:在Top-Y视图窗口内依次点击“视图”“图像平面”“导入图片”,打开对话框,在打开的对话框里找到要导入的图片,双击图片完成导入。图片导入后,点开右侧的伸缩栏,在通道盒里可以对图片透明度、大小等属性进行调整,这里图片的透明度为60%。然后分别点击“Side-X”和“Front-Z”视图,进行同样的操作,导入鼠标侧方图片和正前方图片,调整三张图片的比例和相对位置与真实鼠标一致。

第二步,创建鼠标按钮曲面。首先绘制鼠标右侧外表轮廓曲线,在菜单栏依次单击“创建按钮”“曲线工具”“CV曲线工具”,沿着鼠标图片上右键的边缘依次在三个视图中创建锚点,多个锚点相连成为一条曲线,勾勒鼠标右侧外形的轮廓。然后由线成面,将勾勒出的四条鼠标右侧外形轮廓线条变成一面。在菜单栏依次单击“曲面”“双轨成型”“双轨成形2工具”,再选择侧边的两条曲线单击“Enter”键确定,接着选择另外两条曲线重复操作,鼠标右侧曲面就创建完成。最后,选中之前创建的右侧鼠标曲面,在菜单栏依次单击“编辑”“特殊复制命令”,在弹出特殊复制选项设置窗口内设置大小选项的值为(1,1,-1),然后单击“特殊复制”按钮,鼠标左侧曲面完成。

第三步,合并鼠标左右侧曲面。选择制作完成的曲面,在菜单栏依次单击“曲面”“编辑曲面”“合并曲面”,在弹出的对话框内选中“混合”附加方法,在多结点选中“保持”,调整混合偏移值为0.500 0,取消选中“插入结”和“保持原始”,单击“应用”按钮,完成合并。

第四步,制作鼠标中键。首先绘制鼠标中键外部轮廓曲面,先绘制上半部分中键轮廓曲线,将其复制并缩小曲线的范围,作为下半部分中键轮廓曲线。选择绘制好的两条中键轮廓曲线,在菜单栏依次单击“编辑”“特殊复制命令”,接着在弹出的特殊复制选项设置窗口内设置大小为(1,1,-1),合并曲线并执行Loft(放样)命令。然后选择设计好的中键外部轮廓曲面,再复选鼠标的左右侧曲面,在菜单栏依次单击“曲面”“曲面圆角”“圆形圆角”,在设置窗口设置Radius值为-0.03。然后选择鼠标左右侧曲面,在菜单栏依次单击“曲面”“修剪工具”,剪切出一个可以放置鼠标中键的缺口。最后制作鼠标中键滚轮,创建一个NURBS球体,对曲面球体进行变形调整,直到效果如图1所示。

图1 鼠标中键

第五步,鼠标外表曲面模型制作。首先制作鼠标侧面轮廓模型,创建四条轮廓曲线并选中,在菜单栏依次单击“曲面”“双轨成型”“双轨成形2工具”,选择侧边的两条曲线按“Enter”键确定,接着选择另外两条曲线,侧面轮廓模型创建完成。然后制作鼠标底部模型,选择侧边的曲面单击鼠标右键,在下拉菜单中选中“等位线”,显示曲面等参线,接着在菜单栏上依次单击“曲线”“复制曲面曲线”,选择复制好的曲线,单击鼠标右键选择“曲线点”,在曲线上选两个点,在菜单栏依次单击“曲面”“曲面编辑”“断开切线”,将曲线断成3段。最后使用EP曲线工具,按C键锁定到曲线,在曲线的两个断点处绘制一条直线,接着选择新生成的4条曲线,使其边界成面,效果如图2所示。

图2 鼠标底面

第六步,整合模型。回到顶视图中,在鼠标表面的鼠标按钮与后面衔接之处绘制一条曲线,选择生成的4条曲线,在菜单栏依次单击“曲面”“边界成面”,由线成面,鼠标模型制作完成。将制作好的鼠标模型保存为FBX格式,方便后续将模型导入到Unity3D软件内。

3.2 Unity3D实现交互功能

Unity3D可创建三维动画、游戏等,支持Maya、3ds Max等软件的导入模型,是一个比较全面的综合性引擎[5]。在Unity2017.2.0f3软件内,采用C#语言编辑脚本,实现鼠标模型的功能设计,完成后导出为PC端格式,学习者可以通过打开导出的执行文件开始学习。具体实现步骤如下:

第一步,模型导入。只有将制作完成的鼠标模型导入到Unity3D软件内,运用C#语言编辑脚本才能赋予鼠标模型可操作的功能。首先需要创建放置模型的文件夹,选中Unity3D内资源文件夹“Assets”,单击鼠标右键,选中“Create”选项,在弹出的下拉菜单中单击“Folder”按钮,并为新生成的文件夹命名为“MayaModels”。然后在Unity3D主界面菜单栏上单击“Assets”按钮,在弹出的下拉菜单中单击“Import Package”按钮,接着在出现的下拉菜单中单击“Custom Package”按钮,在弹框中选中需要导入的文件夹,最后单击“保存”按钮即可,将导入的模型放到主视图下,开始模型的运用。

第二步,编辑脚本,为鼠标模型添加交互功能,脚本编写程序选用的是C#语言。在资源文件夹“Assets”下的“Scripts”文件下单击鼠标右键,选择“Create”下拉菜单下的“C# Script”,创建后缀名为.cs的脚本,默认状态下可以对文件重新命名。打开Unity3D内的脚本可以发现,在此项目中创建的脚本都默认继承MonoBehaviour类,含有常用的基础函数、事件响应函数、默认组件、组件获取函数等,使脚本文件以“组件”形式作用于鼠标模型。在虚拟场景内最基本的交互功能有场景漫游、鼠标发射射线、碰撞体碰撞等功能。

第三步,场景漫游。摄像机实现场景漫游是通过移动摄像机的位置和方向观察虚拟场景内的各个角落,脚本实现函数是Input.GetAxis()。学习者通过键盘的上下左右键来调整摄像机的位移,鼠标的滚轮可以调整摄像机视角的远近程度,方便学习者观察鼠标模型的轮廓和细节。

第四步,碰撞检测。碰撞体是Unity3D内实现物理属性交互最重要的组件之一,场景内任何物体想要发生碰撞必须添加物理组件下的碰撞体组件,它与刚体组件一起作用才能触发碰撞效果。每个GameObject在被创建时系统会根据其外观形状自动分配一个合适的碰撞体,根据物体形状不同设有多种类型碰撞体,由于鼠标模型外形是不规则的,所以在创建碰撞体时应选择最贴合鼠标外形的碰撞体,本文选择的是盒子碰撞体。给鼠标模型添加盒子碰撞体的具体操作为:选中鼠标模型,在右侧“Inspector”面板中点击“Add Component”按钮,在输入框内输入“Box Collider”,盒子碰撞体添加成功后,可以对碰撞体的大小做出适当的调整,尽可能地模拟现实中的碰撞效果。添加刚体的方法也是如此,刚体组件为鼠标模型提供物理属性,让鼠标模型在虚拟场景中可以受到物理引擎的作用。鼠标模型添加盒子碰撞体和刚体组件后才能触发碰撞事件,并自动生成OnColliderEnter、OnColliderStay、OnColliderExit三个碰撞信息发送给脚本参数,在这三个函数下编写执行脚本。

第五步,射线检测。在虚拟场景中想要360°无死角地查看鼠标模型,就涉及Unity3D的射线检测模块,常见的射线投射方式包括Linecast和Raycast。Linecast需要定义射线发射的起止位置[6];Raycast需要通过设置射线碰撞变量和更改三维场景中物体的标签[7],由于终止位置是不固定的,所以选择用Raycast投射方式。这里以移动鼠标模型为例,具体实现代码如下:

//创建一条从摄像机到屏幕的射线,并穿过屏幕position(x,y)像素坐标(position.z被忽略)

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

//是一个结构体,用来存储射线返回的信息

RaycastHit hit;

//从摄像机发射一条射线,射线范围是100米,如果射线碰到鼠标模型,返回true

if (Physics.Raycast(ray,out hit,100f))

{

//设置鼠标模型要移动的距离

Vector3 offset = new Vector3(18,0,0);

//改变鼠标模型位置

hit.transform.position = hit.transform.position + offset;

}

第六步,保存场景。当创建完一个场景后,需要对场景进行保存,保持场景文件的方法如下:单击界面左上角的“文件”按钮,然后在弹出的下拉菜单中单击“保存场景”按钮,接着在弹出的对话框中为场景文件命名为“MouseScene”,最后单击“保存”按钮,场景保存成功。

第七步,导出场景。本文导出的场景需要在电脑上进行观看,所以导出的格式选择PC端。导出场景文件的方法如下:单击界面左上角的“文件”按钮,然后在弹出的下拉菜单中单击“Build设置”按钮,接着在弹框内首先看到的是加载的场景界面,单击右下方的“Add Open Scenes”按钮导入“MouseScene”场景,选中此场景。然后,在下半部分的“Platform”界面选中“PC、Mac & Linux Standalone”,其他设置可以保持默认值,单击“Build”按钮,选择放置可执行文件的文件夹后点击“保存”即可。打包好的内容是一个可执行的exe文件和包含其所需资源的同名文件夹[8],单击exe文件后便会出现可以运行的对话框,选择分辨率,单击“Play”运行,进入场景开始对鼠标内容的学习,运行效果如图3所示。

图3 鼠标模型运行效果图

4 结语

针对现有计算机学习者面临的配件种类多、更新速度快等问题,本文运用VR技术,创建三维鼠标模型,并详细介绍了三维模型创建的过程以及所用到的交互功能的实现过程。在虚拟学习场景内设计三维模型的功能,能够为学习者日后学习其它计算机配件奠定基础,使学习者在掌握计算机基础知识的同时提高自身技能。

猜你喜欢
菜单栏下拉菜单虚拟环境
前庭刺激对虚拟环境三维空间定向的影响及与空间能力的相关关系
如何通过虚拟环境有效管理Python第三方库
公 告
巧做智能下拉菜单
细碎星子,汇成不灭的银河
制作更炫酷的下拉菜单
虚拟环境下大数据智能并行聚类方法研究
将Widget小部件放到
试析Access2010中利用宏实现自定义菜单
自编翻译程序