前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LayaAir2.7物理引擎大幅升级并新增cannon物理引擎支持,强化3D光影效果,新增vivo平台引擎共享插件,强化3D插件

LayaAir2.7物理引擎大幅升级并新增cannon物理引擎支持,强化3D光影效果,新增vivo平台引擎共享插件,强化3D插件

作者头像
Layabox Charley
发布2020-06-09 12:01:04
1.5K0
发布2020-06-09 12:01:04
举报
文章被收录于专栏:LayaboxLayabox

今天,LayaAir再次迎来一个大版本的更新,本次2.7.0beta版本的核心在于物理引擎的升级完善,以及考虑到当前有开发者对于物理引擎包体缩减的需求,我们还新增支持了cannon.js物理引擎库。另外,本次更新还进一步增强了3D光影的渲染效果,强化了LayaAir的Unity 3D资源导出插件的功能。关于小游戏平台的加载效率方面,LayaAirIDE中新增了vivo平台的LayaAir引擎共享插件支持。更多本次版本的详细说明,我们在下面的篇幅中,会逐个详细进行介绍。

3D物理功能增强

在LayaAir 3D物理中,本次的2.7版本,增加了固定关节组件Fixed Joint和可配置关节组件Configurable Joint的支持。开发者可以直接将Unity中的Fixed Joint以及Configurable Joint这两个物理关节组件,通过LayaAir的Unity导出插件,一键导出后直接在LayaAir引擎中使用。

Unity的固定关节组件Fixed Joint在LayaAir引擎中为FixedConstraint(固定约束),用于约束一个游戏对象对另一个游戏对象的运动,将两个物体永远以相对的位置固定在一起,即使发生物理改变,它们之间的相对位置也将不变。

Unity的可配置关节组件Configurable Joint在LayaAir引擎中为ConfigurableConstraint(可配置约束),这是一种自定义的约束类型,开发者可根据自身需求来设置六个自由度,此约束可以实现所有的约束类型功能。

我们还提供了断开力breakForce和断开扭矩breakTorque属性,用来设置约束的强度极限,同时在Script3D类中提供了物理的生命周期方法onJointBreak(),当约束力超过强度极限时,会打破约束,并调用该方法。

在易用性方面,本次版本还为刚体提供了约束查询的属性constaintRigidbodyA和constaintRigidbodyB,可方便查询与自己相关的两个约束的刚体名称。

constaintRigidbodyA查询获得的属性值是接入的约束名(与自己连接的刚体名称)。 constaintRigidbodyB查询获得的属性值是接出约束名(自己与其连接的刚体名称)。

LayaAir的Unity导出插件增强

本次的版本对于LayaAir的Unity导出插件也有所增强。更新如下:

  1. 增加导出 Cast Shadow / Receive Shadows 属性,Cast Shadow支持开关(On/ Off)控制。 light相关灯光设置暂不支持导出,需要在引擎内单独设置。
  2. 增加iOS纹理压缩的等级设置(高质量图片的导出会非常消耗时间),大家可根据需要设置即可。并且重构了纹理压缩的导出流程,输出了导出压缩纹理进度。
  3. 在物理组件方面,新增导出物理FixedJoint组件和物理ConfigurableJoint组件。
  4. 增加导出SkinMeshEnable属性。
  5. 增加Unity导出支持的属性表,内置在插件中,开发者可以在插件中直接找到此版本支持哪些导出属性。

支持cannon.js物理引擎

LayaAir内置的物理引擎是Bullet物理引擎,功能强大丰富。是我们推荐的引擎。考虑到有开发者反馈,某些产品只需要用到物理检测,碰撞等很基础的功能,并且希望引擎库的包体尽可能缩小。因此,我们决定在本次的2.7版本中,支持cannon.js物理引擎库,包括以下的cannon物理功能:

(1)cannon物理射线检测 (2)cannon物理碰撞检测 (3)cannon物理box,sphere,compoundCollider的实现 (4)cannon物理trigger的实现 (5)cannon物理形状Scale的实现 (6)cannon物理碰撞事件,触发事件的实现 (7)cannon物理属性(弹力,摩擦力等)的实现 (8)cannonCollider中增加localOffset属性

