找回密码
 立即注册
科技快报网 首页 科技快报 快报 查看内容
联发科野心不小,天玑9500 AI算力直接翻倍《三角洲行动》大火 华硕B850/B860主板主宰战场2025家装新质践行大会:安吉尔以全屋净水破局,共筑家装产业链新生态这个暑期用鸿蒙 5开启缤纷夏日,多款应用福利享不停WAIC开幕|飞桨入选国家AI成果展,助力千行百业智能化升级潘刚引领伊利持续推进全产业链碳中和 为可持续发展注入强劲动力游族网络与曦望Sunrise达成战略合作,共建AI算力底座赋能游戏研运中化信息与海康威视续签战略合作协议,共同推动化工行业场景数字化转型商汤×华东院达成“AI+建筑”战略级合作,70年智慧焕发“日日新”vivo以Rust语言自研的蓝河操作系统内核正式开源三伏天来袭!你家的饮用水达标了吗?安吉尔空间大师守护全家健康储能行业破局者:海辰储能三年技术跃迁改写行业格局易度智能层流压差式气体质量流量控制器推动国产化半导体芯片发展BW2025技嘉AORUS战力全开,次元突破!硬核电竞引爆文化狂潮世界之巅的新能源里程碑:蔚来日喀则定日换电站落成天九企服总裁吕贵北京重磅演讲:民企破局,左手“深挖井”,右手“广布局”!全球矿业迎来绿色变革:宁德时代、弗迪电池与必和必拓达成战略合作百度李彦宏:萝卜快跑Robotaxi转向纯视觉路线抢占市场先机ROG×初音未来联名降临BW 2025,梦幻破次元,热爱齐绽放!天润融通Agent客服赋能四季沐歌:AI接管80%咨询任务,服务效率倍增

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

2019-10-28 10:18:22 来自: 映维网

(映维网 2019年10月28日)Mozilla日前为Javascript发布了一个全新的实验性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:它将在当前位置绘制形状。科技快报

3. 功能科技快报

框架当前具有的主要功能是:科技快报

支持多引擎/框架:你可以直接结合ECSY和已经习惯的2D或3D引擎。Mozilla提供了有关Babylon.js,Three.js和2D canvas的简单示例。为了实现简化,Mozilla计划从Three.js开始为最常用的引擎发布一组bindings和helper component。科技快报

专注于提供一个简单而有效的API:我们希望确保API surface尽可能小,从而令核心保持简单,易于维护和优化。你可以在其上构建更多的高级功能,而不是烘焙到核心中。科技快报

旨在尽可能避免Garbage Collection:它将尝试尽可能地使用Entity和Component的pool,这样在向World添加新的Entity或Component时不会分配对象。科技快报

System,Entity和Component的作用域位于“World”实例中:这意味着不会在全局范围内注册Component或System,所以你可以在同一页面运行多个World或应用程序,而彼此之间不会产生干扰。科技快报

每个System有多个Queries:你可以根据需要在每个System中定义尽可能多的Queries。科技快报

响应式支持:System可以响应对Entity和Component中的改动;System可以获得对Component的可变或不可变引用。科技快报

可预测:System将始终按照注册时的顺序或基于优先级属性运行。;响应性事件在发出时不会产生“随机”回调,而是在执行侦听器系统时将它们按顺序排入队列并进行处理。科技快报

现代Javascript:ES6,类,模块科技快报

4. 未来科技快报

项目依然位于初期阶段,所以你可以期望在接下来的几周内Mozilla对API和新功能进行大量的改动。他们希望探究的概念是:科技快报

语法糖:由于API正在开发之中,Mozilla并未集中精力添加大量的语法糖,所以特定的代码非常冗长。科技快报

开发者工具:Mozilla计划在未来几周内发布用于可视化ECS状态的开发者工具,从而帮助你调试和探知其状态。科技快报

ecsy-three:如前所述,ECSY支持跨引擎无,但Mozilla将致力于为以Three.js开头的常用引擎提供绑定。科技快报

Declarative Layer:鉴于其在A-Frame方面的经验,Mozilla明白Declarative Layer的价值,所以他们希望在ECSY进行试验。科技快报

更多示例:继续使用各种基础API,例如canvas,WebGL和诸如three.js,babylon.js等引擎。科技快报

性能:由于尚未真正研究内核的优化,所以他们计划在接下来的几周内对其进行探索,并发布基准测试和结果。这个初始发行版的主要目标是提供一个可用的API,使团队可以专注于内核,从而使其尽快运行。你可能会注意到,与其他原生ECS引擎相比,ECSY并不专注于数据本地化或内存布局。这对于ECSY并不是优先事项,因为在Javascript中,Mozilla对内存布局以及代码在CPU上的执行方式的控制要少得多。通过专注于防止不必要的Garbage Collection和针对JIT的优化,Mozilla获得了更大的胜利。科技快报

WASM:Mozilla希望尝试利用WASM线程和SharedArrayBuffers而在WASM实现部分核心或某些系统,从而利用其严格的内存布局和并行性。科技快报

WebWorkers:Mozilla正在构建用于说明如何将系统移交给worker并实现并行运行的示例。科技快报

你可以前往Github并访问源代码,并加入Mozilla的Discourse论坛。科技快报

  免责声明:本网站内容由网友自行在页面发布,上传者应自行负责所上传内容涉及的法律责任,本网站对内容真实性、版权等概不负责,亦不承担任何法律责任。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。

发布者:科技君

相关阅读

微信公众号
意见反馈 科技快报网微信公众号