Cocos Creator 3D v1.1.1 更新说明

2020.7.3 产品动态 by Cocos

嗨,各位开发者。这是我们步入 v1.1 以来的第一个版本,很高兴今天跟大家正式见面了。

在这个版本里针对几个功能进行了升级,并持续提升易用性和稳定性,相信会带给广大开发者更好的使用体验,建议所有 v1.1 版本的开发者升级。

以下是 Cocos Creator 3D v1.1.1 完整更新说明。为保证阅读体验,[参考链接]统一放在文末。

重要更新  
1. 启用 macro.CLEANUP_IMAGE_CACHE,开启时会在贴图上传 GPU 后对 ImageAsset 主动进行释放,降低内存开销,默认开启。
2. 预览和编辑器环境中默认开启抗锯齿(macro.ENABLE_WEBGL_ANTIALIAS)
3. 烘焙功能支持烘焙模型的 light map,启用条件是模型的 mesh 数据包含两套 uv(第二套 uv 用来访问 light map),同时材质也需要勾选 lightmap 选项。[烘焙功能的使用文档]也已更新。

本图中左边有烘焙效果,右边没有

4. 预览小窗完善:新增分辨率选择与缩放,支持宽高比设置功能。
5. Planar shadow 支持 instancing(与模型本身的 instancing 状态同步),但对[骨骼动画贴图布局有更严格的要求]6. 预烘焙骨骼动画鲁棒性提升,如果一个模型只会在预烘焙模式下播放动画,运行时彻底删除,骨骼节点树也能正常显示了(对节点自身不包含动画的情况有近似处理),可以作为极限优化包体的手段。
7. 重构优化 EventTarget 实现,提供新的 Eventify 接口可以用来实现继承基类的同时为子类添加 EventTarget 能力。

同时我们也简化了 EventTarget 的实现,去除了节点和组件对于自己注册的所有目标的引用,避免循环引用。同时在派发事件时确保监听者对象的有效性,避免出现事件回调中已经被销毁的对象产生的问题。
8. [Breaking] 为保持命名规范统一,Quat.lerp 改为普通线性插值,增加 Quat.slerp。
9. 部分低端设备上不支持 Vertex Texture 或支持数量过少,无法开启 GPU 粒子,并且导致 v1.1 编辑器渲染错乱不可用。我们在论坛发现不少类似的反馈,用户只能回滚到 v1.0.4。目前该问题已修复,开发者们可以放心升级了。

文档和教程  
随着 v1.1.1 大量新功能的更新和体验的优化,我们也在 B 站准备了充分的教程,帮助大家更好地上手我们的引擎喔。
如果你是研发小白,那么放空老师的最新系列视频教程《Cocos Creator 3D 入门指南》一定非常适合你。
她会从最基础的编辑器面板包括层级管理器、资源管理器、场景编辑器、属性管理器、工具栏、菜单栏等等开始介绍,对 3D 所有的功能进行详细的解析。
新手较关注又不太了解的各类系统,如粒子系统、物理系统、光照系统等等,放空也会结合相关的案例进行解析,让你最快速度学会 Cocos Creator 3D。

截止今日,《Cocos Creator 3D 入门指南》Part 1 已经更新 4 节视频啦!前往 B站搜索[Cocos 官方]关注我们,不错过更新喔!
如果你是有一定基础的研发童鞋,并且想快速上手游戏开发,我们在 B 站连载的快上车系列视频教程会是你更好的选择,并且目前已经完结喔。

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

