国产性猛交xx乱_性色国产成人久久久精品_亚洲成年人av_亚洲av片不卡无码久久_日本精品一二三_久久免费精品国产_欧美成人精品一区二区综合免费_无码人妻丰满熟妇区毛片蜜桃精品_四虎永久免费影院_国产一区二区三区四区在线

Three.js 基礎入門

2020-5-29    前端達人

課程介紹

近些年,瀏覽器的功能越來越強大,漸漸得成為了復雜應用和圖形的平臺。同時,現有大多數瀏覽器實現了對 WebGL 的支持,但要直接使用 WebGL 相關接口進行開發,則需要學習復雜的著色器語言,且開發周期長,不利于項目的快速開發。

面對這種情況,Three.js 應運而生,它不但對 WebGL 進行了封裝,將復雜的接口簡單化,而且基于面向對象思維,將數據結構對象化,非常方便我們開發。Three.js 的發展十分迅速,然而配套的學習材料卻比較匱乏,于是便有了當前的這個課程。

本課程作為入門課程,不會深入做源碼解析,主要協助初學者了解 Three.js 的數據結構,基礎 API 以及相關輔助插件的使用。幫助初學者達到快速入門的目的。

本課程共包含四大部分。

第一部分(第01-02課),入門前概述,帶你初步認識 Three.js、框架選擇標準、開發工具,源碼獲取,實現一個“Hello World”輔助工具。
第二部分(第03-08課),基礎功能篇,主要包括 Object3D、Scene、Mesh、Group、Geometry、Materials、Lights、Cameras、粒子等相關功能的介紹。
第三部分(第09-15課),進階篇,主要包括 Controls、Loaders、Animation、Tween、核心對象,與場景之間的交互以及性能優化介紹。
第四部分(第16課),實戰篇,帶大家利用所學知識實現一個 3D 小案例。

作者簡介

鄭世強,現就職于上海某網絡公司擔任前端工程師,CSDN 博客作者,長期活躍于各大論壇,擅長前端開發、WEBGL 開發。

課程內容

第01課:入門前準備

什么是 WebGL?

WebGL(Web 圖形庫)是一種 JavaScript API,用于在任何兼容的 Web 瀏覽器中呈現交互式 3D 和 2D 圖形,而無需使用插件。WebGL 通過引入一個與 OpenGL ES 2.0 緊密相符合的 API,可以在 HTML5 <canvas> 元素中使用(簡介引自 MDN)。

以我的理解,WebGL 給我們提供了一系列的圖形接口,能夠讓我們通過 JavaScript 去使用 GPU 來進行瀏覽器圖形渲染的工具。


什么是 Three.js?

Three.js 是一款 webGL 框架,由于其易用性被廣泛應用。Three.js 在 WebGL 的 API 接口基礎上,又進行的一層封裝。它是由居住在西班牙巴塞羅那的程序員 Ricardo Cabbello Miguel 所開發,他更為人知的網名是 Mr.doob。



Three.js 以簡單、直觀的方式封裝了 3D 圖形編程中常用的對象。Three.js 在開發中使用了很多圖形引擎的高級技巧,極大地提高了性能。另外,由于內置了很多常用對象和極易上手的工具,Three.js 的功能也非常強大。最后,Three.js 還是完全開源的,你可以在 GitHub 上找到它的源代碼,并且有很多人貢獻代碼,幫助 Mr.doob 一起維護這個框架。

WEBGL 和 Three.js 的關系

WebGL 原生 API 是一種非常低級的接口,而且還需要一些數學和圖形學的相關技術。對于沒有相關基礎的人來說,入門真的很難,Three.js 將入門的門檻降低了一大截,對 WebGL 進行封裝,簡化我們創建三維動畫場景的過程。只要你有一定的 JavaScript 基礎,有一定的前端經驗,我堅信,用不了多長時間,三維制作會變得很簡單。



用最簡單的一句話概括:WebGL 和 Three.js 的關系,相當于 JavaScript 和 jQuery 的關系。

功能概述

Three.js 作為 WebGL 框架中的佼佼者,由于它的易用性和擴展性,使得它能夠滿足大部分的開發需求,Three.js 的具體功能如下:


