Cocos Creator 3D v1.1 里程碑版本终亮相,三大维度齐升级!

自从去年 Cocos Creator 3D 发布以后,我们经历了 v1.0.x 的五个版本迭代,也陪伴大家度过了最难熬的疫情封城时期。在这看似停滞的 2020 年,引擎组和我们的开发者一样,始终没有停下脚步,一直在追求更好的产品品质。

除了不断提升稳定性,从 1 月开始,我们就启动了 v1.1 的版本迭代,陆续实现了很多开发者期待的新功能,也做了非常多的优化。不论是性能、功能还是易用性,我们都做了非常多努力。今天就是我们这段时间的成果 Cocos Creator v1.1 和大家见面的时候了。

为了帮助各位开发者更快了解 Cocos Creator 3D v1.1,5 月12 日(周二)19:00 Panda 将携手放空在 B 站为大家带来直播,详细介绍 v1.1 的重大更新及特性,传送门>>提前关注不迷路,我们不见不散喔。

在列举 v1.1 的一系列更新之前,我们想先给大家展示一下使用我们引擎制作的各种品类的 3D 游戏,从最初的休闲类到 IO 类、物理类,再到赛车竞速类、射击类。

近期腾讯光子工作室制作的「最强魔斗士」,不仅制作精良,加载和运行性能也非常优秀,光子团队也接受了我们的专访,并大方分享了游戏的开发经验,包括关卡设计、动画效果、角色换装、碰撞检测、资源管理和加载、性能优化等,感兴趣的童鞋可以点击链接查看详细内容喔。

相信这些游戏的品质已经足以证明 Cocos Creator 3D 的 3D 游戏制作能力。在这里预告一下,我们也会在近期继续为大家奉上「最强魔斗士」策划向专访分享,敬请期待喔。

以下是 Cocos Creator 3D v1.1 完整更新说明。

性能方面  

GPU Instancing 合批优化

为了释放更多 GPU 端的能力,我们支持了模型使用 GPU Instancing 特性来帮助开发者优化合并 Draw call(需要手动在材质中指定开启 UseInstancing 选项才会生效哦),适用于绘制大量顶点数据完全相同的动态模型,同时也可以通过自定义 shader 加入更多逐 instance 的材质属性。

[动态合批文档]更进一步,我们甚至支持蒙皮模型的动态 GPU Instancing 合批,同样只要满足顶点数据完全相同,即便是模型在播放不同的骨骼动画、动画进度不同的情况下,也可以正确合并渲染。

当然如果你的骨骼动画比较多,可能需要做一些配置,我们也为开发者提供了很方便的[骨骼动画贴图合批配置面板]

最后,更加令人安心的是,不仅支持渲染特性更完善的 Web 和 Native 平台,即便是微信平台也有相应的 WebGL 扩展支持,所以如有相关渲染效果需求,请一定开动脑筋,多加利用!

GPU 粒子特效

在最新的测试版本中,大家只需要在 ParticleSystem 组件的 Renderer module 中设置 useGPU 即可开启 GPU 粒子模拟。

GPU 粒子在不支持 JIT 的 iOS 平台性能测试结果如下,有成倍的性能提升,可以放心的使用一些轻量的粒子特效了。未来我们还会继续用更极限的方式优化粒子特效的性能。(注意:目前版本 GPU 粒子不支持 TrailModule 和 LimitVelocityOvertimeModule)

另外,我们还新增了粒子数据剪裁功能,只要在粒子组件面板中开启 EnableCulling 即可对未开启的粒子模块进行数据剔除,减小场景和 prefab 的尺寸。

功能方面  

动画系统

多个千呼万唤的动画功能在 v1.1 也正式加入了:

1. 开发者们通过内容生产工具导出的 Morph Target 顶点形变动画也可以在 Creator 3D 中正常播放啦,需要在 SkinningModelComponent 上勾选 EnableMorph 选项。

2. [骨骼动画的实时计算模式]:非预烘焙模式,作为后续 blending、masking、secondary physics 和代码手动控制骨骼姿势等需求的统一基础支撑框架。只需要在 SkeletalAnimationComponent 中不勾选 UseBakedAnimation 即可使用实时计算模式。

