NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

WebGL 动画工业化探索与实践

  • 2022-03-24
  • 本文字数:2765 字

    阅读完需:约 9 分钟

WebGL 动画工业化探索与实践

技术背景


今天有幸给大家分享一些米哈游前端在 WebGL 动画工业化上的探索和实践,内容的主角是名为 Fast Scene 的自研编辑器。它是一套易用且高效的用于开发前端富交互动画项目的解决方案。含 3D 场景、动画、Shader 蓝图、粒子的编辑器,市场,丰富的 API 与运行时组件,这三大模块可以帮助前端开发者们高效地制作出复杂动画表现形式的前端营销活动和小游戏,并降低 WebGL 入门的学习成本。


00:00 / 00:00
    1.0x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.75x
    • 0.5x
    网页全屏
    全屏
    00:00

    案例演示


    Fast Scene 与市面上主流游戏引擎的主要区别在于:


    • Fast Scene 专为制作精品化游戏化营销页面打造,支持高自由度的渲染特效和丰富的动画形式;

    • Fast Scene 使用 ThreeJS 作为底层渲染引擎,并针对移动端设备进行诸多优化、兼容性强;

    • Fast Scene 动画项目可与 Vue、React 等前端框架完美结合,契合目前主流的前端开发工作流。


    本文会介绍基于 Fast Scene 的动画工作流程,以及目前版本编辑器的一些特性。希望能给大家带来一些思考和启发。

    工作流程


    米哈游的常规活动项目在前端领域内可以拆解成纯动画、动画逻辑、业务逻辑三部分。动画部分和业务逻辑并行开发,保证在短时间内完成上线。


    页面纯动画制作包含场景及 UI 的建模、3D 动画、元素细节、立绘 Spine 动画、Shader 特效和自定义材质;动画逻辑包含 3D 场景的整合、渲染管线的开发、特效与动画的控制、游戏逻辑;业务逻辑包含项目的架构、动画、后端接口各模块的整合。


    在动画制作阶段,动画师可以使用 Fast Scene 导入、预览整合后的 3D 场景与细节动画;开发者可以通过编辑器协同完成场景特效和自定义材质的制作。


    在动画逻辑开发阶段,Fast Scene 提供的脚手架可以帮助开发者快速创建动画项目,通过可视化场景编辑器,完成场景的逻辑配置,比如自适应方案、物体的点击交互、自定义的渲染管线,还可以通过时间轴工具完成动画的剪辑分组、关键帧事件的配置等,最后可以使用一系列的性能插件与工具,完成场景的测试和优化。


    最终由 Fast Scene 导出场景和动画对应的逻辑模型和逻辑动画数据。场景引用的资源会自动生成对应的文件引用配置,由运行时提供的资源加载组件控制并支持分段加载。


    编辑器工作流程图:



    Fast Scene 提供的运行时主要包含资源加载、场景构建、动画播放三部分。场景构建模块提供以下几种类型:



    在文本渲染方面,Fast Scene 除了支持 Canvas2D 绘制之外,其自带的文本类型还包含 MSDF 文本渲染。MSDF 文本可以实现高性能的文字特效动画。


    Plugin 构造器拓展了编辑器构造物体的能力。使用插件可以自定义创建程序化 3D 物体,比如程序化拖尾。


    00:00 / 00:00
      1.0x
      • 2.0x
      • 1.5x
      • 1.25x
      • 1.0x
      • 0.75x
      • 0.5x
      网页全屏
      全屏
      00:00

      示例 1: FBX 与 Spine 的转换


      00:00 / 00:00
        1.0x
        • 2.0x
        • 1.5x
        • 1.25x
        • 1.0x
        • 0.75x
        • 0.5x
        网页全屏
        全屏
        00:00

        示例 2: FBX 动画与 Spine 动画的结合


        包含动画的模型在导入进编辑器之后,我们可以对其动画做一些逻辑上的编辑,包括裁剪、单轨删除、复制黏贴、动画编组。经过逻辑编辑后的动画剪辑,在项目中可以非常方便地播放和控制。


        00:00 / 00:00
          1.0x
          • 2.0x
          • 1.5x
          • 1.25x
          • 1.0x
          • 0.75x
          • 0.5x
          网页全屏
          全屏
          00:00

          示例 3: 动画的裁剪与分组


          除了导入动画资源,编辑器也具备动画编辑功能。我们参考了 Blender 和 After Effect,打造了 Fast Scene 自己的时间轴工具。任何数值类的过渡动画都可以方便地在编辑器上完成配置,比如坐标、缩放、旋转、可见性。另外,材质的 uniform 参数也可以像坐标一样设置关键帧动画,这个功能可以让开发者快速配合动画师制作出酷炫的 Shader 动画。


          00:00 / 00:00
            1.0x
            • 2.0x
            • 1.5x
            • 1.25x
            • 1.0x
            • 0.75x
            • 0.5x
            网页全屏
            全屏
            00:00

            示例 4: Shader 的关键帧动画


            整合了所有类型动画的时间轴工具,使我们可以方便快速地去编辑和预览每个动画剪辑最终呈现在页面上的效果。如果用常规编写代码控制,在项目中调试这些动画的播放逻辑可能是一件很费时的工作,Fast Scene 可视化的时间轴工具,可以让这个动画的整合变的非常的轻松,大大提升了项目中动画的开发效率。


            此外,Fast Scene 动画运行时具有以下几个特性:


            • 不同类型动画的同步播放:所有类型的动画都可以基于一个时间进行同步。

            • 动画播放的无缝衔接:除了模型和 Spine 动画的平滑过渡,还支持 Spine 程序解算类动画的无缝衔接。

            • 丰富的动画播放参数以及关键帧事件:支持截取播放、倒序播放、播放速度、混合时长设置;可以方便地监听动画的各种状态;可以配置关键帧事件。

            • 自动化 Spine 骨骼动画的编辑与解算:支持 Sine、Wiggle 以及物理模式动画的解算。

            • 基于 Stencil 的遮罩动画:使用 Mesh 作为遮罩,支持正向遮罩与反向遮罩,使用简单灵活。

            材质蓝图系统


            Fast Scene 的材质蓝图系统学习并借鉴 Unreal 引擎。在编辑器中可以使用图形化节点连接的方式编辑顶点和片元着色器,并在编辑器中实时预览最终的效果。节点编辑器不仅集成了常规 WebGL 函数,还包含了丰富的快捷运算模块,以及抽象化的功能效果函数模块和成品效果模版。节点编辑器还支持自定义函数以及函数模块的嵌套。动画师也可以通过 Fast Scene 实现材质特效。


            00:00 / 00:00
              1.0x
              • 2.0x
              • 1.5x
              • 1.25x
              • 1.0x
              • 0.75x
              • 0.5x
              网页全屏
              全屏
              00:00

              示例 5: 下雨效果编辑

              粒子系统


              Fast Scene 中,粒子是一种可配置的通用插件类型。创建粒子时,编辑器会自动在项目里生成粒子模版材质和用于创建粒子对象的 JS 脚本。


              当前版本的粒子动画轨迹,是基于可配置曲线函数实现的,相比物理速度模式,在低版本浏览器上有更好的兼容性以及更好的性能。


              Fast Scene 自带粒子效果可以实现雪花、爆炸、火焰、萤火虫、喷泉等大部分的动画需求。通过修改生成的材质 Shader 脚本,可以高自由度的定制粒子,完成惊艳的演出。


              默认创建的粒子是使用 THREE.InstanceBufferGeometry 的 Mesh,相比 Point 类型可以实现更多动画效果。同时,默认创建的粒子支持基础形态网格的配置;并支持运动轨迹跟随,可实现速度线型粒子效果。


              00:00 / 00:00
                1.0x
                • 2.0x
                • 1.5x
                • 1.25x
                • 1.0x
                • 0.75x
                • 0.5x
                网页全屏
                全屏
                00:00

                示例 6: 粒子效果

                市场


                编辑器中的市场是我们存放模板和常用动画素材的地方,目前包含 2 种类型市场,通用市场和蓝图材质市场。市场功能可以方便使用者查找和复用效果素材,以极低门槛或 0 代码量去使用一些已开发完毕的插件,来完成视觉特效。从市场应用的素材、脚本、动画数据会无缝地添加到当前项目中。在通用市场里可以下载并应用一个场景级别的素材包,包含套装的视觉元素或贴图、材质 Shader、插件脚本、动画数据。蓝图材质市场主要服务于视觉特效算法的抽象分享和复用,有点类似于蓝图版的 shadertoy。市场将效果、算法、功能进行抽象化、模块化,通过积累,可以逐步体现出工业化动画制作的效率优势。


                目前 Fast Scene 编辑器还在起步阶段,还需时日去沉淀。未来的方向是降低动画项目制作门槛,提升开发者和动画师的协同效率,帮助使用者聚焦创意本身。在编辑器、工具链的打磨过程中,探索适用于 WebGL 动画的工业化与自动化流水线,支撑次世代渲染下更具挑战的动画表现效果。

                加入我们


                我们米哈游平台前端团队是一群热爱游戏的技术宅,我们为米哈游的游戏项目(如原神、崩坏 3 等)的研发及运营提供一站式的平台服务体系,在追求极致中获得成长、认可和对等的回报,期待你的加入,在这里,你可以参与支付、社区、IM、WEB 小游戏、LowCode 平台、BI、运营中台以及游戏研发协同工具等多种类型的项目。


                欢迎关注公众号“米哈游招聘”查询招聘信息。

                2022-03-24 16:304772

                评论 2 条评论

                发布
                用户头像
                这个系统可以试用吗

                2022-03-30 14:56
                回复
                用户头像
                有内推吗?
                2022-03-27 13:11
                回复
                没有更多了
                发现更多内容

                2024年的第一场 MatrixOne Meetup 来啦!

                MatrixOrigin

                数据库 分布式 云原生 MatrixOrigin MatrixOne

                堡垒机和数据库防水坝的区别一二

                行云管家

                数据库 网络安全 堡垒机 数据库防水坝

                ps一键磨皮插件Delicious Retouch 5怎么安装 支持M芯片

                南屿

                磨皮插件 Photoshop 插件

                FCPX 插件无法使用?|Final Cut Pro X 插件不能使用出现叹号的解决办法

                Rose

                云厂商是什么意思?2024年知名云厂商有哪些?

                行云管家

                云计算 云服务 行云管家 云厂商

                eBPF运行时安全

                统信软件

                安全 ebpf 运行时

                喜讯!矩阵起源子公司通过“国家高新技术企业”认定,引领数据库行业科技创新!

                MatrixOrigin

                数据库 分布式 云原生 MatrixOrigin MatrixOne

                数据采集在制造业中的应用场景

                万界星空科技

                数据采集 MES系统 设备管理 万界星空科技 生产管理

                如何自定义Safari的起始页

                Rose

                复杂经济时期下的企业财务规划战略

                智达方通

                全面预算 情景规划 企业财务规划 财务规划

                App加固:不同类型和费用对比

                如何利用 APM 追踪完整的类函数调用

                心有千千结

                APM Datadog OpenTelemetry 系统可观测性 DDTrace

                微店获得微店商品详情 API(micro.item_get)在电商中的发展

                技术冰糖葫芦

                API

                AE蓝宝石插件BorisFX Sapphire 2024 for Mac破解版 及新功能介绍

                南屿

                苹果电脑重装系统教程

                Rose

                苹果电脑应用程序无法打开提示不明开发者或文件损坏的处理方法

                Rose

                PS磨皮滤镜降噪插件Imagenomic Professional 支持ps2024 兼容M1

                南屿

                磨皮插件 ps滤镜下载 Imagenomic Imagenomic Professional

                【年后跳槽必看篇-非广告】老生常态之Spring AOP/IOC 实现原理

                派大星

                Java 面试 跳槽

                QCN9024: The future of wireless communications, five major advantages over competitors

                wallysSK

                云联接:揭开SD-WAN神秘面纱,颠覆你对网络的认知!

                博文视点Broadview

                LED透明显示屏前景发展怎么样?

                Dylan

                LED显示屏 全彩LED显示屏 led显示屏厂家 市场 #研发

                Lightroom预设资源-高级食物lr预设 附lr预设导入教程

                南屿

                高级食物lr预设 Lightroom预设下载 lr预设怎么导入

                软件测试/测试开发/全日制/测试管理丨CSS Selector

                测试人

                软件测试

                运行Adobe应用提示非正版This non-genuine Adobe app has been disabled soon如何解决

                Rose

                adobe

                Sketch Measure for Mac中文破解版 sketch标注插件下载

                南屿

                Sketch Measure mac中文版 sketch标注插件

                ScaleUp插件使用方法 附ScaleUp for Mac破解版资源

                南屿

                高级视频增强工具 ScaleUp插件下载 ScaleUp mac破解版 AE/PR插件

                photoshop色轮插件Coolorus怎么安装 附Coolorus 许可证

                南屿

                Coolorus mac版 PS调色插件 Coolorus许可证 Coolorus安装教程

                精彩推荐 |【Java技术专题】「重塑技术功底」攻破Java技术盲点之剖析动态代理的实现原理和开发指南(中)

                洛神灬殇

                Java 后端开发 JDK 动态代理 CGLIB 动态代理 2024年第十一篇文章

                NFTScan | 01.08~01.14 NFT 市场热点汇总

                NFT Research

                NFT NFT\ NFTScan

                如何定位和优化程序CPU、内存等性能之巅

                雪奈椰子

                ​万界星空科技MES系统如何进行产品的质量管理

                万界星空科技

                质量管理 MES系统 制造业 mes 制造业生产管理系统

                WebGL 动画工业化探索与实践_大前端_米哈游平台前端团队_InfoQ精选文章