您当前的位置:首页 VR开发 Unity 正文

Unity for Oculus 开发指南之三

查看: 4287| 评论: 0 2016-1-3 11:20 PM| 发布者: administrator |原作者: 夜行的猫仔

Unity组件

下面这个环节会告诉我们在脚本文件夹里的每个脚本大致上是做什么的。
OVRCameraRig
OVRCameraRig是一个控制立体感渲染和头部运动追踪的组件。它有三个子“锚点”分别提供左右眼位置的坐标,以及一个虚拟出来的在两眼“中间”的眼睛。
这个组件是Unity和这个摄像头之间主要的接口。这些都绑定在一个预制体上以便能更容易地把VR支持添加到场景里。
OVRManager
OVRManager是面向VR硬件的主要接口。它负责封装所有导出的C++功能,以及一个辅助功能,可以用储存的Oculus变量帮助调节摄像头的行动。
这个组件添加OVRCameraRig预制体里。它可以成为任何应用程序对象的一部分。不过它只能被declare一次,因为在Unityinspector里存在允许改变某些值的public成员。
OVRmanage.cs包含如下public成员:
Table 4: Mobile and PC Public Members移动和PC端的public成员
Monoscopic单屏 如果设置为true,那么渲染工作就会试图把原本对应俩眼的渲染方式优化成单视角。不能对应所有平台。
EyeTexture Format肉眼纹理格式 设置肉眼渲染纹理的格式。一般情况下你应该使用Default或者DefaultHDR来对应高动态范围渲染。
EyeTexture Depth肉眼纹理深度 设置肉眼渲染纹理的深度精度。有可能会用付出性能代价的方式来修复z-fighting效果。
EyeTexture Antialiasing肉眼纹理抗锯齿 为肉眼渲染纹理设置抗锯齿等级。

Table 5: PC-Only Public Members只在PC端独有的public成员
NativeTexture Scale原生纹理比例 camera controller里的每一个摄像头都会创建一个渲染纹理,有着能获得最清晰的像素密度的理想比例(一个1-to-1的像素尺寸能在屏幕中间展示透镜失真效果)。这个区域可以用来把一个摄像头的渲染对象从尺寸的角度调整到可以针对多个理想像素保真度的程度,以便让你能够在性能和质量之间找到平衡点。
VirtualTexture Scale虚拟纹理比例 如有必要,这个区域可以用来动态调整摄像头的渲染对象,以使其值低于理想状态下的像素密度,可以在运行时帮助降低GPU占用。
UsePosition Tracking 使用位置追踪 如果禁用,则由追踪器侦测到的位置坐标会停止更新HMD坐标。
UseRotation Tracking 使用旋转角追踪 如果禁用,则由追踪器侦测到的定向会停止更新HMD定向。
Mirrorto Display 镜像屏幕 如果Oculus直观显示驱动已被启用,而且这个选项也被选中的话,画面会在除了Rift之外的桌面窗口中出现。禁用这个选项会轻微提高性能。
TimeWarpdesktop only时间扭曲(仅供桌面)TimeWarp是一个调整经过渲染的图像在屏幕上显示位置的技术,当某个时间点用户能看到它的时候给予最后追踪姿态的情况作出调整。启用这个选项会强制执行垂直同步,并且会使其他时间上的调整的等待时间降低。
FreezeTime Warp(desktop only) 冻结时间扭曲(仅供桌面)启用这个选项会在时间扭曲时暂时冻结经过渲染的眼部姿态(renderedeye pose)来说明这个效果。
ResetTracker On Load 读取时重置追踪器 这个选项默认为True。关掉的话,在读取随后的场景时将不会重置追踪器。这样就可以在场景切换时保持原有的朝向了,同时会保持磁力计(magnetometer)设置完整。

