SteamVR简介(Yanlz+Steam+VR+Unity+AR+MR+XR+立钻哥哥+==)

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百度百科

++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系统(UnityUE等)调用OpenVRAPI来开发应用程序,还可在OpenVR中添加驱动来对接VR硬件

++++SteamVR平台主要是为VIVE服务的,可是它也兼容了OSVRRiftTouch的驱动

 

++OpenVR的API都是以C++接口类方式呈现

++++立钻哥哥:OpenVRAPI都是以C++接口类方式呈现的,并且都是纯虚函数

++++当应用程序初始化系统时,OpenVR会返回该应用程序所使用到的SDK头文件内相匹配的接口

++++OpenVR新发布的接口版本会兼容之前的接口版本,所以,应用程序没必要更新到最新的SDK也可正常使用

 

++SteamVR变得愈来愈开放

++++立钻哥哥:SteamVR变得愈来愈开放;愈来愈多的VR头显将“支持Steam”做为卖点之一

++++HTC最先拉上了Valve做为合做伙伴,不只因为SteamVR原本就是个现成的内容池,Valve对于VR软硬件的固有经验,也成为第三方开发商相继入驻的标杆

++++雷蛇OSVR最大的意义在于为第三方硬件商提供了捷径,新生产品可以迅速接入最具竞争力的平台

++++微软宣布Windows VR头显将所有接入SteamVR,这意味着与其合做的联想、宏碁、戴尔等老牌电子产品制造商也快速加入

++++Oculus RiftPSVR的封闭平台一直为人诟病;(Oculus几乎将钱都花在了游戏内容打造和独占签约上)

 

 

 

 

 

 

 

##A.二、SteamVR插件简介

##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错误汇总及原理解析

++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学习笔记

++A.四、SteamVR SDK学习笔记

++++立钻哥哥:分析SteamVR中各脚本的功能

 

 

 

 

 

 

 

 

 

##A.五、SteamVR2.0插件使用指南

##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种类型:BooleanSingleVector2Vector3PoseSkeleton等类型

++++[Boolean]类型的动做表明只有两种状态的动做:TrueFalse,好比抓取(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_ControllerEventshttp://www.javashuo.com/article/p-sciqvywx-hv.html

++++VRTK_InteractTouchhttp://www.javashuo.com/article/p-ggucvtwz-hq.html

++++VR实验:以太网帧的构成http://www.javashuo.com/article/p-fnfhdcgt-bp.html

++++FrameVR示例V0913http://www.javashuo.com/article/p-xnlrngai-cw.html

++++FrameVR示例V1003http://www.javashuo.com/article/p-ztazxpkv-bd.html

++++SwitchMachineV1022http://www.javashuo.com/article/p-tqkoklov-s.html

++++PlaySceneManagerV1022http://www.javashuo.com/article/p-tqkoklov-s.html

++++Unity5.x用户手册http://www.javashuo.com/article/p-ufnzpmga-s.html

++++Unity面试题ABChttp://www.javashuo.com/article/p-mwacxwca-gm.html

++++Unity面试题Dhttp://www.javashuo.com/article/p-wuwcrclr-s.html

++++Unity面试题Ehttp://www.javashuo.com/article/p-hmabbtmc-ba.html

++++Unity面试题Fhttp://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知识点0001http://www.javashuo.com/article/p-ryvdxxjr-ep.html

++++Unity知识点0008http://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安卓JNIhttp://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--_--