蚂蚁图形引擎 Oasis v0.6 发布

2,673 阅读5分钟

本次里程碑 PM - Oasis 团队 - 桐伦

忽如一夜春风来,千树万树梨花开。经过两个月的努力,从秋天到冬天,蚂蚁图形引擎 Oasis Engine 终于引来了 0.6 版本(github.com/oasis-engin…)的发布。

  • 新版本增加离线烘焙工具包, 使用户能够更快更好地获得高质量的 PBR 渲染效果;
  • 增加强大的 PhysX 物理系统,在功能和性能上相比上个版本都有明显提升;
  • 增加输入系统,弥补了引擎在交互功能上的短板,大幅减少编写交互功能的代码量;
  • 还有其他微小而美好的功能打磨和更新...

还在等什么,一起来尝鲜吧!

渲染系统

新增离线烘焙工具包。 在之前的 PBR 美术工作流中,不管是开发者还是美术开发者,都会因为 PBR 的复杂概念和 IBL 烘焙、漫反射球谐烘焙等美术资源的割裂,很难上手整个渲染流程。因此,我们开发了离线烘焙工具包,并集成到了编辑器glTF Vieweroasisengine.cn/gltf-viewer…)中,用户只需要从网上选择满意的 HDRI 贴图polyhaven.com/hdris),然后上传到编辑器中,即可绑定环境贴图,其中的 IBL 离线烘焙、漫反射球谐烘焙等过程都会自动处理,就算您是零基础的用户,也能轻易上手。除此之外,我们在渲染侧实现了离线烘焙、HDR 渲染、色彩空间校正,PBR 的渲染效果也比之前更加逼真。

由于编辑器暂未开放,直接使用引擎的开发者可以使用 glTF Viewer ,将 HDRI 贴图拖入到 glTF Viewer 中得到烘焙产物。使用详见教程:oasisengine.cn/0.6/docs/li…

物理系统

新增物理系统。引入了由 WebAssembly 编译的 ****PhysXdeveloper.nvidia.com/gameworks-p…) 作为物理系统的底层,并且设计了多后端架构。因此,我们对物理组件进行了一次合理的 BreakingChange 调整。在一套接口下,我们实现了 Physics-Lite (轻量版,不依赖 PhysX,功能简单) 和 **Physics-PhysX (高级版,可以实现复杂的物理效果) 两个物理包,前者基于0.5 版本中遗留的物理系统,后者基于 PhysX 4.1,兼容重度轻度物理场景与物理场景。开发者只需要在引擎初始化时进行配置,后续的开发过程中无需关心到底使用了哪种后端物理包。除了接口的重构,Physics-Lite 在功能上也做了同步升级,支持多 ColliderShape 的组合。未来我们主要会开发 Physics-PhysX,并且适度增强 Physics-Lite 的功能以支持轻量级应用。使用详见文档:oasisengine.cn/0.6/docs/co…

编辑器也全面适配最新的物理组件,添加UI列表功能,使得在同一个碰撞器中添加多种 ColliderShape

详细接口设计与架构可以参考 Wikigithub.com/oasis-engin…),后续我们会在公众号等平台推出《Oasis 物理第二弹:物理多后端与组件架构设计》,《Oasis 物理第三弹:实现轻量级碰撞检测算法包》等一系列介绍 PhysX 以及物理组件架构的技术文章。

输入系统

新增输入系统。该系统是引擎功能长期缺失的部分,之前开发者反馈实现点击等交互需求的代码比较繁琐,v0.6 全新的输入系统将大幅减少编写交互功能的代码量。支持了 Pointer 类型的事件,抹平了鼠标和触屏事件的差异,能够满足常用的点击、脱拽等交互需求,并且在脚本组件的生命周期函数中增加对交互事件的响应,简化了注册输入事件的成本。鼠标滚轮(Wheel)、键盘(Keyborad)等事件会在以后的版本中支持。使用详见文档:oasisengine.cn/0.6/docs/in…

其他更新

引擎功能

  • 动画系统增加了状态机脚本(oasisengine.cn/0.6/docs/an…),开发者可以方便的在动画状态开始/更新/结束处编写自己的业务逻辑。
  • PrimitiveMesh 新增 createCapsule() 方法,可快速方便的创建圆柱体。
  • Texture2DRenderColorTextureRenderColorTexture 的读取像素接口 getPixelBuffer() 增加 miplevel 参数,可以指定读取像素的纹理等级。
  • Camera.render() 方法增加 miplevel 参数,可指定渲染的纹理等级。
  • glTF 解析 ModelMesh 时支持更多 UV 通道和顶点色。
  • Animator 增加 getCurrentAnimatorState(),可以获取当前播放的动画状态。
  • 精灵 Sprite 增加克隆功能。
  • 四元数 Quaternion 增加 rotateAxisAngle() 方法。
  • SkyBox 材质增加 RGBM HDR 编码格式支持。
  • 引擎入参增加色彩空间配置,默认线性空间。
  • 直接光照改为物理单位,即除以 PI。如果觉得之前的场景变暗,属于正常现象,可以尝试添加HDR环境贴图。

详见 Change Log:github.com/oasis-engin…

编辑器功能

  • 资产面板新增目录树功能,支持资产拖拽移动。

  • 优化 Gizmo 用户体验。
  • 新增脚本组件名字优化。
  • 完成雨燕工程的打通。
  • 修复若干 Bug,优化体验。

示例

image.png

示例链接

0.7 版本预告

  • 物理:进一步挖掘 PhysX 物理引擎特性,扩充 DynamicCollider 的方法以支持刚体运动,并且增加刚体约束,角色控制器等组件。
  • 纹理: 对纹理的结构进行整合重构,并新增 Texture 纹理数组等功能。
  • 文字: 增加 2D 文字系统,进一步完善功能闭环和 2D 能力。

写在最后

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

无论你是渲染、TA 、Web 前端或是游戏方向,只要你和我们一样,渴望实现心中的绿洲,欢迎投递简历到 chenmo.gl@antgroup.com。岗位描述详见:www.yuque.com/oasis-engin…