想要學下虛擬現實技術需要學習哪些方面的知識?
想要學習虛擬現實技術和增強現實技術,需要學下哪些方面的知識和哪種編程語言?
先弄清楚什麼是增強現實。比如你先實現一個最簡單的。
放一本書在桌子上,拿攝像頭對著書,在書上面顯示一個虛擬的物體出來。
這麼講,你需要的是首先在你的電腦裡面存一張書的照片,然後在攝像頭幀里提取特徵點跟你之前存的模板進行匹配,這樣你可以估算出攝像機相對書的一個相對位置。也就是說,你知道書在哪了。然後你畫個虛擬物體在書那裡就好了。
這麼看來:你需要知道的有特徵點檢測,比如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)等。
美國洛克希德馬丁公司利用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眼鏡性價比比較高?