GVR-Cardboard_DayDream

google N 7.0的代码也发布了,抽空把之前的分析文档记录一下到博客~主要分析google在之前推出的VR SDK- CardBoard以及DayDream的结构组成,以及大体的运作流程

撰写不易,转载需注明出处:http://blog.csdn.net/jscese/article/details/52388325本文来自 【jscese】的博客!

概念

CardBoard:卡纸板,google早期推出的VR 开发集合,封装修改了Activity,GLSurfaceView 以及 Render等标准类的一层API,其中具体细致的实现封在so库中,用户使用CardBoard提供的jar包以及so,按照API的规则使用OPENGL实现特定函数即可开发VR程序

DayDream:白日梦,在CardBoard基础上的专业版,实现了更多的VR特性功能,如3D音效,全景视图,全景视频播放,控制器,封装的API和so也相应的增多,API更加有结构模块化。


CardBoard 结构分析

CardboardActivity

控制生命周期和初始化,应用的activity继承它就好,不需额外重写方法,特殊的操作CardboardActivity 中已做,activity还需要实现CardboardView.StereoRenderer回调接口:

public interface StereoRenderer {
    @UsedByNative
    void onNewFrame(HeadTransform var1);
    @UsedByNative
    void onDrawEye(Eye var1);
    @UsedByNative
    void onFinishFrame(Viewport var1);
    void onSurfaceChanged(int var1, int var2)
void onSurfaceCreated(EGLConfig var1);
    void onRendererShutdown();
}

CardboardActivity 继承android标准Activity的同时,实现SensorListener 的接口:

public interface SensorListener {
    void onInsertedIntoCardboard(CardboardDeviceParams var1);

    void onRemovedFromCardboard();

    void onCardboardTrigger();
}

这个SensorListener实现在cardboard.jar 包中com.google.vrtoolkit.cardboard.sensors ,获取hw 相关sensors event 触发回调
真正的实现交给到 cardboardView,由应用activity通过CardboardActivity 的setCardboardView(..)接口进行绑定


CardboardView

继承自GLSurfaceView, 有两种不同的renderer接口实现 通过cardboardViewApi往下设置直到配置到native层,返回Renderer 设置到GLSurfaceView中,
形成回调,由android GLSurfaceView引起的回调要先到native层中处理,再到activity中的具体实现,就是上面最先提到的activity中实现的StereoRenderer接口,封的一层renderer在:com.google.vrtoolkit.cardboard. CardboardViewNativeImpl 中的RendererHelper


CardboardViewApi

由上面的两个封装接口看来,最终的接口基本上是通过这个api类调用到native 库中去实现,包括sensor事件引起的view变化处理,activity的一些控制处理 等等


DayDream 结构分析

相对Cardboard ,可以理解为升级版,封装更为系统全面,功能更多,封装的包及库有:
com.google.vr.sdk.base – libgvrbase.so
com.google.vr.sdk.audio – libvraudio_engine.so
com.google.vr.sdk.controller
com.google.vr.sdk.widgets.common
com.google.vr.sdk.widgets.pano – libpanorenderer.so
com.google.vr.sdk.video – libpano_video_renderer.so

从包名就能看出主要的封装功能,同时每个往下也是调用对应的native库
包中详细接口含义可参考:https://developers.google.com/vr/android/reference_overview

原来的Carboard 相当于base的精简版,其它的都为新扩充

下载到的GVR-SDK 中的sample 使用gradle构建工程,可以分别看到扩充功能对android api的要求:
com.google.vr.sdk.controller – minSdkVersion 23
其它的 – minSdkVersion 19

封装的方式其实和Cardboard大同小异
CardboardActivity 换成了通用的GvrActivity
CardboardView 换成了 GvrView
cardboardViewApi 在延用,做了一些改变,扩充了一些接口

新增的封装功能有:

3D音乐

com.google.vr.sdk.audio.GvrAudioEngine
普通的加入方式,开个线程,加载source音乐文件startplay即可,控制往下的实现全封在vraudio_engine 库中

控制器

是以一个client 一个service 来进行通信,由com.google.vr.sdk.controller.ControllerManager
来管理connect statechange event等,应该是后续应用于控制交互,给的用例只是一个client程序,没看出怎么个效果, 这部分在现有的sdk中内容应该不全,连native库都没有,估计要等android N 之后才会看到完整的

全景视图

封装的VrPanoramaView,基于com.google.vr.sdk.widgets.common.VrWidgetView
VrPanoramaRenderer基于:com.google.vr.sdk.widgets.common.VrWidgetRenderer
首先loadImageFromBitmap 到VrPanoramaRenderer中,
由这两个Wiget类构建出基于sensor event 和Bitmap来 queueGlThreadEvent ,实时的图片内容绘制,起到一个全景的效果, 关键性的函数实现必然是 nativeXXX的

全景视频

封装处理结构基本类似上面的全景视图,上面是处理的 image ,这里换成了 video
提供两个load接口:本地:loadVideoFromAsset 网路:loadVideo(uri)
VrVideoPlayerInternal 来控制vedioplay
VrVideoView以及VrVideoRenderer结构基本雷同PanoramaXXX

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
5GVR直播平台应用是指利用5G网络技术与虚拟现实技术相结合,为用户提供更加沉浸式的直播体验的平台。通过5G网络的高速传输和低延迟特性,用户可以在虚拟现实环境中实时观看各种直播内容,包括体育赛事、演唱会、游戏实况等。 首先,5GVR直播平台应用可以为用户提供更高清、更流畅的直播体验。由于5G网络的高速传输和低延迟,用户可以在虚拟现实环境中观看直播内容,感受到更真实、更细腻的画面和声音,使观看直播的体验更加震撼和沉浸。 其次,5GVR直播平台应用可以为用户带来更多元化的直播内容。虚拟现实技术可以更好地还原现场的氛围和场景,用户可以在虚拟现实环境中感受到身临其境的直播体验,不仅可以观看比赛、演出等活动,还可以与其他观众进行互动,使直播内容更加生动有趣。 另外,5GVR直播平台应用还可以为内容提供者和广告商带来更多商业机会。通过5GVR直播平台,内容提供者可以提供更多创新的直播内容,吸引更多用户关注和参与,从而提升用户粘性和平台价值;而广告商也可以通过虚拟现实环境中的广告植入实现更直观、更有趣的广告展示,提升广告效果和用户参与度。 总的来说,5GVR直播平台应用将为用户带来更加震撼、生动和互动的直播体验,同时也为内容提供者和广告商带来更多商业机会,是未来直播行业的重要发展方向。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值