SteamVR简介 |
版本git |
做者github |
参与者面试 |
完成日期数据库 |
备注编程 |
SteamVR_Intro_V01_1.0设计模式 |
严立钻网络 |
|
2019.01.14数据结构 |
|
|
|
|
|
|
##《SteamVR简介》发布说明:框架
++++“SteamVR简介”:是对SteamVR的一个介绍;(昨天,咱们发布了一个“OpenVR&OpenXR”简介,得知SteamVR是依赖于OpenVR的,因此咱们今天开始探索一下“SteamVR”,OpenVR是C++接口,经过SteamVR的集成兼容能够获得咱们想要的Unity使用的C#接口,这样更有利于Unity项目开发,因此咱们将2019年度的重点技术突破点确立为:“SteamVR”,这个主题将会贯穿2019年!)ide
++++“SteamVR简介”:定位在一个介绍类知识,对于没有SteamVR知识的一个探索总结;
++++OpenVR的Github:https://github.com/ValveSoftware/openvr
++++OpenXR官网:https://www.khronos.org/openxr
++++SteamVR的Github:https://github.com/ValveSoftware/steamvr_unity_plugin
##《SteamVR简介》目录
#第一篇:网络杂谈篇
#第二篇:视频杂谈篇
#第三篇:文档杂谈篇
#第四篇:项目杂谈篇
#第一篇:网络杂谈篇 |
#第一篇:网络杂谈篇
++++立钻哥哥:“网络杂谈篇”是对SteamVR知识的全网搜索,利用“SteamVR”;
++++A.一、SteamVR百度百科
++++A.二、SteamVR插件简介
++++A.三、Unity3D导入SteamVR Plugin错误汇总及原理解析
++++A.四、SteamVR SDK学习笔记
++++A.五、SteamVR2.0插件使用指南
++++A.六、
++++A.七、
##A.一、SteamVR百度百科 |
++A.一、SteamVR百度百科
++++立钻哥哥:OpenVR是SteamVR API:开发无偿使用;
++++OpenVR为VR游戏提供统一的数据接口,从而使得VR游戏不用直接与厂商的SDK打交道;
++++OpenVR能够独立于游戏来添加扩展新外设;
++++OpenVR的Github:https://github.com/ValveSoftware/openvr
++SteamVR是依赖OpenVR的
++++立钻哥哥:SteamVR是一个Runtime;
++++SteamVR是经过Steam安装在电脑上的,OpenVR是提供API的;
++++经过SteamVR,不一样的VR系统(Unity,UE等)调用OpenVR的API来开发应用程序,还可在OpenVR中添加驱动来对接VR硬件;
++++SteamVR平台主要是为VIVE服务的,可是它也兼容了OSVR、Rift和Touch的驱动;
++OpenVR的API都是以C++接口类方式呈现
++++立钻哥哥:OpenVR的API都是以C++接口类方式呈现的,并且都是纯虚函数;
++++当应用程序初始化系统时,OpenVR会返回该应用程序所使用到的SDK头文件内相匹配的接口;
++++OpenVR新发布的接口版本会兼容之前的接口版本,所以,应用程序没必要更新到最新的SDK也可正常使用;
++SteamVR变得愈来愈开放
++++立钻哥哥:SteamVR变得愈来愈开放;愈来愈多的VR头显将“支持Steam”做为卖点之一;
++++HTC最先拉上了Valve做为合做伙伴,不只因为SteamVR原本就是个现成的内容池,Valve对于VR软硬件的固有经验,也成为第三方开发商相继入驻的标杆;
++++雷蛇OSVR最大的意义在于为第三方硬件商提供了捷径,新生产品可以迅速接入最具竞争力的平台;
++++微软宣布Windows VR头显将所有接入SteamVR,这意味着与其合做的联想、宏碁、戴尔等老牌电子产品制造商也快速加入;
++++Oculus Rift和PSVR的封闭平台一直为人诟病;(Oculus几乎将钱都花在了游戏内容打造和独占签约上)
##A.二、SteamVR插件简介 |
++A.二、SteamVR插件简介
++++立钻哥哥:SteamVR能够在Unity Store下载插件;
++SteamVR的GitHub
++++立钻哥哥:SteamVR的GitHub:https://github.com/ValveSoftware/steamvr_unity_plugin
++SteamVR的目录结构
++++立钻哥哥:SteamVR的目录结构;
++++[SteamVR/Plugins/]:主要是一些API相关;
++制做VR Camera(VR视角)
++++立钻哥哥:若是须要作一款VR游戏,须要把摄像机调成VR视角;
++++[方法1]:使用预制的VR摄像机;
++++[方法2]:将普通的摄像机修改为VR摄像机;
##A.三、Unity3D导入SteamVR Plugin错误汇总及原理解析 |
++A.三、Unity3D导入SteamVR Plugin错误汇总及原理解析
++++立钻哥哥:汇总Unity3D中导入SteamVR Plugin资源包报错;
错误码 |
报错内容 |
0 |
HmdError_None |
1 |
HmdError_Unknown |
100 |
HmdError_Init_InstallationNotFound |
101 |
HmdError_Init_InstallationCorrupt |
102 |
HmdError_Init_VRClientDLLNotFound |
103 |
HmdError_Init_FileNotFound |
104 |
HmdError_Init_FactoryNotFound |
105 |
HmdError_Init_InterfaceNotFound |
106 |
HmdError_Init_InvalidInterface |
107 |
HmdError_Init_UserConfigDirectoryInvalid |
108 |
HmdError_Init_HmdNotFound |
109 |
HmdError_Init_NotInitialized |
110 |
HmdError_Init_PathRegistryNotFound |
111 |
HmdError_Init_NotConfigPath |
112 |
HmdError_Init_NoLogPath |
113 |
HmdError_Init_PathRegistryNotWritable |
200 |
HmdError_Driver_Failed |
201 |
HmdError_Driver_Unknown |
202 |
HmdError_Driver_HmdUnKnown |
203 |
HmdError_Driver_NotLoaded |
204 |
HmdError_Driver_RuntimeOutOfDate |
205 |
HmdError_Driver_HmdInUse |
300 |
HmdError_IPC_ServerInitFailed |
301 |
HmdError_IPC_ConnectFailed |
302 |
HmdError_IPC_SharedStateInitFailed |
303 |
HmdError_IPC_CompositorInitFailed |
304 |
HmdError_IPC_MutexInitFailed |
1000 |
HmdError_VendorSpecific_UnableToConnectToOculusRuntime |
2000 |
HmdError_Steam_SteamInstallationNotFound |
Tips |
立钻哥哥带您分析[SteamVR Plugin]导入报错; |
++++[0 :HmdError_None]:无错误;
++++[1 :HmdError_Unknown]:未知错误;
++++[100 :HmdError_Init_InstallationNotFound]:在路径注册表中指定的安装文件夹不存在;
++++[101 :HmdError_Init_InstallationCorrupt]:在路径注册表中指定的安装文件夹没有bin文件;
++++[102 :HmdError_Init_VRClientDLLNotFound]:bin文件夹中没有vrclient.dll或系统对应的动态库;
++++[103 :HmdError_Init_FileNotFound]:驱动不能加载;
++++[104 :HmdError_Init_FactoryNotFound]:vrclient.dll中的工厂方法找不到,是vrclient.dll出现异常吗?
++++[105 :HmdError_Init_InterfaceNotFound]:VR_Init或VR_GetGenericInterface请求的接口不存在,是使用的SDK版本比安装的runtime版本更新吗?
++++[106 :HmdError_Init_InvalidInterface]:错误码当前没有被使用;
++++[107 :HmdError_Init_UserConfigDirectoryInvalid]:路径注册表中的配置目录不可写;
++++[108 :HmdError_Init_HmdNotFound]:HMD没有添加到系统或者HMD没有初始化;
++++[109 :HmdError_Init_NotInitialized]:若是VR_GetGenericInterface在VR_Init以前或者在VR_Shutdown以后被调用会返回这个错误;
++++[110 :HmdError_Init_PathRegistryNotFound]:VR路径注册文件不能被读;从新安装OpenVR runtime或Steam上的SteamVR应用程序;
++++[111 :HmdError_Init_NoConfigPath]:配置路径没有在路径注册表中指定;
++++[112 :HmdError_Init_NoLogPath]:log路径没有在路径注册表中指定;
++++[113 :HmdError_Init_PathRegistryNotWritable]:VR路径注册表不可写;
++++[200 :HmdError_Driver_Failed]:驱动初始化失败,内部错误;
++++[201 :HmdError_Driver_Unknown]:驱动因为位置缘由失败,内部错误;
++++[202 :HmdError_Driver_HmdUnknown]:驱动未检测到HMD,内部错误;
++++[203 :HmdError_Driver_NotLoaded]:在该驱动发出请求前,尚未加载,内部错误;
++++[204 :HmdError_Driver_RuntimeOutOfDate]:若是一个驱动自带runtime,那么须要更新它的runtime;
++++[205 :HmdError_Driver_HmdInUse]:另一个非OpenVR的应用程序正在使用HMD;
++++[300 :HmdError_IPC_ServerInitFailed]:OpenVR不可以启动vrserver;
++++[301 :HmdError_IPC_ConnectFailed]:屡次尝试后,OpenVR不能连接到vrserver或vrcompositor;
++++[302 :HmdError_IPC_SharedStateInitFailed]:vrserver或vrcompositor的共享内存不可以打开;
++++[303 :HmdError_IPC_CompositorInitFailed]:OpenVR不可以启动vrcompositor;
++++[304 :HmdError_IPC_MutexInitFailed]:OpenVR不可以建立互斥量来与vrcompositor通讯;
++++[1000 :HmdError_VendorSpecific_UnableToConnectToOculusRuntime]:因为未知缘由致使到Oculus runtime的链接失败;
++++[2000 :HmdError_Steam_SteamInstallationNotFound]:当前没有使用的错误码;(报错缘由:Unity3D中内置的OpenVR和SteamVR驱动版本不对应致使)
##A.四、SteamVR SDK学习笔记 |
++A.四、SteamVR SDK学习笔记
++++立钻哥哥:分析SteamVR中各脚本的功能;
##A.五、SteamVR2.0插件使用指南 |
++A.五、SteamVR2.0插件使用指南
++++立钻哥哥:随着VR生态的日益增加,以及Valve Knuckles控制器的逐渐完善,SteamVR将来可以提供给用户更多的交互方式,好比手指跟踪和力反馈;
++++近期,Valve在Unity资源商店中将SteamVR插件更新到了2.0版:
++概述
++++立钻哥哥:三年前(2015年),SteamVR SDK for Unity插件的第一个版本在Unity资源商店发布,在之后的时间里,VR生态发生了不少变化,比较显著的是出现了不少不一样类型的控制器,以下图:
++++随着愈来愈多的VR设备推出,控制器类型逐渐趋向于碎片化;每当有新的控制器发布,都会给开发者带来一些额外的工做量:游戏项目须要修改交互代码以适配新的设备;
++++从开发层面上来看,不一样的控制器具备不一样的键值映射,因此,当现有VR应用程序移植到另一个VR平台的时候,须要针对目标平台进行交互适配;鉴于此,Valve为Unity开发者推出了SteamVR Unity Plugin.0(简称SteamVR2.0),可以使开发者在编程中专一于用户的动做,而不是具体的控制器按键;
++重要更新:Input System
++++立钻哥哥:SteamVR2.0的重要更新是加入了[Input System];
++++推出[Input System]的目的,是为了更加符合OpenXR标准,以及配合即将正式推出的Knuckles控制器;
++++目前多数主流VR平台均加入了OpenXR开放标准:
++++[Input System]与以前处理用户输入有显著的不一样,使用[SteamVR Input System],开发人员能够在应用程序以外定义默认的动做并与按键进行绑定,而不须要将输入视为某一特定设备的特定按键;这样新的设备能够快速适配应用程序,无需更改代码;
++++好比:当开发者检测玩家是否抓取某个物体的时候,不是检测Vive等控制器的Trigger键或Oculus Touch控制器的Grip键是否被按下,而是检测预约义的“Grab”动做是否为True便可;(做为开发者,能够在SteamVR中为Grab动做设置默认按键和阈值,当程序运行时,也可修改这些数值以知足玩家的我的偏好);基于这种机制,不光可以解决控制器碎片化的问题,也能够快速适配将来发布的设备;
++动做(Actions)
++++立钻哥哥:[Input System]的核心概念是动做(Action),基于动做的输入系统对于游戏引擎来讲更有意义,Unreal一直在沿用这种方案,而Unity目前在开发中的输入系统也将遵循这一原则;
++++开发中须要放弃以前关于“按下某个按键发生什么事情”的思想,取而代之的是使用“作出某个动做发生什么事情”的思想;
++++SteamVR2.0将动做抽象为如下6种类型:Boolean、Single、Vector2、Vector3、Pose、Skeleton等类型;
++++[Boolean]类型的动做表明只有两种状态的动做:True或False,好比抓取(Grab)动做,只有抓取或未抓取两种状态,不存在中间状态;(在Unity中对应类为:SteamVR_Action_Boolean);
++++[Single]类型的动做可以返回0~1之间的数值,好比Trigger键按下到松开的过程;(在Unity中对应类为:SteamVR_Action_Single);
++++[Vector2]类型动做可以返回二维数,好比Touchpad上的触摸或手柄摇杆;使用这样的数值可以控制物体在四个方向的运动,典型的应用是使用Touchpad控制无人机或小车的运动;(在Unity中对应类为:SteamVR_Action_Vector2);
++++[Vector3]类型的动做可以返回三维数值;(在Unity中对应类为SteamVR_Action_Vector3);
++++[Pose]类型的动做表示三维空间中的位置和旋转,通常用于跟踪VR控制器;(在Unity中对应类为SteamVR_Action_Pose);
++++[Skeleton]类型的动做可以获取用户在持握手柄控制器时的手指关节数据,经过返回数据,结合手部渲染模型,可以更加真实的呈现手部在虚拟世界的姿态,虽然不及像Leap Motion等设备获取手指输入那样精确,可是足以得到良好的沉浸感;(在Unity中对应类为:SteamVR_Action_Skeleton);
++立钻哥哥推荐的拓展学习连接(Link_Url):
立钻哥哥推荐的拓展学习连接(Link_Url) |
++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/
++++HTC_VIVE开发基础:http://www.javashuo.com/article/p-mhcdmelt-bt.html
++++Oculus杂谈:http://www.javashuo.com/article/p-unmgvyjw-ce.html
++++Oculus安装使用:http://www.javashuo.com/article/p-ulvvimkb-cr.html
++++SteamVR简介:http://www.javashuo.com/article/p-awcwwcaq-ea.html
++++OpenXR简介:http://www.javashuo.com/article/p-qgsgcamr-eu.html
++++VRTK杂谈:http://www.javashuo.com/article/p-gsryrkjk-eb.html
++++VRTK快速入门(杂谈):http://www.javashuo.com/article/p-bgvfnmia-cm.html
++++VRTK官方示例(目录):http://www.javashuo.com/article/p-dsnjffvq-ea.html
++++VRTK代码结构(目录):http://www.javashuo.com/article/p-wfilzqyd-es.html
++++VRTK(SceneResources):http://www.javashuo.com/article/p-ryptqvzl-hm.html
++++VRTK_ControllerEvents:http://www.javashuo.com/article/p-sciqvywx-hv.html
++++VRTK_InteractTouch:http://www.javashuo.com/article/p-ggucvtwz-hq.html
++++VR实验:以太网帧的构成:http://www.javashuo.com/article/p-fnfhdcgt-bp.html
++++FrameVR示例V0913:http://www.javashuo.com/article/p-xnlrngai-cw.html
++++FrameVR示例V1003:http://www.javashuo.com/article/p-ztazxpkv-bd.html
++++SwitchMachineV1022:http://www.javashuo.com/article/p-tqkoklov-s.html
++++PlaySceneManagerV1022:http://www.javashuo.com/article/p-tqkoklov-s.html
++++Unity5.x用户手册:http://www.javashuo.com/article/p-ufnzpmga-s.html
++++Unity面试题ABC:http://www.javashuo.com/article/p-mwacxwca-gm.html
++++Unity面试题D:http://www.javashuo.com/article/p-wuwcrclr-s.html
++++Unity面试题E:http://www.javashuo.com/article/p-hmabbtmc-ba.html
++++Unity面试题F:http://www.javashuo.com/article/p-olslkfao-cq.html
++++Cocos2dx面试题:http://www.javashuo.com/article/p-daozmsii-cz.html
++++禅道[zentao]:http://www.javashuo.com/article/p-rqsvjwtk-cz.html
++++Lua快速入门篇(Xlua拓展):http://www.javashuo.com/article/p-rrszijom-cm.html
++++Lua快速入门篇(XLua教程):http://www.javashuo.com/article/p-pduvmusb-ho.html
++++Lua快速入门篇(基础概述):http://www.javashuo.com/article/p-shernvtt-u.html
++++框架知识点:http://www.javashuo.com/article/p-eufbowgf-u.html
++++游戏框架(UI框架夯实篇):http://www.javashuo.com/article/p-cvemoigb-cu.html
++++游戏框架(初探篇):http://www.javashuo.com/article/p-zfpoilbc-hy.html
++++设计模式简单整理:http://www.javashuo.com/article/p-rngqugib-hg.html
++++专题:设计模式(精华篇):http://www.javashuo.com/article/p-nbohnaya-hw.html
++++U3D小项目参考:https://blog.csdn.net/vrunsoftyanlz/article/details/80141811
++++Unity案例(Vehicle):http://www.javashuo.com/article/p-wxnfscgy-dy.html
++++UML类图:http://www.javashuo.com/article/p-sxberuew-bm.html
++++Unity知识点0001:http://www.javashuo.com/article/p-ryvdxxjr-ep.html
++++Unity知识点0008:http://www.javashuo.com/article/p-kxgstxls-gu.html
++++U3D_Shader编程(第一篇:快速入门篇):http://www.javashuo.com/article/p-kyppgrac-gz.html
++++U3D_Shader编程(第二篇:基础夯实篇):http://www.javashuo.com/article/p-qkyowtli-hv.html
++++Unity引擎基础:http://www.javashuo.com/article/p-beommoeb-ka.html
++++Unity面向组件开发:http://www.javashuo.com/article/p-eigmuvut-dt.html
++++Unity物理系统:http://www.javashuo.com/article/p-nqvvciwv-kd.html
++++Unity2D平台开发:http://www.javashuo.com/article/p-ycaagdtj-hs.html
++++UGUI基础:http://www.javashuo.com/article/p-rukxwckw-mc.html
++++UGUI进阶:http://www.javashuo.com/article/p-wcatruhq-gt.html
++++UGUI综合:http://www.javashuo.com/article/p-dkccmqii-gg.html
++++Unity动画系统基础:http://www.javashuo.com/article/p-mbrdouxy-dq.html
++++Unity动画系统进阶:http://www.javashuo.com/article/p-aqaqpbkh-bp.html
++++Navigation导航系统:http://www.javashuo.com/article/p-dswwllas-t.html
++++Unity特效渲染:http://www.javashuo.com/article/p-ckojjyfj-bp.html
++++Unity数据存储:http://www.javashuo.com/article/p-bvlzynso-m.html
++++Unity中Sqlite数据库:http://www.javashuo.com/article/p-ejutsbxl-ca.html
++++WWW类和协程:http://www.javashuo.com/article/p-dbwmhsav-cy.html
++++Unity网络:http://www.javashuo.com/article/p-sqrlntgh-dw.html
++++C#事件:http://www.javashuo.com/article/p-zmwruvql-gm.html
++++C#委托:http://www.javashuo.com/article/p-uozpymaf-gh.html
++++C#集合:http://www.javashuo.com/article/p-sfqfdqsf-ex.html
++++C#泛型:http://www.javashuo.com/article/p-xrttqngo-ee.html
++++C#接口:http://www.javashuo.com/article/p-vhlfplgv-dm.html
++++C#静态类:https://blog.csdn.net/vrunsoftyanlz/article/details/78630979
++++C#中System.String类:http://www.javashuo.com/article/p-olslkfao-cq.html
++++C#数据类型:http://www.javashuo.com/article/p-hmabbtmc-ba.html
++++Unity3D默认的快捷键:http://www.javashuo.com/article/p-wuwcrclr-s.html
++++游戏相关缩写:http://www.javashuo.com/article/p-mwacxwca-gm.html
++++UnityAPI.Rigidbody刚体:http://www.javashuo.com/article/p-phaztrtw-w.html
++++UnityAPI.Material材质:http://www.javashuo.com/article/p-ntyoqcng-q.html
++++UnityAPI.Android安卓:http://www.javashuo.com/article/p-fyyfgkck-q.html
++++UnityAPI.AndroidJNI安卓JNI:http://www.javashuo.com/article/p-kvxjsnzf-w.html
++++UnityAPI.Transform变换:http://www.javashuo.com/article/p-bfgrrhxl-cq.html
++++UnityAPI.WheelCollider轮碰撞器:http://www.javashuo.com/article/p-smnaoooi-cn.html
++++UnityAPI.Resources资源:http://www.javashuo.com/article/p-utqnokva-bu.html
++++JSON数据结构:http://www.javashuo.com/article/p-dljbtddn-g.html
++++CocosStudio快速入门:http://www.javashuo.com/article/p-qldbaqqa-v.html
++++Unity企业内训(目录):http://www.javashuo.com/article/p-oefbctlf-mn.html
++++Unity企业内训(第1讲):http://www.javashuo.com/article/p-ehlblkrj-mc.html
++++Unity企业内训(第2讲):http://www.javashuo.com/article/p-tiecmlwc-ma.html
++++Unity企业内训(第3讲):http://www.javashuo.com/article/p-mlpucjnv-ma.html
++++Unity企业内训(第4讲):http://www.javashuo.com/article/p-vfalurum-kz.html
++++Unity企业内训(第5讲):http://www.javashuo.com/article/p-ncrckqey-kv.html
++++Unity企业内训(第6讲):http://www.javashuo.com/article/p-gcrucvtb-ku.html
++++插件<Obi Rope>:http://www.javashuo.com/article/p-rmhegsmj-kr.html
++++计算机组成原理(教材篇):http://www.javashuo.com/article/p-sejaldpf-kr.html
++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/
--_--VRunSoft:lovezuanzuan--_--