今年的Unite大会在上海, 跟17年一样在上海国际会议中心举行。时间也一样是五月的10、11、12,又一次跟母亲节重合,出差没法陪家人过节,实在惭愧。今年还是4个会场,内容满满,不停赶场实在是累,不过收获也很多,很值得。项目组今年从过完年开始一直在加班,五月抽空3天去参加会议后回来也一直加班,到现在才有空整理这次大会的内容,在此简单梳理记录一下。
《Unity 科幻巨作《异教徒》影视级技术大起底》
每年的第一场都是类似炫技的主题,今年第一场也一样。主题是Unity最新的实时渲染短片《异教徒》的技术讲解。通过这个CG短片可以感受到Unity最新的HDRP已经做得功能很强大了。皮肤、毛发、眼睛,角色专属灯光等都有非常多的细节可供调整。例如皮肤的斑点,胡渣的细节,瞳孔的底图,反射光等等。除此之外在短片中有一个类似时空穿越的效果是通过环境光切片过度来达到的,也非常炫酷,并且给我们提供了一个做效果的思路。而最新的后处理系统加入了模拟真实相机的参数,例如iso,快门时间,曝光度等等,可以让我们从另外一个维度来调我们希望的效果。
《用刚体控制角色移动的实践》
这一场分享主要讲解的是结合Unity物理引擎控制角色移动的一种思路。首先分析了目前比较常用的三种方式:1. NavMeshAgent;2. Character Controller;3. 动画位移驱动的利与弊。还提到了一个细节,在运用动画控制位移的方法中,如果update与fixupdate同时操作对象的position,而多个fixupdate穿插在两个update中时,直接操作Transform的position会不正确,应该使用RigidBody的position。最后提出了一些利用物理引擎来驱动角色移动的思路,例如利用RigidBody.velocity判断是否浮空,跳跃上升时关闭useGravity,大型角色肢体做成isKinematic从而影响小角色不不被影响,通过设置不同角度的斜面的摩擦系数从而达到不同地形是否可攀登等。不过这一套控制移动方式还是依赖物理引擎来驱动的。我们项目组目前的移动逻辑是建立在Unity的物理引擎上,但只使用了物理引擎的检测判断而不依赖其来驱动物体的,所有的移动逻辑自己实现的,并且以面向数据的形式进行了封装。之所以这样做是因为我们游戏采用帧同步模式来做实时战斗模块,Unity的物理引擎模块底层已经根据DOTS进行了重构,如果依赖引擎来驱动的话是无法保证多个客户端的一致性的。再有就是一些特殊移动规则例如漂浮,正弦曲线移动,类抛物线移动等还是要自己实现或者利用动画驱动。与其自己的代码与引擎代码混杂驱动还不如全部自己实现掌握。
《新一代后期处理栈:Post Processing v3》
与第一场类似的,还是以《异教徒》短片为例子,讲解了最新的PPS v3的功能以及各个参数如何使用,能达到什么样的效果。除了前面说到的物理镜头参数等,还有散射,屏幕扭曲等效果也是很炫酷。网上相关资料很多,就不在此重复了。
Continue reading →