大家好
好久不见
这次来讲一下
动态模糊
本想在UE4.25出来的时候发文章
但一直在忙我司游戏
只能偶尔写点
拖到了现在
用过UE4的同学
尤其影视动画领域的
都应该注意到
动态模糊瑕疵很多
尤其在高速运动的物体上
就像轮子
不仅是轮子
连物体的交界处
如果是常规做法
得到的就是下图的效果
再看看正确的动态模糊
无论是轮子
还是车前灯在地面的反光
还是背景的树木和围栏
都很接近常规离线渲染器的水平
看完差别
下面讲讲
到底怎么做
非常简单
就两三步操作
都在下面的动图里
先打开MovieRenderQueue
添加抗锯齿设置
根据具体需求
把时域样本数改到较大数值
有需要的话
还可以修改相机快门设置
以控制模糊强度
最后设置好输出路径
点击渲染
这是什么原理
其实也非常非常简单
相信有些做动画的团队
在官方做了这个功能之前
已经自己做了
毕竟是大幅提升品质的功能
UE4渲染动画本身就很快
再花多一点时间
就能让品质接近产品级动画
是很划算的
游戏里的动态模糊瑕疵多
是因为
信息不够
在每一帧渲染里
根据像素速度
由于单帧的速度方向
不能描述速度的变化
所以动态模糊只能描述单帧的方向
是切线的方向
像轮子等方向时刻变化的物体
就会显得很怪
看动图
是不是更明显了
这个炸裂的效果
再看看正常的效果
不仅如此
单帧的速度数据
无法描述反射里看到的物体速度
阴影投射物的速度等
螺旋桨转得飞快
所以说到底
这是后处理动态模糊的
自身局限
UE4.25偷偷引入的新功能
Movie Render Queue
就是为了解决这种问题
为高品质动画输出做准备
把原有的一帧
拆成很多小帧
让相机拍下所有小帧
最后把所有小帧合在一起
它能应对各种复杂运动
模糊品质直逼离线渲染
来看一个更极限的例子
下面的风车在不转的时候
几乎完全挡住了背后的内容
按生活经验看
那就让它转起来
还真的就看到背后的内容了
看上面的结果
是不是都觉得很不错
是不是很完美
其实还有一点
缺点
细心的同学
应该会发现
有些地方略显暗淡
如果还是没看出来
转起来
然后就发现
我用VRay出了一张图做参考
再看看动图对比
之前奇怪的地方
出现这个问题的原因
也很简单
之前说到
UE把很多帧合成一帧
一帧里的每一小帧
都经过Tonemapping处理
已经不是HDR
最大亮度被钳制到1
在加权平均后丧失亮度
也就理所当然了
所以解决方法也很清楚了
只需把Tonemapping改到合成一帧之后
就能保留每小帧的高动态数据
相信少量的代码改动即可完成
或者UE日后某个更新就支持了
聪明的小伙伴可能马上想到
这跟VRay的次像素映射很像
没错
如果同时使用指数模式和次像素映射
像素颜色会在累积前先做指数映射
导致高动态数据丢失
也就出现和UE4一模一样的问题
下图就是VRay的渲染结果
有小伙伴可能会问
除了出动画
这个方法可以用到实时吗
不行
因为会大幅增加性能消耗
根本跑不动
但很奇怪
有些游戏的螺旋桨轮子等
没有出现上述问题
旋转的感觉处理得很不错
并没有出现奇怪的毛刺
因为他们用了trick
通过巧妙的方法
模拟出动态模糊的感觉
当旋转速度达到一定
这样看起来就很像动态模糊
非常取巧非常有效
细心的同学应该发现
上面的直升机螺旋桨
刀片有模糊
是的
复杂几何体
换贴图方法就不好使了
为了让个别复杂几何体有正确的模糊
有些游戏会根据物体运动
同时渲染多份模型
比换贴图更贵
UE官方有专门的案例
也是trick
针对的就是这类情况
其实多帧合成一张的做法
在游戏里还算挺常见
只不过
没有用在实时
而是用于拍照模式
为了保证拍照的品质
在镜头静止下来时
逐帧渲染小帧
一点点合成最终的动态模糊
在很多赛车游戏里都用到
这和UE4.25新功能几乎一模一样
结语
这次结尾没什么好说的
那我就贴几张恶搞图吧
请登录之后再进行评论