Three.js 掩蓋了 3D 渲染的細節:Three.js 將 WebGL 原生 API 的細節抽象化,將 3D 場景拆解為網格、材質和光源(即它內置了圖形編程常用的一些對象種類)。
面向對象:開發者可以使用上層的 JavaScript 對象,而不是僅僅調用 JavaScript 函數。
功能非常豐富:Three.js 除封裝了 WebGL 原始 API 之外,Three.js 還包含了許多實用的內置對象,可以方便地應用于游戲開發、動畫制作、幻燈片制作、髙分辨率模型和一些特殊的視覺效果制作。
速度很快:Three.js 采用了 3D 圖形最佳實踐來保證在不失可用性的前提下,保持極高的性能。
支持交互:WebGL 本身并不提供拾取(Picking)功能(即是否知道鼠標正處于某個物體上)。而 Three.js 則固化了拾取支持,這就使得你可以輕松為你的應用添加交互功能。
包含數學庫:Three.js 擁有一個強大易用的數學庫,你可以在其中進行矩陣、投影和矢量運算。
內置文件格式支持:你可以使用流行的 3D 建模軟件導出文本格式的文件,然后使用 Three.js 加載,也可以使用 Three.js 自己的 JSON 格式或二進制格式。
擴展性很強:為 Three.js 添加新的特性或進行自定義優化是很容易的事情。如果你需要某個特殊的數據結構,那么只需要封裝到 Three.js 即可。
支持HTML5 Canvas:Three.js 不但支持 WebGL,而且還支持使用 Canvas2D、Css3D 和 SVG 進行渲染。在未兼容 WebGL 的環境中可以回退到其它的解決方案。


缺點

雖然 Three.js 的優勢很大,但是它也有它的不足之處:



官網文檔非常粗糙,對于新手極度不友好。

國內的相關資源匱乏。

Three.js 所有的資料都是以英文格式存在,對國內的朋友來說又提高了門檻。

Three.js 不是游戲引擎,一些游戲相關的功能沒有封裝在里面,如果需要相關的功能需要進行二次開發。


Three.js 與其他庫的對比

隨著 WebGL 的迅速發展,相關的 WebGL 庫也豐富起來,接下來介紹幾個比較火的 WebGL 庫。



與 Babylon.js 對比

Babylon.JS 是最好的 JavaScript 3D 游戲引擎,它能創建專業級三維游戲。主要以游戲開發和易用性為主。與 Three.js 之間的對比:



Three.js 比較全面,而 Babylon.js 專注于游戲方面。

Babylon.js 提供了對碰撞檢測、場景重力、面向游戲的照相機,Three.js 本身不自帶,需要依靠引入插件實現。

對于 WebGL 的封裝,雙方做得各有千秋,Three.js 淺一些,好處是易于擴展,易于向更底層學習;Babylon.js 深一些,好處是易用擴展難度大一些。

Three.js 的發展依靠社區推動,出來的比較早,發展比較成熟,Babylon.js 由微軟公司在2013推出,文檔和社區都比較健全,國內還不怎么火。


與 PlayCanvas 對比

PlayCanvas 是一個基于 WebGL 游戲引擎的企業級開源 JavaScript 框架,它有許多的開發工具能幫你快速創建 3D 游戲。與 Three.js 之間的對比:



PlayCanvas 的優勢在于它有云端的在線可視化編輯工具。

PlayCanvas 的擴展性不如 Three.js。

最主要是 PlayCanvas 不完全開源,還商業付費。


與 Cesium 對比

Cesium 是國外一個基于 JavaScript 編寫的使用 WebGL 的地圖引擎,支持 3D、2D、2.5D 形式的地圖展示,可以自行繪制圖形,高亮區域。與 Three.js 對比:



Cesium 是一個地圖引擎,專注于 Gis,相關項目推薦使用它,其它項目還是算了。

至于庫的擴展,其它的配套插件,以及周邊的資源都不及Three.js。


總結

通過以上信息我們發現,Three.js 在其庫的擴展性,易用性以及功能方面有很好的優勢。學習 Three.js 入門 3D 開發不但門檻低,而且學習曲線不會太陡,即使以后轉向 WebGL 原生開發,也能通過 Three.js 學習到很多有用的知識。



現在最火的微信小游戲跳一跳也是在 Three.js 的基礎上開發出來的。所以,Three.js 是我們必須要學的 WebGL 框架。


入門前準備

瀏覽器兼容


Three.js 可以使用 WebGL 在所有現代瀏覽器上渲染場景。對于舊版瀏覽器,尤其是 Internet Explorer 10 及更低版本,您可能需要回退到其他渲染器(CSS2DRenderer、CSS3DRenderer、SVGRenderer、CanvasRenderer)。



注意:如果您不需要支持這些舊版瀏覽器,則不推薦使用其他渲染器,因為它們速度較慢并且支持的功能比 WebGLRenderer 更少。


點擊查看原圖

即可下載當前版本的代碼及相關案例,文件下載解壓后是這樣的:


微信截圖_20200529213036.png

其中相關文件夾的內容是:

