Unity3D SteamVR Plugin学习笔记

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity3D SteamVR Plugin学习笔记相关的知识,希望对你有一定的参考价值。

  • SteamVR Plugin插件使用。

在资源商店中下载最新的steamVR插件(https://kharma.unity3d.com/en/#!/content/32647)导入项目中。

  • 可能出现错误:

问题1

Failed to load IVRRenderModels interface version IVRRenderModels_005

技术分享

目前解决方法

Steam官方论坛的中有讨论到这个问题,请仔细看。https://steamcommunity.com/app/358720/discussions/0/357286663674402763/

  • SteamVR Plugin脚本分析

  • 技术分享

     

  • Assets/Plugins/openvr_api.cs 

 

这直接封装了steamvr SDK的支持。
是必须的脚本。它提供的所有功能steamvr暴露。不建议你做
更改此文件。应与相关的openvr_api DLL同步。

 

 

  • Assets/SteamVR/Scripts/SteamVR.cs 

 

系统的初始化和关闭。使用SteamVR.instance 访问。由于任何原因,如果初始化失败,则可能返回null。

  • Assets/ SteamVR / Scripts / SteamVR_Camera.cs VR摄像机,主要功能是将Unity摄像机的画面进行变化,形成Vive中的成像画面

 

 为了对抗畸变校正引起的拉伸,以更高的分辨率渲染场景。 由于Unity中的所有相机都是顺序渲染的,所以在每个 眼睛相机之间共享一个静态渲染纹理

SteamVR提供了一个特定的渲染目标大小,以减轻失真, 然而,渲染到更高的分辨率会在相关 费用下提供额外的多采样优势这可以通过SteamVR_Camera.sceneResolutionScale控制。

注意:GUILayer和FlareLayer与SteamVR_Camera不兼容,因为它们在屏幕空间 而不是世界空间中渲染

这些将自动移动SteamVR_GameView对象,该对象本身将自动 添加到SteamVR_Camera的父‘head‘对象。AudioListener也被转移到头部,以便 音频被适当的空间化。

  • Assets/ SteamVR / Scripts / SteamVR_Overlay.cs - 此组件用于协助在VR中呈现2D内容。

使用特殊的渲染路径将指定的texture合成到虚拟曲面上的场景中,以 提高保真度。

  • Assets/ SteamVR / Scripts / SteamVR_TrackedObject.cs - 将其添加到要使用跟踪的任何对象。

HMD有一个设置为自动。对于控制器,选择要映射到的对象的索引。一般来说, 您应该将这些对象加载到相机的“origin”对象,以便它们在相同的空间中跟踪。但是,如果 不方便,您可以在TrackedObject本身中指定“origin”。

  • Assets/ SteamVR /脚本/ SteamVR_RenderModel.cs -该组件用于渲染手柄的模型,并且跟踪手柄的位置
  • Assets/ SteamVR / Scripts / SteamVR_Utils.cs - 用于在Unity中使用SteamVR API的各种位,包括一个 简单的事件系统,用于处理向量/四元数对的RigidTransform类,矩阵转换和 其他有用的功能。
  • SteamVR_PlayArea 

    用于显示玩家可游玩区域。使用方法,在Origin物体上添加该脚本即可

  • SteamVR_ControllerManager和SteamVR_TrackedObject

控制器,主要用于设置和检测Vive控制器。

Vive控制器由菜单键(ApplicationMenu),触摸板(Touchpad),系统键/电源键(System),扳机键(Trigger),侧柄键(Grip),组成

使用方法:

在Origin物体上添加2个子物体代表Vive的2个手柄,增加SteamVR_TrackedObject,Index设置为None

在Origin物体上添加SteamVR_ControllerManager,设置左右手柄

技术分享

技术分享

在origin上再加一个子对象主相机作为head如图,加上steam vr_tracked object

技术分享

 

 

  • SteamVR_Controller  控制器的相关信息

 关于控制器的相关信息都包含在SteamVR_Controller这个脚本之中。注意:SteamVR_Controller是非Monobehavior的脚本,并没有挂在场景下,其运行是通过SteamVR_Render脚本对于其中Update()函数的调用从而一直循环获取手柄相关信息。

而SteamVR_Render脚本是在程序运行时自动加载至场景。

ButtonMask类:手柄各按键的名称。

Device类:最重要的类,封装了跟踪设备的全部信息。

Update()函数:被SteamVR_Render脚本调用,更新各跟踪设备的信息。

Input()函数:根据Index初始化Device[]数组,并实例化所有16个Device。

技术分享

详细SteamVR_Controller类内容可以参考博客:Unity SteamVR插件详解一:SteamVR_Controller脚本分析+Vive控制器功能开发

 



以上是关于Unity3D SteamVR Plugin学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D OpenVR SteamVR 点击菜单切换场景

Unity3D OpenVR SteamVR 在头盔视觉前面常驻文本

Unity3D OpenVR SteamVR 在头盔视觉前面常驻文本

Unity3D OpenVR SteamVR Input Action 动作

Unity3D OpenVR SteamVR 获取输入动作按键 交互设备数据方法

菜鸟在线教你用Unity3D开发VR版的Hello World