1. 程式人生 > >VR全景檢視 Google VrPanoramaView

VR全景檢視 Google VrPanoramaView

浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>   

一、背景簡介

Welcome to VR at Google


進入Google VR主頁,發現官方給我們提供了兩套解決觀看VR視訊的方式:

 

給我們提供了三個平臺的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還在發展中。

介紹

官方在這裡介紹了VR view 、支援平臺等。我挑幾個相對重要的介紹一下:

1、影象規格
VR檢視影象可以儲存為PNG,JPEG或GIF。Google建議使用JPEG改進壓縮。 為了獲得最大的相容性和效能,影象尺寸應該是2的倍數(例如,2048或4096)。單個影象應為2:1縱橫比(例如4096×2048)。 立體影象應為1:1縱橫比(例如4096×4096)。

如圖:

 

案列

首先下載Demo,
https://github.com/googlevr/gvr-android-sdk

專案(gvr-android-sdk )中有幾個主要目錄可以留意一下:

  • libraries

  • ndk-beta

  • samples

  • samples目錄中有四個Demo,分別是:

  • SDK-controllerclient(Daydream的控制端)

  • SDK-simplepanowidget(全景圖)

  • SDK-simplevideowidget(全景視訊 也就是VR視訊)

  • SDK-treasurehunt(尋寶專案)

注意:執行環境必須是api19以上的手機,也就是Android4.4及以上

VrPanoramaView(VR全景檢視)的實現

1、新增依賴

compile 'com.google.vr:sdk-panowidget:1.40.0'

2、許可權

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

3、佈局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.zx.vrview.MainActivity">

    <com.google.vr.sdk.widgets.pano.VrPanoramaView
        android:id="@+id/vrPanoramaView"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:scrollbars="none"/>


</LinearLayout>

4、activity

/**
 * VR全景檢視(圖片檢視器)
 */
public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";
    private VrPanoramaView paNormalView;
    private VrPanoramaView.Options paNormalOptions;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initVrPaNormalView();
    }

    @Override
    protected void onPause() {
        super.onPause();
        paNormalView.pauseRendering();
    }

    @Override
    protected void onResume() {
        super.onResume();
        paNormalView.resumeRendering();
    }

    @Override
    protected void onDestroy() {
        // Destroy the widget and free memory.
        super.onDestroy();
        paNormalView.shutdown();
    }


    //初始化VR圖片
    private void initVrPaNormalView() {
        paNormalView = (VrPanoramaView) findViewById(R.id.vrPanoramaView);
        paNormalOptions = new VrPanoramaView.Options();
        paNormalOptions.inputType = VrPanoramaView.Options.TYPE_STEREO_OVER_UNDER;
//        paNormalView.setFullscreenButtonEnabled (false); //隱藏全屏模式按鈕
        paNormalView.setInfoButtonEnabled(false); //設定隱藏最左邊資訊的按鈕
        paNormalView.setStereoModeButtonEnabled(false); //設定隱藏立體模型的按鈕
        paNormalView.setEventListener(new ActivityEventListener()); //設定監聽
        //載入本地的圖片源
        paNormalView.loadImageFromBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.andes), paNormalOptions);
        //設定網路圖片源
//        panoWidgetView.loadImageFromByteArray();
    }

    private class ActivityEventListener extends VrPanoramaEventListener {
        @Override
        public void onLoadSuccess() {//圖片載入成功
            Log.i(TAG, "onLoadSuccess------------>");
        }


        @Override
        public void onLoadError(String errorMessage) {//圖片載入失敗
            Log.i(TAG, "Error loading pano:------------> " + errorMessage);
        }

        @Override
        public void onClick() {//當我們點選了VrPanoramaView 時候出發
            super.onClick();
            Log.i(TAG, "onClick------------>");
        }

        @Override
        public void onDisplayModeChanged(int newDisplayMode) {
            //改變顯示模式時候出發(全屏模式和紙板模式)
            super.onDisplayModeChanged(newDisplayMode);
            Log.i(TAG, "onDisplayModeChanged------------>" + newDisplayMode);
        }
    }
}

程式碼分析

這個栗子中需要注意幾個知識點:

 VrPanoramaView //Google提供給我們現實全景圖片的View
 Options //VrPanoramaView 所需的設定
 VrPanoramaEventListener//為 VrPanoramaView 設定監聽
 loadImageFromBitmap//載入圖片的主要方法

Options

接下來看看剛剛的VrPanoramaView.Options吧,上文中 是這麼設定的

panoOptions.inputType = Options.TYPE_STEREO_OVER_UNDER;

那麼為什麼要這樣設定呢?先看官方對Options中標籤的介紹:

  • public static final int TYPE_MONO = 1;
    影象被預期以覆蓋沿著其水平軸360度,而垂直範圍是根據影象的寬高比來計算。例如,如果一個1000x250畫素的影象,給出所述全景將覆蓋360x90度與垂直範圍是-45至+45度。

  • public static final int TYPE_STEREO_OVER_UNDER = 2;
    包含兩個大小相等的投影 全景圖垂直疊加。頂部影象被顯示給左眼、底部影象被顯示給右眼。//看下圖你就懂了