3. 动画组件的 crossFade 函数正式支持骨骼动画的融合过渡,由于这个功能基于实时计算模式,所以需要在 SkeletalAnimationComponent 中不勾选 UseBakedAnimation。

注意,因为这实际上让骨骼动画从 GPU 计算改为了 CPU 计算,所以性能损耗会大很多,需要尽量控制使用动画融合的模型数量。

地形功能增强和烘焙库

在 v1.1 中我们增强了地形编辑功能,也增加了场景 light map 烘焙功能。地形编辑的 UI 界面有了很大的提升,也增加了凹下、平滑等功能。

需要注意的是,这两个功能仍然在实验室阶段,所以还需要不断地打磨,功能和特性上尚未固化,欢迎大家提出宝贵意见。

[Terrain 文档]

新增物理碰撞体支持

为了加强对物理游戏的支持,我们新增了数个非常有用的碰撞体:

  • 胶囊体编辑 Gizmo
  • 圆柱体碰撞体及编辑 Gizmo
  • 静态网格碰撞体(暂不支持编辑)

除此之外,我们还增加了法线信息到物理射线检测结果中,方便判断物体朝向,开发者可以利用这个信息来计算子弹等物体在接触面上的反弹。

支持发布百度小游戏平台

v1.1 版本继续加强了平台支持,新增百度小游戏平台支持,开发者们可以直接将游戏发布到百度小游戏平台了,使用体验和其他平台一致。

易用性方面  

Cocos Creator 3D 接入 Cocos Dashboard

从 v1.1 开始 3D 引擎也直接由 Cocos Dashboard 来管理,这是 Creator 2.x 和 3D 引擎融合的起点。产品层面的融合还有很长的路要走,但我们有坚定的信心最终能够带给大家完善统一的产品体验。

Camera 预览小窗

虽然之前已经提供了一个独立的 Camera 预览窗口,不过大家对场景中随时观察游戏视角的需求非常强烈,我们也快速地实现了这个功能,从 v1.1 开始,当开发者选中场景中的 Camera 时,就会在场景窗口右下角看到这个 Camera 的预览小窗,切换 Camera 会实时改变预览内容。

材质预览

同样是一个预览功能,材质面板上也开启了材质球预览的功能,这样编辑材质的时候就可以直接在不同的预设模型上看到材质的效果预览了。

这个功能有时候过于鬼畜,程序员和技美可千万忍住不要把策划大人的脸贴上去,笑到脱力我们引擎不会负责任的(免责声明)

插件脚本依赖

这也是最新的测试版中新增的功能,再也不用担心插件脚本的加载顺序混乱了,大家可以给自己的 JS 插件脚本定义依赖关系,加载的时候也会按照依赖进行加载排序。这个功能会更好支持一些多脚本的第三方库,比如说 Protobuf。

我们也更新了一个使用 Protobuf 的实例工程到 [Example 仓库]中。

动画编辑器操作优化

动画编辑器一直都是我们非常重视的模块,从 Cocos Creator 时代开始就不断打磨到现在,在 v1.0.4 中,我们已经增加了诸如:快捷的批量关键帧间隔调整、跨节点轨道复制粘贴、间接属性(如材质属性)关键帧编辑、动画编辑器内直接对资源进行选取等非常好用的功能。

现在在 v1.1 中,我们进一步支持了多选关键帧后的缩放、移动和删除功能,还支持动画编辑器布局的调整。可以通过以下视频更直观地感受我们动画编辑器内的编辑体验。

