整合three.js、A-Frame,Mozilla为WebXR发布全新实验性ECSY框架 - 微啦网

微啦网 首页 > 学霸

整合three.js、A-Frame,Mozilla为WebXR发布全新实验性ECSY框架

2019-10-29 06:25 weila

来源:映维网 作者 吴羽桦

Mozilla日前为Java发布了一个全新的实验性Entity Component System框架。

这家公司在过去数年间开展了一系列用于Web的交互式图形项目,并开始整合总结常见的问题。

根据研究,Mozilla发现理想的框架是:

基于Component:可将代码重用于多个项目。

可预测:避免随机事件或回调中断主流程,这会令调试或跟踪应用程序中发生的事情变得困难。

优秀的性能:大多数Web图形应用程序受CPU限制,所以应该更加关注性能。

简单的API:核心API应该简单,令框架更易于理解和优化;但同时可以根据需要构建更复杂的层。

支持多图形引擎:不应该绑定至特定的图形引擎或框架。

这属于Hige-Level功能,诸如three.js或babylon.js之类的图形引擎通常无法提供。另一方面,A-Frame提供了一个基于Component的优秀架构,而这在开发较大型项目时十分方便,但缺少前面提到的其他功能。例如:

性能:处理DOM意味着负载。例如,直接访问Component的值而非使用setAttribute/getAttribute。这可能会导致一定的副作用,如Component之间的不兼容和缺乏反应行为。

可预测:由于DOM生命周期或事件在修改属性时的事件回调而导致的异步处理,这使得代码难以调试和跟踪。

跨图形引擎支持:目前,A-Frame及其Component与Three。js紧密绑定,无法将其用于任何其他引擎。

展开全文

Mozilla分析了所述要点,整合了对three.js和A-Frame的经验,并研究了Unity等游戏引擎的最新技术,然后决定用纯Entity Component System(ETS)架构来构建新框架。Unity的MonoBehaviour或A-Frame的Components等更为面向对象方法相比,纯ECS(如Unity DOTS,entt或Entitas)区别在于,前者的Component和系统都具有逻辑和数据,而后者仅有数据(无逻辑),并且逻辑位于系统之中。

通过专注于为这个新框架构建一个简单的内核,Mozilla在开发新应用程序时能够更快地进行迭代,并允许他们根据需要实现新功能。它同时允许团队将其与Three。js,Babylon。js,Phaser,PixiJS等现有库一起使用,直接与DOM,Canvas或WebGL API进行交互,或者围绕新API进行原型开发,比方说WebGPU,WebAssembly或WebWorkers。

1. 架构

Mozilla决定采用面向数据的架构,因为他们注意到将数据和逻辑分离可以帮助他们更好地构思应用程序的结构。这同时允许他们优化内部,比方说如何存储和访问数据,或如何获得逻辑的并行性优势。

为了应用所述框架,你需要明确下面的术语与任何ECS基本相同:

Entities:具有唯一ID且可以附加多个Component的空对象。

Components:实体的不同方面,如几何和物理。Components仅存储数据。

System:逻辑所在。它们主要通过处理Entities并修改Components来完成实际的工作。它们基本属于数据处理器。

Queries:System根据Entities拥有的Components来确定它们对哪个Entities感兴趣。

World:用于Entities,Components,Systems和Queriess的容器。

到目前为止,所有信息都非常抽象,所以我们来深入研究一个简单的示例。这个示例将由在屏幕移动的方框和圆圈组成,尽管十分简单,但足以帮助你理解API的工作原理。

2. 示例

我们将从定义附加到Entities的Components开始:

Position:Entity在屏幕上的位置。

Velocity:Entity移动的速度和方向。

Shape:Entity具有的形状类型:圆形或方形。

下面我们定义将逻辑保留在应用程序中的System:

MovableSystem:它将查找具有速度和位置的Entity,并更新其Position Component。

RendererSystem:它将在当前位置绘制形状。

(完整源代码请查看Github或Glitch)

3。 功能

框架当前具有的主要功能是:



福运来彩票计划群 极速赛车登陆 环球彩票计划群 PK10哪个平台赔率高 快3娱乐平台 快赢彩票 彩票高賠率好平台 广西快3走势 北京两步彩APP 有谁知道极速赛车的官网吗