Babylon.js
Babylon.js是一個即時3D引擎,使用JavaScript工具庫通過HTML5在網頁瀏覽器中顯示3D圖形。原始碼可在GitHub上取得,並以Apache License 2.0授權條款發佈。
原作者 | David Catuhe[1] |
---|---|
開發者 | 微軟[2]與社群貢獻者[3] |
首次发布 | 2013年 |
当前版本 |
|
源代码库 | |
编程语言 | TypeScript, JavaScript |
许可协议 | |
网站 | www |
歷史與進展
Babylon.js 最初於 2013 年根據微軟公共許可證發布,由兩名微軟員工開發。 David Catuhe 創建了 3D 遊戲引擎,並得到了 David Rousset(VR、Gamepad 和 IndexedDB 支持)的幫助,主要是在業餘時間作為個人專案。 他們還得到了藝術家米歇爾盧梭的幫助,他貢獻了幾個 3D 場景。 是基於 Silverlight 的 WPF 的 3D 系統的早期遊戲引擎。[5][6] Catuhe的個人專案後來成為全職工作,也是他團隊的主要關注點。[7] 2015 年,它在巴黎的 WebGL 會議上進行了介紹。[8]
截至 2018 年,它擁有超過 190 名貢獻者,並關注其在遊戲中的推廣和應用,其中包括 Ubisoft 的一項。[9][10][11][12][13] 該用途已發展到多個領域。
技術說明
原始碼用 TypeScript 撰寫,然後編譯成 JavaScript 版本。終端用戶可以通過 NPM 或 CDN 使用 JavaScript 版本,然後他們使用 JavaScript 撰寫專案程式碼,訪問引擎的 API。 Babylon.js 3D 引擎和用戶程式碼由所有支持 HTML5 標準和 WebGL 的 Web 瀏覽器原生直譯,以進行 3D 渲染。
建模方法
所使用的 3D 建模過程是用殼模型表示的具有三角形面的多邊形建模。[14] 儘管僅作為一種過渡方法來創建殼模型的並集、減法和交集,但可以有限地使用構造實體幾何。[15] 使用著色器程序在 HTML 5 畫布元素上渲染建立的模型後,該程式使用多邊形模型確定畫布上的像素位置和顏色、套用於每個模型的紋理、場景相機和燈光以及 4 x 4 世界矩陣對於存儲其位置、旋轉和比例的每個對象。[16]
該技術用於產生如同照片般地逼真圖像的技術是基於物理渲染[17] 以及後處理方法。[18] 為了模擬模型和其他現實世界物理動作之間的碰撞,需要添加兩個物理引擎之一作為插件,分別是 Cannon.js 和 Oimo。[19] 例如涉及模型位置或顏色變化的動畫是通過稱為動畫物件的關鍵影格動畫物件完成的,而完整角色動畫是通過使用具有混合權重的骨架來實現的。[18][20]
參考書目
- Moreau-Mathis, Julien. . Packt Publishing. 2016 [2022-06-01]. ISBN 978-1785884795. (原始内容存档于2019-04-11).
- Chenard, Julian; Moreau-Mathis, Julien. [Creating a 3D Game with BabylonJS] (PDF). Programmez!. 2016 [2022-06-01]. (原始内容存档于2016-08-19) (法语).
- Bousquié, Jérôme. [3D on the Web with BabylonJS] (PDF). Programmez!. 2015 [2022-06-01]. (原始内容存档于2016-08-19) (法语).
- Catuhe, David. [Under the Hood of a 3D Engine] (PDF). Programmez!. 2014 [2022-06-01]. (原始内容存档于2016-08-20) (法语).
- Chenard, Julien. (e-book). 2015 [2022-06-01]. (原始内容存档于2016-08-23).
- Cozzi, Patrick. . . CRC Press. 2015 [2022-06-01]. ISBN 978-1498716079. (原始内容存档于2017-11-17).
參考文獻
- . linkedin.com. [11 March 2021]. (原始内容存档于2009-05-23).
... Creator and leader of Babylon.js open source project ...
- . winbuzzer.com. [18 April 2021]. (原始内容存档于2021-08-03).
- . github.com. [11 March 2021]. (原始内容存档于2022-05-31).
- . 2024年3月28日 [2024年3月28日].
- Elliot, Iain. . i-programmer.info. 2013-08-15 [2018-09-06]. (原始内容存档于2022-06-15).
- Dumand, Mickael. [An Interview with David Rousset on Babylon.js]. ekino. 2014-11-28 [2018-09-07]. (原始内容存档于2016-09-12) (法语).
- Irwin, Emma. . 2021-02-21 [2021-04-18]. (原始内容存档于2022-07-01).
- Rousseau, Jean-Michel; Rousseau, David. [BabylonJS and its latest features]. webglparis.com. 2015-10-12 [2018-09-12]. (原始内容存档于2016-08-19) (法语).
- . GitHub. [2018-09-06]. (原始内容存档于2022-05-31).
- Weber, Raanan. . Vol. 30 no. 13. MSDN. 2015-12-01 [2018-09-12]. (原始内容存档于2016-09-14).
- Weber, Raanan. . Vol. 31 no. 1. MSDN. 2016-01-01 [2018-09-12]. (原始内容存档于2016-09-14).
- . [2018-09-07]. (原始内容存档于2020-08-16).
- Protalinski, Emil. . The Next Web. 2014-05-09 [2018-09-07]. (原始内容存档于2020-10-25).
- Chenard, Julian. . Pixel Codr. [2018-11-27]. (原始内容存档于2019-08-27).
- Feldspar, Craig. . GitHub. [2018-11-27]. (原始内容存档于2022-06-01).
- Catuhe, David. . Smashing Magazine. November 2016 [2018-11-27]. (原始内容存档于2022-06-01).
- Ryan, Patrick. . Khronos Group. 2018-01-08 [2018-11-27]. (原始内容存档于2022-06-22).
- Moreau-Mathis, Julien. . Packt Publishing. 2016 [2022-06-01]. ISBN 978-1785884795. (原始内容存档于2019-04-11).
- Rousset, David. . Game Development. 2015-06-11 [2018-11-27]. (原始内容存档于2022-07-05).
- Beaulieu, Andy. . Spritehand. 2014-05-26 [2018-09-06]. (原始内容存档于2022-06-10).