build:里面含有 Three.js 構建出來的 JavaScript 文件,可以直接引入使用,并有壓縮版;
docs:Three.js 的官方文檔;
editor:Three.js 的一個網頁版的模型編輯器;
examples:Three.js 的官方案例,如果全都學會,必將成為大神;
src:這里面放置的全是編譯 Three.js 的源文件;
test:一些官方測試代碼,我們一般用不到;
utils:一些相關插件;
其他:開發環境搭建、開發所需要的文件,如果不對 Three.js 進行二次開發,用不到。
還有第三種,就是直接去 GitHub 上下載源碼,和在官網上下載的代碼一樣。

hello World

前面說了這么多,準備了這么多,最后,放上我們的第一個案例吧。由此來打開學習 Three.js 的大門:


<!DOCTYPE html><html><head>    <meta charset=utf-8>    <title>我的第一個Three.js案例</title>    <style>        body {            margin: 0;        }        canvas {            width: 100%;            height: 100%;            display: block;        }    </style></head><body onload="init()"><script src="https://cdn.bootcss.com/three.js/92/three.js"></script><script>    //聲明一些全局變量    var renderer, camera, scene, geometry, material, mesh;    //初始化渲染器    function initRenderer() {        renderer = new THREE.WebGLRenderer(); //實例化渲染器        renderer.setSize(window.innerWidth, window.innerHeight); //設置寬和高        document.body.appendChild(renderer.domElement); //添加到dom    }    //初始化場景    function initScene() {        scene = new THREE.Scene(); //實例化場景    }    //初始化相機    function initCamera() {        camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 200); //實例化相機        camera.position.set(0, 0, 15);    }    //創建模型    function initMesh() {        geometry = new THREE.BoxGeometry( 2, 2, 2 ); //創建幾何體        material = new THREE.MeshNormalMaterial(); //創建材質        mesh = new THREE.Mesh( geometry, material ); //創建網格        scene.add( mesh ); //將網格添加到場景    }    //運行動畫    function animate() {        requestAnimationFrame(animate); //循環調用函數        mesh.rotation.x += 0.01; //每幀網格模型的沿x軸旋轉0.01弧度        mesh.rotation.y += 0.02; //每幀網格模型的沿y軸旋轉0.02弧度        renderer.render( scene, camera ); //渲染界面    }    //初始化函數,頁面加載完成是調用    function init() {        initRenderer();        initScene();        initCamera();        initMesh();        animate();    }</script></body></html>

請將上面的代碼復制到 HTML 文件中,然后使用瀏覽器打開,我們就會發現下面的效果:

點擊查看原圖



————————————————

版權聲明:本文為CSDN博主「GitChat的博客」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/valada/java/article/details/80871701







日歷

鏈接

個人資料

藍藍設計的小編 http://m.wowo44.com

存檔