编辑器 

  • [FEATURE]烘焙功能支持烘焙模型的 light map
  • [FEATURE]支持快捷设置预览场景
  • [FEATURE]预览插件新增分辨率选择与缩放
  • [FEATURE]预览插件与预览小窗宽高比设置功能
  • [FEATURE]场景摄像机配置窗口增加滚轮速度设置
  • [FEATURE]支持修改 light map 弹出框默认路径
  • [FEATURE]粒子预览小窗口支持多选粒子
  • [FEATURE]支持拖动 SpriteFrame 资源到节点树或场景中直接生成 Sprite 节点
  • [FEATURE]插件偏好设置升级机制
  • [FEATURE]支持偏好设置自定义的预览浏览器
  • [IMPROVE]更新构建流程实现和流程控制细节
  • [IMPROVE]优化 Widget 的编辑界面
  • [IMPROVE]增加 Widget 值锁定功能
  • [IMPROVE]优化 TGA 贴图支持
  • [IMPROVE]对编辑器和预览环境默认开启抗锯齿
  • [IMPROVE]模型导入支持 quantized joints/weights
  • [IMPROVE]使用随机端口启动烘焙,避免任务冲突
  • [IMPROVE]新增场景面板支持复制粘贴删除等快捷键,优化交互效果
  • [IMPROVE]同步 3d 和 2d 模式下网格颜色的设置
  • [IMPROVE]新开和刷新场景过程中保持选中节点状态
  • [IMPROVE]屏蔽构建面板中 native 平台的 Upside down 屏幕方向
  • [IMPROVE]优化地形编辑体验和保存逻辑
  • [IMPROVE]对空项目数据迁移增加更多容错
  • [IMPROVE]新建的场景保存时弹窗选择保存路径
  • [IMPROVE]增加项目配置中的 Layers 说明
  • [IMPROVE]编辑器环境下对 Game 派发的事件回调进行 try catch 保护避免回调代码错误阻断编辑器启动流程
  • [IMPROVE]材质属性面板中将合批选项提前到 Passes 外部
  • [IMPROVE]优化资源搜索窗口和折叠显示效果
  • [IMPROVE]增加 prefab 数据还原中的容错
  • [IMPROVE]整理并优化资源和层级面板的右击菜单显示和事件
  • [IMPROVE]层级,资源面板添加对顶层菜单:全选的支持
  • [IMPROVE]层级面板中复制节点的时候不再给节点名附加 copy 后缀
  • [IMPROVE]层级管理器 scene 节点右击菜单上增加“定位到资源”,以便找到场景资源
  • [IMPROVE]优化减少长按 ctrl+v 带来的粘贴频率
  • [IMPROVE]动画面板添加对顶层菜单:复制,粘贴,全选的支持
  • [IMPROVE]动画编辑器支持移动关键帧的时候,可见区域跟随移动
  • [IMPROVE]动画编辑中在播放动画时才开启引擎主循环
  • [IMPROVE]进入动画编辑器不触发场景修改标记
  • [IMPROVE]动画编辑器编辑事件或曲线的时候,屏蔽部分快捷键
  • [IMPROVE]TextureCube 贴图面板操作体验优化
  • [IMPROVE]添加命令行构建进程退出代码
  • [IMPROVE]添加依赖资源丢失后构建的报错提示
  • [IMPROVE]新建脚本资源时生成的类名改为大驼峰格式
  • [IMPROVE]对默认地形贴图使用 mipmap 以减少噪点
  • [IMPROVE]优化一些 Gizmo 显示效果
  • [IMPROVE]优化双击 Camera 节点后的聚焦距离
  • [IMPROVE]迁移 EditorCamera 组件到编辑器内部
  • [IMPROVE]完善 ESLint 规则,修复代码问题
  • [IMPROVE]给 Toolbar 上的按钮增加提示 tip
  • [IMPROVE]在“开发者”菜单内增加“帮助文档”
  • [IMPROVE]增加部分组件的帮助文档
  • [IMPROVE]禁止资源内置的 material 修改
  • [FIX]修复 AssetDB 的一些已知问题
  • [FIX]修复 glTF 模型的插槽检测问题
  • [FIX]修复没有 morph 的模型导入后 Mesh.struct.morph 字段却不为空的问题
  • [FIX]修复构建压缩纹理的相关处理(感谢天美反馈)
  • [FIX]修复批量复制节点时的刷新和数量错误
  • [FIX]修复模型 prefab 节点重新关联 prefab 失效的问题
  • [FIX]修复模型节点从 prefab 资源还原导致的数据丢失问题
  • [FIX]修复模型使用外挂贴图的时候,inspector 显示资源丢失的问题
  • [FIX]修复搜索列表中双击资源和重新定位资源的问题
  • [FIX]修复资源缩略图在资源重新导入的时候不更新的问题
  • [FIX]修复 FBX 资源扩展名大写并且开启 dumpMaterial 的旧项目会丢失资源的问题
  • [FIX]修复 mtl 资源导入可能卡住的问题
  • [FIX]修复 mtl 迁移错误以及嵌套子资源错误的问题
  • [FIX]修复材质中部分 effect 资源没有 instancing 的报错问题
  • [FIX]修复 effect 错误的情况下,场景启动可能错误的问题
  • [FIX]修复资源管理器的 effect 资源覆盖时出现报错
  • [FIX]修复拖拽组件脚本资源到节点上的 bug
  • [FIX]无名称节点拖为 prefab 时自动设置默认名称
  • [FIX]修复删除当前场景资源后,无法保存当前场景的问题
  • [FIX]修复中文 ttf 字体无法导入的问题
  • [FIX]修复编辑器构建功能不支持自定义原生引擎的问题
  • [FIX]增加构建面板导入旧版本配置时候的容错处理
  • [FIX]修复自定义原生引擎部分文件拷贝错误
  • [FIX]修复桌面浏览器预览时界面旋转按钮不生效的问题
  • [FIX]调整动画编辑器数据更新逻辑
  • [FIX]修复退出动画编辑模式时没有关闭曲线、事件编辑器的问题
  • [FIX]修复动画编辑器鼠标上移状态下复制关键帧无效问题
  • [FIX]修复动画编辑器切换 clip 后数据可能不更新的问题
  • [FIX]修复动画编辑器播放状态的 Bug
  • [FIX]修复动画编辑器的选中、编辑状态管理
  • [FIX]修复动画编辑器长按移动关键帧、事件帧功能
  • [FIX]修复动画编辑器自动偏移画布计算错误,以及使用快捷键移动关键帧的偏移问题
  • [FIX]修复动画编辑器框选关键帧以及对应操作优化
  • [FIX]修复动画编辑器 alt 快捷键复制多个关键帧位置偏差与属性列表底色显示问题
  • [FIX]修复节点上动画 clip 数据变动时动画编辑器的同步更新问题
  • [FIX]动画编辑器中为丢失节点添加展开容错以及属性轨道容错
  • [FIX]修复动画插值曲线可能不起效的问题
  • [FIX]修复事件编辑自动保存,事件编辑时屏蔽关键帧移动
  • [FIX]修复第二次将动画编辑器面板放入编辑器内后无法显示线条的问题
  • [FIX]修复动画编辑器当前关键帧数显示
  • [FIX]修复动画编辑模式下修改脚本后的 undo reset 报错
  • [FIX]修复在动画编辑模式下场景刷新后无法正常使用的问题
  • [FIX]修复动画编辑器中同时选中多个节点上的关键帧并间隔排列,只对当前选中节点生效的问题
  • [FIX]修复动画编辑中从选中节点状态切换到未选中状态,属性关键帧数据残留的问题
  • [FIX]修复动画编辑器一些特殊操作导致的时间轴偏移问题
  • [FIX]修复动画编辑器内直接修改属性值的时候,场景节点没有及时更新的问题
  • [FIX]修复动画编辑器关键帧无效的问题以及复制数据被删除后不允许粘贴操作
  • [FIX]修复曲线数据序列化问题
  • [FIX]修复添加 ui 节点生成了 canvas 但没有挂载实际组件的问题
  • [FIX]修复绘制凹下地形后 undo 重新绘制的是隆起地形问题
  • [FIX]修复地形图块不是 1×1 的情况下复制时报错问题
  • [FIX]修复关闭场景时保存地形资源没有等待的问题
  • [FIX]修复清空光照贴图未能立即清空烘焙输出的文件夹
  • [FIX]修复相机小窗曝光参数不同步的问题
  • [FIX]修复 Joint Texture 配置界面没有选中 texture 的时候点击新建 Joint 报错
  • [FIX]修复 Joint Texture 配置界面无法滚动的问题
  • [FIX]修复编辑器顶部预览按钮区域设置的初始场景无效的问题
  • [FIX]修复地形资源保存可能出现的问题
  • [FIX]修复在 Terrain 组件属性面板内新建地形资源,操作窗口不会出现的问题
  • [FIX]修复 Light map 序列化失败的问题
  • [FIX]修复 Light map 生成后无法被设置到地形或模型上的问题
  • [FIX]地形节点在 light map 烘焙后加入 undo 记录
  • [FIX]修复面板拖拽抖动的问题
  • [FIX]面板刷新时增加容错机制,避免 loading 状态不消失
  • [FIX]修复网格缩放的问题
  • [FIX]修复默认场景的光源朝向
  • [FIX]修复偏好设置中 console 字体大小设置导致报错的问题
  • [FIX]修复小部分多语言细节
  • [FIX]修正 mac 上右键菜单偏移的问题
  • [FIX]修复部分组件的参考文档链接失效问题
  • [FIX]修复烘培后接着移动,撤销会将烘培结果一起撤销的问题
  • [FIX]修复场景相机在某些特殊情况下会旋转的问题
  • [FIX]修复九宫格编辑器能够停靠到窗口的问题
  • [FIX]修复选中子节点的时候撤销父节点坐标修改,选中框没有更新的问题
  • [FIX]修复重置布局后动画编辑器显示正在等待加载的问题
  • [FIX]修复在 resources 文件夹内使用自动合图,动态加载的时候会报错的问题
  • [FIX]修复在编辑器内无法把 ttf 字体赋给 richText 的问题