影象將覆蓋沿水平軸360度,而垂直範圍是根據影象的寬高比來計算。例如,如果一個1000x500畫素的影象中

這裡寫圖片描述

我要顯示的圖片是下圖這樣的,所以就要設定為 'TYPE_STEREO_OVER_UNDER'

 

這裡寫圖片描述

那麼什麼樣的圖片設定為 'TYPE_MONO' 呢?請看:

 

這裡寫圖片描述

不知道有沒有眼神好的同學發現這個問題:TYPE_STEREO_OVER_UNDER型別的圖片每次切換模式時候 圖片中間都會有一條垂直於水平線的分割線(很淺 很淺 然後逐漸消失),

總結

總結下如何在Android裝置上用Google的SDK做一款全景圖的顯示器(播放器?檢視器?... 不知道叫什麼合適):

  • 匯入google的庫

  • 在相應的佈局檔案中引入控制元件com.google.vr.sdk.widgets.pano.VrPanoramaView

  • 初始化控制元件

  • 為VrPanoramaView設定options

  • 找到圖片的Bitmap

  • 呼叫VrPanoramaView的loadImageFromBitmap方法

  • 在onPause、onResume、onDestroy中做出相應處理

最後給大家分享一份非常系統和全面的Android進階技術大綱及進階資料,及面試題集

想學習更多Android知識,請加入Android技術開發企鵝交流 7520 16839

進群與大牛們一起討論,還可獲取Android高階架構資料、原始碼、筆記、視訊

包括 高階UI、Gradle、RxJava、小程式、Hybrid、移動架構、React Native、效能優化等全面的Android高階實踐技術講解效能優化架構思維導圖,和BATJ面試題及答案!

群裡免費分享給有需要的朋友,希望能夠幫助一些在這個行業發展迷茫的,或者想系統深入提升以及困於瓶頸的朋友,在網上部落格論壇等地方少花些時間找資料,把有限的時間,真正花在學習上,所以我在這免費分享一些架構資料及給大家。希望在這些資料中都有你需要的內容。

相關推薦

VR全景檢視 Google VrPanoramaView

浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>   

Android google VR全景圖導航

package palmartourism.iwiteks.www.hiqdn; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import andr

二、VR全景圖顯示器開發 ---- Android VR視訊/Google VR for Android /VR Pano/VR Video

這篇看下SimpleVrPanorama這個栗子 SimpleVrPanorama 其實這篇應該寫SimpleVrPanorama和simplevideowidget 兩個,但是由於篇幅過長就分開寫了 演示 用AS錄的沒有觸控點顯示,

VR全景智慧城市--2017年VR項目加盟將是一個機遇

解決問題 國家 能夠 現在 趨勢 眾創 mage 下一個 經驗 全景智慧城市項目是河南藝境空間文化傳播有限公司自主開發的國內第一家商業全景平臺, 旨在構建全景城市,實現智慧生活,讓人們隨時隨地身臨其境擁有全世界,享受快捷、真實、趣味、優質生活。 以VR虛擬現實技術為基礎的全

Vr全景智慧城市--一位傳統生意者的互聯網逆襲經歷

現在 spa 風險 創始人 心得 拍攝 滿了 適合 mage 這是一個最近發生在我身邊的一件真實的事情。 王澤濤,出生於南陽市鎮平縣的一個小鄉村裏,小時候家境貧寒,沒有受過高等教育,也沒有一技之長,年輕時漂泊在外,四處打拼,一直從事銷售方面工作,經歷了無數辛酸和淚水。

VR全景智慧城市:開啟VR全景逛街新時代~

package 眼鏡 虛擬現實 細節 用戶 alt 新聞媒體 接口 不出 VR全景,又被稱為3D實景,是一種新興的富媒體技術,其與視頻,聲音,圖片等傳統的流媒體大的區別是“可操作,可交互”。 對於顧客體驗來說,VR確實是對於實體店是一種顛覆性的創新,它既能為消費者帶來新體驗

VR全景智慧城市-VR大時代

視覺 繼續 網絡 李克強 平臺 感受 商家 接受 遺憾 這是一個創業的時代,這是一個創新的社會,我們的國家從沒有像今天這樣高度重視創業創新,我們的社會從沒有像今天這樣對創業創新寄予如此厚望。李克強總理在2015年政府工作報告中指出:要把“大眾創業、萬眾創新” 打造成推動中

VR全景加盟-全景智慧城市攜萬千創業者決戰BAT

聲音 基因 全景 變化 營銷 問題 自然 技術發展 解決 在所謂互聯網思維走到末路、可穿戴設備基本曇花一現的大環境下,很多互聯網人員轉戰VR市場,自然喜歡用互聯網思維來考慮。筆者認識一些投資界人士,在談到投資時,他們經常就問以下幾句話:2B還是2C?將來有多少用戶?有入口嗎

VR全景加盟-了解VR就來全景智慧城市

購物 這一 動作 為什麽 快速 cor 平臺 進行 這不 關於什麽是真正的VR說了這麽多,面對剛剛起步的VR,如何辨別判斷一個真正的VR形式呢。除了我們所說幾個參數或者大家關註的眩暈感、臨場感,真正的VR究竟帶給大家什麽樣的特性呢?這個就要從VR的本質談起。虛擬現實作為一種

