最近拖更蠻嚴重,由於對本身的要求高了一大截。html
最近玩了個Three.js的Demo,也算了解了一波前端的動畫方面的延伸,由於我公司主要業務爲大數據,學了不少數據層的東西,動畫方面沒什麼用武之地,可是我是喜歡動畫效果的,哎,有沒有種逼良爲娼的感受。前端
想入門WebGL的時候就查了不少文章,之前學c++的時候接觸過一點OpenGL,查了一下二者的聯繫。有個圖很形象。c++
WebGL 1.0 基於OpenGL ES 2.0(OpenGL ES是針對移動設備的OpenGL)。
複製代碼
爲何是基於2.0呢?web
由於OpenGL2.0以前沒有着色器。從2.0以後開始才支持了這個很是重要的特性,「可編程着色器方法」。有沒有顏色仍是很重要的。編程
那麼OpenGL是什麼呢。OpenGL並非一個API或者SDK,而是一組規範,Khronos Group團隊維護這個規範(我也不知道是啥團隊)。api
這組規範定義了一組函數,這組函數傳入的是什麼參數,傳出的是什麼結果。因爲只是這樣的一組規範,因此只要合乎規範,誰都能以不一樣的方式實現函數。瀏覽器
瞭解到此感受已經能夠了。框架
WebGL是大部分瀏覽器直接支持的一種3D繪圖標準
複製代碼
Google在這個網站上webglsamples.org/發佈了一些WebGL作出的樣品。函數
炫酷到讓人心動,老司機已經感受到這個東西沒那麼好學了。大數據
若是直接使用WebGL進行開發的話,十分吃力,然而這個Three.js 已經火了不少年了,Three.js 是WebGL的一個開源框架。封裝了不少api,使用方便,節省咱們的開發細節。
因此我打算經過Three.js 輸出一片Demo來熟悉3D的Javascript.
首先咱們先搭建一個本地服務。
根目錄下建立index.js服務啓動文件,和一個項目文件夾www
而後咱們開始寫業務文件
想象屏幕裏就是個小世界,你就是上帝,你先構建了個空間。
建立相機,就是你看小世界的角度
渲染器決定了渲染的結果應該畫在元素的什麼元素上面,而且以怎樣的方式來繪製。
就是個單純的座標軸3緯長度爲200
建立地板,設置紋理參數。這裏我選擇了以一張grond草坪樣式的紋理貼紙。
咱們還須要設定一下地板的大小及位置
是的,scene.add方法就是將你創造的任何東西放到場景中去。
咱們將渲染器插入到頁面中去
開啓渲染,看一下效果.
效果大概就是這個樣子,一片黑,座標軸到是有了
由於咱們的材質沒有光,上帝說要有光,對吧,剛纔個人草坪哪去了。
再來看一下效果
空蕩蕩的草坪上有個座標系。
這時候咱們發現,咱們沒法移動視角。
孤單的場景,這時候上帝想加入一些東西,後來想一想加個立方體也太沒創意了,因此就去查了查加入個3D MAX的模型。
three.js支持計入obj數據模型及mlt貼圖文件。我就去找了找,好看的模型超級貴,這年頭版權意識都起來了,我也很尊重版權這個東西。因此弄了個沒那麼炫酷的、大家絕對猜不到的。電塔...
話很少說,看一下導入模型代碼
看一下效果
看一下動效
有沒有種回到苞米地的感受。
附上GitHub地址:
user-gold-cdn.xitu.io/2019/5/17/1…
通過初步瞭解,愈加感受這個東西深不見底,一切皆有可能。若是條件容許的話,我十分願意在WebGL的海洋裏肆意遨遊。尤爲是本人特別喜歡動畫效果。
emmm,不要催個人DIV監控平臺下..... 不妥更的做者不是好前端。
我對那篇文章的要求比較高,一直沒構思好,這篇文章有一點是爲了頂績效。
先溜了,最近多是高產母豬,績效要寫8篇。。。。