Unite Beijing 2018 (2) New things in Unity

本文为Unite2018会议记录第二篇,其他几篇相关文章可以在这个链接里找到。

这两天的内容听下来大致可以分为三大类:Unity相关内容、Unity+工业/影视/游戏应用、VAMR技术与系统(这几个大类之间也各有交叉)。


个人从初次接触Unity至今差不多两年,不能算纯小白也不能算专家,但若干技术专场硬是又一次颠覆了我对Unity的印象:最早认识的Unity就是个方便的游戏引擎;接着发现它是个能够结合VR的三维展示平台,后来发现一些AR/MR应用场景;现在..我觉得Unity早已不是一个游戏引擎这么简单,而是集成了不少商业软件的核心功能,应用领域包括影视(剪辑/特效)、建模、动画(2D/3D)、游戏(各种规模)、工业应用(VAMR技术)等等。下面挑几个专场内容展开说。

二维世界新工具

这部分内容由Unity 高级产品经理Rustum Scammell主讲,分为二维场景构建和二维动画。

二维场景构建

提出了一种新概念:Sprite shape

它是一个二维纹理绘制球,用户能够进行绘制和编辑,它会根据场景中曲线的不同的法向来绘制不同的纹理图案。这一特性能够方便地用于游戏关卡设计中(特别是平台跳跃游戏)。下图右侧为纹理绘制球。

绘制好纹理后,赋予场景中的曲线段,便实现了不同朝向的不同纹理效果(下图效果为朝右上45度为红,反方向为绿)。

此外,还有图层叠放次序控制、边界检测控制、拼接功能(路径拼接和纹理拼接,后者可以在拼接后做全局UV展开)以及只描边不填充平台的绘制。

看展示者绘制几个平台并贴上系统预置纹理,很快就产生了类似「超级玛丽」的关卡效果。

二维动画

这部分的主要更新:

  • 二维骨骼绑定

    不记得Adobe Flash有没有这个功能了,现在既然Unity提供了,以后类似工作就直接上Unity

  • 刷权重

    emmm刷权重永远是建模师的噩梦,Rustum建议先让系统自动生成,再手工调整细节。

    值得注意的是,Unity中的骨骼权重值默认用的是渐变色而不是黑白灰。

  • IK(反向动力学)系统

    这个功能大型建模软件中都有集成。Unity二维模块选择集成这个部分还是挺赞的。

Rustum最后表示,Unity二维模块后续的更新会更多倾听开发者的声音和用户反馈。

Unity中的实时渲染技术

由Unity 技术支持工程师Mathieu Muller带来讲解。

因为是后半段才勉强挤进去找到座位,只能列些功能了,从渲染效果上看还是挺不错的。

主要功能:

  • 相机相关:相机轨迹和相机跟踪点功能(比如与场景中人物的眼睛保持相对位置固定)

  • 音乐:基础的音乐编辑功能(升降调、淡入淡出、混音、立体声等,可以理解成低配版Adobe Audition)
  • 特效:镜头特效和舞台特效(镜头抖动/虚化、基本的烟雾效果等)
  • 视频过渡:片头片尾制作,交叉溶解转场(和上面一项加在一起,可以理解成低配版Adobe Premiere,根据演示效果,个人感觉时间轴的使用还是远不如Pr操作来的方便。)
  • Track渲染:这算是核心功能,将影片播放一遍的同时就能实时写入文件。

为Unity定制的C#集成开发环境-Rider

由JetBrains公司带来的产品,它旗下还有IDEA、PyCharm等更常见的编辑器。本次专场,Jetbrains 技术布道师Matt Ellis通过实例展示了「Rider」这一IDE针对Unity作出的创新。

核心理念:在运行前发现错误。

Find problems before runtime.

主打两个快捷键:

  • Shift+Shift
  • Alt+Enter

前者用于搜索,后者用于执行一些功能。

根据展示的过程,大致有以下特性:

  • 能够在调用类时补充包
  • 提示并移除空函数以提升性能
  • 通过代码直接选择和显示颜色(颜色效果通过下划线显示)(此处有掌声)
  • 运行中(Game Mode)调试
  • Callstack
  • 全局快速重命名
  • 版本控制
  • 智能模块选择(删除函数块)
  • …其他跟Unity相关的功能见如下ppt

