HTC VIVE 开发实例教程

310+付费学员加入,21天掌握VR开发技术

默认教学计划
318人加入学习
(28人评价)
价格 ¥ 199.00
教学计划

瞬移:

 都要加box collider

自适应瞬移:

 VRTK_Height Adjust Teleport

 

 

[展开全文]

获取准星容器

控制准星图片

击中的目标:ray raycasthie physice

位置、缩放、法线向量

解决表面闪的问题:shader使用:新建一个(材质)Materil,将shader放到材质上,然后将材质的shader设置成UI->Overlay,然后拖到Image上

凝视激活

Time.deltaTime//当前帧与上一帧间隔的时间

EventSystems//模拟鼠标进入事件

//ExexutrEvents.Exexute(gameObject, new PointerEventData(EventSystem.current), ExecuteEvents.pointerExitHandler);

 

[展开全文]

GUIReticle--准星工具

准星设置成相机的子物体

 设置ImageType 脚本控制FileAmount.注意颜色可透明度。  

 代码控制的时候注意跟新时间

[展开全文]

交互:

  获取按钮事件

   Standard Assets导入(这是一个便利资源)。

   获取手柄设备

   手柄加碰撞体;获取碰撞体,物体添加刚体

   获取手柄按钮

   OnTriggerEnter

device.GetPressDown(SteamVR_Controller.ButtonMask.Trigger)

   OnTriggerExit

debvice.GetPressUp(SteamVR_Controller.ButtonMask.Trigger)

   抓取:将物体刚体false,物理力学开启

   松开:将物体刚体true,物理力学关闭

   手柄碰撞震动:

   OnTriggerStay    device.TriggerHapticPulse(震动时间);

   

[展开全文]

简介:

  SteamVR 在 OpenVR 上层。基于OpenVR API。

  工具 SteamVR Plugin 可在商店下载。

  CameraPig包括两个手柄和一个相机(头盔)

 

  

[展开全文]

任务40

1、开关门:

  继承VRTK,重写StartUsing,调BoxCollider位置,手柄添加VRTK_InteractUse(碰触)或者用VRTK_Pointer(激光)(开启Interact With Objects)

2、抓取:

  Window->VRTK->Setup Interactabel Object设置高光,可抓取,一直抓取,设置“Track Object”  box Collider,精确抓取“Precision Grab”

  

 

 

  

 

[展开全文]

VRTK简介

可实现的功能:

1、支持steamVR、oculus sdk

2、VR模拟器不需要VR硬件即可调试

3、基于头盔和手柄的激光指针

4、基于头盔和手柄的曲线指针

5

[展开全文]

UI交互、手柄按钮高亮及文字提示

1、按钮点击基于Collider,一般放置BoxCollider

 2、UIElement类:在ineractionsystem中实现UI的交互,必须挂在此脚本以标记为可交互的UI

3、按钮一般事件为OnHandClick,手柄点击Trigger键激活

4、ControllerButtonHints类:调用一系列静态方法实现按钮高亮、

[展开全文]

出现场景:

1、菜单

2、游戏元素ui,如血条,生命值,剩余时间

3、对话框

4、提示信息

5、十字光标

 

vr中的UI一般构件步骤

1、新建canvas

2、render mode改为world space

3、修改缩放

4、修改Dynamic pixel per uint

5

[展开全文]

steamVR Interaction System(交互系统),是从the Lab游戏中提取出的。

有时间查看下光照渲染插件:the lab renderer

 

[展开全文]

hinge joint 铰链节点 spring(弹簧)回弹

vrtk_rotator track grap attach

开门

[展开全文]

Player.instance.bodyDirectionGuess

//对人身体方位的估算

hand下面的starting Hand Type需要设置左右,用于替换手模型后

 

 

 

 

[展开全文]

凝视效果:当视线悬停上按钮上实现选择

[展开全文]

一、实现配套物体同时抓取

1.ItemPackage:交互过程中用到的。

起到一个类似于列表的作用,用于表示各种情况的gameobject。

2.ItemPackageSpawner:实现交互效果的逻辑,基于生成机制。确定物体属于哪个package

碰撞逻辑机制。

3.ItemPackageReference:设定物体与组织的关联

二、大体过程

在原处拥有一个预制体,做预览作用。

碰撞之后,产生一个轮廓。

抓起物体之后,原地留下一个轮廓,以及其他配套操作。

三、实例演示。

1.在台面上建立一个球体sphere。主要应用他的collider,添加ItemPackageSpawner脚本。

2.新建一个空物体作为ItemPackage列表,添加ItemPackage脚本。属性说明:

package type:设置单手持握还是双手持握。

item prefab:物体

other hand item prefab:设置双持握时另一只手的物体

preview:放回原处的预览效果

faded:轮廓的prefab

 

[展开全文]

1.给物体添加interactable组件,则物体可以感应手柄的动作。

2.摄像机只能用player。

3.interactable Hover Events悬停事件。

4.MashRenderer—Material materiak切换材质。

5.interactable buttons Hover Events按钮按下的事件。

6.throwable脚本  再添加了player以后将其附在物体上就可以实现抓取投掷。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  

[展开全文]

1.编写代码,命名GazeController,将程序挂载到canmera(eye)上。

2.编写代码。

3.为了使准星碰撞到盒子上的时候不闪烁,为准星添加一个shader材质,在VR Samples终有所提供。

4.在_Material中新建一个material,起名UIMat。

5.新建一个文件夹_Shader,将UIOverlay放入。

6.修改UIMat的shader属性为UIOverlay。这样就做好了这个材质。

7.将UIMat拖入到reticleimage与background中的material中。这样便不会闪烁。

8.创建一个script,命名VRGazeItem。

9.编写完GazeController脚本之后,给UI和3D物体分别添加标签,UI添加GazeUI标签,给3D物体添加Gazeobj标签。

[展开全文]

实现凝视效果

1.导入steamVR 添加地面和盒子。

2.创建一个canvas,修改为world space,修改缩放scale(实例改为了0.03,0.03,0.03)。

3.修改位置transform(0,0,0)以及大小width(200)和height(200)。

4.给canvas添加一个button,修改canvas的分辨率Dybanic Pixels per(3)。

5.从steamvr中将camerarig拖到Hierarchy中,删除maincamera。

6.凝视效果基于射线的原理,为了响应射线的事件,为所需要的物体添加collider,调整大小适应物体。

7.由于此时的需求是达到激活条件时给盒子添加一个力,所以此时在盒子上添加一个rigidbody。

8.之后需要添加准心,(资料中已经准备好(GUIReticle),直接加到project中),只是想将其作为一个图片,设置Texture Type为sprite(2D and UI),这样便能将其只作为一个图片(image)显示。

9.在project中创建新文件夹分别存放材质material,程序script,以及图片texture。

10.设置准心。要将准心设置为相机的子物体。在camera(eye)中创建一个canvas,调节大小,然后在其中添加一个image,并将canvas归零(xy归零),使其和相机在同一位置。

11.重命名image为reticle,复制一个reticle并且命名为Background作为reticle子物体。

12.将准备好的准心拖入到reticle与Background中,(Source Image)。

13.设置远近,使准准心位置合适。

14.制作效果。image type改为filled,通过改变fill amount来达到效果。

14.将background的color中的A改为一半

[展开全文]

本节内容:实现基本的交互,抓取。并且在触碰时发生震动。

得到位置数据或者利用数据进行操作。

[展开全文]