Cocos Creator 3.7 重磅发布!一文解读全新功能与特性
connygpt 2024-12-14 10:47 10 浏览
Cocos Creator 3.7.0 是我们在不断挑战和提升自我路径上的又一力作。为了应对爆发的元宇宙需求以及支持更流畅更真实的 3D 世界,我们在渲染效果、GI 全局光照、LOD、动画系统、物理系统、易用性以及性能方面进行了众多提升。由于 3.7 版本更新众多,包含了大量的体验优化和缺陷修复,在此只列出重要更新,其余更新可以参考我们 GitHub 上的更新列表。
场景渲染
光照探针
GI 全局光照是提升 3D 渲染真实感的关键基础设施。在此之前, Lightmap 可以用来烘焙静态物体的间接光照,但是对场景中的动态物体则无能为力,如角色和场景中移动的物体,这样容易造成视觉效果不统一的问题。光照探针可以提前通过烘焙记录空间中各点的光照信息,然后在物体运动时根据记录在探针中的结果模拟间接光照,对场景中的动态物体也提供高质量的全局光照支持。同时,光照探针还具备良好的运行时的处理性能,预计算也相当快。更多介绍详见《光照探针》。
应用光照探针的角色:
使用光照探针实例化绘制的球体:
光照探针编辑:
反射探针
为了进一步提升渲染效果以及提升 3D 项目的沉浸感,我们加入了反射探针支持。它可以在场景中带有反射性质的材质上,渲染出真实的对周边环境的反射,此功能对画面的真实感提升是非常巨大的。它通过空间内某一点对附近区域的环境进行烘焙,在把周围环境信息储存后,应用在范围内有反射材质的物体上以实现真实环境反射的一种手段。在 3.7中,我们加入了具有两种模式的反射探针:Cube 烘焙模式用来烘焙一定空间范围内的立体环境。Planar 平面实时反射模式主要用来模拟平面上的反射,如光滑地面、水面等。更多介绍详见《反射探针》。
模型 LOD
LOD(Level of Details)是常用的一种大型场景优化手段,核心在于对远处或者不重要的物体,降低其显示细节,以达到提升渲染效率的目的。3.7 加入了模型 LOD 支持,可根据物体显示在屏幕上的尺寸比例,动态切换合适的模型精度,节省渲染资源。更多介绍详见《多层次细节》。
CSM 阴影层过渡
CSM 层级阴影最明显的一个效果问题就是在不同层级之间的阴影精度不同,导致在接缝处可能产生比较违和的割裂感,尤其是随着相机的移动,不同层级的拼接位置也在不断变化,导致很容易被发现的接缝移动现象。在 3.7 中,我们新增了 CSM 层过渡的支持,混合不同层级的渲染效果,使两个 CSM 阴影层级间过渡更加平滑。
后处理流程:Bloom & FXAA
基于 RenderGraph 的 自定义管线 中新增了 Bloom 后处理特效和 FXAA,将作为后处理定制的标准方案供大家参考。与旧的渲染管线难以扩展与配置不同,新的基于 RenderGraph 的自定义管线的可插拔结构使扩展管线的功能更加容易,同时对于 Forward/Deferred 渲染的输出结果进行后处理特效(如:Bloom 等)的新增也会更加便捷。
编辑器
原生场景编辑器(实验性)
3.7 的场景编辑器可以运行在以 C++ 为基础的 Windows/Mac 原生 Cocos 引擎之上,而不是原先以 JS/WebGL 为基础 HTML5 引擎。这意味着编辑器有潜力充分发挥 Cocos 引擎在原生端的性能优势,为各类元宇宙场景、3D 开放世界做好准备。此功能目前处于实验性状态,需在偏好设置 - 实验室开启 Use native engine for scene editor 开启试用。开启后,编辑器支持打开一个与 Scene 并存的独立 Game 面板,用于多窗口项目预览以及调试。
全新扩展管理器
3.7 升级了扩展管理器,采用了全新的 UI 并且支持一键安装和更新扩展插件,还支持记录和安装项目所依赖的扩展,让项目的分发更加方便。
为了实现更好的版本管理,提高扩展稳定性,新版扩展管理器也调整了一些管理机制:
3.7 开始编辑器将不再读取全局目录下的扩展,老项目升级到 3.7 时将会自动复制全局插件到项目中。此功能通过配套的 Dashboard 1.2.4 实现,请先确保本地 Dashboard 已自动更新至 1.2.4 版本。
从扩展管理器中安装的扩展将记录依赖关系,通过 Dashbord 1.2.4 以上版本打开项目时会自动检查并安装依赖的扩展。此功能目前还不支持 Store 中的插件,我们将在之后的版本中继续完善。
开发中的插件可以通过点开扩展管理器上方的导入按钮小箭头,选择开发者导入(Developer Import),此功能将为外部插件创建软链接到项目中,避免了插件同步问题。
Store 中的插件如需共用,在 3.7.0 仍与之前一致,需要在各台电脑上分别手动安装,或者将插件内容上传到 Git 版本库。
插屏设置功能更新
插屏设置用于在游戏启动时对 Cocos 或您的品牌进行露出,同时加速首屏启动时间,给用户更好的体验。在 3.7 我们开始着手对此前维护力度不足的插屏设置功能进行翻新,在收集了不少用户反馈,结合 Cocos 自身的业务需要后,插屏设置功能得到了初步重构。目前做出的主要调整如下:
暂时移除问卷调查界面,可以自由开关插屏显示(将来问卷仍会是必要的)。
移除背景颜色设置功能,目前仅支持黑色。
最小插屏显示时间修改为 500 毫秒。
项目设置:
构建面板:
资源管理
支持压缩纹理启用 Mipmaps,启用后编辑器会将压缩纹理的 Mipmaps 预先生成并一同导出。
新增 .exr 图片格式支持。
支持翻转图片绿色通道:
在编辑器的资源管理器移动或者重命名 ts 脚本时将自动更新 ts 中的导入路径,如需开启此功能请在偏好设置中的实验室开启此项开关:
新增了 Mesh Optimizer 的 simplify 减面算法,新的算法不再改变 Prefab 结构,并且 fbx 减面效果更稳定,不易丢失材质。
网格体 UV 检查
3.7 支持在 Mesh 的属性检查器中显示各个通道的 UV,方便用户快速确认导入模型的 UV 或者 Lightmap 的 UV 是否正确,是否在(0,1)的区间内,是否有重叠等信息:
框架能力
Marionette 动画系统
支持动画图变体。动画图变体是一种新的动画资产类型,允许用户在一个动画图的基础上创建变体,使其有可能在不同的角色上重复使用同一个动画图:
动画状态机混合预览面板更新,支持用户更直观方便的在动画图中预览混合的结果:
动画图支持节点拷贝粘贴功能
Class AnimationController 增加了动态覆盖动画图谱中的动画片段的方法
Class AnimationController 增加了查询动画图谱中层数的方法
动画图编辑器:增加了一个右键菜单,可以把运动状态变成 sub-statemachine 状态
优化了状态读取方法
优化粒子系统性能
调整 CurveRange 的构造逻辑,延迟构造底层曲线数据,同时优化了内部装饰器,加快粒子系统初始化速度。在不同复杂度的粒子下均有可观的性能提升。
和 3.6.2 粒子加载速度对比(加载时间越小,加载速度越快,粒子使用的功能模块越多,提升越明显):
其他性能优化
除了粒子加载速度以外,其他不少模块也有了不同程度的性能优化,其中包括以下几个比较显著的方面:
注:图示中每个平台下都会不断增加负载进行性能测试数据采集,不同平台之间负载并不一致,统一在帧率上进行差异展示,所以数值越高越好
Frame Animation 帧动画
3D 模型渲染
3D 物理
3D 物理系统
在物理系统中添加固定约束 FixedConstraint。
Point2Point 约束在 PhysX 物理物理后端使用 SphericalJoint 实现。
物理系统支持 lineStripCast, 用于近似曲线检测 :
默认物理材质支持在项目设置中通过文件配置。
修复了 bullet 刚体无法休眠 sleep 的问题
对 Bullet MeshCollider 设置 mesh 的时间提升了大约 100 倍运行速度。
修复了 bullet 内存释放的功能。
修复 PhysX 后端在刚体生成后动态设置 Mesh Collider 的 convex 属性失效的问题。
统一各个物理后端在节点缩放时 cylinder collider 和 cone collider 的表现。
修复 PhysX 原生后端(C++)发送大量错误事件的问题。
2D 物理系统
修复 box2d shape2d中apply() 方法没有对 node 以及碰撞体状态进行判断的问题。
修复 box2d 中 syncRotationToPhysics() 没有使用场景节点的世界旋转的问题。
修复 box2d 中 aabb 准确度的问题。
修复 box2d joint2D anglelimit 中角度转化问题问题。
修复 physics2d-builtin shape 编组时的没有检查 Collider 状态的问题。
新的 Physics2d Box2d::syncSceneToPhysics() 方法。
修复 builtin-2d-physics removeShape() 速度慢的问题。
添加了新的多边形切分算法:Hertel Mehlhorn。
优化 physics-2d 中没有 connectedBody 时的设置。
支持在编辑器中切换 physics-2d 后端。
更多
【场景渲染】增加 Sorting 渲染排序组件,并提供排序层顺序编辑接口,用户可以使用此组件控制 MeshRenderer 或者 SpriteRenderer 的渲染顺序。
【场景渲染】增加 FXAA HQ 以修正某些场景下物体边缘的虚影。
【场景渲染】优化各类与渲染相关的默认值,如默认的 PBR 材质参数、默认天空盒、太阳方向等。
【新建项目】添加了一个新的高质量 3D HQ 模板,默认开启阴影与光照等相关设置以达到更高质量的渲染效果,省去了手动开启场景、物体、灯光等多重阴影和光照的设置过程:
【构建发布】支持 Facebook Instant Games 发布平台,详见《发布游戏到 Facebook Instant Games》。
【构建发布】集成微信小游戏高性能模式开关:
【构建发布】支持在构建过程中通过点击 “x” 按钮中断构建任务。
【构建发布】支持构建任务排队,多平台构建时会更加方便。
【场景编辑】为参考图像添加缩放属性。
【场景编辑】场景摄像机添加曝光相关属性:
【编辑器】对动画编辑器的显示布局以及操作进行了优化,提升易用性以及用户体验:
【编辑器】资源管理器支持文件夹多选编辑。
【编辑器】将项目设置中的物理配置调整为物理材质,旧项目的配置将自动迁移为物理材质。
【编辑器】移动 Joint Texture Layout 到项目设置中。
【编辑器】移动创建构建扩展到创建扩展面板。点击“创建扩展”后会跳转到创建扩展面板,然后在创建面板中选择模板,完成详细设置,创建成功会自动打开插件所在目录:
【框架能力】节点提供了新的 Mobility 属性用于 Lightmap 烘焙设置:
- Static:视当前节点为不可移动物体或光源,烘培 lightmap 的直接和间接光。
- Stationary:视当前节点为不可移动高光光源,只烘培 lightmap 的间接光照和遮挡,直接光(高光等)仍实时计算。
- Movable:视当前节点为可移动物体或光源,不参与烘培 lightmap。
【框架能力】优化了刷新 layout 布局的机制,删除了 layout 布局必须有子节点才会更新的限制。
【原生框架】切换到 swig 来生成 JS 绑定代码,旧的 bindings-generator 工具现在已经废弃,生成所有 JS 绑定代码的时间成本减少到 3~5 秒。
【原生框架】优化了 se::Object 的构造和销毁,删除了不使用的哈希操作。
【原生框架】增加 se::Object:createObjectWithConstructor 方法,在 CPP 代码中通过 JS 构造器创建 JS 对象。
【原生框架】支持在本地桌面平台(Windows、Linux、macOS)上向执行文件传递命令行参数。
【原生框架】增加对 se::Object 创建、修改、检查 ES6 Map/Set 的支持。
【原生框架】提供 cc::event::EventBus 和 cc::event::EventTarget,以简化引擎内的事件调度。
【原生框架】删除 BaseNode 类,使用 Node 类来代替。
【原生框架】native.Downloader 支持中止功能。
【原生框架】支持 ios websocketServer。
【原生框架】在 function-corpping 中添加网络模块。
【原生框架】为 setUniform 添加预类型验证器。
【原生框架】优化引擎包体。
【文档】补全部分缺失的 API 文档,优化 API 文档内容。
点击下载最新版本,也期待能在论坛听到大家的声音,告诉我们你对 3.7 的建议和反馈,感谢各位开发者的支持!
相关推荐
- 自学Python,写一个挨打的游戏代码来初识While循环
-
自学Python的第11天。旋转~跳跃~,我~闭着眼!学完循环,沐浴着while的光芒,闲来无事和同事一起扯皮,我说:“编程语言好神奇,一个小小的循环,竟然在生活中也可以找到原理和例子”,同事也...
- 常用的 Python 工具与资源,你知道几个?
-
最近几年你会发现,越来越多的人开始学习Python,工欲善其事必先利其器,今天纬软小编就跟大家分享一些常用的Python工具与资源,记得收藏哦!不然下次就找不到我了。1、PycharmPychar...
- 一张思维导图概括Python的基本语法, 一周的学习成果都在里面了
-
一周总结不知不觉已经自学Python一周的时间了,这一周,从认识Python到安装Python,再到基本语法和基本数据类型,对于小白的我来说无比艰辛的,充满坎坷。最主要的是每天学习时间有限。只...
- 三日速成python?打工人,小心钱包,别当韭菜
-
随着人工智能的热度越来越高,许多非计算机专业的同学们也都纷纷投入到学习编程的道路上来。而Python,作为一种相对比较容易上手的语言,也越来越受欢迎。网络上各类网课层出不穷,各式广告令人眼花缭乱。某些...
- Python自动化软件测试怎么学?路线和方法都在这里了
-
Python自动化测试是指使用Python编程语言和相关工具,对软件系统进行自动化测试的过程。学习Python自动化测试需要掌握以下技术:Python编程语言:学习Python自动化测试需要先掌握Py...
- Python从放弃到入门:公众号历史文章爬取为例谈快速学习技能
-
这篇文章不谈江流所专研的营销与运营,而聊一聊技能学习之路,聊一聊Python这门最简单的编程语言该如何学习,我完成的第一个Python项目,将任意公众号的所有历史文章导出成PDF电子书。或许我这个Py...
- 【黑客必会】python学习计划
-
阅读Python文档从Python官方网站上下载并阅读Python最新版本的文档(中文版),这是学习Python的最好方式。对于每个新概念和想法,请尝试运行一些代码片段,并检查生成的输出。这将帮助您更...
- 公布了!2025CDA考试安排
-
CDA数据分析师报考流程数据分析师是指在不同行业中专门从事行业数据搜集、整理、分析依据数据作出行业研究评估的专业人员CDA证书分为1-3级,中英文双证就业面广,含金量高!!?报考条件:满18...
- 一文搞懂全排列、组合、子集问题(经典回溯递归)
-
原创公众号:【bigsai】头条号:程序员bigsai前言Hello,大家好,我是bigsai,longtimenosee!在刷题和面试过程中,我们经常遇到一些排列组合类的问题,而全排列、组合...
- 「西法带你学算法」一次搞定前缀和
-
我花了几天时间,从力扣中精选了五道相同思想的题目,来帮助大家解套,如果觉得文章对你有用,记得点赞分享,让我看到你的认可,有动力继续做下去。467.环绕字符串中唯一的子字符串[1](中等)795.区...
- 平均数的5种方法,你用过几种方法?
-
平均数,看似很简单的东西,其实里面包含着很多学问。今天,分享5种经常会用到的平均数方法。1.算术平均法用到最多的莫过于算术平均法,考试平均分、平均工资等等,都是用到这个。=AVERAGE(B2:B11...
- 【干货收藏】如何最简单、通俗地理解决策树分类算法?
-
决策树(Decisiontree)是基于已知各种情况(特征取值)的基础上,通过构建树型决策结构来进行分析的一种方式,是常用的有监督的分类算法。决策树算法是机器学习中的一种经典算法,它通过一系列的规则...
- 面试必备:回溯算法详解
-
我们刷leetcode的时候,经常会遇到回溯算法类型题目。回溯算法是五大基本算法之一,一般大厂也喜欢问。今天跟大家一起来学习回溯算法的套路,文章如果有不正确的地方,欢迎大家指出哈,感谢感谢~什么是回溯...
- 「机器学习」决策树——ID3、C4.5、CART(非常详细)
-
决策树是一个非常常见并且优秀的机器学习算法,它易于理解、可解释性强,其可作为分类算法,也可用于回归模型。本文将分三篇介绍决策树,第一篇介绍基本树(包括ID3、C4.5、CART),第二篇介绍Ran...
- 大话AI算法: 决策树
-
所谓的决策树算法,通俗的说就是建立一个树形的结构,通过这个结构去一层一层的筛选判断问题是否好坏的算法。比如判断一个西瓜是否好瓜,有20条西瓜的样本提供给你,让你根据这20条(通过机器学习)建立起...
- 一周热门
- 最近发表
- 标签列表
-
- kubectlsetimage (56)
- mysqlinsertoverwrite (53)
- addcolumn (54)
- helmpackage (54)
- varchar最长多少 (61)
- 类型断言 (53)
- protoc安装 (56)
- jdk20安装教程 (60)
- rpm2cpio (52)
- 控制台打印 (63)
- 401unauthorized (51)
- vuexstore (68)
- druiddatasource (60)
- 企业微信开发文档 (51)
- rendertexture (51)
- speedphp (52)
- gitcommit-am (68)
- bashecho (64)
- str_to_date函数 (58)
- yum下载包及依赖到本地 (72)
- jstree中文api文档 (59)
- mvnw文件 (58)
- rancher安装 (63)
- nginx开机自启 (53)
- .netcore教程 (53)