《VR入门系列教程》之22---GearVR SDK代码剖析
2016-05-09 16:35
211 查看
/article/8192912.html
SDK代码剖析
[align=left] 接下来我们来了解一下GearVR开发包的底层代码,它底层的代码和之前在第三章中讲的桌面SDK代码非常类似,当然,也有许多不同的地方。[/align]
[align=left] 首先,我们看看如何构建Unity场景。在开发包中有一个具有camera Rig的预设体,这个预设体提供了Oculus的立体渲染技术和GearVR配套的头动追踪技术。[/align]
[align=left] 将Hierarchy中的OVRCameraRig物体展开,它下面包含有一个TrackingSpace的子物体,TrackingSpace下面包含四个子物体:LeftEyeAnchor、CenterEyeAnchor、RightEyeAnchor和TrackerAnchor。其中,左右眼的Anchor是关键,选中其中一个然后再Inspector面板中可以看到它包含一个相机组件,这个相机组件具有一些默认值,有些值会在脚本代码中更新,下面我们来看看这些更新的代码。[/align]
[align=left] 再次选中OVRCameraRig物体,然后再Inspector面板中双击打开OVR Camera Rig脚本。脚本打开以后找到Update这个函数,如下:[/align]
[C#] 纯文本查看 复制代码
?
[align=left] 因为我们为安卓构建应用,所以#if语句判断为false,程序将采用Update函数,Unity在程序运行的每一帧都会调用这个函数。在我们的Update函数中首先调用EnsureGameObjectIntegrity函数以确保场景中包含所有必须的物体,如OVRCameraRig这个物体就是必须的。[/align]
[align=left] 确保程序正在运行之后,我们开始真正的更新操作。首先更新相机的参数,调用UpdateCameras函数用以更新两个眼睛的相机参数,代码如下:[/align]
[C#] 纯文本查看 复制代码
?
[align=left] 下面的代码是获取每个眼睛的相机参数函数:[/align]
[C#] 纯文本查看 复制代码
?
[align=left] 函数中,根据传入的参数相应地获取左右眼睛的相机参数,其中,我们具体看看下面一行代码:[/align]
[align=left]OVRManager.display.GetEyeRenderDesc(eye)[/align]
[align=left] [/align]
[align=left] OVRManager这个类是Oculus Mobile SDK的主要接口类,它负责与安卓原生代码交互,如果你对它内部的实现非常感兴趣,你可以回到Unity的编辑器中选中OVRCameraRig,然后打开它的OVR Manager脚本进行研究。至此,我们利用SDK作为黑盒获取了左右眼睛相机的参数,包括:FOV、屏幕尺寸比、视口、渲染目标以及是否支持HDR。[/align]
我们相机的基本参数已经设置好了,但是它的坐标和朝向必须通过GearVR头显获取,在UpdateAnchors这个函数中实现这个:
void
/article/8192912.html
SDK代码剖析
[align=left] 接下来我们来了解一下GearVR开发包的底层代码,它底层的代码和之前在第三章中讲的桌面SDK代码非常类似,当然,也有许多不同的地方。[/align]
[align=left] 首先,我们看看如何构建Unity场景。在开发包中有一个具有camera Rig的预设体,这个预设体提供了Oculus的立体渲染技术和GearVR配套的头动追踪技术。[/align]
[align=left] 将Hierarchy中的OVRCameraRig物体展开,它下面包含有一个TrackingSpace的子物体,TrackingSpace下面包含四个子物体:LeftEyeAnchor、CenterEyeAnchor、RightEyeAnchor和TrackerAnchor。其中,左右眼的Anchor是关键,选中其中一个然后再Inspector面板中可以看到它包含一个相机组件,这个相机组件具有一些默认值,有些值会在脚本代码中更新,下面我们来看看这些更新的代码。[/align]
[align=left] 再次选中OVRCameraRig物体,然后再Inspector面板中双击打开OVR Camera Rig脚本。脚本打开以后找到Update这个函数,如下:[/align]
[C#] 纯文本查看 复制代码
?
[align=left] 确保程序正在运行之后,我们开始真正的更新操作。首先更新相机的参数,调用UpdateCameras函数用以更新两个眼睛的相机参数,代码如下:[/align]
[C#] 纯文本查看 复制代码
?
[C#] 纯文本查看 复制代码
?
[align=left]OVRManager.display.GetEyeRenderDesc(eye)[/align]
[align=left] [/align]
[align=left] OVRManager这个类是Oculus Mobile SDK的主要接口类,它负责与安卓原生代码交互,如果你对它内部的实现非常感兴趣,你可以回到Unity的编辑器中选中OVRCameraRig,然后打开它的OVR Manager脚本进行研究。至此,我们利用SDK作为黑盒获取了左右眼睛相机的参数,包括:FOV、屏幕尺寸比、视口、渲染目标以及是否支持HDR。[/align]
我们相机的基本参数已经设置好了,但是它的坐标和朝向必须通过GearVR头显获取,在UpdateAnchors这个函数中实现这个:
private
void
UpdateAnchors()
相关文章推荐
- python reverse()方法
- Dual Palindromes
- java 垃圾回收机制
- 重读java编程思想之向上转型一
- 详解spring事务属性(总结的很好)
- 用eclipse运行java程序显示找不到main class,网上的方法都试了,还是不行,有没有知道怎么解决的呀!
- 加载离线的谷歌地图
- java获取当前操作系统
- 如何在Visual Studio和CodeBlocks中反编译C++代码
- eclipse 快捷键整理
- wamp中创建文件上传脚本php错误
- wxPython-多个按钮使用同一个回调函数
- 【C#】动态加载dll程序集
- 冒泡排序C++实现
- C语言的组成:32个关键词、9种控制语句、34种运算符
- Java 本地方法
- 解析C++中的5个存储类的作用
- C++文件读写
- java.util.Collections 空集合
- C#和C++除了语法上的差别外,还有什么其他的区别