简体中文
简体中文

Galacean Engine v0.4 发布

Bo Kou
June 17, 20219 min read

引擎方面,重点升级 glTF 解析器,2D方面主要增加了遮罩能力和对 Lottie 动画的支持;编辑器方面,增加了 2D 编辑与场景编辑。另外,官网同步增加 20+ 示例和文档,包括开发者急需的美术流程和小程序文档。

功能

glTF 升级

出于对 glTF 稳定性和功能完善等方面的考虑,0.4 版本对 glTF 进行了全面的重构,大大增强了功能性和扩展性,同时修复了若干已知 Bug,覆盖了 glTF 官方的测试案例。

插件扩展方面,升级后的 glTF 解析器使用了管道(Pipeline)模式,如果默认解析器不能满足您的需求,可以参考引擎默认管道解析器的写法进行自定义配置管道,也可以通过装饰器的写法扩展插件,目前已支持以下插件:

插件功能
KHR_draco_mesh_compression支持 Draco 压缩模型,节省显存
KHR_lights_punctual支持多种光源组合
KHR_materials_pbrSpecularGlossiness支持 PBR 高光模式
KHR_materials_unlit支持 Unlit 材质
KHR_materials_variants支持多材质切换
KHR_mesh_quantization支持顶点数据压缩,节省显存
KHR_texture_transform支持纹理 TilingOffset 缩放位移变换

工具方面,我们贴心地提供了 glTF Viewer,方便开发者拖拽 glTF 文件夹进行在线预览/调试。

50270383-B023-42E0-ADD0-1BBA5ECA970F.png

glTF(GL Transmission Format)是 khronos 发布的一种能高效传输和加载 3D 场景的规范,与 FBX、OBJ 等传统模型格式一样,基本支持 3D 场景中的所有特性,也是目前 Galacean Engine 推荐的 3D 模型格式。glTF 的插件机制使开发者可以自定义实现想要的功能。

2D 升级

精灵遮罩

精灵遮罩在 2D 中是比较常见的功能,通过遮罩,可以控制精灵某些区域的显示和隐藏。自 0.3 版本重构 2D 精灵后,0.4 版本新增了 SpriteMask 组件,提供精灵内遮罩和外遮罩的能力。

if0hr-g1gi7.gif

编辑器也同步增加了 SpriteMask 组件和 SpriteRenderer 的 mask 属性设置。

image.png

Spine

Spine 是 Galacean Engine 动画生态中的重要组成部分,因此对 Spine 的适配程度直接影响着 Galacean Engine 生态的发展,0.4 版本我们对 Spine 的资源加载进行了强化,之前的版本只支持单路径加载,0.4 在此基础上增加了双路径加载。单路径加载要求 json(or bin) 和 atlas 必须同名。支双路径加载后 json(or bin) 和 atlas 文件可以不同名,更加灵活:

单文件:

const spineEntity = await engine.resourceManager.load({
	url: "https://gw.alipayobjects.com/os/OasisHub/spine0.json",
  type: "spine"
});

双文件:

const spineEntity = await engine.resourceManager.load({
	urls: [
    "https://gw.alipayobjects.com/os/OasisHub/spineX.json",
    "https://gw.alipayobjects.com/os/OasisHub/spineY.atlas"
  ],
  type: "spine"
});

另外,还修复了 SpineAnimation 组件在其挂载的实体进行克隆操作时,组件中 spine 骨骼与动画数据共享导致的 bug。

Lottie

Lottie 作为近年来广受前端开发者欢迎的动画格式,也被 Galacean Engine 作为拥抱生态的重点对象。0.4 版本我们初步实现了 Lottie 节点树中精灵元素(Sprite Elements)的绘制,后续会逐步支持蒙版、形状等高级元素。不同于 lottie-web 的 SVG 或 Canvas 渲染方案,Galacean 的 Lottie 组件借助 Galacean Engine 的 BufferMesh 功能实现了高性能的合批绘制能力。

编辑器新增 2D 编辑模式

