如何從零基礎學習VR


轉載請聲明轉載地址:http://www.cnblogs.com/Rodolfo/,違者必究。

近期很多搞技術的朋友問我,如何步入VR的圈子?如何從零基礎系統性的學習VR技術?

本人將於2017年1月1日開始,在《博客園》平台進行《VR零基礎學習開發》系列文章連載,敬請關注。

在此呢,我寫下此文,希望能夠幫助那些有相同疑惑的朋友。

VR到底是什么。

VR是Virtual Reality的縮寫,中文的意思就是虛擬現實。

虛擬現實(VR)是近幾年來國內外科技界關注的一個熱點,其發展也是日新月異。簡單地說,VR技術就是借助於計算機技術及硬件設備,實現一種人們可以通過視聽觸嗅等手段所感受到的虛擬幻境,故VR技術又稱幻境或靈境技術。

虛擬現實是一門集成了人與信息的科學。其核心是由一些三維的交互式計算機生成的環境組成。這些環境可以是真實的,也可以是想象的世界模型,其目的是通過人工合成的經歷來表示信息。有了虛擬現實技術,復雜或抽象系統的概念的形成可以通過將系統的各子部件以某種方式表示成具有確切含義的符號而成為可能。虛擬現實是融合了許多人的因素,且放大了它對個人感覺影響的工程。虛擬現實技術是建立在集成諸多學科如心理學、控制學、計算機圖形學、數據庫設計、實時分布系統、電子學、機器人及多媒體技術等之上的。

虛擬現實應具有以下三個方面的含義。首先VR是通過計算機生成一個非常逼真的足以“迷惑”我們人類視覺的虛幻的世界。這種“迷惑”是多方面的,我們不僅可以看到而且可以聽到、觸到及嗅到這個虛擬世界中所發生的一切。這種感覺是如此的真實,以至於我們能全方位地浸沒在這個虛幻的世界中,這就是VR的首要功能,即浸沒感(Immersion)或臨場參與感。一般來說,虛擬系統的輸出設備應盡可能面向使用者的感覺器官以保證良好的浸沒感,如頭盔式顯示器(HMD),它將使用者的聽覺視覺功能完全置於虛擬的環境之中並切斷了所有外界信息。使用者在虛擬的環境漫游可以通過跟蹤使用者的頭及身體的運動來完成,與虛擬物體的接觸通過戴在手上的傳感裝置檢測來實現。

虛擬現實與通常CAD系統所產生的模型是不一樣的,它不是一個靜態的世界,而是一個開放的環境,它可以對使用者的輸入(如手勢,語言命令)作出響應。比如你可以拿起一虛擬的火炬並打開其開關,你一推操縱桿,仿佛可以在里面漫游,你甚至可以用虛擬的手感觸到虛擬物體存在,虛擬現實環境可以通過控制與監視裝置影響或被使用者影響,這是VR的第二個特征,即交互性(Interaction)。

虛擬現實不僅僅是一個媒體,一個高級用戶界面,它是為解決工程、醫學、軍事等方面的問題而由開發者設計出來的應用軟件,它以誇大的形式反映了設計者的思想,比如當在蓋一座現代化的大廈之前,你首先要做的事是對這座大廈的結構做細致的構思,為了使之定量化,你還需設計許多圖紙,當然這些圖紙只能內行人讀懂。正如這些圖紙反映的是設計者的構思,虛擬現實同樣反映的是某個設計者的思想,只不過它的功能遠比那些呆板的圖紙生動,強大的多。所以國外有些學者稱VR為放大人們心靈的工具,或人工現實(artifical reality)。這是VR所具有的第三類特征,即思想性(Imagation)。

綜上所述,虛擬現實是人們可以通過視聽觸等信息通道感受到設計者思想的高級用戶界面。

《VR零基礎學習開發》學習大綱

注意:算法、計算機圖形學及GPU優化和編程 的系統性學習 及 長期的知識積累,請關注本人單獨“算法”模塊。

Unity引擎基礎概述

行業知識匯總(引擎概念、游戲發展、VR AR的應用領域)

需求分析“概念”(對於提出的需求可以在邏輯上拆解成相應步驟);

開發工具介紹:VistualStudio IDE、MonoDevelop IDE

C#腳本語言基礎:數據類型、數學運算、邏輯運算三大模塊基礎。

C#腳本語言模塊化開發

過程性模塊化封裝:方法定義,理解形參、實參和返回值的意義;

面向對象模塊化封裝:類對象申請與使用、類對象繼承、虛擬化類使用、結構體、枚舉、宏;

C#腳本語言面向對象開發

C#語言OOP技術:類對象的創建和使用,理解構造和析構函數的申請與釋放過程、了解C#內存申請釋放的處理過程;成員變量屬性化操作、純虛類繼承設計方案、類抽象性變化、使用泛型完成任意類型對象、深度復制和淺復制的操作、Object基類的使用、集合應用;

