分享
2023年基于Unity3D的VR交互实现方法研究.doc
下载文档

ID:1894960

大小:11.50KB

页数:4页

格式:DOC

时间:2023-04-23

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
2023 基于 Unity3D VR 交互 实现 方法 研究
基于基于 Unity3DUnity3D 的的 VRVR 交互实现方法研究交互实现方法研究 何燕红 孙丽娟 刘宝丽 刘海艳【摘要】VR 作为一种计算机仿真系统,已经开始由单一向多元、由分立向融合方向演变,应用产业也在不断的扩大。本文对利用 Unity3D 引擎实现 VR 交互的方法进行了分析和探讨,着重阐述了射线交互方法的实现过程。【关键词】Unity3D;VR;交互 1 VR 介绍 1.1VR 基本概念 VR(虚拟现实)技术是一种能够创造和体验虚拟世界的计算机模拟系统。它能够允许使用者在虚拟空间中体验一个模拟人类视觉、听觉触觉等感官的虚拟场景;虚拟现实是对真实世界的模拟,一方面它能对现实环境作逼真的描述,另一方面还能使得人们在观察虚拟环境的时候犹如身临其境,可以与之进行交互。1.2VR 技术的发展趋势 目前,VR 技术已经广泛应用于城市规划、室内设计、工业仿真、古迹复原、桥梁道路设计、房地产销售、旅游教学、水利电力、地质灾害、教育培训等众多领域,让一些在现实条件中难以演练难以实现的事情,可以通过 VR 技术进行实现,为更多的行业提供更多的可能。1.3VR 技术的特征(1)多感知性,是指视、力、触、运动、味、嗅等感知系统。(2)交互性,是指当人处于虚拟世界时,依然可以像在现实中一样,通过触碰、使用某些具体物品,感受到所用物品存在于人与物品之间的互动信息。(3)构想性,指人处于虚拟世界,将所想的物品所做的事情展现在虚拟世界里,甚至在虚拟世界中还可以把在现实世界不可能存在的事和物都呈现出来。2 VR 交互设计要素 2.1VR 的交互方式 在虚拟现实的情境中,交互的方式主要分为以下 4 种:视线交互、按键交互、射线交互与碰撞器交互。其中,视线交互仅需头戴式显示器即可实现交互,手柄按键交互需要判断手柄按键是否按下以及按下的力度,手柄射线交互需要获取手柄当前的坐标和旋转角度再配合手柄按键来实现射线与物体的交互,手柄碰撞器交互则需要获取手柄当前的坐标以及其附带的碰撞器组件并判断是否与物体进行碰撞之后才能实现与物体的交互。2.2VR 用户界面的操作方式(1)使用准星。在 VR 环境中,摄像头的控制权限完全掌握在使用者手中,当摄像机本身动作与输入有差异或使用者视线未处于头戴式显示设备的中央时,会破坏使用者沉浸感,所以要保证十字形或者圆形的准星放置使用者的正前方。进行交互时将准星悬停在可交互对象上,弹出提示信息以提示使用者对象可交互。(2)使用恰当的视觉深度。和一般应用程序使用的 UI 不同,VR 的 UI 具有纵深属性。因此,如果在 VR 中与 UI 的内容过近的话,就无法看清 UI 的全貌,但是,如果 UI 太远,用户则无法看清 UI 中包含的内容。同时,文本的大小和 UI元素的比例也会影响用户体验。(3)使用固定的速度。VR 的变速运动对用户体验有负面影响,就人体生理结构看,视觉信息是通过眼睛获取并反馈到前庭系统的。当眼睛的感知与前提系统不一致时,用户会感到恶心或眩晕,这种不适在 VR 环境下的主要原因是眼睛感知到了速度的变化,而前庭系统却没有相应的感觉,从而导致不适,这和晕动病的原理一致,所以尽可能避免在 VR 环境中使用变速运动。3 VR 交互功能的实现 因为在常见 VR 项目开发中一般采用 Google VR,借助 Unity3D VR 平台实现,使用与其配套的 SDK 和 Google Cardboard 进行项目体验,所以本文针对射线交互进行研究。3.1 模拟头部的转动 在 Unity3D 引擎中实现的 VR 的交互时,可采用第一人称,用相机模拟用户的头部,实现仿人类视线和头部转动。在实现时,需要设置上限最大视角,根据鼠标移动的快慢,获取相机左右旋转的角度;根据鼠标移动的快慢,获取相机上下旋转的角度,并对角度进行限制。功能实现部分代码为:float rotationX=transform.localEulerAngles.y+Input.GetAxis(“Mouse X”)*sensitivityX;rotationY+=Input.GetAxis(“Mouse Y”)*sensitivityY;rotationY=Mathf.Clamp(rotationY,minimumY,maximumY);transform.localEulerAngles=new Vector3(-rotationY,rotationX,0);this.transform.Translate(new Vector3(Input.GetAxis(“Horizontal”),0,Input.GetAxis(“Vertical”)*Time.deltaTime);3.2 视线交互 相机发射射线进行交互,检测到有交互对象,则去获得它身上的功能脚本,获取成功后开始计时,到达 3 秒,触发功能。若用户中途离开,则重新计时。准星能够吸附到对象,没有交互对象时,重置准星的位置。功能实现部分代码为:Ray ray=new Ray(transform.position,transform.forward);RaycastHit hit;if(Physics.Raycast(ray,out hit,100)canvasPoint.transform.localScale=hit.distance*canvasOriginalScale*0.05f;canvasPoint.transform.position=hit.point;canvasPoint.transform.forward=hit.normal;if(hit.transform.gameObject!=curInteractiveObj)if(curInteractiveObj!=null)oldInteractiveObj=curInteractiveObj;oldobjDoing=oldInteractiveObj.GetComponent();if(oldobjDoing)oldobjDoing.leave();curInteractiveObj=hit.transform.gameObject;objDoing=curInteractiveObj.GetComponent();if(objDoing)objDoing.hovered();elsecounttime+=Time.deltaTime;if(counttimegazedurationtime)reticleImage.fillAmount=counttime/gazeDurationTime;.4 結语 本研究阐述了射线交互的实现方法,用相机模拟用户头部发射射线进行交互,检测交互对象是否有触发事件,并进行事件交互。在使用准星时,需要立体渲染(制造视觉深度),并要保持恒定的速度。(通信作者:刘海艳)参考文献:1周晓成,张煜鑫,冷荣亮.虚拟现实交互设计M.化学工业出版社,2016.2张胜男,高如玉,高权.基于全景图的科普场馆漫游系统设计 J.电子世界,2017(2):150-152.3误雁波.著 Unity 3D 平台 AR 与 VR 开发快速上手M.清华大学出版社,2017.

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开