引擎  

  • [FEATURE]Planar shadow 支持 instancing(与模型本身的 instancing 状态同步),但对[骨骼动画贴图布局有更严格的要求]
  • [FEATURE]新增 SpriteFrame.createWithImage 方法支持用 ImageSource 或 ImageAsset 来快捷创建 SpriteFrame
  • [FEATURE]启用 macro.CLEANUP_IMAGE_CACHE,开启时会在贴图上传 GPU 后对 ImageAsset 主动进行释放,降低内存开销,默认开启
  • [IMPROVE]重构优化 EventTargets 实现
  • [IMPROVE]支持添加多个方向光源(只有一个会生效),删除当前主方向光源时主光源会自动切换到存在的其他方向光源(感谢 Hago 团队反馈)
  • [IMPROVE]预烘焙骨骼动画鲁棒性提升,如果一个模型只会在预烘焙模式下播放动画,运行时彻底删除骨骼节点树也能正常显示了(对节点自身不包含动画的情况有近似处理),可以作为极限优化包体的手段(感谢光子团队反馈)
  • [IMPROVE]骨骼动画支持使用欧拉角作为旋转曲线
  • [IMPROVE]在 Morph target 数量超过 uniform 限制时警告
  • [IMPROVE]优化不包含 Morph target 的 ModelComponent
  • [IMPROVE]简化内置渲染管线的配置和资源依赖
  • [IMPROVE]节点 setRTS 接口支持接受欧拉角 Vec3 对象作为旋转
  • [IMPROVE]保护 Node.invalidateChildren 避免对已销毁的子节点进行操作
  • [IMPROVE]优化粒子系统的运行时创建和内存开销
  • [IMPROVE]物理模块的修复和优化
  • [IMPROVE]优化 Instancing 时不必要的 buffer 内存占用
  • [IMPROVE]优化 Attributes 声明顺序
  • [IMPROVE]补充 ETC2 缺失的 defines
  • [IMPROVE]优化 UI Sprite 材质,使用高精度位置和 UV
  • [IMPROVE]优化 UI 组件的属性排序
  • [IMPROVE]优化部分类中的静态枚举类型引用,让用户编辑代码时可以得到提示
  • [IMPROVE]优化部分英文命名问题
  • [IMPROVE]部分 API 文档的英文翻译
  • [IMPROVE]在 WebGL 后端中,将 D16S8 贴图格式回退到 D24S8
  • [IMPROVE]调整几何模块中 ray_model 的返回值,改为为世界空间坐标
  • [FIX]修复粒子系统在低端设备上(不支持 Vertex Texture 或支持数量过少)无法显示并导致编辑器渲染错乱的问题
  • [FIX]旋转动画使用 Quat.slerp
  • [FIX]修复绑定 Frame buffer 时部分 GPU 状态缓存没有被清理的问题
  • [FIX]修复解除 VB/IB 绑定前没有解除 VAO 绑定可能导致的渲染问题
  • [FIX]修复 Instance buffer 在合并时 stride 可能不一致的问题(增加检查)
  • [FIX]修复 BatchedSkinningModelComponent 的初始化问题
  • [FIX]修复实时计算模式下的骨骼动画插槽
  • [FIX]修复骨骼动画实时计算模式下的 Model 包围盒计算
  • [FIX]修复骨骼动画精度在部分设备上导致开启 instancing 时错乱的问题
  • [FIX]修复编辑器中模型被 restore 时,骨骼动画失效的问题
  • [FIX]修复动画混合的一种边界条件导致的问题
  • [FIX]修复动画在普通 Wrap 模式下没有停止混合逻辑的问题(感谢 @xiayangqun 反馈)
  • [FIX]修复动画事件的监听和触发问题,废弃 AnimationState 的事件相关函数
  • [FIX]修复切分后的动画 Bake 前后的动画帧数对不上(感谢 @k8w 反馈)
  • [FIX]修复设置非常规帧率后 window.requestAnimationFrame 被替换导致该函数在恢复 60fps 时无法使用的问题(感谢疯狂游戏团队的反馈)
  • [FIX]修复节点 setWorldScale 的计算问题
  • [FIX]修复节点 TransformBit.RS dirty 状态下没有同步计算 Scale 的问题
  • [FIX]修复节点和场景互相之间 addChild 或 setParent 被 TypeScript 提示错误的问题
  • [FIX]修复节点监听已销毁的组件导致销毁的时候的崩溃
  • [FIX]修复粒子系统的壳发射模式下计算未归一化的问题
  • [FIX]修复天空盒的 binding layout 更新时机问题
  • [FIX]修复 UITransform 组件中的触点检测逻辑
  • [FIX]修复 UI Mask 的材质没有独立实例的问题
  • [FIX]修复 Graphics 组件 clear 时可能发生的报错
  • [FIX]修复 PageView 的 undo 问题
  • [FIX]修复 subMesh/mesh/model 的射线检测
  • [FIX]修复 model 射线检测结果中的顶点索引(vertexIndex)
  • [FIX]修复部分情况下物理 trigger 节点的同步问题
  • [FIX]修复物理碰撞体在修改 group 或 mask 后没有被重新激活导致假死的问题
  • [FIX]修复 ES6 下 CallbacksInvoker 类构造函数被当做函数使用的一处误用
  • [FIX]修复 Color.set API 参数类型问题
  • [FIX]修复重力感应事件回调中的加速计对象类型声明问题(感谢 @blade 反馈)
  • [FIX]修复微信平台上 gl.compressedTexSubImage2D 不生效的问题(感谢天美团队反馈,使用 gl.compressedTexImage2D 绕过)
  • [FIX]修复微信平台上 Game.EVENT_HIDE 和 Game.EVENT_SHOW 不会触发的问题(感谢 @xiayangqun 反馈)
  • [FIX]修复 Firefox 上可能存在的 WebGL2 buffer 绑定问题
  • [FIX]修复 vivo 平台音频下载问题
  • [FIX]Huawei,OPPO,vivo 平台 Websocket 请求容错(找不到证书)
  • [FIX]修复支付宝平台插屏界面的显示问题
  • [FIX]修复物理 cannon 后端的内存泄露问题
  • [FIX]修复物理 ammo 后端中刚体组件的 fixedRotation 错误的问题
  • [FIX]修复 alipay\cocos play\wechat 等平台的启动画面不一致的问题
  • [FIX]修复 mat4 上 translate 函数的 z 值返回错误的问题
  • [FIX]修复动画在 iOS 上偶尔不播放的问题
  • [FIX]修复设置 node 世界缩放效果错误的问题
  • [FIX]修复骨骼动画不支持 2 根以上骨骼的问题

以上就是此次更新的详细内容,欢迎大家下载更新。
小伙伴们可以继续通过留言评论、论坛、GitHub等渠道向我们提交使用反馈,你们的声音我们都会听到喔。