学生可用教育邮箱申请免费使用。

性能优化

这部分内容由Unity技术支持工程师Valentin Simonov带来,他在演讲过程中提及了他的个人博客http://va.lent.in/,Interesting!

优化标准流程

常用的优化流程如下:

  1. 收集应用数据和性能
  2. 局部性能分析
  3. 列出可能导致性能损失的List
  4. 对List按优先级排序
  5. 实施优化

虽然看上去比较简单,但实际操作过程中任何一步都可能犯错:

在讲了几个Unity中的优化小技巧后,引出了他最想讲的两句话:

Don’t Trust Anyone!

Test Everything!

谁也别信,全部测试。

然后给出了他自己针对Vector3.one的性能测试案例(发布在他的个人博客上):Is Vector3.one slow in Unity?(目前还没细读,以后可以作为测试模板进行参考

他给出关于测试的心得如下:

  • 不要盲目相信任何人;
  • 在自己的平台上测试网络数据(Test data from the Web on your platform);
  • 将测试结果整理成文档;
  • 在新平台或新版本的Unity中按照文档复现测试;

CPU相关问题讨论

移动设备通常存在电池保护机制,在后台无工作时频率低,有工作时频率正常,过热时降频。可用XCode查看不同线程下CPU频率的变化情况。通常情况下,帧速率的稳定性:TV>平板>手机

由于没有API能够展示当前CPU频率,因此使用运行固定时长的代码来量化CPU频率测试。例如在iPhone 6上的测试:每次提交测试数据时,CPU会出现降频脉冲(如下图)

当数据量足够大时,频率下降会及其明显。

查了下演讲者信息发现时俄罗斯人,这也算是第一次近距离和俄罗斯人交流,想起了上个月的ACM World Final,毛子的编程能力真不是盖的,对细节的苛求有时候就是优势。

粒子系统

比较遗憾的是,以前并没有接触过Unity粒子系统(3ds max/Maya等也只是粗浅了解),这部分听的很吃力,最后全程看特效度过了。

令人惊艳的一点是,为了快捷展示他提到的粒子特效,演讲者的PPT是直接拿Unity做的(跪)每一页的PPT对应一个Unity Scene

  • Ring Buffer Mode

    听到的第一个关键点是「Ring Buffer Mode」,特点是“Loop Until Replaced”,即在新粒子更新之前,旧粒子会一直循环产生(不确定这么理解对不对..)

  • 基于轮廓的粒子系统

    没懂实现原理,直接上效果图,大致是在图形边缘生成粒子,从而产生华丽的描边特效

  • 引力系统

    分3种效果,没完全懂,继续上图

  • 通过烘焙网格,可在粒子特效上覆盖蒙版(文字火焰特效)

  • 可编辑粒子运动轨迹和LoD(Level of Detail)

  • 粒子剔除(类比点云裁切?

    可剔除部分粒子以提升帧率,分自动剔除和手动剔除(当然还是推荐先自动做全局,再手动调细节)

    帧率提升效果:1-3fps -> 20-30fps(此处有掌声)

自定义渲染纹理

这部分内容是今天(5.13)听的,同样因为没有深入摸过Unity纹理编辑器导致跟不上节奏了..本专场内容由Unity大中华区技术经理鲍健运提供。

数学基础:微分几何

曲面映射的过程:保角度变换

自定义渲染纹理的适用情况:复杂的仿真模拟,焦散、雨滴效果、液体泼溅等

三个主要部分:

  • Material
  • Initialization
  • Update

制作过程细节太多,操作看上去像处理3ds max的多层级材质球。以后要用的时候再补这个坑。


总的来说,听会一整天是真的累。昨天自己挑选的场次除「旅行青蛙」外都是英文演讲,同声传译设备完全不顶用(也是苦了翻译人员..不少专有名词根本没法翻),甚至旁边人开外放的设备音源还会对听会产生干扰。上午三场+下午六场,每场约40-60分钟,除了午饭时间,中间基本没有休息,听到下午4点半之后,最后两场已经开始头疼了(

各位演讲者们想必也非常辛苦,在这里再次表达感谢

Unity+工业/影视/游戏应用将在下一篇文章会整理。