使用XSI渲染出运动模糊效果

修改
鏉ユ簮: 貌似殊途 浏览 2996 日期 2011-10-24 0

运动模糊如何工作?

为了渲染运动的对象,渲染起必须估计对象的空间运动,并且检验对象是否横越摄象机的摄象范围。渲染器将沿运动路径jitter对象,任意的对对象进行采样,并且记录每次“击中”对象时的颜色结果。渲染器不能永远的这么做下去,它需要在某些点上停止下来。

这个方法就是使用一个基于结果的对比,渲染器将比较前边积累的采样和新的运动模糊采样。

• 如果新的采样比原始的小,渲染器将停止。

• 如果大,说明采样的质量(采样数量)不够充分,渲染器需要更多的采样才能达到用户的要求。

快门速度影响渲染速度。

xsi的运动模糊是自适应的,这意味着可以根据需要决定采样的多少。比如,一个长的对象运动将用很长的时间渲染,因为需要有更多的样品要采集;一个小的对象运动就需要很少的采样。

所以,如果快门长期开放,就需要更多的渲染时间。

运动模糊阀值

应该把这个看作是运动模糊的质量参数。大的对象运动,长时间的快门开放,就需要多的运动模糊采样来维持渲染的质量。

运动模糊阀值完全对立于抗锯齿,但是抗锯齿在决定是否对像素进行再分的时候要使用运动模糊的结果。

抗锯齿和运动模糊紧密联系。

抗锯齿设定和运动模糊设定是紧密联系的。例如, 少量的运动模糊质量使用高的抗锯齿设置的时候将产生很差的质量和非常慢的渲染。以为运动模糊返回高频率的结果,抗锯齿不能使用,所以就会把对像素的细分进行到最高的递归级别。

提示:

为了增加运动模糊质量, 强烈建议在修该抗锯齿设置之前降低运动模糊的阀值。

首先,一切都是从为了确定像素或者子像素的颜色从摄象机投射出来的“光线”开始的。这个光线透过bsp树寻找他“击中”了哪个三角形。如果这个三角形没有运动,渲染器就简单的访问对象的材质。材质产生第二次光线,就象灯光fg光线一样。如果这个三角形是运动的,渲染器需要重复采样直到达到质量要求。这个质量要求叫做运动模糊阀值(motion blur threshold)。

看图,左图显示一个运动的三角形。点表示投射的光线。为了更好的说明这些,把光线想象成喷漆,他喷射一条橘红色的线到穿过光线路径的三角形上。运动模糊需要很多采样来评估每一个运动位置的颜色。因为这条线上有无数个位置,就需要一定的间隔采样一次,运动模糊阀值就决定了这个间隔。我想你现在的问题是“什么时候采样才结束呢?”运动模糊阀值允许用户控制这个递归。

基本上,每个采样都被保存和平均。当一个新的采样对颜色的积累没有“贡献”的时候,采样也就停止了。运动模糊的阀值设为0.75会产生非常差劲的结果,因为阀值太大了,设置为0.1到0.001就可以强迫进行更多的采样。

看右边的图象。这个是不同阀值的比较。左边的使用高阀值,所以进行很少的采样,结果是不好的质量。右边的使用低的阀值,进行了更多的采样。

现在解释运动模糊和抗锯齿的关系:

aa使用运动模糊的结果来决定是否需要更多的采样。如果运动模糊的阀值很高,产生的是非常低的质量,这就强迫aa必须进行更多的像素细分来满足自己的阀值要求的质量。相反的,aa就不需要那么多次的细分,因为运动模糊采样完成了大部分的工作。

bottom line:

每个摄象机投射光线,根据阀值进行了几个采样。每个运动模糊采样都可以产生次要光线就象fg等等,减少次要光线的数量,也可以改善渲染的速度。

右边的图aa设置为min= –2、max=0。运动模糊阀值设置非常低。

用30秒渲染完成。注意,aa使用的是infrasampling。it is not even oversampling inside the pixels.

左边使用的是非常低的aa设置,但是仍然可以创造非常漂亮的运动模糊,而且非常快速。

如果你仔细看左手边的图象,靠近耳朵的位置有些jaggies,但这是两副图片的唯一区别!!!

xsi默认的运动模糊模式

第一个叫做deformation motion blur,他用来模糊对象的形状变化。比如,蒙皮角色需要deformation motion blur,因为角色对象外形是根据骨骼的移动变化的。为了实现这个,xsi要检测一个点x祯和x+1祯之间的位置变化并且计算运动距离。

第二个是简单的srt。这个模糊只考虑对象的缩放、旋转和位移。xsi有两个方法计算srt 。参数叫做“motion transformation”。

当设置motion transformation参数为“evaluate motion srt for the entire frame”时,xsi计算每一祯的srt。看上边的左图。

为了说明这个,设置快门速度为0.5,如果motion transformation设置为 “evaluate motion srt at shutter speed”,xsi用不同的方式计算srt,计算srt在x祯和x + 快门时间。看右图,这是比较好的方法,特别适合高速运动的对象,不如螺旋桨。

使用不同的模式对内存的使用是相同的,但结果却大不相同。

评论

{{ username ? username.charAt(0).toUpperCase() : '?' }}
Ctrl+Enter 发布
{{ (c.username || c.author_name || '?').charAt(0).toUpperCase() }}
{{ c.username || c.author_name }} {{ Utils.formatDate(c.created_at) }}