iOS-VRView 探索

今天回家了悯搔,但總想寫點(diǎn)什么度過(guò)一下閑暇的時(shí)光照激。前晚看了蘋果發(fā)布會(huì),覺得沒什么稀奇铃拇,幸運(yùn)的是钞瀑,在Facebook上看到直播一個(gè)小型開發(fā)會(huì)議(Swift Meetup),談?wù)摰氖荊oogle VR-SDK 的開發(fā)锚贱。

大東對(duì) iOS-VR 的看法

水果目前并沒有開發(fā)支持VR的框架仔戈,而且像今年Oculus只支持三星產(chǎn)品,意味著它們開發(fā)的平臺(tái)iOS不能用呀拧廊。這不是很尷尬嗎监徘。

Oculus powers the Samsung Gear VR, the most widely distributed VR headset in the world. Supported by Samsung’s global distribution and marketing efforts, Gear VR is compatible with the tens of millions of Samsung GALAXY flagship smartphones, including S7, S7 edge, S6, S6 edge, S6 edge +, and Note 5.

水果的開發(fā)者文檔里面也沒有一個(gè)框架是直接用來(lái)做VR的,只能通過(guò)Core-Motion來(lái)達(dá)到那種效果吧碾。但是自己開發(fā)又有點(diǎn)麻煩凰盔,可敬的Google開發(fā)團(tuán)隊(duì)給iOS帶來(lái)Google-VRSDK,省去了很多麻煩倦春。

或許水果會(huì)趁人意料地發(fā)布一款吊炸的VR設(shè)備讓你恨不得割腎也想買户敬,或許只是開發(fā)一個(gè)框架來(lái)支持VR眼鏡。雖然我覺得兩者都會(huì)有??睁本,讓我們拭目以待尿庐。

<a name="fenced-code-block">Let's Get Started It.</a>

Google VRView

所謂的Google VRView指的是能夠看全視角的影片或相片,實(shí)現(xiàn)相對(duì)比較簡(jiǎn)單呢堰。目前國(guó)內(nèi)外也有很多類似的應(yīng)用支持這個(gè)功能抄瑟。

VR view allows you to embed 360 degree VR media into websites on desktop and mobile, and native apps on Android and iOS. This technology is designed to enable developers of traditional apps to enhance the apps with immersive content. For example, VR view makes it easy for a travel app to provide viewers with an underwater scuba diving tour as they plan a vacation or for a home builder to take prospective buyers on a virtual walkthrough before the home is built.

pod 'GVRSDK' //要用到cocoapods 講一個(gè)笑話:我是iOS開發(fā)者,我不知道cocoapods是什么.......

最好的學(xué)習(xí)方式還是看官方文檔枉疼。

看文檔發(fā)現(xiàn)皮假,Google VRView 的包含幾種類型:GVRCardboardView鞋拟,GVRWidgetView(其中包含了兩個(gè)子類GVRPanoramaView,GVRVideoView)

<a name="fenced-code-block">GVRCardboardView</a> Defines a view responsible for rendering graphics in VR mode
<a name="fenced-code-block">GVRWidgetView </a> Defines a base class for all widget views, that encapsulates common functionality
<a name="fenced-code-block">GVRPanoramaView </a> Defines a view that can load and display 360-degree panoramic photos
<a name="fenced-code-block">GGVRVideoView </a> Defines a player view that renders a 360 video using OpenGL

GVRCardboardView 是用來(lái)開發(fā)某些自定義3D場(chǎng)景的惹资,用到OpenGL贺纲,比較復(fù)雜,當(dāng)然褪测,SceneKit就可以結(jié)合它來(lái)進(jìn)行開發(fā)的猴誊。
本次介紹的是GVRPanoramaView和GVRVideoView,先探索它們的使用汰扭。

要實(shí)現(xiàn)一個(gè)全景照片的View稠肘,可以直接使用GVRPanoramaView 類。

先看看繼承關(guān)系:
GVRPanoramaView Inherits(繼承) GVRWidgetView Inherits(繼承) UIView

  • step1:直接在storyboard拖拽一個(gè)UIView并連接到Controller中


    QQ20161029-0.png
@IBOutlet weak var panoView: GVRPanoramaView!
panoView.enableFullscreenButton = true
panoView.enableCardboardButton = true
panoView.enableTouchTracking = true
panoView.load(UIImage(named: "你的全景照片"), of: .stereoOverUnder)
Property 介紹
<GVRWidgetViewDelegate>delegate The delegate that is called when the widget view is loaded.
enableFullscreenButton 是否添加fullScreen 的按鈕
enableCardboardButton 是否添加 cardboard 的按鈕
enableTouchTracking 是否可以手勢(shì)拖動(dòng)圖片
QQ20161029-3.png

