温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
沉浸
虚拟现实
展馆
场景
跳转
功能
实现
王千雨
2023.4电脑编程技巧与维护1概述随着时代发展,虚拟现实展馆技术越来越频繁地进入大众视野,在娱乐、学习、医疗、航空等领域融入人们的生活,其中,一种较为高级的虚拟现实展馆,需要体验者佩戴专业的VR眼镜头显并持有手柄来体验身临其境的感受。沉浸式虚拟现实展馆体验展示如图1所示。这种沉浸式虚拟现实展馆需要用到的VR设备是HTC VIVE Cosmos套装,包括一个头戴式VR眼镜头显和两个VR手柄,这些设备无法单独使用,需要连接到一台高配置的计算机才能正常使用。一个完整的虚拟现实展馆往往需要有很多个不同功能和内容的场景组成,因此,虚拟现实展馆不同场景之间的跳转功能是一个基础功能。在此将讲解基于HTC VIVE Cosmos设备的沉浸式虚拟现实展馆场景跳转功能的实现方法。2HTC VIVE Cosmos 设备执行场景跳转功能的基础操作体验者佩戴HTC VIVE Cosmos设备的眼镜头显时,只能看到头显中的虚拟场景,无法看到周围的真实环境,因此,无法使用计算机键盘或鼠标进行场景跳转的操作,只能依靠配套的VR手柄完成场景的跳转。根据场景跳转的不同,可以将场景跳转分成两种方式,一种是体验者在同一个虚拟三维场景的不同站立点的位置之间跳转;另一种是体验者在不同虚拟三维场景之间切换跳转。2.1同一个场景中不同站立点位置之间的跳转操作首先,体验者把VR眼镜头显链接到计算机上,佩戴VR眼镜头显,在头显中能看到周围的虚拟现实环境。当体验者扭转头部或身体时,头显中的画面会跟随头部不断变化。然后,体验者拿起VR手柄,VR手柄按键示意如图2所示。分为左、右两只手柄,使用时手掌握住手柄的长柄,将发光的圆圈部分朝上。双手拇指分别放在图2(a)前视图中标注1的摇杆按钮上,放松拇指,不要一直按下摇杆按钮,将拇指轻轻放置在摇杆按钮上保持随时可以操控摇杆转向方向即可。最后,双手的食指分别放在图2(b)后视图中标注2和5的两个板机键上,放松食指,不要一直扣住板机键不松手,轻轻放置在板机键上,保持随时可以扣动板机键即可。当体验者右手按住拇指摇杆时,会出现一条亮色的抛物线指向地面,地面上抛物线和地面的交接处会出现一个圆圈的传送标志。此时移动手柄的朝向,抛物线和传送标志会跟随移动,将抛物线指向想要去的地方,然后松手,就会被传送到传送标志所在的地方。以上是同一个场景中不同站立点之间的跳转操作。基金项目:2022年青岛黄海学院大学生创新创业训练计划项目“青岛天后宫在线VR虚拟现实展馆”,项目编号:202213320327;2022年山东省学校安全协会科研课题,课题名称:“消防安全教育在线虚拟现实(VR)展馆应用研究”,课题编号:SDAX2022631。作者简介:王千雨(2002),女,学士,研究方向为虚拟现实、动画;安颖(1988),女,硕士,讲师,研究方向为虚拟现实、动画。沉浸式虚拟现实展馆场景跳转功能的实现王千雨,安颖(青岛黄海学院艺术学院,山东 青岛266427)摘要:基于 HTC VIVE Cosmos 设备的沉浸式虚拟现实展馆场景跳转功能分为体验者在同一个虚拟三维场景中不同站立点的位置之间跳转和体验者在不同虚拟三维场景之间切换跳转两种方式。前者主要依靠虚拟现实(VR)手柄射线与地面交互后的瞬移功能实现;后者主要依靠 VR 手柄射线与按钮交互后执行场景切换代码实现。详细阐述了这两种场景跳转功能的基础操作方法和制作方法。关键词:虚拟现实;沉浸式;场景跳转;Unity3D 平台;虚拟界面;按钮;手柄图1沉浸式虚拟现实展馆体验展示138DOI:10.16184/prg.2023.04.0092023.4电脑编程技巧与维护图2手柄按键示意图2.2不同场景之间切换的跳转操作不同场景之间切换的跳转操作需要借助虚拟三维场景中的虚拟操作界面和界面上的按钮完成,而单击虚拟操作界面的按钮又需要依靠VR手柄完成。当体验者左手晃动时,在VR眼镜头显中可以看到左手手柄有一条直线射出指向周围的环境,当晃动手柄时射线也会跟随手柄晃动,将射线指向虚拟界面上的“跳转到下一场景”按钮,左手食指扣动图2(b)后视图中标注5的板机键,即可切换到下一个虚拟三维场景中。3开发 HTC VIVE Cosmos 设备场景跳转功能的基本方法开发HTC VIVE Cosmos设备场景跳转功能的基本方法分为同一场景中不同站立点的位置之间的跳转和不同场景之间切换跳转两种。这两种方法都需要在游戏引擎中进行开发。例如,Unity3D就是目前应用较为广泛的一款VR交互展厅开发软件,制作VR交互展厅除了需要有HTC VIVE Cosmos设备套装,还需要一台较高配置的计算机,硬件开发环境配置如图3所示,将VR设备连接到计算机上,就可以开始开发VR展馆了。首先,安装Unity3D软件,使用Unity2019.4.10f1版本。打开软件后,在软件菜单栏编辑(Edit)下拉菜单中 选 择 项 目 设 置(Project Settings),单 击 项 目 设 置(Project Settings)窗口如图4所示。在其中的使用平台(Player)中选择Settings for PC,适用于个人计算机或Linux系统的计算机平台的设置(Mac&Linux Stan-dalone),这是因为最终导出的是.exe的安装软件。然后,勾选其中的支持虚拟现实(Virtual Reality Support-ed)选项。最后,在该选项下面的支持虚拟现实的SDK(Virtual Reality SDKs)选项里选择OpenVR,这样就完成了Unity3D软件的基础设置。为了制作虚拟现实展厅,还要安装两个插件。在Unity3D自带的应用商店(Asset Store)窗口中搜索SteamVR Plugin和VIVE Input Utility两个插件并下载安装。3.1同一个场景中不同站立点位置之间的跳转的制作方法同一个场景中不同站立点位置之间的跳转依靠VR设备中的瞬移功能来实现。首先,需要把在Maya或3DMax等三维软件中制作完成的模型导出为.fbx格式的文件,并将其导入Unity3D软件中。其次,删除Uni-ty3D场景中的原相机,新建空物体,命名为“VR Ori-gin”,在该物体下一层 级新建一个空物体,命名 为“Device Height”,给该物体添加脚本“Custom DeciveHeight”;再次,在Unity3D的Projiect窗口中找到预设(Asset)/HTC Unity插件(HTC UnityPlugin)/Vive插件集合(Vive Input Utility)/预置文件(Prefabs)文件夹中的Vive摄像机组件(Vive Camera Rig)和Vive射线指针(ViveCurvePionters),将其拖到DeciceHeight的子层级。最后,找到模型中的地面模型,选中后添加可瞬移的脚本(Teleportable)。只有添加这个脚本的物体,才能(a)前视图(b)后视图图3硬件开发环境配置图4项目设置(Project Settings)窗口1354762112633654项目配置CPUInter(R)Core(TM)i7-9750HCPU 2.60GHz2.59GHz内存32 GB(31.9 GB可用)硬盘512GB ssd+2T hdd显卡GeForce RTX 2060maxq屏幕分辨率19201080VR设备HTC VIVE Cosmos头显和手柄1392023.4电脑编程技巧与维护和手柄的射线发生交互并被选中。3.2不同场景之间切换的跳转的制作方法不同场景之间切换的跳转依靠自己编写的按钮点击跳转场景代码实现。首先,在层级(Hierarchy)窗口中新建一个虚拟界面画布(Canvas),在虚拟三维场景中拖动Canvas至合适的位置,这样在虚拟场景中就能看到一个悬浮在空中的白色线框,线框中的范围就是导出后会在眼镜头显中显示的和用户页面(UI)交互页面。其次,在其下一层级新建一个按钮(Button),选中这个按钮,在属性栏对该按钮进行设置如图5所示。勾选可交互的(Interactable)选项,这样手柄射线指向按钮时,按钮才会发生相应变化。在变化(Transition)选项后选择色调(Color Tint),这样在按钮处在不同状态时会显示不同颜色。在目标图形(Target Graphic)选项后可以选择按钮的外形样式。平常颜色(Normal Color)是指按钮处于未被手柄射线照射到的状态时显示的颜色,在右边的色块中可以选择颜色。高亮颜色(High-lighted Color)是指按钮在被手柄的射线照射到时显示出的高亮提醒颜色。被按下时的颜色(Pressed Color)是指按钮被手柄射线照射到并且体验者用食指扣下板机键时显示的颜色。被选中的颜色(Selected Color)是指手柄扣下板机并再次松开板机键后,按钮被选中时的颜色。要注意,当手柄照射到按钮并且体验者扣下板机键,按钮还没有开始执行相关命令时,只有松开板机键的瞬间才会执行按钮链接的代码命令。在此时如果想取消该命令,只需要扣住板机键不松开,将手柄射线从按钮上移动到别的地方后再松开扳机键即可。不能用时的颜色(Disabled Color)是指当该按钮的功能不能起作用时按钮显示的颜色,这时无论对该按钮进行什么操作都没有反应。最后,要给该按钮添加需要执行的场景切换代码。在图5中单击(On Click)下面拖入新建的带按钮的虚拟页面画布(Canvas),选择仅运行时(RuntimeOnly),在按钮被点击时执行sss脚本的命令(sss.On-LoginButtonClick)。其中的sss脚本是自己编写的,加载场景(LoadScene)后的括号和引号中间内容是单击按钮后要跳转到的场景的名字,代码如下。using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;using System.Collections;using UnityEngine.SceneManagement;public class sss:MonoBehaviour/Start is called before the first frame updatepublic void OnLogInButtonClick()SceneManager.LoadScene(7);选中层级(Hierarchy)窗口中的按钮(Button)下一层级的文字(Text),可以在按钮上添加文字,文字的属性栏如图6所示。其中,在Text下面的框中可以输入要添加到按钮上的文字,例如,“点击跳转到下一场景”。在字体(Font)右边的下拉菜单中可以选择各种字体,在字体样式(Font Style)右边的下拉菜单中可以选择正常(Normal)、加粗(Bold)、斜体(Italic)和加粗和斜体(Bold And Italic)4种样式。在字体尺寸(Font Size)中可以选择字体的大小;在对齐(Align-ment)可以选择多行文字的对齐方式;在颜色(Color)中可以选择字体的颜色;材质(Material)可以选择字体的材质。需要勾选射线目标(Raycast Target)选项才能被手柄射线选中。图5Button(按钮)属性设置图6文字的属性栏(下转第164页)1402023.4电脑编程技巧与维护4结语构造完整的沉浸式虚拟现实展馆需要多个复杂的虚拟三维场景的组合和链接,其中,影响用户体验感的最重要的环节是场景跳转。所述方法目前已经被应用到青岛天后宫VR虚拟现实展馆和消防安全教育虚拟现实(VR)展馆两个项目中,均并获得了较为良好的反馈。#导入MIMEText()函数sendfile=open(rresult.txt,rb).read()#以“rb”模#式打开文件,读取内容保存在sendfile中text_att=MIMEText(sendfile,base64,gb2312)#构建邮件内容text_att Content-Type=