国产性猛交xx乱_性色国产成人久久久精品_亚洲成年人av_亚洲av片不卡无码久久_日本精品一二三_久久免费精品国产_欧美成人精品一区二区综合免费_无码人妻丰满熟妇区毛片蜜桃精品_四虎永久免费影院_国产一区二区三区四区在线
jjzzjjzz欧美69巨大| 2020国产精品久久精品美国| 中文字幕欧美一| 国产成人免费视频精品含羞草妖精 | 日韩av不卡在线观看| 中文字幕第九页| 欧美日韩国产大片| 亚洲亚洲人成综合网络| 中文字幕在线观看视频www| 在线精品国精品国产尤物884a| 亚洲欧美综合另类在线卡通| 99久久婷婷国产精品综合| 成年人一级黄色片| 成人欧美一区二区三区1314 | 国产一区二区91| 萌白酱视频在线| 国产欧美日韩中文久久| 丁香网亚洲国际| 色综合一个色综合| 亚洲精品菠萝久久久久久久| 不许穿内裤随时挨c调教h苏绵 | 成人精品亚洲人成在线| 私库av在线播放| 自拍偷拍欧美激情| 日本r级电影在线观看 | 久久综合久色欧美综合狠狠| 国产呦萝稀缺另类资源| 美女网站视频色| 国产精品青草综合久久久久99| 成人免费av在线| 在线亚洲免费视频| 亚洲小说欧美激情另类| 亚洲综合网在线观看| 国产亚洲精品aa| 不卡av在线网| 欧美高清激情brazzers| 久久精品国产一区二区三 | 欧美日韩一二三区| 日韩精品电影在线| 国产又粗又黄又猛| 专区另类欧美日韩| 日韩av手机在线播放| 欧美精品一区二区蜜臀亚洲| 高清视频一区二区| 欧美日韩一区二区不卡| 精品一区二区免费在线观看| 国产三级精品三级观看| 亚洲美女视频在线观看| 久久久国产精品无码| 国产性做久久久久久| 97精品久久久午夜一区二区三区| 欧美日韩国产综合一区二区三区 | 国产精品女人毛片| 精品人妻一区二区乱码| 精品免费一区二区三区| 粉嫩久久99精品久久久久久夜| 欧美色窝79yyyycom| 狠狠色狠狠色综合系列| 91国偷自产一区二区开放时间 | 日本一区中文字幕 | 国产精品久久久久影院| 久久久久亚洲av无码网站| 26uuu成人网一区二区三区| 成人久久18免费网站麻豆| 欧美一级欧美三级| 懂色av一区二区在线播放| 欧美一区二区三区视频免费播放| 国产宾馆实践打屁股91| 91精品国模一区二区三区| 成人免费福利片| 欧美一级欧美三级| 91在线观看视频| 久久毛片高清国产| 欧美图片自拍偷拍| 中国av一区二区三区| 在线免费观看a级片| 国产精品久久久久久久久免费相片| 一起草在线视频| 中文字幕制服丝袜成人av| 男人舔女人下部高潮全视频| 一区二区高清视频在线观看| 国产精品1区2区3区4区| 日韩中文字幕一区二区三区| 一本大道av一区二区在线播放| 另类小说视频一区二区| 欧美性大战久久久| 国产91丝袜在线观看| 欧美v日韩v国产v| 在线观看一区二区三区视频| 国产午夜精品理论片a级大结局| 精品无码人妻少妇久久久久久| 国产精品久久久久影院老司 | 国产亚洲精品中文字幕| 黄色av网址在线观看| 一区二区欧美在线观看| 免费三级在线观看| 国产美女av一区二区三区| 欧美一区二区三区免费大片| 小日子的在线观看免费第8集| 欧美韩国一区二区| 蜜桃无码一区二区三区| 欧美96一区二区免费视频| 欧美人牲a欧美精品| 99久久国产综合精品女不卡| 日本一区二区三区免费乱视频| av在线网站观看| 五月婷婷综合网| 欧美日韩另类一区| 92精品国产成人观看免费 | 久久久精品成人| 麻豆精品国产传媒mv男同| 777久久久精品| 91精品又粗又猛又爽| 亚洲一二三四在线| 欧美午夜电影在线播放| 91亚洲午夜精品久久久久久| 亚洲人午夜精品天堂一二香蕉| 免费国产羞羞网站美图| 国产成人精品免费| 国产精品你懂的在线欣赏| 亚洲国产123| 成人一道本在线| 中文字幕在线一区| 色综合久久综合网欧美综合网 | 成人免费毛片a| 国产精品不卡在线| 一区二区三区四区五区| 成人av在线影院| 中文字幕一区在线| 色综合中文字幕国产| 91女人视频在线观看| 亚洲免费电影在线| 欧美亚洲国产一区二区三区va| 91美女蜜桃在线| 一区二区三区精品在线| 欧美日韩亚洲综合一区| 亚洲成av人片在线观看无| 舔着乳尖日韩一区| 日韩丝袜美女视频| 欧美偷拍一区二区三区| 国产精品99久久久久久有的能看 | 亚洲狠狠婷婷综合久久久久图片| 蜜臀av在线播放一区二区三区| 日韩精品资源二区在线| 性欧美精品男男| 国产不卡视频一区| 亚洲人成伊人成综合网小说| 欧美日韩一区中文字幕| 欧美熟妇精品黑人巨大一二三区| 久久精品国产成人一区二区三区| 国产日产亚洲精品系列| 国产精品老熟女一区二区| 91美女福利视频| 日韩福利视频网| 久久亚洲影视婷婷| 色综合久久久久综合99| 无码人妻一区二区三区免费n鬼沢| 日韩精品欧美精品| 国产亚洲一二三区| 欧美亚洲一区二区三区四区| 超碰caoprom| 国产一区二区三区黄视频| 国产精品二三区| 欧美高清性hdvideosex| 亚洲成人黄色av| 成人激情小说网站| 日韩精品一级二级 | 少妇大叫太粗太大爽一区二区| 国产一区在线精品| 亚洲免费观看高清完整版在线观看熊| 欧美挠脚心视频网站| 蜜臀久久99精品久久久久久| av在线播放一区二区三区| 五月天一区二区| 欧美国产欧美亚州国产日韩mv天天看完整 | 欧美xxxx×黑人性爽| 国产乱国产乱300精品| 一区二区三区av电影| 久久综合给合久久狠狠狠97色69| 国产又黄又爽又无遮挡| 久久人妻一区二区| 成人av资源下载| 午夜精品久久久久久久久久久| 国产日韩在线不卡| 欧美精品高清视频| 北条麻妃在线观看视频| 182在线视频| 成人一道本在线| 免费精品视频在线| 依依成人精品视频| 久久老女人爱爱| 欧美日韩免费观看一区三区| 亚洲一二三四五六区| 熟妇高潮一区二区| 高潮精品一区videoshd| 美女尤物国产一区| 亚洲激情综合网| 国产精品污网站| 精品国产百合女同互慰| 欧美伦理电影网|