就是圖片下方一欄的自定義功能

看文檔的時(shí)候發(fā)現(xiàn)還有一個(gè) displayMode

displayMode: Controls the current GVRWidgetDisplayMode of the widget view.
Changing the value of this property is similar to pressing one of the fullscreen, cardboard or back UI buttons.

這個(gè)功能告訴你可以自定義按鍵實(shí)現(xiàn)一個(gè)全屏幕或者VR屏幕的轉(zhuǎn)換萝毛。這也讓自己能夠自定義界面布局项阴。非常棒

接下來(lái)談?wù)凞elegate

panoView.delegate = self
extension VRViewController: GVRWidgetViewDelegate {
    func widgetViewDidTap(widgetView: GVRWidgetView!) {
        //Called when the user taps the widget view.
    }
    func widgetView(widgetView: GVRWidgetView!, didLoadContent content: AnyObject!) {
       //Called when the widget view's display mode changes.
    }
    func widgetView(widgetView: GVRWidgetView!, didChangeDisplayMode displayMode: GVRWidgetDisplayMode) {
        //Called when the content is successfully loaded. 
    }
    func widgetView(widgetView: GVRWidgetView!, didFailToLoadContent content: AnyObject!, withErrorMessage errorMessage: String!) {
        //Called when there is an error loading content in the widget view.
    }
}

假設(shè)我們希望在全景照片下通過(guò)點(diǎn)擊屏幕然后切換下一個(gè)照片,這里就可以通過(guò)調(diào)用widgetViewDidTap的方法來(lái)實(shí)現(xiàn)

func widgetViewDidTap(widgetView: GVRWidgetView!) {
        //或許你可以放在一個(gè)數(shù)組里面笆包,進(jìn)行循環(huán)切換
        panoView?.load(UIImage(named: "另一張照片"), of: GVRPanoramaImageType.mono)
    }

這里环揽,GVRPanoramaImageType是要看你的圖片格式,如果你的圖片是一張相片形式的庵佣,就是mono歉胶,有的照片是同一張照片上下疊加形式的就是stereoOverUnder.

Screen Shot 2016-10-29 at 4.11.38 PM.png

前面提到 GVRWidgetDisplayMode它含一下幾種類型

Type 介紹
.embedded 就像上面示例圖一樣呈現(xiàn)在你自定義View中
.fullscreen 全屏幕形式展示
.fullscreenVR 有兩個(gè)顯示屏幕形式

假設(shè)一種情景是你在自己的自定義View中不想在點(diǎn)擊照片后切換圖片,這時(shí)候就可以用GVRWidgetDisplayMode來(lái)判斷.

當(dāng)然還有展示全景形式的Video巴粪,這個(gè)跟全景照片類似通今,就不展示了。

強(qiáng)烈推薦Ray的一篇文章Introduction to Google Cardboard for iOS肛根,里面對(duì)圖片和影片都有完整的介紹辫塌。也可以下載它們的Demo來(lái)試一試。

<a name="fenced-code-block">End</a>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末派哲,一起剝皮案震驚了整個(gè)濱河市臼氨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌芭届,老刑警劉巖储矩,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異褂乍,居然都是意外死亡持隧,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門逃片,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)屡拨,“玉大人,你說(shuō)我怎么就攤上這事〗嗾蹋” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵性锭,是天一觀的道長(zhǎng)赠潦。 經(jīng)常有香客問我,道長(zhǎng)草冈,這世上最難降的妖魔是什么她奥? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮怎棱,結(jié)果婚禮上哩俭,老公的妹妹穿的比我還像新娘。我一直安慰自己拳恋,他們只是感情好凡资,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著谬运,像睡著了一般隙赁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上梆暖,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天伞访,我揣著相機(jī)與錄音,去河邊找鬼轰驳。 笑死厚掷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的级解。 我是一名探鬼主播冒黑,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蠕趁!你這毒婦竟也來(lái)了薛闪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤俺陋,失蹤者是張志新(化名)和其女友劉穎豁延,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腊状,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诱咏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了缴挖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片袋狞。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出苟鸯,到底是詐尸還是另有隱情同蜻,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布早处,位于F島的核電站湾蔓,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏砌梆。R本人自食惡果不足惜默责,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望咸包。 院中可真熱鬧桃序,春花似錦、人聲如沸烂瘫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)忱反。三九已至泛释,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間温算,已是汗流浹背怜校。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留注竿,地道東北人茄茁。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像巩割,于是被迫代替她去往敵國(guó)和親裙顽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容