自此,开发者如果使用物理功能不多的情况下,可以选择cannon物理引擎方案。满足基础物理引擎功能使用的同时,相对于Bullet引擎大幅减少了包体。因为,使用cannon物理引擎方案,需要引入的cannon与cannonPhysics这两个库压缩后总和也不足200k。

压缩后的laya.cannon.min.js 仅133k 压缩后的laya.cannonPhysics.min.js 仅31k

但是,开发者需要注意的是,通过Unity插件导出的物理组件功能,对应的是LayaAir引擎的Bullet引擎,不支持将Unity物理组件功能导出为cannon.js,cannon物理方案仅仅是为对包体有严格要求的开发者提供的一种可选方案。

另外,由于cannon引擎与bullet引擎,本是两个不同的物理引擎,功能API无法做到完全统一,所以不支持项目直接切换物理引擎库,在立项的时候,就需要考虑好,要采用哪个物理引擎库。否则,切换物理引擎需要更改API代码。

3D光影渲染效果增强

在本次的版本中,我们还增加了聚光灯阴影SpotMap渲染管线,开发者不仅可以使用LayaAir引擎中提供的聚光灯实时阴影,还可以自定义实现聚光灯阴影。并且增加了spotShadow的效果宏来控制阴影质量,用以提升渲染效果。

LayaAir-IDE支持vivo平台引擎插件导出

LayaAir引擎插件是小游戏平台为了提升加载效率的一种方案。继微信与QQ小游戏平台之后,vivo小游戏平台也推出了引擎插件能力,让LayaAir引擎的插件也可以在vivo小游戏平台中运行。

采用LayaAirIDE发布vivo小游戏版本的时候,勾选引擎插件相关选项后,IDE发布功能会自动将插件引擎库分离出来。与微信和QQ小游戏平台不同的是,vivo小游戏平台会自动识别引擎插件版本,开发者对于使用插件版本和普通版本的提交流程,除了发布选项那里需要勾选(默认就是勾选的,不想用插件的需要去掉勾选),其它的完全一样。所以对开发者而言,使用vivo平台的LayaAir插件版引擎流程是平滑的,甚至是LayaAir的beta版引擎,也可以成为LayaAir通用引擎插件,这与微信及QQ小游戏平台不同,但,我们并不建议使用beta版进行提交。

另外,需要提醒的是,由于插件版引擎库,不能独立使用,那对于只使用了部分引擎库的开发者,可能还会导致首次加载变慢(这种可能是建立在你的产品引擎版本正好是玩家第一次下载,是种子引擎,而不是受益者)。比如,引擎插件中有6个库,你只用到了核心2D核心库,那3D核心库等其它的,也会同样被下载,不会根据你使用的情况去减少(未来可能会改变为引擎插件包中的库允许分离,具体要看vivo小游戏平台的官方更新通知),这也是与微信与QQ小游戏平台的引擎插件按需使用,有所不同。开发者要注意这里的区别,考虑清楚是否应该要使用引擎插件版本。

对于确定要使用引擎插件的开发者,还有要注意的是,由于vivo小游戏平台是自动识别引擎插件版本的,或许开发者只是在打开LayaAir引擎时不小心加个空格,都可能最终被vivo小游戏平台识别为非公有版LayaAir引擎插件,导致无法享受到公有版引擎的加载优势。所以,不要去修改LayaAir引擎的库,尽可能减少去编辑打开LayaAir引擎库。

更多注意事项与说明,可以前往LayaAir引擎官方文档和vivo的官方文档查看。 https://ldc2.layabox.com/doc/?nav=zh-ts-5-4-2 https://minigame.vivo.com.cn/documents/#/lesson/open-ability/plugin

写在最后

关于更多2.7版本的引擎功能,可以前往引擎官网https://layabox.com/,查看文档、示例、API。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Layabox 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档