环境配置

在本篇文章中,我们将重点介绍通过Unity3D来对HTC Vive进行基础的环境配置。
在这个系列的前几篇文章中都是为了之后的开发做准备工作。

HTC Vive

进行VR开发的前提是你要有一套VR硬件设备,这里我们选用HTC Vive Pro专业版,其他版本的HTC Vive系列配置方法类似。

另外,VR对电脑配置的要求很高,要求大致如下:
GPU(图形卡):NVIDIA GeForce® GTX 970 / AMD Radeon™ R9 290 同等或更高配置
CPU(处理器):Intel® i5-4590 / AMD FX 8350 同等或更高配置
RAM(内存):4GB或更多
Video 视频输出:HDMI 1.4或者DisplayPort 1.2或更高版本
USB 端口:1个 USB 2.0或更高版本的端口
操作系统(OS):需要Windows7 64位、Service Pack 1或更新的Windows操作系统

一套完整的HTC Vive Pro设备包括一个头戴式显示器,两个操控手柄,两个SteamVR定位器以及各种数据线和充电插头。

硬件安装方法可以参考HTC Vive的官网下载Vive设置向导,这里就不再赘述。

Unity

在所有硬件配置完成之后,需要下载Steam和SteamVR应用程序。之后的开发需要用到SteamVR和Unity的SteamVR库。事实上,如果不使用Unity的SteamVR库依然可以开发VR应用程序,但是使用SteamVR库的最大优势是头戴式显示器之间的跨平台兼容性。在之后的部分我们将具体叙述SteamVR插件库中的内容。

现在我们要正式创建一个SteamVR Unity 3D项目。
首先,新建一个Unity3D项目,从Asset Store中下载并安装Steam VR的插件,并打开SteamVR应用。

点击Import,Unity将开始导入SteamVR资源库。

Unity的一些默认设置并不适用于SteamVR,该窗口会提示你需要更改的设置以及它们需要被更改成什么样。
根据提示点击Accept All即可自动更改项目设置。

弹出如下对话框即为导入成功。

点击OK后,之后会弹出一个对话框(如果没有可以在Window一栏中找到SteamVR Input调出)

点击Yes,将默认的**“SteamVR Input JSON”**文件以及一些常见的控制器相关绑定文件复制到当前项目的根目录下。

复制完成后,SteamVR Input窗口将读取文件信息并展示其包含的动作集合以及动作集合下的所有动作。这些操作和绑定提供了一些默认的可以帮助交互系统工作手柄手势,同时还可以自定义添加或删除手柄动作。点击 Save and generate,此时保存了你的操作并且生成了一些类用来初始化这些默认操作,并且可以在编辑器中通过SteamVR API直接访问。

同时,Assets面板中出现了两个新的文件夹:SteamSteamVR_Resources。它们包含了所使用硬件的API、所有的代码、预制体模型以及示例。

在基础装置中,VR摄像机无疑是核心装置。

SteamVR文件夹中找到Prefabs文件夹,在其中找到名为[CameraRig]的预制体,拖动[CameraRig]到Hierarchy面板的空白处,即将VR摄像机的组件添加到场景中。同时删掉原本存在的主摄像机MainCamera,避免与VR摄像机产生冲突。下面我们来简单介绍[CameraRig]中包含的组件。


[CameraRig]游戏对象本身包含一个名为SteamVR_PlayArea的组件,该组件允许用户在移动的区域进行蓝框绘制。

下面两个子控件Controller (left)Controller (right) 类型相同,并在一定情况下可互相替代。它们在HTC Vive虚拟世界中渲染模型来显示控制器的位置。这两个游戏对象上包含一个SteamVR_Behaviour_Pose组件,用于设置转换的位置和旋转。在它们下面还各有一个叫做Model的GameObjects,它包含了SteamVR_RenderModel组件。它有几个成员包括索引、模型覆盖、着色器、详细、创建组件、动态更新用于渲染模型。

在使用时,硬件装置可以感知控制器是否连接,如果未使用控制器并不会产生任何错误。如果不使用控制器的情况下,Controller游戏对象也不会影响性能。

在之后是Camera组件,这是组成GameObject系统的主要部分。在右侧Inspector面板中点击Add Component添加组件SteamVR_Camera,Camera组件被分为了Camera(eye)Camera(head) 两个控件,同时 Camera(head) 还带有一个名为 Camera(ears) 的子控件。

Camera(head)包含一个名为SteamVR_TrackedObject的组件,SteamVR_Tracked对象的索引字段设置为头戴式显示器。Camera(head)游戏对象将与头戴式显示器一同移动,SteamVR_TrackedObject组件会确保摄像机装置的顶部位于正确的位置,模拟现实世界中头戴式显示器的位置。

Camera(eye)中我们可以看到实际头戴式显示器中的虚拟世界,它与Camera(head)位置相同,类似于现实世界中头和眼睛的关系,但它拥有用于渲染视图主要部分的Camera组件。它是我们添加依赖于视图的组件的地方(比如标注图像来定位的组件或者LookAt函数),其中它包含了SteamVR_Camera组件,可以用于处理视图并将其发送到SteamVR并渲染呈现给头戴式显示器。

最后是 Camera(ears)游戏对象。它是音频接收的部分,处理场景中的听觉问题并将听到的内容传递给音响系统。它包含了一个SteamVR_Ears的组件,当使用扬声器时,它将匹配到音频监听器。利用OpenVR库中的一个属性来判断是否在使用扬声器。

