村农

莫笑农家腊酒浑,丰年留客足鸡豚。


web 3D及物理引擎库简介

冬冬

1、2D物理引擎(matterjs https://brm.io/matter-js/)

从功能来说:box2dweb > p2js > matterjs

从API友好性和社区活跃度来说 box2dweb < p2js < matterjs

性能上:box2dweb < p2js ≈ matterjs

2、3D物理引擎

目前在 Github 上搜索到的 3D 物理引擎库有 Cannon.js、Oimo.js、Ammo.js、Energy.js、Physijs 等等,大部分都已许久没有更新迭代了(长达好几年),项目的 Star 数量和 Issues 数量也不多,我们该如何选择?

Energy.js :使用 C++ 编写转 JavaScript 的 3D 物理引擎,源码不可读,目前 Github 比较冷清。

Oimo.js :一款轻量级的 3D 物理引擎,文件大小 153 KB。

Physijs:号称专为threejs开发的物理引擎,但是git上从15年就已经不再更新了。并且我已经测试过在最新的three.js 101dev 中已经无法正常使用了。

Cannon.js :完全使用 JavaScript 编写的优秀 3D 物理引擎,包含简单的碰撞检测、各种形状的摩擦力、弹力、约束等功能。 cannonJS

文档: http://schteppe.github.io/cannon.js/

demo : http://schteppe.github.io/cannon.js/examples/threejs_fps.html

从综合性来看,我更偏向于 Cannon.js ,因为这个我也测试了。^_^ ,虽然也是多年没有更新。但是它可以在最新版的three.js中正常使用。所以下面主要讲讲 Cannon.js。

3、web 3D

各种流行的库、工具对比

web 3D对比

01|Egret

官方将Egret定位为一整套游戏开发的“游戏解决方案”,包括游戏开发框架、开发辅助工具,生态环境相对完善。基于TypeScript进行开发,支持Flash到Egret的高效转换、跨平台支持,可打包为HTML5,以及iOS 和Android平台原生app。

地址:https://www.egret.com/

02|Three.js

Three.js的定位是一个基于JavaScript 3D库,但无疑它非常的强大而轻量。从创建简单的3D动画到创建交互的3D游戏,通过暴露简单的API,将3D内容的开发复杂性降至最低。

地址: https://threejs.org/

03|Pixi.js

Pixi与Three.js一样,定义为“2D WebGL renderer with canvas fallback”。它只是一款轻量的2D Webgl库,但同样可以根据它的API来开发游戏,将2D WebGL开发复杂性降到最低。

04|Layabox

Layabox与白鹭一样,也是成熟的整套游戏开发的”游戏解决方案“,同时支持2D、3D、VR的H5引擎,专为高性能游戏而设计,支持ActionScript 3.0,TypeScript,JavaScript编程语言。开发一次,发布flash,HTML5,mobile。

地址: https://www.layabox.com/

05|Hilo

Hilo 是阿里巴巴集团开发的一款HTML5跨终端游戏解决方案,它可以帮助开发者快速创建HTML5游戏,多种渲染方式, 提供DOM,Canvas,Flash,WebGL等多种渲染方案。

06|Cocos2d

Cocos2d是老牌的游戏引擎,采用原生JavaScript语言,可发布到包括Web平台,iOS,Android,Windows Phone8,Mac,Windows等平台。

07|厘米秀引擎

厘米秀引擎是QQ轻游戏使用的引擎bricks,为腾讯自研的游戏引擎,脚本层使用JavaScript。bricks引擎支持原生、WebGL,Canvas等多种渲染以及开发方式,开发者可以直接调用bricks引擎,也可以使用第三方游戏引擎封装的进行开发。

08 | thing.js

地址: https://www.thingjs.com/guide/

demo: https://store.thingjs.com/projects

4、数据可是化

echarts

地址:https://www.echartsjs.com/zh/index.html

highcharts

地址: https://www.highcharts.com.cn/

D3.js

地址: https://d3js.org/