2018年,ThingJS API 1.0极大地降低了3D可视化应用开发门槛!通过高度的功能封装,其他引擎用千余行代码实现的功能,在ThingJS中只用一行代码就能搞定!不仅如此,通过简化场景加载、自定义物体创建、自定义层级切换等一系列逻辑设计,让没有 3D 开发经验的人,也能快速开发出自己想要的物联网3D可视化应用。
随着数字化转型浪潮,我们希望ThingJS能提供更多样的垂直行业场景管理能力,成为更开放的数字孪生引擎。所以,2020年底,开始进行2.0的研发升级,从「性能、架构、功能」三方面全面提升ThingJS2.0的灵活性,使其成为更适合于数字孪生应用的引擎。
①API2.0接口开放量创新高
此前1.0的接口量是700+,而2.0接口开放量超1000+,功能新增45%,并在此基础上简化开发逻辑,大大提升开发效率,未来还将持续新增。
②采用模块化架构,组件级灵活扩展
API 2.0 进行了模块化架构升级,当API功能不满足需求时,可以很容易地通过组件、插件、预制件等方式灵活扩展。
之前,ThingJS1.0 的开发者只能自己找方法去扩展和复用功能,没有提供推荐方式。现在,ThingJS2.0中提供了组件的方式,可以为物体进行扩展,自由掌控组件的生命周期;还提供了插件的方式,可以对一个独立的功能模块进行复用,如电梯、停车场等;还提供了预制件,可以预先准备好一个具有功能的物体模板,使用时候拿起就用。
③支持UE/Unity/WebGL渲染引擎的切换
底层实现了逻辑和渲染分离,支持UE/Unity等渲染引擎实时切换,切换后能更好的发挥各引擎独特的能力。渲染时可以做到在UE/Unity/WebGL之间实现一键动态切换。UE/Unity采用云渲染的方式来实现,但开发者们使用的逻辑代码依然是ThingJS API,无需调整。
Web平台有很多的开源引擎,如:three.js,BabylonJS,PlayCanvas,ClayGL,Oasis等,以及在CS端也有,如:Unity、UE、CryEngine、Ogre等引擎,我们对其中一些引擎做了较深入的研究和项目实践,但发现这些引擎并不能完全满足我们所面对的数字孪生可视化领域的需求。尤其因为真实世界不断变化,物联网设备每个月都在新增,快速建模,快速纳管设备,对接实时数据实现难度很大。
这种情况下,我们结合了之前使用C++开发的引擎经验、WebGL的开发经验、上述引擎的使用经验、以及项目中的实践经验,开发了WebGL版的T3D引擎,以便更好地服务于Web平台的3D渲染。
在T3D引擎的框架设计中,主要分为四层:标准封装层,渲染逻辑层,场景资源层和扩展层。其中,标准封装层,渲染逻辑层,场景资源层构成核心库 t3d.js。核心库是一个Web优先的,最小可运行的通用图形渲染库。Web优先指的是t3d.js主要基于WebGL和WebGPU作为底层绘图标准。通用图形渲染库指的是t3d.js并不限定图形渲染以外的其它逻辑,适用性与扩展性比较好。
此外,官方提供常用需求的扩展,作为第二方库供开发者使用。至于定制化的需求,支持由开发者基于T3D开发第三方库。
渲染引擎封装的功能主要分为:场景树,几何体,材质,渲染管线。
T3D还在快速迭代中,未来我们还要做:
①基于Transform Feedback特性的更强大的粒子系统;
②节点式材质系统;
③更加强大的WebGPURenderPass
……
目前ThingJS API 2.0处于内部试运行阶段,预计将在2022年Q1发版。以下是本次完成的升级:
此外ThingJS API 2.0还将在接下来的一年内,持续补充以下功能:
①支持物理系统,提供更多仿真应用所需要的能力;
②支持WebXR,让大家可以轻松构建自己的Web端 VR 和 AR应用;
③支持节点式材质编辑器,方便大家自定义自己想要的材质效果。
未来,我们将利用升级版架构,快速支持最新的技术WebGPU,ThingJS开发者们不需要做任何的修改,就可以体验WebGPU带来的新的能力提升。并且在2022年底前,会逐步将T3D渲染引擎和ThingJS API 2.0开源,让T3D和ThingJS加速发展,成为众创引擎。