高級數據結構(C#版本)

類對象的抽象接口開發。

數據結構:單雙向鏈表的構建與實際應用,棧的構建與使用,隊列的構建與使用;

排序算法:冒泡排序、快速排序、插入排序;

設計模型:單列、工廠模式、有限狀態機;

Unity3D C#腳本基礎API

Unity引擎的界面、組件等介紹; 3D坐標系、向量概念介紹; MonoBehaviour類了解Unity引擎的運作機制; 使用GameObject類構建基本的游戲對象; 學習Transform類使我們的3D世界動起來; 學習Vector2/3/4類使用; 學習Mathf數學類。 學習Input輔助類掌握Unity引擎對硬件控制的反饋處理。 學習Time類使用;

基礎3D數學

向量數學計算、向量數學計算與幾何意義;

自定義設計向量計算類;

3X3矩陣線性計算、4X4齊次放射矩陣計算、矩陣求逆、四元數數學計算 ;

實現向量空間轉換計算器;

補充三角函數(Sin, Cos, Tan, ArcCos, ArcSin, ArcTan);

Unity3D組件編程與應用

簡易多線程:協同。

基礎物理系統:剛體,碰撞體,射線。

攝像機組件與應用坐標系以及各個坐標系的轉化。

燈光與音效組件的使用;

渲染組合套件和網格過濾組件控制。

2D物理組件;

資源系統和組件系統:Resources,Component集合。

Unity3D動畫與粒子系統

使用Animation舊動畫系統實現簡單的重復性運動;

使用腳本實習舊動畫系統實現狀態機控制;

MecAnim新動畫系統的學習和使用;

2D Animator動畫系統綜合應用;

利用新動畫系統采用圖示化的方式構建動作執行方案;

使用代碼控制動畫狀態機產生運動變化;

動畫系統結合粒子系統的綜合應用;

Unity導航系統、場景烘焙、遮擋剔除 烘培使用技巧;

Unity3D 文件系統與UI界面

C#文件內存數據流開發;

XML文件讀寫;

Jsone文件讀寫;

UGUI布局與適配;

使用NGUI插件實現游戲UI制作;

計算機基礎圖形學

渲染基礎概念理解(GPU工作流程簡介);

學習Unity3D引擎的 ShaderLab語法;

Cg語言基礎學習;

Cg語言與Unity3D引擎結合實現渲染;

基礎光照着色算法(Diffuse、Phong、BinPhong);

切線空間學習實現凹凸貼圖渲染;

引擎控制着色器代碼工作;

Unity3D高級開發

C++語言基礎:指針,引用、函數和類定義

C++語言高級開發:重載函數與運算符、OOP技術、泛型、STL模板:

C++文件數據流操作;

C#調用C++動態庫;

Unity3D 高級網絡應用開發

Linux、Windows、OSX多線程開發;

線程安全學習與應用;

網絡套接字(Socket)套接字基礎知識學習;

套接字基礎通訊;

實現客戶端/服務端通訊;

實現Unity引擎調用C++套接字實現引擎網絡化;

Unity項目實訓

學習Editor自定義組件;

學習EditorWindow工具化開發,實現Unity引擎自定義工具制作;

實現地遍系統構建;AssetsBundle打包與讀取。

Unity項目實訓

程序構建戰斗系統核心框架;策略類游戲分析。

實現戰斗系統中的控制系統;策略類游戲實現(地圖編輯系統,角色技能系統、尋路系統、游戲數據讀寫,網絡通信);

實現戰斗系統中的尋路技術;

實現戰斗系統中的NPC的人工智能控制;

Unity項目實訓

優化戰斗系統;

對於計算密度高的算法向C++方式移植;

構建MVVM視圖架構,添加UI視圖;

實現數據系統,讓所有的角色擁有數指屬性;

Unity項目實訓

優化數值系統;

優化美術資源的內存占用;

優化程序的冗余算法;

優化算法的精細度;                     

開始移植Android和IOS平台;

本人對學習VR開發及長期知識積累的一些建議(僅供參考)。

 

(1)計算機圖形學技術的學習及相關知識儲備。

 

(2)虛擬現實系統的交互設備。eg:三維跟蹤、人體運動、手部姿勢、立體顯示、聲音輸出、觸覺力覺、三維掃描、三維打印等。

 

(3)虛擬現實系統的關鍵技術:立體顯示、環境建模、三維虛擬聲音、人體自然交互以及相關開發軟件及輔助軟件的學習。

 

(4)Vizard虛擬顯示開發平台的使用。

 

  該平台下模型瀏覽、流程控制、人物角色、窗口界面、媒體素材、物理引擎、交互設備、網絡控制等技術。

 

(5)Python語言的學習及上述技術的語言輔助。

 

 注:VR的學習,是長久技術的積累,是知識的沉淀,並非一日之功,道阻且長!

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM