一、初识GVR (Google VR for Android)

原文链接:
http://blog.csdn.net/qq_24889075/article/details/52118633
http://www.jianshu.com/p/09c0822b9d1e

相关阅读:
二、制作VR全景图播放器 (Google VR for Android):http://www.jianshu.com/p/104251a3153d
三、制作VR视频播放器 (Google VR for Android):http://www.jianshu.com/p/82163453ed30

业余时间充足,于是想弄点自己的东西,找来找去还是回到当初感兴趣的VR。目前好像没有太多关于VR方面的教程,于是有了写‘学习笔记’的想法。说干就干~ 不喜勿喷O(∩_∩)O哈哈~

本文纯属个人学习阶段所产生观点,欢迎斧正。

Welcome to VR at Google


进入Google VR主页,发现官方给我们提供了两套解决观看VR视频的方式:

  1. Daydream
  2. Cardboard
    给我们提供了三个平台的API,分别是:Unity 3DAndroidIOS

下面看一下官方给这两种方式的描述(英语不好,大概意思应该是我翻译这样的)

Daydream

Daydream is a platform for high quality, mobile virtual reality.

白日梦是高质量,移动虚拟现实的平台。在主页上方官方也描述它为:低延迟,身临其境的,互动的移动VR的新平台

Cardboard

Cardboard lets you experience virtual reality in a simple, fun, and affordable way.

纸板可以让你在负担得起的情况下,体验一个简单,有趣的虚拟现实。在主页上方官方也描述它为:是世界上最流行的和方便的移动VR平台(可能是经济成本低吧)


神秘链接


查阅网上的资料发现:

2014年:Google在当年的Google I/O大会上宣布,其将开发纸盒版的HMD(头盔式显示器),年底该设备销量达到了50万。

2015年:Cardboard被大公司所接受,Google将那些刻上了品牌商标的Cardboard分发给了各大合作商,消费者继续购买主题化的HMD。此时,Cardboard的发展又到了另一个高度:销量达到100万。

2016年:在今年的Google I/O大会上,Google宣布Cardboard销量已达到500万部,但与此同时,Google推出了Daydream——一个更高级的移动VR HMD,并将于今年11月进入市场。如今市场上已经产生了成千上万的Cardboard应用,Google Play store上的Cardboard app安装量达到50万至100万次。

个人感觉这位小哥说的很对:
Daydream is a much higher end VR experience. I have Cardboard, and it's neat, but in some ways, it feels like a tech demo. (白日梦是一个更高的终端虚拟现实体验。纸板,它很简洁,但在某些方面,感觉技术演示。)

那么就此看来,应该是这样的情况:Cardboard是Google先推出的简陋版/测试版/经济适用版,现在占用了很大市场;Daydream 是今年新推出的豪华版/完善版/高端玩家版,会冲击Cardboard的市场。也就是说Cardboard短期不会死 ,Daydream还在发展中。

第一个例子

先看看Google给我们提供的第一个例子:寻宝

首先下载Demo,Github

也可以直接 git clone https://github.com/googlevr/gvr-android-sdk.git

项目(gvr-android-sdk )中有几个主要目录可以留意一下:

  1. libraries
  2. ndk-beta
  3. samples

samples目录中有四个Demo,分别是:

  1. SDK-controllerclient(Daydream的控制端)
  2. SDK-simplepanowidget(全景图)
  3. SDK-simplevideowidget(全景视频 也就是VR视频)
  4. SDK-treasurehunt(寻宝项目)这个是我们想要的,其他暂时不要管

OK,导入AS中先啥都不要管,直接运行一下treasurehunt吧,(突然发现要API>19, 手机刚好19
_)。

我们看下效果:

刚进来(手机不动)
竖屏
点击切换
横屏
当我们屏幕中心(目光)对准到立方体

我们此时点击立方体,立方体会消失~ 并且震动一下来提示你。
(慢放 录了十多遍,凑合看吧 抱歉啦)


看下效果图

寻宝(treasurehunt)代码分析

官方寻宝项目介绍 https://developers.google.com/vr/android/samples/treasure-hunt

