<label id="jgr5k"></label>
    <legend id="jgr5k"><track id="jgr5k"></track></legend>

    <sub id="jgr5k"></sub>
  1. <u id="jgr5k"></u>
      久草国产视频,91资源总站,在线免费看AV,丁香婷婷社区,久久精品99久久久久久久久,色天使av,无码探花,香蕉av在线
      您正在使用IE低版瀏覽器,為了您的雷峰網賬號安全和更好的產品體驗,強烈建議使用更快更安全的瀏覽器
      此為臨時鏈接,僅用于文章預覽,將在時失效
      專欄 正文
      發私信給王銳
      發送

      13

      如何用極客范兒做一款VR頭盔?不是插個手機的那種

      本文作者: 王銳 2016-03-22 18:48
      導語:沒錯,我們可不打算讓用戶還得專門插個手機進去播全景小電影——我們要做VR頭盔,能duang地運行起一個PC端的正經VR游戲的那種。

      按:作者王銳,VR領域資深從業者。

      這個標題看上去很瘋狂,而且筆者正試圖讓它變得更瘋狂一些:沒錯,我們可不打算讓用戶還得專門插個手機進去播全景小電影——我們要做VR頭盔,能duang地運行起一個PC端的正經VR游戲的那種!

      如何用極客范兒做一款VR頭盔?不是插個手機的那種

      然而,如今的虛擬現實頭盔正呈現出OculusVR,HTC Vive和PSVR三分天下之勢,國內也有樂相、3Glasses、星輪等廠商投入重金攻關。筆者在這里突然自詡為“極客”,然而實際上又算是哪根蔥呢?嘴上說要做一款正經的虛擬現實頭盔,實際上卻恐怕連入行的廟門都找不到才對吧:三星OLED屏的渠道有么,菲涅爾鏡片長什么樣認識么,屏幕分辨率和刷新率能達標么,Unity或者Unreal程序能寫出一行么,以及渲染優化,工業設計,外觀內襯,人體工學種種……至少,看起來這樣繁多和艱險的任務,能在短短的一篇文章里解決么?

      也許不能;不過,這并不代表我們就不去嘗試一些事情。極客的準則首先是實踐。然后才看它與我們理想中的結果還有多遠。

      那么,我們這就開始。首先,是用什么來顯示的問題。

      首先要有個顯示的媒介

      如何用極客范兒做一款VR頭盔?不是插個手機的那種

      所謂媒介也就是選擇顯示畫面的一塊屏幕。

      傳統的液晶顯示屏大都是采用薄膜晶體管(Thin Film Transistor,TFT)作為核心技術,在基板的背部設置光源主動控制屏幕上的各個像素,它的屏幕反應時間通常可以達到60-80ms左右。這樣的延遲作為電腦和電視屏幕沒有任何問題,但是作為頭顯設備顯然是無法接受的。目前基本上也沒有廠商會選擇這種屏幕作為顯示的載體。

      IPS屏幕(In-Plane Switching)改變了液晶分子顆粒的排列方式,雖然本質上還是TFT屏幕的衍生品,但是擁有很好的清晰度和可視角度表現,甚至可以做到接近180度的視角。IPS屏幕的刷新率也遠高于傳統的TFT液晶屏,可以達到60Hz的水準,對于VR應用來說基本上差強人意。絕大部分國內頭顯廠商都使用了IPS屏幕作為自己方案的一部分。

      OLED屏幕則是目前高質量VR頭盔實現的首選(包括三大家和國內的樂相Deepoon),它具有自發光的特點,因此不需要額外的背光板,也改善了因此產生的余暉(Persistence)和拖影現象;同時它的反應時間很快,足以做到75Hz甚至更高的刷新率。但是OLED小尺寸屏幕做到更高的屏幕分辨率,目前難度還比較大,良品率較低;同時因為有源的AMOLED供電需求較高,通常需要大于8V的電壓和穩定電流,因此電壓管理的設計更為復雜,要找到穩定可靠的生產和供貨渠道也更為困難(不過據說只要付給三星60萬,就可以開啟新世界的大門了)。

      筆者并不想在這里挑戰自己的財務底線,因此選擇了更容易購買散件的IPS屏幕,并且為了能夠得到更好的顯示效果,顯然至少要達到2K的屏幕分辨率(2560 x 1440)才能讓觀眾感到滿意。

      如何用極客范兒做一款VR頭盔?不是插個手機的那種

      從上圖以及之前的OculusVR拆解圖中,我們都可以看到一塊與屏幕直接連接的電路板,它被稱作驅動板。它負責與屏幕連接,將來自外部的數字視頻信號通過HDMI或者MDL接口輸入并轉換到屏幕上顯示,同時還要負責電壓管理和保護。

      對于OLED來說,復雜封閉的接口規格說明以及頗為棘手的電源管理問題,限制了很多國內廠家為它制作驅動板的能力;而IPS屏的驅動板使用則更為成熟,基本上可以直接連接電腦并作為擴展顯示屏使用;或者燒錄新的EDID信息,從而將屏幕識別為Oculus DK1和DK2設備(前者已經開源),并且直接連入OculusVR接口和游戲內容。

      顯示和驅動的問題看起來有了眉目,另一個問題也是絕對不可忽視的,那就是鏡片的選擇

      VR頭盔中的菲涅爾透鏡隔在人眼和顯示屏的中間,主要負責改變光路并產生畫面的放大效果,盡可能與人眼的實際FOV(視場角度)相匹配,從而帶來包裹感和沉浸感。然而透鏡的色散效應會在邊緣產生不正確的畫面色差,透鏡的形狀也會極大影響畫面的成像質量。這些問題不妨參考另一位老師發表過的文章(點擊查看)。

      除此之外,如何將這些設備連接到一起,形成一個外觀和內里排布都足夠合理的結構,以及與使用者頭部的連接和固定方法。這些與工業設計密切相關的問題也都是相關從業者們所必須要關注和考慮的。當然了,選擇三維打印外殼也是一個不錯的主意,不過對于這樣一次極客式的嘗試而言,我們遠不需要做到那么復雜。筆者選擇了Cardboard作為示范的頭盔外殼,并且將剛才的東西一股腦塞進去粘好,點亮!也許,這一切也許并不是那么具有山寨的氣息?

      如何用極客范兒做一款VR頭盔?不是插個手機的那種

      畫面要跟隨我的腦袋

      看起來有一點進展了,至少現在有了一塊可以用來看看日本小電影的袖珍屏幕。事實上,如果我們現在就能找到一些以左右眼分隔方式輸出的視頻的話,把它放大到全屏播放就可以看到正確的圖像了!真是令人激動的成果啊,但是買點屏幕和驅動板就拉倒,這顯然不應該是VR頭盔的全部;至少,不能連最基本的交互行為都沒有。

      如何用極客范兒做一款VR頭盔?不是插個手機的那種


      (視頻源來自:360heros.com

      沒錯,我們下一步要解決的問題,就是讓顯示的畫面能夠跟隨頭部的旋轉變化,讓使用者真的可以有身臨其境進行觀察的感覺。既然是模擬頭部的旋轉姿態輸出,自然少不了一個重要的參與者:慣性傳感器(IMU)。

      筆者在另一篇拙文中曾經提及IMU的實現原理,參見其中第(4)節:《成為VR的利器之前,運動捕捉技術是如何發展過來的?》

      那么,我們從IMU傳感器中能夠得到什么樣的數據呢?通常一個九軸的IMU傳感器(包含三軸加速度計,陀螺儀與地磁傳感器)可以輸出如下所示的數據內容:

      958 65517 268 0 0 0 38 70 65497

      958 65517 268 0 65535 0 38 70 65497

      958 65518 269 0 65535 0 38 70 65497

      958 65517 270 0 65535 0 38 70 65497

      958 65517 270 0 65535 65535 38 70 65497

      ……

      (注意,對于int16格式的傳感器數據,實際上這里的65535 = -1)

      如何用極客范兒做一款VR頭盔?不是插個手機的那種

      這顯然無法用來表達任何的姿態信息,并且因為民用傳感器的設備精度很低,直接采用陀螺儀(即角速度傳感器)數據乘以時間間隔的結果,也基本上完全無法表達真實的轉動情況。幸好,偉大的數學家們發明了Sensor Fusion(傳感器融合)方法。

      Sensor Fusion,顧名思義就是把各路并不精準的傳感器數據合在一起,取得一個更好的整體結果值。事實上加速度計、陀螺儀和地磁傳感器確實可以相互彌補弱點,從而有效地填補空白數據,從而得到反應更靈敏也更流暢的輸出結果。

      常見的Sensor Fusion算法主要包括Kalman Filter,Mahony filter以及Madgwick filter等等,其基本共性是對輸入的數據進行濾波和融合處理,得到平滑、低延遲、低抖動的結果數據(通常是世界坐標系下的旋轉姿態值,歐拉角度或者四元數形式)。很顯然,IMU本身的輸出頻率越高,最終結果的頻率也就越高,這也是為什么GearVR會采用高達1000Hz頻率的單一傳感器作為姿態計算的依據,而不是手機本身的陀螺儀(根據手機品牌的不同,有些傳感器的質量可能會很差,甚至被閹割)的原因。國內廠商(例如焰火工坊等)也采取了類似的做法,以求整個Sensor Fusion和姿態計算過程高效且可控。

      如何用極客范兒做一款VR頭盔?不是插個手機的那種

      (Via vimeo.com

      毫無疑問,如果選擇九軸IMU作為姿態傳感和輸出設備,那么就可以直接得到使用者頭部的世界旋轉角度信息,進而控制內容的渲染以及交互。但是地磁傳感器本身非常容易受到環境磁場的影響,例如附近有磁性的設備,抑或是鐵制的桁架和管路,都可能改變地磁傳感器的輸出,進而產生一個錯誤的融合結果!此外,地磁傳感器本身也需要預先進行標定,畢竟融合算法是需要對地磁數據進行歸一化(取當地地磁最小和最大值,然后重映射到[0,1]區間)之后才能準確計算的,而北京和澳大利亞的磁場參數顯然大相徑庭。

      另一種選擇是放棄地磁傳感器,轉而采用僅包含三軸加速度計和陀螺儀的六軸IMU來計算相對旋轉姿態。這樣避免了標定和場地的限制,并且也有研究表明,單純采用六軸IMU計算的響應速度更快,數據穩定后的抖動幅度更低。不過因為沒有地磁數據作為參照,因此每次開機后頭盔的初始姿態是無法預知的,因此也就無法確定游戲者是否一開始就能看到重要的三維提示信息,還是需要困惑地四處轉頭去尋找入口(如下圖OculusVR的Demo場景,一個簡單的Start按鈕):

      如何用極客范兒做一款VR頭盔?不是插個手機的那種

      設備接口的選擇也是有講究的,USB無疑是目前最為常見的方案,事實上無論Oculus VR還是HTC Vive都選擇使用USB接口來輔助供電和傳遞姿態信息。當然這一切在起步階段都沒有必要自己去制板和焊接,因此筆者根據上述的選擇條件,在淘寶上毫不猶豫地相中了下圖一款封裝完整,物美價廉的IMU傳感器模組:

      如何用極客范兒做一款VR頭盔?不是插個手機的那種

      它采用了九軸IMU傳感器,數據通過UART轉換到USB接口輸出,并且已經做好了片上融合,即硬件已經通過Sensor Fusion算法計算得到了真實的世界旋轉姿態,并且提供了簡單的標定方案。因此現在要做的就是把這個傳感器粘貼到紙質頭盔的合適位置上,然后將姿態數據傳遞給自己的程序,及時改變當前用戶觀察的視角和渲染內容。

      如何用極客范兒做一款VR頭盔?不是插個手機的那種

      圖形學發威的時間

      現在我們有了一個看起來像模像樣的VR頭盔,雖然一切都是硬紙殼子加上3M膠帶組成,但它至少可以播放來自電腦的任意豪華分辨率的立體電影,并且通過簡單的程序進行視角控制;最關鍵的是,整個系統的延遲似乎完全在我們能夠接受的范圍內——勝利在望了嗎?那么隨后我們要解決的,是顯示內容開發的問題。

      很顯然,只是做了一個粗糙的影片播放器,這并不能滿足一名極客的進取欲望。要讓別人制作的游戲接入到我的頭盔里面,然后構建自己的SDK開發接口和游戲內容平臺,這也許才是我們內心的狂野獨白——當然這并不是小小的一篇文章所能承載的龐大構想。不過至少,現在才應該是有著十年圖形學和底層渲染引擎開發經驗的筆者發威的時間。

      如何用極客范兒做一款VR頭盔?不是插個手機的那種

      筆者選擇自己熟悉的OpenSceneGraph開源引擎來做一個簡單場景的渲染,為了確保它在山寨VR頭盔里的顯示是正確的,我們需要將場景畫面重復渲染兩次,分別對應人的左右眼所見的內容。大腦會根據這兩幅畫面在視網膜的成像,主動對比和生成具有強烈立體感的畫面。然而人的雙眼之間存在著一定的間隔,因此在觀察同一個場景的時候會存在著方向上的偏差,也就是視差。使用程序執行渲染時,需要對左右眼的觀察矩陣和投影矩陣做一個偏移處理,以模擬這個視差現象,從而欺騙大腦讓它以為自己置身于虛擬世界。

      如何用極客范兒做一款VR頭盔?不是插個手機的那種

      我們現在把程序的畫面全屏輸出到VR頭盔的顯示屏上,再加上IMU的姿態輸入來改變觀察矩陣,看起來一切都很美了,只是感覺有點變形?沒錯,別忘了眼睛和顯示屏之間的那個透鏡,它很可能會造成桶形畸變(Barrel distortion)的現象,也就是說,靠近邊緣的畫面中,直線將不再以直線的形式出現,而是產生了彎曲變形。

      如何用極客范兒做一款VR頭盔?不是插個手機的那種

      (Via www.programmipermac.com

      我們需要一個全屏后處理的方案來糾正這種畸變。

      簡單來說,就是剛才渲染的場景不再直接輸出到屏幕上,而是輸出到一處顯卡內存區域(Frame buffer object),然后對這張內存中的圖像進行進一步的處理:包括處理失真,鏡片引起的色散,改變對比度和亮度,修正色彩曲線,等等,就像是我們在Photoshop中做的一樣。注意這里我們對原始輸出的場景畫面做了變形,從而與鏡片的畸變參數進行匹配,在視野中得到正確無失真的結果。

      如何用極客范兒做一款VR頭盔?不是插個手機的那種

      現在再把畫面接入到頭盔中,是不是好了很多呢?當然了,如何處理失真,如何處理色散,這些都是與鏡片以及顯示屏的參數密切相關的,并非一個統一的數值。如果真的要完成某種VR頭盔的生產流程的話,那么類似的校正參數計算和設置工作顯然要在設備出廠的時候完成,交到消費者手中的顯然應該是即插即用的成品了。

      當然了,這樣一副VR頭盔能否讓人有身臨其境的感受,并不僅僅是把零件組合起來再編寫程序那么簡單。硬件的參數和工裝設計,內容本身的渲染精細程度,以及因為這種精致渲染而帶來的額外的計算延遲,都是影響體驗品質的重要環節。

      而所有這些細節的處理,是不能在短小的文章中統統得到體現的——如何在一個看起來很美的原型基礎上實現真正可以商用和民用的VR頭盔,以及如何確保每個環節的供應鏈和渠道暢通,產品大賣,這都不再是我們以極客范兒能夠面對的問題了,那需要一支龐大而高效的團隊去不斷努力完善,就像如今VR行業眾多創業公司們所追求的一樣。

      如何用極客范兒做一款VR頭盔?不是插個手機的那種

      如何用極客范兒做一款VR頭盔?不是插個手機的那種

      那么,我們為此花費了多少成本呢?

      2K IPS顯示屏和驅動板:1400元,老板說多買可以半價哦。

      九軸IMU傳感器與USB底板:128元。

      Cardboard硬紙外殼和鏡片:19元,總覺得好像沒這么貴才對啊,另外鏡片也建議自己選配更好的菲涅爾透鏡組。

      程序開發:自己動手,豐衣足食。

      最后,我們還能做點什么?

      這篇文章有自己的終點,但是鉆研的道路事實上遠遠沒有達到盡頭。虛擬現實頭盔是我們沉浸在全新世界的第一步,即取代了人們的視覺。但是無法與世界互動終究是十分無趣的,交互要如何來做,手柄?手套?動捕?空間定位?聲音?手勢?抑或其它稀奇古怪的方式,這又是一個完全不一樣的命題,也是下一個VR熱點話題的聚集地。

      對于畫面質量的提升和延遲感的降低,也是人們不斷去追求的目標。

      例如Time Warp以及Asynchronous Time Warp這樣的算法,可以通過對當前渲染畫面進行插值計算得到一些模擬的中間畫面,避免因為幀速率不足而產生的抖動和遲滯感。不過這并非仙丹妙藥,優化場景渲染速率以真正達到無延遲的畫面隨動才是正途。然而畫面的優化往往又意味著渲染質量的降低,真實感隨之下降。如何在其中權衡利弊,甚至投機取巧做一些戲法似的效果,這又是對眾多內容開發者們的一個全新的挑戰。

      多說一句的話,筆者也曾經實現過一種基于單次渲染GBuffer數據然后在后處理階段構建雙目畫面顯示的方法,可以適用于各類開闊場景和沒有復雜管道結構的室內場景,對效率的提升當然也是不言而喻的。

      更多的腦洞還在開啟當中,例如基于眼動追蹤的渲染,可以基于NVIDIA的MultiRes架構將眼球聚焦位置之外的場景用低分辨率處理,從而減少像素著色過程的計算時間;又比如VR一體機的興起,用高性能的移動開發板(例如Tegra X1)與顯示屏直接構成一體化的頭盔,不再從電腦或者手機上輸出場景畫面,而是采用配套的SDK工具編寫專屬游戲。

      總之,一切還遠遠沒有到達盡頭,未來很美,只愿越來越多的從業者們能夠選擇腳踏實地,從技術和產品化的角度更多地思考問題,讓更多的原型產品和忽悠概念能夠最終落到實處。

      王銳【VR系列】文章推薦:

      1 、從60Hz到75Hz,完成一次VR的場景優化需要遍歷哪些血淚史?

      2、哎,VR游戲的畫質為什么總是那么差?

      3、在討論全景視頻的未來之前,我們先搞清楚全景視頻是如何實現的

      雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知

      如何用極客范兒做一款VR頭盔?不是插個手機的那種

      分享:
      相關文章

      專欄作者

      全棧工程師,虛擬現實行業從業者,開源圖形引擎OpenSceneGraph的核心貢獻者。致力于探索虛擬現實與人機交互的各種可行性。
      當月熱門文章
      最新文章
      請填寫申請人資料
      姓名
      電話
      郵箱
      微信號
      作品鏈接
      個人簡介
      為了您的賬戶安全,請驗證郵箱
      您的郵箱還未驗證,完成可獲20積分喲!
      請驗證您的郵箱
      立即驗證
      完善賬號信息
      您的賬號已經綁定,現在您可以設置密碼以方便用郵箱登錄
      立即設置 以后再說
      主站蜘蛛池模板: 人妻[21p]大胆| brazzers欧美巨大| 一区二区AV| 欧美日韩国产亚洲人成| 精品人妻中文无码av在线| 亚洲一级毛片| 无码少妇一区二区| 亚洲国产成人字幕久久| 日韩91| 超碰狠狠干| 亚洲欧美日韩每日更新在线| 人人爽人人爽人人爽| 成人性生交大片免费| 久久99日韩国产精品久久99| 欧美性猛交xxxx| 亚洲图片另类图片激情动图| 日本高清视频在线www色| 一二三四中文字幕日韩乱码| 亚洲gv永久无码天堂网| 亚洲大尺度无码无码专线| 好男人社区www在线观看| 男人天堂中文字幕| 8X成年视频在线观看| 一级欧美牲交大片免费观看| 台湾佬中文娱乐网址| 亚洲中文字幕2019| 中文字幕亚洲精品乱码在线看| 国产人妻人伦精品一区二区| 91综合网| 1024国产视频| 天天爽夜夜爽视频精品| 国产精品厕所| 996久久国产精品线观看导航| 美女裸体十八禁免费网站| 风流老熟女一区二区三区| 久久精品人人做人人爽97| 青川县| 欧美丰满美乳XXⅩ高潮www| 精精国产xxxx视频在线| 7777精品久久久大香线蕉| 拉萨市|