VR中Unity UI系统
来源:互联网 发布:创意域名知乎 编辑:程序博客网 时间:2024/05/16 16:18
以前做HTC VIVE开发的时候,做UI交互不需要考虑那么多事情,直接一个VRTK插件包,自己想要的功能几乎全部包含在内,可是自从Oculus的Touch出来以后,Oculus的操作体验又上了一个大台阶,哎,作为一个苦逼的程序员,当然又得有新工作啦,使用Oculus进行VR程序开发,那么重点来了,怎么使用Oculus的插件包进行UI交互开发?搜索半天,发现了好久以前的一个VR UI开发引导,还是英文版的,哎,尝试半天啊,各种问题。废话不多说,主题走起.................
此处使用到的插件包为OculusSampleFramework.unitypackage,可以自行到Oculus官网下载
首先说说Unity的UI包括的重要组件:
EventSystem:这玩意就相当于大脑,处理各部件间的关系
InputModules:输入模式,决定常规模式,还是支持VR交互模式
RayCasters:射线投射器,Oculus没有自己的UI系统,所以只能通过常规模式功能扩展以实现UI交互,而最简单的就是通过射线检测的位置替代常规的鼠标位置,实现交互
GraphicComponents:各种响应组件(按钮,滑块等)
此处进入操作流程:
第一步:添加VR摄像头OVRCameraRig
作为VR程序,最重要的就是一个VR相机了,从OVR->Prefabs目录中找到OVRCameraRig预制体,拖到当前场景中,作为摄像机。
第二步:创建画布Canvas并修改EventSystem的输入模式InputModule
此处创建一个简单的按钮Button,并将Canvas的RenderMode设置为WorldSpace。选中EventSystem,删除其StandaloneInputModule组件并添加OVRInputModule组件。讲OveCameraRig对象下的子物体CenterEyeAnchor拖动到OVRInputModule组件RayTransform处,作为射线投射物体。
第三步:添加GazePointer
UI交互必须有一个指针来表明你所选的位置,搜索GazePointerRing预制体,拖动到场景中,并将OveCameraRig对象下的子物体CenterEyeAnchor拖动到OVRGazePointer组件RayTransform处。
第四步:Canvas画布设置
将OveCameraRig对象下的子物体CenterEyeAnchor拖动到Canvas下EventCamera处。替换画布Canvas上的GraphicRaycaster组件为OVRRaycaster组件,在新的OVRRaycaster对象上,把BlockingObjects下拉框的选择改为All。并将第三步的GazePointerRing拖动到OvrRaycaster的Pointer处。
OK,到此处,应该可以使用头显进行UI交互了,但是我想用手柄进行UI交互要怎么做了,简单,只需一步:
第五步:手柄交互功能
搜索OVRInspectorLoader预制体,拖动到场景中,OK,已经可以使用手柄愉快的玩耍啦。
VR中头显和手柄的UI交互已经完工了,但是我要想使用鼠标进行交互便于测试改咋整啊?简单
第六步:世界坐标鼠标指针
搜索CanvasPointer预制体,拖动到Canvas下作为画布的子物体,并将它拖动到画布OVRRaycaster组件的Pointer处,为画布添加OVRMousePointer组件,OK,此处就可以支持鼠标交互啦!
UI交互正常进行啦,那么VR中怎么实现物理对象的交互呢,也挺简单,将OVRPhysicsRaycaster组件添加到OVRCameraRig上,并将EventMask设置为Gazeble,在场景中新建一个Cube作为交互的对象,修改Cube的Layer为Gazable,添加EventTrigger组件用以响应交互事件。OK,物理交互也实现啦!
- VR中Unity UI系统
- Unity中Oculus VR的UI凝视交互
- Unity新UI系统
- Unity UI系统--总览
- Unity UI 系统--Canvas
- 【Unity】UI系统
- #游戏unity-音之国度#战斗系统中图鉴UI
- 【UI系统】全面理解 Unity UI 系统
- Unity——VR分屏关于UGUI的摆放,UI如何放进vr分屏中
- 全面理解 Unity UI 系统
- 全面理解 Unity UI 系统
- Unity UI系统--基础布局
- 全面理解 Unity UI 系统
- 全面理解 Unity UI 系统
- 全面理解 Unity UI 系统
- 全面理解 Unity UI 系统
- 全面理解 Unity UI 系统
- Unity UI系统-NGUI简介
- 插值算法
- windows+svn+redmine实现代码评审
- 数据工程师的没落
- CSS中常用的字体单位
- ZigBee基础实验(四)--定时器3、定时器4
- VR中Unity UI系统
- 单例模式和多线程
- java.lang.IllegalArgumentException: Scrapped or attached views may not be recycled. isScrap:false is
- matplotlib 绘图可视化知识点整理
- JavaWeb项目中读取配置文件的方式
- SpringBoot学习-支持MyBaties
- 210. Course Schedule II 【Medium】 拓扑排序
- MYSQL RR隔离级别下MVCC及锁解读
- Qt的QStringList