需要注意的行为修改

  • macro.ENABLE_WEBGL_ANTIALIAS 配置在之前到版本中并没有生效,而 v1.1 我们修复了这个问题。由于该配置默认值为 false,开发者们可能会感受到抗锯齿被关闭的模糊感,可以通过在 main.js 的 cc.game.init 之前增加 cc.macro.ENABLE_WEBGL_ANTIALIAS = true; 来开启抗锯齿。默认值保持 false 的原因是关闭抗锯齿可以在不少中低端设备上提升性能。
  • 原生平台构建目录存在 frameworks 时将不修改配置数据只更新项目资源,原生平台的查看构建配置选项屏蔽平台相关修改。如果需要编辑器来重新配置项目数据,请删除原目录下的 frameworks 文件夹或者新建构建任务。关于原生构建任务我们后续还会收集用户反馈做进一步的优化。
  • 重构 SpriteFrame 结构,SpriteFrame 不再直接引用原始图像资源,而改为引用一个 Texture2D。
  • 胶囊碰撞体属性重构,height 变为 cylinderHeight。

文档和教程  

随着 v1.1 大量新功能的更新和体验的优化,我们也准备了充分的文档给大家参考。还有一个好消息是,我们在 B 站连载的快上车系列视频教程也完结了,如果你是刚接触 Cocos Creator 3D 的开发者,那么这份视频教程可以说是最合适的上手资料。

除此之外,在我们公众号上,最近也会陆续更新一些 3D 的技术分享,大家可以保持关注哦~

完整新增内容和优化

Editor

  • [FEATURE] 支持对插件脚本进行排序,可定义依赖关系
  • [FEATURE] 新增构建时模块信息擦除功能,大幅优化脚本导入速度
  • [FEATURE] 增加组件文档跳转功能
  • [FEATURE] 动画编辑器支持缩放关键帧,优化多选关键帧后的缩放、移动、删除
  • [FEATURE] 支持地形烘焙 light map 功能
  • [FEATURE] 新增场景编辑器内的摄像机预览小窗
  • [FEATURE] 新增材质属性检查器中的材质预览
  • [FEATURE] 支持在模型属性面板设置修改骨骼动画的 Wrap Mode(感谢 @tangxuanli2014 反馈)
  • [FEATURE] 动画编辑器上下部分支持拖拽更改布局方便编辑
  • [FEATURE] 支持发布到百度平台
  • [FEATURE] 原生平台的构建模板支持
  • [FEATURE] 脚本构建选项界面增加“擦除模块结构”选项
  • [FEATURE] 构建面板的场景支持搜索
  • [FEATURE] Console 内部分资源报错支持点击后资源管理器中对应资源直接闪烁提示
  • [FEATURE] 编辑器根据状态动态调整帧率,降低 CPU 占用
  • [FEATURE] 多选节点的时候支持添加删除组件
  • [FEATURE] 支持同时拖拽多个资源到 Inspector 中的数组元素上
  • [FEATURE] Inspector 数字输入框支持鼠标点击属性名拖拽来快速修改数值
  • [FEATURE] 模型导入增加了“使用顶点色”选项
  • [FEATURE] 在偏好设置 —> 插件 —> builder 选项内可实时修改构建进程的 log 等级
  • [FEATURE] 新增 Camera 和 Gizmo 配置(相机的颜色和网格颜色)
  • [FEATURE] 项目设置中 Layers 设置支持清空名称即为删除
  • [FEATURE] 新增胶囊和圆柱碰撞体编辑 Gizmo
  • [IMPROVE] 大幅降低资源管理器性能开销
  • [IMPROVE] 新建项目时统一了 git 换行符配置
  • [IMPROVE] 地形编辑和画刷功能增强
  • [IMPROVE] 支持 UMD 格式的插件脚本
  • [IMPROVE] 增加 console 在 ready 时的容错
  • [IMPROVE] 优化剪切节点的功能
  • [IMPROVE] 节点支持空名称
  • [IMPROVE] 优化 Camera 和 Gizmo 弹窗间距和缩短隐藏时间
  • [IMPROVE] 优化 Gizmo 性能
  • [IMPROVE] 优化编辑器 i18n 数据格式
  • [IMPROVE] 优化脚本导入失败时的输出消息,帮助解决循环引用问题
  • [IMPROVE] 优化构建面板的场景列表显示
  • [IMPROVE] 添加组件选择弹框使用优化
  • [IMPROVE] Inspector 内限制编辑内置资源并且增加锁定提示
  • [IMPROVE] 优化材质 Inspector 中选框的点击区域
  • [IMPROVE] 优化 Color Picker 保存颜色的功能
  • [IMPROVE] 更改压缩纹理、自动图集、图片导入的图片库
  • [IMPROVE] 优化自动图集面板,允许直接查看合图资源以及修复点击 preview 触发修改
  • [IMPROVE] 优化 assets 面板操作体验:支持回车键重命名;支持限定类型搜索
  • [IMPROVE] 支持 glTF 格式中的 sparse accessor
  • [IMPROVE] 部分面板内搜索后支持使用上下方向键选择搜索结果
  • [IMPROVE] 部分面板内搜索后支持使用 enter 键选择
  • [IMPROVE] 将预览设备分辨率数据迁移到项目配置内
  • [IMPROVE] 同步相机设置颜色的属性改为 clearColor
  • [IMPROVE] 动画编辑器中对所有 ctrl 相关的快捷键进行 mac 的兼容处理
  • [IMPROVE] 消除当脚本构建的 bundle 过大时候的警告
  • [IMPROVE] 移除百度平台不支持的部分横屏方向
  • [IMPROVE] 构建场景搜索功能不区分大小写,优化列表展示
  • [IMPROVE] 移除 Huawei、OPPO、vivo、小米平台对 icon 图标后缀限制
  • [IMPROVE] 添加原生平台校验处理,参数填写不完善界面将直接提示
  • [IMPROVE] 优化构建 log 输出,将可以直接在控制台关联到对应报错资源
  • [IMPROVE] 增加导入器异步保存时的等待,避免导入流程未完成情况下导致的文件丢失
  • [IMPROVE] 优化地形编辑存储
  • [IMPROVE] 禁止对地形属性进行动画编辑操作
  • [IMPROVE] 兼容低版本 TexturePacker 导出资源