VR全景新穎的廣告方式,新穎平臺-全景智慧城市

VR全景 全景智慧城市 VR時代的到來 “讓虛擬照進現實”的科技理念開始落地生根,成為國內外媒體轉型探索的新方向。據人民網輿情監測室統計數據,2016年上半年,僅“VR全景”領域的相關報道就有10.5萬余篇,微博、微信文章8萬余篇,相關手機應用近百個。已經在娛樂市場取得不俗成績的

VR全景智慧城市:360全景市場需要背景及其優勢~

可視化 auto 背景 深入 大小 虛擬現實 最好的 class caption VR元年已過,VR項目、VR創業潮轉為理性,VR行業分為兩個方向:硬件和內容。 VR全景,又被稱為3D實景,是一種新興的富媒體技術,其與視頻,聲音,圖片等傳統的流媒體大的區別是“可操作,可交互

VR 全景全景智慧城市對創業者,企業轉型有哪些幫助

校準 作圖 解決 獨立 完全 全景 免費雲 -a 成對  全景漫遊圖像是給人以三維立體感覺的實景720度合成圖像,此圖像最大的三個特點是: 1、全:全方位,全面的展示了雙360度球型範圍內的所有景致;可在通過鼠標拖動,觀看場景的各個方向; 2、景:實景,真實的場景,三維全景

VR全景智慧城市,平臺屬於每個有創業夢想的人

店鋪 業務 核心競爭力 信息 也會 時也 上線 國家 商家 如果你還在人生十字路口迷茫,如果你還想你的人生有所成就,讓你的人生有不一樣的精彩,就來全景智慧城市平臺共同打造屬於自己的不同凡響的精彩人生吧! 抓住這個機遇,你就走在了 VR時代的前沿,時勢造就英雄,夢想成就未來。

VR全景智慧城市,完美的將虛擬與現實結合

眼鏡 智慧城市 日常 實的 購物 旅遊 說過 這樣的 logs 很多人都粗淺的認為,VR虛擬智慧城市只是簡單的將智慧城市和虛擬現實相結合的產物,這樣的VR虛擬智慧城市看起來更像是個VR內容產品,而非城市建設成果。但是我們換個角度來思考的話,現在很多VR虛擬智慧城市建設理念中

VR全景與實體行業結合,全景智慧城市新概念

VR虛擬現實技術VR+購物 VR+教育 VR+酒店 VR+房產 VR+旅遊 VR+餐飲 VR+家居 VR+醫院 VR虛擬現實技術 虛擬現實技術 VR元年已過,VR項目、VR創業潮轉為理性,VR行業分為兩個方向:硬件和內容。硬件又分為VR頭顯和

VR虛擬現/VR全景行業風口新寵兒

VR虛擬現 VR全景 全景智慧城市 “VR虛擬現實”一個讓人耳熟能詳又願聞其詳的詞匯,自從2014年3月facebook收購oculus,VR漸漸成為行業風口的寵兒,隨著國內外各大巨頭的相繼布局,2015年被稱為虛擬現實VR產業的元年,而2016年則成為了公認的VR內容元年。

如何制作一套完整的VR全景房源?

酷雷曼 VR現在已經開始應用於各行各業之中,尤其是在遊戲和影視行業,然而,VR在房產行業的應用也是突飛猛進的,VR全景房源對於房源的展現也是整體提升了一個更高的檔次,當您戴上了VR眼鏡,更有身臨其境之感。 那麽,我們要如何制作一套完整的VR全景房源呢?今天酷雷曼小編在這裏帶大家看一下全景房源是

VR全景攝像 有望將虛擬現實技術帶入電影領域

酷雷曼 如今虛擬現實已經成為了時下最大的熱門技術之一,而像Oculus Rift和索尼Project Morpheus這樣的虛擬現實頭戴式顯示器的關註度也非常之高。不過作為一項新興技術,虛擬現實設備和技術目前的應用還主要集中在遊戲領域,應用範圍相對較窄。 近日,位於英國倫敦的Figure

酷雷曼360全景 國內首款權威VR全景制作軟件

酷雷曼 酷雷曼作為國內首款權威VR全景制作軟件,國內微信營銷第一品牌,這一榮譽取決於酷雷曼擁有40大全國最全最強微信營銷功能軟件,X—photo、移動×傳播、X-wifi、酷銀雲POS四大核心硬件產品。著重推出的“軟件+硬件+推廣”的營銷模式,受到了業內人士和廣大代理商的一致好評! 5月13日

VR全景-720全景項目、3D建模市場註意事項

VR全景 720全景 360全景 720雲全景 VR城市 2016年,是VR虛擬現實走進主流消費者市場的一年。當前虛擬現實技術吸引了科技愛好者的極大興趣,但該技術將逐漸走進主流消費者市場。VR虛擬現實的“爆發年”資本蜂擁而至,將概念哄擡到一個眾人仰慕的神壇;VR硬件、VR遊戲、VR內