首先我们看下Manifest里都有什么

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.google.vr.sdk.samples.treasurehunt"
          android:versionCode="1"
          android:versionName="1">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.NFC" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    <!-- Make accelerometer and gyroscope hard requirements for good head tracking. -->
    <uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true"/>
    <uses-feature android:name="android.hardware.sensor.gyroscope" android:required="true"/>

    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="22"/>
    <uses-feature android:glEsVersion="0x00020000" android:required="true" />

    <!-- VR feature tags. -->
    <uses-feature android:name="android.software.vr.mode" android:required="false"/>
    <uses-feature android:name="android.hardware.vr.high_performance" android:required="false"/>

    <application
            android:allowBackup="true"
            android:supportsRtl="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name">
        <activity
                android:name=".TreasureHuntActivity"
                android:label="@string/app_name"
                android:screenOrientation="landscape"
                android:configChanges="orientation|keyboardHidden|screenSize" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="com.google.intent.category.CARDBOARD" />
            </intent-filter>
        </activity>
    </application>

</manifest>

貌似也没什么特殊说明的,只要了几个权限(INTERNET、NFC、VIBRATE、READ_EXTERNAL_STORAGE),过滤了一些不支持硬件的设备(accelerometer、gyroscope、glEsVersion等),然后就是intent-filter中添加了

<category android:name="com.google.intent.category.CARDBOARD" />

下面看treasurehunt的build.gradle的主要内容

dependencies {
    compile project(':libraries-audio')
    compile project(':libraries-base')
    compile project(':libraries-common')
}

发现依赖了三个库libraries-audio、libraries-base和libraries-common。
经过查阅官方文档发现他们的功能:

    audio库 //三维空间化的声音库。对应com.google.vr.sdk.audio包
    
    base库 //Google VR核心的 API。对应com.google.vr.sdk.base包

    common库 //通用库。没有找到对应包的介绍,但实际这个库下有三个包分别是com.google.protobuf.nano、com.google.vr.*、com.google.vrtoolkit.cardboard。

在看看其他的库都是干什么的(库的详细介绍请看官方文档):

    controller库 //Daydream的控制器所在库。对应com.google.vr.sdk.controller包
    
    panowidget库 //Google为我们提供 播放VR全景视图的控件 所在库。对应com.google.vr.sdk.widgets.pano包
    
    videowidget库 //Google为我们提供 播放VR视频的控件 所在库。对应com.google.vr.sdk.widgets.video包
    
    commonwidget库 //播放VR视频控件和播放VR全景视图的控件的共有库(服务于pano 库和video 的)。对应com.google.vr.sdk.widgets.common包

接下来看 TreasureHuntActivity(主Activity),由于代码太多我就不贴了。

我们发现TreasureHuntActivity是继承了GvrActivity(GvrActivity在com.google.vr.sdk.base包下)实现了GvrView.StereoRenderer接口(StereoRenderer在com.google.vr.sdk.base.GvrView下)。

GvrActivity:是使用谷歌VR SDK制作应用程序的起点。GvrActivity是base activity,提供与谷歌轻松集成虚拟现实设备。它暴露事件的VR环境进行交互和处理了许多创造VR渲染一个活动时通常需要的细节。

GvrView.StereoRenderer接口:为所有委托立体渲染细节视图渲染。因为他们通常不使用提供的转换参数实现者应该简单地呈现视图。所有的立体渲染和失真校正的细节与渲染抽象和视图内部管理。
GvrView:可用于VR渲染。GvrView渲染立体声内容

TreasureHuntActivity的布局文件是common_ui.xml
里面只有一个控件

  <com.google.vr.sdk.base.GvrView
        android:id="@+id/gvr_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"/>

那么Gvr在Activity中应该是如合初始化的呢?请看:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.common_ui);
    GvrView gvrView = (GvrView) findViewById(R.id.gvr_view);
    // 将 gvrView和GvrView.StereoRenderer 关联
    gvrView.setRenderer(this);
    // 将 gvrView和当前activity 关联 .
    setGvrView(gvrView);
    //初始化其他对象。。。
    }

官方介绍GvrView.StereoRenderer 有两个主要的方法:
onNewFrame()(每次应用程序呈现时间/一个新的帧被绘制到屏幕上)和onDrawEye()(每只眼睛眼睛不同的参数);

剩下的Demo中展示的基本上全是OpenGL的东西,在这里就不介绍了(我OpenGL还在学习中,不适合继续讲解),后面几篇会介绍如何制作 全景视频的播放器,全景图片查看器这样的小栗子。并且简单分析一下源码。

这篇呢,主要是对google vr进行一个简要的了解 ,欢迎指点。


原文链接:
http://blog.csdn.net/qq_24889075/article/details/52118633
http://www.jianshu.com/p/09c0822b9d1e

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容