一、课程安排
二、虚拟现实概述
1.虚拟现实技术
虚拟现实技术(英文名称:Virtual Reality,缩写为VR),又称虚拟实境或灵境技术,是20世纪发展起来的一项全新的实用技术。虚拟现实技术囊括计算机、电子信息、仿真技术,其基本实现方式是以计算机技术为主,利用并综合三维图形技术、多媒体技术、仿真技术、显示技术、伺服技术等多种高科技的最新发展成果,借助计算机等设备产生一个逼真的三维视觉、触觉、嗅觉等多种感官体验的虚拟世界,从而使处于虚拟世界中的人产生一种身临其境的感觉 [9] 。随着社会生产力和科学技术的不断发展,各行各业对VR技术的需求日益旺盛。VR技术也取得了巨大进步,并逐步成为一个新的科学技术领域。 [1]
2.虚拟现实硬件技术产业链
3.虚拟现实应用领域
虚拟现实技术主要应用于教育、军事、工业、艺术与娱乐、医疗、城市仿真、科学计算可视化等领域。
由于能够再现真实的环境,并且人们可以介入其中参与交互,使得虚拟现实系统可以在许多方面得到广泛应用。随着各种技术的深度融合,相互促进,虚拟现实技术在教育、军事、工业、艺术与娱乐、医疗、城市仿真、科学计算可视化等领域的应用都有极大的发展。
传统的教育方式,通过印在书本上的图文与课堂上多媒体的展示来获取知识,这样学习一会儿就渐显疲惫,学习效果较差,然而玩过英雄联盟的同学都知道此游戏为什么如此吸引人,本质就是回到场景,参与其过程。
虚拟现实技术能将能将三维空间的事物清楚的表达出来,能使学习者直接,自然地与虚拟环境中的各种对象进行交互作用。并通过多种形式参与到事件的发展变化过程中去,从而获得最大的控制和操作整个环境的自由度。
三、HTC Vive
1.HTC Vive简介
2.HTC Vive主体硬件
3.HTC Vive主机配置
4.HTC Vive软件配置
Steam平台官网 store.steampowered.com/
5.Steam VR
1.Steam VR和OpenVR的关联
2.Steam VR支持的平台
3.Steam VR plugin目录结构
Plugins
/*这个文件夹存放一些Steam VR的信息*/
——penvr_api.bundle
——Contents
/*Steam VR底层的c++文件*/
——x86
/*SteamVR C#调用底层c++的接口*/
openvr_api.cs
SteamVR
/*这个目录下的脚本都是用来定制SteamVR插件中某些脚本在Unity中的Inspector界面及功能的*/
——Editor
/*定制SteamVR_Camera.cs这个脚本在Inspector中的显示效果*/
SteamVR_Editor.cs
/*定制SteamVR_RenderModel.cs脚本在Inspector中的功能*/
SteamVR_RenderModelEditor.cs
/*定制SteamVR_SkyBox.cs在Inspector中显示的属性*/
SteamVR_SkyboxEditor.cs
/*用来检查插件的更新*/
SteamVR_Update.cs
/*这个文件夹下面放着一些工具脚本*/
——Extras
/*这个脚本用来检测物体是否被用户所凝视*/
SteamVR_GazeTracker.cs
/*通过手柄指向来产生一条激光束*/
SteamVR_LaserPointer.cs
/*示例场景中扔物体的脚本*/
SteamVR_TestThrow.cs
/*示例场景中跟踪相机的脚本*/
SteamVR_TestTrackedCamera.cs
/*存放示例demo的材质体*/
——Materials
/*存放SteamVR预制体*/
——Prefabs
/*相机预制体*/
[CameraRig]
/*状态相关的overlay显示预制体*/
[Status]
/*SteamVR_Render预制体*/
[SteamVR]
/*一些自带的shader*/
——Resources
——Scenes
/*SteamVR核心脚本*/
——Scripts
/*SteamVR的封装类*/
SteamVR.cs
/*SteamVR的核心相机类*/
SteamVR_Camera.cs
/*SteamVR相机翻转*/
SteamVR_CameraFlip.cs
/*SteamVR相机网格隐藏*/
SteamVR_CameraMask.cs
/*声音控制类*/
SteamVR_Ears.cs
/*外部相机*/
SteamVR_ExternalCamera.cs
/*场景进行渐显或者渐隐的类*/
SteamVR_Fade.cs
/*跟踪设备的扫描范围*/
SteamVR_Frustum.cs
/*关节反身运动*/
SteamVR_IK.cs
/*场景切换类*/
SteamVR_LoadLevel.cs
/*菜单类*/
SteamVR_Menu.cs
/*overly封装类*/
SteamVR_Overlay.cs
/*运动区域*/
SteamVR_PlayArea.cs
/*Vive渲染流程控制的核心类*/
SteamVR_Render.cs
/*设置天空盒*/
SteamVR_Skybox.cs
/*做球形投影的类*/
SteamVR_SphericalProjection.cs
/*头盔上的前置相机*/
SteamVR_TrackedCamera.cs
/*跟踪设备管理类*/
SteamVR_TrackedObject.cs
/*工具类,包括事件系统,Transform等等*/
SteamVR_Utils.cs
/*常用的纹理*/
——Textures
复制代码
4.SteamVR中的动作(Action)
1.input动作编辑窗口
2. SteamVR的动作类型
3.添加一个新动作
5.将动作与控制器的按键进行绑定
设置默认值并添加fire动作并保存个人按键设置
打开InteractionSystem文件夹中的场景进行测试
打开测试窗口判断动作是否被绑定
6.通过脚本获取SteamVR2.x中动作的输入
1.基本Action类和动作类型的比较
2.脚本编辑监听动作变化
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Valve.VR;//引入StreamVR的命名空间
public class ActionDemo : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
//第一种方式使用动作类上的事件监听函数对动作进行监听
SteamVR_Actions.default_fire.AddOnStateUpListener(fireAttack,SteamVR_Input_Sources.Any);//参数一表示事件函数,参数二表示监听对应触发的控制器按键
//第二种方式使用添加事件的方式
SteamVR_Actions.default_fire.onStateUp += onFireAttack;
}
private void onFireAttack(SteamVR_Action_Boolean fromAction, SteamVR_Input_Sources fromSource)
{
print($"由事件处理,{fromSource}触发");
}
private void fireAttack(SteamVR_Action_Boolean fromAction, SteamVR_Input_Sources fromSource)//参数一表示获取到的动作,参数二表示触发的按键
{
print($"由事件处理,{fromSource}触发");
}
}
作者:用户8922541182901
链接:juejin.cn/post/720447…
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。