操作区导航栏增加了“2D模式”的切换按钮,可以让用户在 3D/2D 编辑模式之间快速切换,方便 2D 项目的场景编辑。

flappybird.gif

场景升级

背景

在 0.3 版本中,背景色的设置在相机组件中不合理。0.4 版本我们把背景相关的设置收敛到场景属性中,允许把背景设成纯色或天空,并开放了天空模式的网格和材质的设置。

// 纯色模式背景
background.mode = BackgroundMode.SolidColor;
background.solidColor.setValue(1, 1, 1, 1);
 
// 天空模式背景
background.mode = BackgroundMode.Sky;
background.sky.mesh = PrimitiveMesh.createCuboid(engine, 2, 2, 2); // 设置天空网格
const skyMaterial = new SkyBoxMaterial(engine);
skyMaterial.textureCubeMap = textureCube;
background.sky.material = skyMaterial;  // 设置天空材质

同时在编辑器中增加了“场景设置”功能,现在可以在场景设置中调整“背景”与“环境光”的设置。

2021-06-16 22.42.16.gif

环境光

0.3 版本中,环境光相关的设置包含在 EnvironmentMapLight 组件和 AmbientLight 组件,结构比较零散。0.4 版本我们将环境光相关的设置进行了合并并收敛到 SceneambientLight 属性。环境光的漫反射分为纯色模式和纹理模式。

const ambientLight = scene.ambientLight;
 
// 漫反射可以选择纯色模式
ambientLight.diffuseMode = DiffuseMode.SolidColor;
scene.ambientLight.diffuseSolidColor.setValue(1, 1, 1, 1);
 
// 漫反射也可以选择纹理模式
ambientLight.diffuseMode = DiffuseMode.Texture;
ambientLight.diffuseTexture = cubeTexture;
 
// 镜面反射
ambientLight.specularTexture = cubeTexture;

其他功能更新

引擎

  • Feature:默认开启 WebGLRenderer 的模板缓冲 #312
  • Feature:矩阵添加线性插值 api #268
  • Bug Fix:在 ShaderData 中设置 baseColor 无效 #306
  • Bug Fix:编辑器中设置几何体参数无效 #293
  • Bug Fix:支持完整的 VertexElementFormat,并支持是否归一化操作 #287
  • Bug Fix:Blinn Phong shader 当多种直接光源时会报错 #323
  • Bug Fix:FrameBuffer Picker 销毁报错 #316
  • Bug Fix:点光源和聚光灯的 bug #279
  • Bug Fix:射线检测不准确 #265
  • Bug Fix:Spine Clone Bug #23

编辑器

  • Feature:节点树增加右键菜单
  • Bug Fix:截屏按钮不起作用的 bug
  • Bug Fix:操作区中 gizmo 、辅助线以及相机操作的 bug
  • Bug Fix:几何体参数设置的 bug
  • Bug Fix:检查器表单输入体验优化

其他信息

单测

整体单测覆盖率从 0.3 版本的 43% 提升到了 45 %。 我们接入了 codecov,可以查看详细的覆盖率统计。在 pull request 中,可以看到单测覆盖的评论:

image.png

并且在 README.md 里添加了 badge:

image.png

更多

0.5 里程碑预告

Galacean Engine 将对动画系统进行革新,分别是 Morph 动画和 Animator 动画,Morph 动画依然是目前很常用的动画形式,尤其在细节较丰富的动画表现方面。Animator 是 Galacean Engine 的核心动画系统,重新设计后在动画融合和动画叠加等功能方面均有较大提升,性能方面预计提升30%,敬请期待!

最后

欢迎大家 star 我们的 github 仓库,也可以随时关注我们后续 v0.5 的规划,也可以在 issues 里给我们提需求和问题。开发者可以加入到我们的钉钉群里来跟我们吐槽和探讨一些问题:

Galacean Logo
Make fantastic web apps with the prospective
technologies and tools.
Copyright © 2024 Galacean
All rights reserved.