以上就是全部最基础的环境配置,此时按下Play按钮并带上VR头戴式显示器便可预览场景,将手柄拿到视野中也可以看到手柄的位置。

基于Unity的HTC Vive虚拟现实交互开发(一)环境配置相关推荐

  1. #HTC VIVE #进行VR开发的环境

    因为一些原因,要求上周的博客缺了一篇,于是在这周补上.好了,让我们开始吧. HTC VIVE 开发中最重要的基石是steamVR,只有充分理解steamVR,才能在开发中得心应手,创造最佳的虚拟现实体 ...

  2. 基于Unity的2D小游戏 SpeedDown 开发笔记(学习bilibili@[M_Studio]的教学视频

    基于Unity的2D小游戏 SpeedDown 开发笔记(学习bilibili@M_Studio的教学视频) 主要内容:在Sunnyland游戏的设计基础上,新增了物理组件Joint系列.DrawGi ...

  3. 基于Unity的多人协作游戏开发

    基于Unity的多人协作游戏开发–第一次迭代 小组成立与大型应用软件设计第一周课堂,小组由一共5名成员组成,由王虎林担任组长,组员分别是:陈志健 李子钊 杨捷 林博韬.下面将是我们第一次迭代的主要历程 ...

  4. oculus integration+unity 开发入门——环境配置笔记

    oculus integration+unity 开发入门--环境配置笔记 一.Unity2019安装 二.Android Studio安装 Unity环境配置 一.Unity2019安装 我采用的是 ...

  5. Jenkins——Jenkins介绍+基于云平台的Jenkins安装和持续集成环境配置(插件+用户权限+凭据+Maven打包)

    Jenkins--Jenkins介绍+基于云平台的Jenkins安装和持续集成环境配置(插件+用户权限+凭据+Maven打包) 持续集成及Jenkins介绍 软件开发生命周期 什么是持续集成? 持续集 ...

  6. 基于Ubuntu 18.04机器人操作系统环境和深度学习环境配置

    基于Ubuntu 18.04机器人操作系统环境和深度学习环境配置详解 CUDA+Cudnn+ROS+anaconda+ubuntu装机必备 笔记本双系统安装 U盘启动项安装ubuntu18.04.1 ...

  7. 基于webrtc的远程控制系统设计与实现——设备端环境配置

    一.配置前准备 下载一个虚拟机,如:VirtualBox或VMWare,并且下载一个Ubuntu 64的镜像文件,Ubuntu是一个以桌面应用为主的Linux操作系统,该镜像文件用于在虚拟机上配置该操 ...

  8. Eclipse开发PHP环境配置

    Eclipse开发PHP环境配置 首先准备好软件: 1. Apache,到这里找个最新版本 2. PHP,到这里下载 3. Eclipse IDE for Java EE Developers,到这里 ...

  9. Unity +HTC VIVE 虚拟现实开发— 手柄控制

    <p>Hello 大家好,我是帅气的交换机,这是我人生中第一次写博客,但绝不是最后一次,哈哈,想想都好激动啊.</p><p>言归正传,写这篇文章的原因主要是因为现在 ...

最新文章

  1. 雷军 1994 年写的代码,经典老古董~
  2. Can't use asio::placeholders::error
  3. 田志刚:人跟人差距怎么那么大呢?
  4. 机器学习笔记 时间序列预测(最基本的方法【benchmark】)
  5. java xml 节点换行_Winform中对xml文件进行保存时空白节点自动换行问题的解决
  6. Windows server 2008 r2企业版安装步骤
  7. eclipse mysql5.7_MySQL5.7、Navicate、jdk、Tomcat、eclipse全套配置及安装(win10)-Go语言中文社区...
  8. [译]Go如何优雅的处理异常
  9. Python切片各种情况详解
  10. java 工厂模式的写法_java工厂模式三种详解
  11. java线程画动图闪,Android中利用画图类和线程画出闪烁的心形,android心形,package com....
  12. 高级文件系统管理——Linux基本命令(15)
  13. 【GitHub】README.md文件中 markdown语法 插入超链接
  14. “知识付费”的分类及传播特征
  15. 谷物割捆一体农用车系统整体设计
  16. 在LINUX环境下怎样设置无线网络配置
  17. python sasl_python用sasl的方式连接ldap提示
  18. Openvpn搭建并使用用户名密码登录
  19. RK3588 实现温控风扇之获取cpu温度(一)
  20. 黄河小浪底调水调沙问题(mathmatica)

热门文章

  1. 关于IT行业人员吃的都是青春饭?
  2. 超强大的dnsmasq及hosts全自动脚本扶墙去广告详细教程
  3. html5 便签墙,自己制作画毡墙
  4. 【ShapeWorks】2. 工作流的三板斧 - How to Groom Your Dataset?
  5. 解决:Word 不显示 EndNote 插件(Word 插件不显示问题通用)
  6. scada如何用oracle数据库,SCADA系统数据库存储功能设计及应用
  7. 离散数学:集合论的代数化样例
  8. OpenWRT使用iptables设置只允许MAC地址对应设备访问局域网
  9. windows 无法删除文件,没有操作权限,右键文件属性查看安全-不可用
  10. 路缘石滑模机对于公路施工的适用性分析