Engine

  • [FEATURE] 模型支持自动 GPU Instancing 合批
  • [FEATURE] 骨骼动画支持自动 GPU Instancing 合批
  • [FEATURE] 支持 Morph target(Blend Shape)
  • [FEATURE] 支持动画 CrossFade
  • [FEATURE] GPU Based Particle System
  • [FEATURE] 相机组件调整:加入 FOV 轴向和曝光相关参数设置以及优化编辑器面板(感谢 @k8w 反馈)
  • [FEATURE] 新增静态网格碰撞体和圆柱碰撞体
  • [FEATURE] 增加法线信息到物理射线检测结果中
  • [FEATURE] 增加 ray_model、ray_mesh 到 geometry.intersect
  • [IMPROVE] GFX 抽象优化和代码精简,简化 WebGL 后端实现
  • [IMPROVE] 在静态合并模型批次后不需要再手动禁用原始节点或模型(感谢 @玻璃小屋 反馈)
  • [IMPROVE] 优化组件生命周期函数的运行保护(合并自 Creator 2.x)
  • [IMPROVE] 重构 SpriteFrame 结构,SpriteFrame 不再直接引用原始图像资源,而改为引用一个 Texture2D
  • [IMPROVE] 优化游戏和引擎启动流程
  • [IMPROVE] 优化动画数据准备逻辑
  • [IMPROVE] 优化动画混合逻辑
  • [IMPROVE] 优化骨骼动画曲线支持
  • [IMPROVE] 优化骨骼动画中的曲线缓存
  • [IMPROVE] 优化从初始姿态开始播放动画时的奇怪过渡问题
  • [IMPROVE] 优化 AnimationClip 的哈希计算
  • [IMPROVE] 完善 Camera 属性排序和文档
  • [IMPROVE] 物理引擎状态同步时机和调用次数优化
  • [IMPROVE] 胶囊体碰撞器属性重构,height 变为 cylinderHeight
  • [IMPROVE] 对插屏开启 Retina 适配,效果更好
  • [IMPROVE] 移除部分无用警告信息
  • [IMPROVE] 同步 Creator 2.x 中 Widget 的 Align Mode 选项

以上就是此次更新的详细内容,也欢迎小伙伴们继续通过论坛、GitHub、Cocos 企业服务等渠道向我们提交使用反馈喔~