++++立钻哥哥:“网络杂谈篇”是对SteamVR2.0知识的全网搜索利用“SteamVR2.0”关键字百度整理;
++++立钻哥哥:随着VR生态的日益增长,以及Valve Knuckles控制器的逐渐完善SteamVR未来能够提供给用户更多的交互方式,比如手指跟踪和力反馈;
++++立钻哥哥:三年前(2015年)SteamVR SDK for Unity插件的第一个版本在Unity资源商店发布,在以后的时间里VR生态发生了很多变化,仳较显著的是出现了很多不同类型的控制器如下图:
++++随着越来越多的VR设备推出,控制器类型逐渐趋向于碎片化;每当有新的控制器发布都会给开发者带来一些额外的工作量:游戏项目需要修改交互代码以适配新的设备;
++++从开发层面上来看,不同的控制器具有不同的键值映射所以,当现有VR应用程序移植到另外一个VR平台的时候需要针对目标平台进行交互适配;鉴于此,Valve为Unity开发者推出了SteamVR Unity Plugin2.0(简称SteamVR2.0)能够使開发者在编程中专注于用户的动作,而不是具体的控制器按键;
System]的目的是为了更加符合OpenXR标准,以及配合即将正式推出的Knuckles控制器;
++++目前多數主流VR平台均加入了OpenXR开放标准:
System]开发人员可以在应用程序之外定义默认的动作并与按键进行绑定,而不需要将输入视为某一特定设备的特定按键;这样新的设备可以快速适配应用程序无需更改代码;
++++比如:当开发者检测玩家是否抓取某个物体的时候,不是检测Vive等控制器嘚Trigger键或Oculus Touch控制器的Grip键是否被按下而是检测预定义的“Grab”动作是否为True即可;(作为开发者,可以在SteamVR中为Grab动作设置默认按键和阈值当程序运荇时,也可修改这些数值以满足玩家的个人偏好);基于这种机制不光能够解决控制器碎片化的问题,也可以快速适配未来发布的设备;
System]的核心概念是动作(Action)基于动作的输入系统对于游戏引擎来说更有意义,Unreal一直在沿用这种方案而Unity目前在开发中的输入系统也将遵循這一原则;
++++开发中需要放弃之前关于“按下某个按键发生什么事情”的思想,取而代之的是使用“做出某个动作发生什么事情”的思想;
++++[Boolean]類型的动作代表只有两种状态的动作:True或False比如抓取(Grab)动作,只有抓取或未抓取两种状态不存在中间状态;(在Unity中对应类为:SteamVR_Action_Boolean);
++++[Vector2]类型动作能够返回二维数,比如Touchpad上的触摸或手柄摇杆;使用这样的数值能够控制物体在四个方向的运动典型的应用是使用Touchpad控制无人机或小車的运动;(在Unity中对应类为:SteamVR_Action_Vector2);
++++[Skeleton]类型的动作能够获取用户在持握手柄控制器时的手指关节数据,通过返回数据结合手部渲染模型,能夠更加真实的呈现手部在虚拟世界的姿态虽然不及像Leap Motion等设备获取手指输入那样精确,但是足以获得良好的沉浸感;(在Unity中对应类为:SteamVR_Action_Skeleton);
++++立钻哥哥:首先来利用Xmind看一下目录结构:
++++立钻哥哥:随着越来越多的VR设备推出控制器类型逐渐趋向于碎片化;每当有新的控制器发布,都会给开发者带来一些额外的工作量:游戏项目需要修改交互代码以适配新的设备;
++++从开发层面上来看不同的控制器具有不同的键值映射,所以当现有VR应用程序移植到另外一个VR平台的时候,需要针对目标平台进行交互适配;鉴于此Valve为Unity开发者推出了SteamVR
Unity Plugin2.0(简称SteamVR2.0),能够使開发者在编程中专注于用户的动作而不是具体的控制器按键;
System]的目的,是为了更加符合OpenXR标准以及配合即将正式推出的Knuckles控制器;
++++目前多數主流VR平台均加入了OpenXR开放标准:
System],开发人员可以在应用程序之外定义默认的动作并与按键进行绑定而不需要将输入视为某一特定设备的特定按键;这样新的设备可以快速适配应用程序,无需更改代码;
++++比如:当开发者检测玩家是否抓取某个物体的时候不是检测Vive等控制器嘚Trigger键或Oculus Touch控制器的Grip键是否被按下,而是检测预定义的“Grab”动作是否为True即可;(作为开发者可以在SteamVR中为Grab动作设置默认按键和阈值,当程序运荇时也可修改这些数值以满足玩家的个人偏好);基于这种机制,不光能够解决控制器碎片化的问题也可以快速适配未来发布的设备;
System]的核心概念是动作(Action),基于动作的输入系统对于游戏引擎来说更有意义Unreal一直在沿用这种方案,而Unity目前在开发中的输入系统也将遵循這一原则;
++++开发中需要放弃之前关于“按下某个按键发生什么事情”的思想取而代之的是使用“做出某个动作发生什么事情”的思想;
++++[Boolean]類型的动作代表只有两种状态的动作:True或False,比如抓取(Grab)动作只有抓取或未抓取两种状态,不存在中间状态;(在Unity中对应类为:SteamVR_Action_Boolean);
++++[Vector2]类型动作能够返回二维数比如Touchpad上的触摸或手柄摇杆;使用这样的数值能够控制物体在四个方向的运动,典型的应用是使用Touchpad控制无人机或小車的运动;(在Unity中对应类为:SteamVR_Action_Vector2);
++++[Skeleton]类型的动作能够获取用户在持握手柄控制器时的手指关节数据通过返回数据,结合手部渲染模型能夠更加真实的呈现手部在虚拟世界的姿态,虽然不及像Leap Motion等设备获取手指输入那样精确但是足以获得良好的沉浸感;(在Unity中对应类为:SteamVR_Action_Skeleton);
++++立钻哥哥:对于骨骼输入,Knuckles控制器为SteamVR体验带来了手指跟踪功能能够估算用户手指的位置,然后将数据传递给驱动程序驱动程序将其對应解析到手部模型的31块骨骼上,从而给用户带来更好的沉浸式体验;
Vive和Oculus Touch这样的设备提供手指状态估算比如判断手部是否打开,手指是否放置在Touchpad上;
System]示例场景中能够同时看到手部和控制器模型此外,还有一个辅助组件[SteamVR_Behaviour_Skeleton]如下图所示:
(立钻哥哥:当你手持vr控制器并按下按钮时,骨架动作是你的手的最佳近似值我们给你31块骨头来帮助你制作手的动画模型。想了解更多信息请访问这个博客:) is empty.(立钻哥哥:设定骨骼运动的范围。选项是“With Controller”就像你的手握着VR控制器一样。或者“没有控制器”就好像你的手是空的。) empty.(立钻哥哥:骨骼运動范围的变化选项是“With Controller”,就像你的手握着VR控制器一样或者“没有控制器”,就好像你的手是空的) |
++++立钻哥哥:目前还有一种输出動作:振动,用于触发VR控制器上的触觉反馈调用方法如下:
future.(立钻哥哥:目前只有一种输出类型的动作-振动。但未来可能会有更多) |
++竝钻哥哥推荐的拓展学习链接(Link_Url):
++++VRTK快速入门(杂谈):
++++VRTK官方示例(目录):
++++VRTK代码结构(目录):
++++VR实验:以太网帧的构成:
++++Lua快速入门篇(基础概述):
++++游戏框架(UI框架夯实篇):
++++游戏框架(初探篇):
++++设计模式简单整理:
++++专题:设计模式(精华篇):
++++游戏相关缩写:
++++计算机組成原理(教材篇):