Babylon.js和three,js 都web 3d js库,他们实现的略有不同,底层都是基于webGL,babylon是用typescript实现,three用es5。babylon是把所的api 都给你,而three是按需加载。用法相同只是API不一样
//渲染器
//Three.js
const renderer = new THREE.WebGLRenderer();
//Babylon.js
const engine=new BABYLON.Engine(canvas)
//场景
//Three.js
const scene=new THREE.Scene()
//Babylon.js 必须传入场景对应的渲染引擎
const scene=new BABYLON.Scene(engine)
//相机
//Three.js
const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
//Babylon.js 旋转相机为例,可以想象为是围绕地球的卫星
// Parameters: name, alpha(横向旋转), beta(纵向旋转), radius(观察半径), target position(目标点), scene
const camera = new BABYLON.ArcRotateCamera("Camera", 0, 0, 10, new BABYLON.Vector3(0, 0, 0), scene);
// 绑定交互
camera.attachControl(canvas, true);
最终还要看官方吐槽
精简一下他们彼此的内容:
babylon:three的源码是ES5写的,没有ts强类型约束,想学习源码不方便,而且他们还是一群野生程序员写的,我们是公司级别,有钱。
three: babylon源码高耦合,所有的东西都在一起。好比一个猩猩想要一个香蕉,你却给了它整个包含香蕉的森林。
结论:
项目小用threeJS,大项目用babylon。目前国内现实中都是web3D这种小项目,大型的web3D项目比较少见