想要學下虛擬現實技術需要學習哪些方面的知識?

想要學習虛擬現實技術和增強現實技術,需要學下哪些方面的知識和哪種編程語言?


先弄清楚什麼是增強現實。比如你先實現一個最簡單的。

放一本書在桌子上,拿攝像頭對著書,在書上面顯示一個虛擬的物體出來。

這麼講,你需要的是首先在你的電腦裡面存一張書的照片,然後在攝像頭幀里提取特徵點跟你之前存的模板進行匹配,這樣你可以估算出攝像機相對書的一個相對位置。也就是說,你知道書在哪了。然後你畫個虛擬物體在書那裡就好了。

這麼看來:你需要知道的有特徵點檢測,比如FAST,特徵描述子,特徵匹配這裡需要ransac,不過least square也可以粗糙的用著。然後你需要計算pose,這裡是一個PnP問題,網上搜一下,有很多參考。然後就是畫個虛擬的東西到書那塊,你可能需要OpenGL或者D3D或者其他的東西,但這裡不是重點。

如果你每一幀都檢測, 那麼速度會很慢,也容易出現誤檢測,你需要知道特徵點跟蹤的一些演算法,一般大家喜歡用optical flow,但是這裡你可以看看NCC(normalized cross-correlation)做跟蹤。

其他的就是你怎麼去優化了。比如你攝像頭移動太快怎麼辦,畫面模糊怎麼辦?

但是假如你的虛擬物體很大,你的書本很小,你可能需要從攝像頭裡面觀察虛擬物體的邊緣部分,但是此時你那個書本已經不在視野裡面了,怎麼辦?

這就是另外一個領域了,SLAM,也是現在的主流方法。怎麼利用SLAM來做增強現實?涉及到的知識稍微有點多,比如你應該時不時翻一下multiple view geomtery。你應該看看PTAM這樣的經典代碼。

其實程序語言和那些工具,如果你不是想做成終端產品,那些都不是很重要,你可以直接用matlab或者python。培養3D的想像能力比較重要。


毫無疑問的C++沒有其他選擇。

虛擬現實不是一種技術,增強現實也不是一種技術。兩種都是一種提法而已,可以有人下精確的定義,但這兩個詞都是概念,裡邊包含的技術多了去了。但最主要的無非是計算機圖形和計算機視覺。這在圖形圖像界也是兩個截然不同的方向。詳細的這裡就不說了,可以照這兩個方向去仔細查查需要學習什麼東西。


說到虛擬現實技術,首先離不開的就是3D立體,3D立體技術中三維建模技術和三維顯示技術則是必須要了解的兩項重要技術。三維建模是一個非常成熟領域,常見的有Autodesk旗下的3DMAX、MAYA以及工業領域常用的法國達索集團的CATIA和SolidWorks、美國PTC公司的Pro/Engineer、西門子公司的UG(Unigraphics NX)等。

3DMAX軟體界面

用CATIA進行汽車設計

用PRO/E進行機械設計(我也不知道設計的是啥LOL)

三維顯示技術更多的是硬體相關的,如立體投影設備,立體顯示器,時下非常火爆的VR頭盔,VR眼鏡等。我之前的一篇回答裡面有關於3D立體顯示相關的介紹:VR對設計領域會有什麼影響,設計師在VR方面能學習什麼? - 世界兩側的回答

如果想往3D電影方向發展還要了解3D立體攝像相關技術。

索尼為卡梅隆打造的用2台SONY F23組合而成的3D立體攝影機

說完了3D立體,我們再來說說虛擬現實的另外一些必要技術,各種用於交互體驗的「黑科技」。

與交互體驗相關的技術在當前應用的較為成熟的,應當首推力反饋技術和動作捕捉技術。

力反饋主要通過各種高精尖馬達和感測器配合來進行觸覺的模擬,初級的比如遊戲手柄的震動反饋,進階級的比如用於物理康復訓練的相關設備,工業級的用於裝配維修模擬的力反饋設備,甚至是用於遠程醫療和醫療科研相關的力反饋設備。這裡就要求對感測器相關技術和機械傳動相關技術有一定的了解。

各種用於物理性康復訓練的力反饋設備

法國PSA標緻雪鐵龍公司使用HAPTION的力反饋設備進行汽車的裝配設計驗證等相關工作

用力反饋設備進行遠程醫療或者外科手術的科研

而對於動作捕捉又分為光學動作捕捉(如美國的MotionAnalysis公司、德國Advanced Realtime Tracking公司)、慣性動作捕捉(荷蘭XSENS公司、英國Synertial公司)、電磁式動作捕捉(美國Ascension公司、美國Polhemus公司)以及超聲波動作捕捉,每一項技術都有其專業的技術背景,同時還要對人機工程學以及人體的肌肉和骨骼相關學科有所了解。

美國洛克希德馬丁公司利用MotionAnalysis公司的光學動作捕捉系統進行相關設備維修訓練

電影TED中小熊的人物動作就是通過荷蘭公司XSENS的慣性動作捕捉設備採集的

電磁式動作捕捉設備採集人體運動形態


OpenGL / DirectX / OpenCV / C++ / HLSL / GLSL / Kinect / Unity / Unreal / Metaio / 安卓開發 / 省略五百字

這麼多關鍵詞,可以說每個都需要掌握或至少熟悉,廣度和深度取決於你到底有多愛這件事情。


看你想具體從事什麼工作了。

編程:有基礎就直接學引擎 U3D UE4、沒基礎就從頭開始學C吧,然後JAVA,安卓...。

美術:3D建模、人物設計...有美術功底可以直接學工具軟體,如:3DMAX、MAYA等。

策劃:沒有遊戲製作經驗,可以考慮先從手游著手。

...

如果沒有具體的職業方向,但你對AR/VR充滿熱情。可以考慮先做一名傳教士,一邊了解,一邊佈道,隨著你了解的深入,結合你自己的經歷。相信你一定會找到適合你的方向定位。


主要就是各種遊戲引擎的腳本語言吧。別學c++,讓這門語言死了吧


推薦閱讀:

VR 技術能否改變互聯網教育行業?
在遊戲領域,增強現實 (AR) 和虛擬現實 (VR) 兩者是何關係?
Oculus Rift已经预售了,HTCVive、PS VR也快开始了。大家觉得哪个最好?
如何看待 Steve Baker 關於 VR 的文章《為什麼我認為 VR 設備難以成功》?
現在有哪幾種vr眼鏡性價比比較高?

TAG:編程語言 | 增強現實AR | 虛擬現實VR | OculusVR | HTCVive |