Helper Classes
辅助类
除了上述组件之外,你的脚本还会经常通过OVRManager里的静态成员访问HMD状态。
OVRDisplay 提供HMD渲染时的状态以及姿态(pose)。
OVRTracker 提供姿态(pose)、视锥体,以及红外追踪摄像头的追踪状态。
OvrCapi
OvrCapi是一个LibOVR(亦称,CAPI)的C#封装。它把所有的硬件功能都展示出来,使你可以查询或设置那些追踪、渲染等一些能力。欲知详情请参考Oculus开发者指南和操作手册。
OVRCommonOVRCommon是一系列可重用的静态功能,包括了Unity和OvrCapi之间类型的转换。
Utilities公用部分
下列类都是可选的。我们提供这些东西是为了帮助你完成VR中的大部分工作,主要看你的应用需要哪些了。
OVRPlayerController OVRPlayerControllerVR框架实现第一人称视角的控制。它绑定在OVRPlayerController预制体上,同时捆绑的还有一个OVRCameraRig
在一个Unity场景下这个控制器会产生良好的互动效果,当然,需要场景为其分配一个碰撞检测。
OVRPlayerController包含了数个用滑块控制的变量,可以用来改变控制器的物理属性。包括了加速(玩家增速有多快)、抑速(当玩家停止输入移动指令时速度削减的快慢)、后方与侧方抑速(从后方和侧方加速的减慢速度)、旋转量(在Y轴上旋转玩家,按度数/帧计算)、以及重力调节计(当玩家在半空中时的下降加速度)。
当设置了HMD旋转Y时,实际上的摄像头的Y轴旋转角会采用其父变换矩阵(parent transform)的Y轴旋转值。
OVRPlayerController的预制体有一个空的GameObject叫做ForwardDirection。这个对象包含了一个矩阵,力的控制方向就是在它上面。这个对象同样用来放置玩家能看到的主体几何面
OVRGamepadController 这是一个接口类,连接游戏控制器。
windows系统下,游戏控制器必须是兼容X轴输入的。
注意:目前原生的兼容X轴输入的控制器都不支持Mac OS。碰到这种情况请使用传统的Unity输入方案来解决这个问题。
OVRMainMenu 用来控制不同场景间的读取工作。同时渲染出一个可以让玩家在VR框架中进行设置的菜单,同时允许把设置结果存起来以便今后使用。
使用这个组件的用户可以按照自己喜好添加各种场景进去。
为了方便起见,OVRMainMenu可以同时加进OVRCameraRigOVRPlayerController预制体中。
OVRCrosshair 是一个渲染和控制屏幕上的十字准线的辅助类。目前由OVRMainMenu组件来控制。
OVRGUI 是一个辅助类,不管2D还是3D的基础渲染文本,它都可以对其进行封装。
不推荐用2D版本的代码来渲染3D元素(在当前使用OVRMainMenu的时候)。
OVRGridCube 是一个辅助类,当它启用时会显示所有cube的网格。它的主要目的是用来为用户的视野位置找一个理想的中心点。当位置追踪启用时尤其有用。当位置数据可用时cube会变为红色,不可用时会保持蓝色,或者在失去视野时由红变蓝。
OVRPresetManager 是一个辅助类,当使用Unity PlayerPrefs类时可以用来储存一系列变量以供使用。
OVRVisionGuide 目前由OVRMainMenu组件来使用。

Oculus移动SDK实例
SDK实例项目(只包括在移动SDK中)里有比较有用的场景和功能。
要将其引入Unity,首先创建一个空的项目(具体过程省略)然后把SDKExamples.unityPackage部件导入到项目里。当然双击package也行。
导入之后,把原来Unity项目里的ProjectSettings文件夹用SDKExamples里的ProjectSettings文件夹替换掉。

52VR.COM微信扫一扫
52vr公众号
专注于VR的学习、开发和人才交流

52VR开发交流

相关推荐

已有 0 人参与

发表评论

您需要登录才可以回帖 登录 | 立即注册

手机版|VR开发网 ( 津ICP备18009691号 ) 统计 网安备12019202000257

GMT+8, 2020-6-2 05:41 AM

返回顶部