【Aegisub】绘图边缘柔化对效果的影响

简单地用大白话介绍一下抗锯齿是啥
把看到的画面理解为由很多个小方块像素组成的,那么比如要表示一条斜线,此时这条斜线就是由阶梯状排列的像素组成

而如果这样的话,看起来就有很多锯齿了。所以为了抗锯齿,就可以把边缘变模糊、在边缘附近加上一些“透明”或“浅色”的像素

这样锯齿看起来就不会那么明显了。
可能大家做特效的时候有这样的疑问:为什么绘图特别小的时候有透明的感觉(比如两个“像素”绘图叠在一起看起来颜色变深了):
那首先看一个大一点的绘图,将屏幕不停地放大(在专栏里图片看起来比较小,拉出图片看大图会比较清楚)

再放大:

可以看到绘图的边缘出现了“锯齿”一样的东西,并且边缘变模糊了,这个就是因为由抗锯齿导致的。因为如果边缘不模糊,那么放大以后就会看到很明显的锯齿了,因为这些图形可以当作一块块方块组成的,为了让边缘看起来没有很明显的锯齿,就有很简单的抗锯齿了,就是在边缘的周围再添加一些方块、然后这些添加的方块有一定的“透明度”(或者“颜色更浅”),这样总的看起来就像边缘模糊了,那么锯齿看起来就没有那么“锋利”了,这就是“抗锯齿”
所以,如果现在使用一个很小的绘图,比如不画现在这么大的图,而用一个“像素”:

可以看到右边有个小绘图,即\p2\an7的m -1 -1 l 1 -1 l 1 1 l -1 1
那把屏幕放得很大的时候来观察,由于本身就有抗锯齿算法,边缘一样会出现模糊,所以如果此时,再在同一个位置(pos相同)加上一个一样的“像素”,那么看起来整体颜色就会变深:

所以,这才给了人一种错觉,觉得好像尺寸很小的ass绘图会有一定的透明度、他们叠在一起颜色会变深。而实际上,不是因为绘图叠一起会变深颜色,而是由于边缘抗锯齿产生的模糊,导致对于微小绘图,他们一起叠加带来的效果变化会更明显
而较大的绘图叠一起也会有变化,只是肉眼不容易注意到这种边缘的变化而已:

上图未叠加,下图叠加一个绘图:

如果仔细观察就会发现,叠加以后,图形的边缘就没有那么模糊了,锯齿的形状也越来越清晰了。如果连着叠加6个同样的绘图的话,就会变成这样:

所以,大的绘图叠加看起来没区别只是错觉,微小绘图叠加看起来有区别是因为刚好肉眼识别出来了这种区别。
而因为抗锯齿带来的边缘柔化,使得矢量clip的效果也会受到一定影响。

比如上面两行的clip刚好是“紧贴”的,但是如果把屏幕不断放大,就会看到下面这样的场景(未挂mod,挂mod会更“难堪”)



第二行字幕的clip
可以看到,明明两个clip是"无缝拼接"的,但是放大一看却有条缝隙,这也是因为有边缘柔化
这个其实不难理解,现在咱们是两个clip"无缝拼接",但是clip的应用不止这一点。所以试想一下,假设咱们不用clip来”拼凑“什么东西,而是只用一个clip,那么这样的话,clip限定的那个边缘也是边缘啊,那它就不需要边缘抗锯齿了吗,对吧,为了边缘看起来不锯齿化,clip限定了边界以后,那个边界也是会有边缘模糊、边缘柔化的。那这样的话,就算两个clip本身是"无缝拼接"的,但是拼接的边缘处会有模糊效果,所以看起来就会有一条缝隙了
那么,刚刚说过,抗锯齿的简单算法就是边缘模糊、边缘柔化,所以像刚刚那样多重复叠加几行,锯齿就会变得明显,所以想要”消除“这种模糊效果,多重复几行就可以了。
比如再重复一次,即

把两行字幕都重复一次,再放大看看,就有

缝隙就比最开始小了。那么再把两行又重复一次呢,就会得到:


没错,你就看不见缝隙了
再理解一下,不管是直接的绘图还是有clip,都会自动对相应的图形进行边缘柔化,这是为了让边缘看起来不是粗糙的锯齿状。如果单独只用一个clip的时候没有抗锯齿的话,那你一用clip就会看见边缘锯齿,你开心吗,对吧。假设就刚刚的例子,只用一个clip,然后咱们再重复很多行,这样边缘柔化效果看起来就会减弱了,就会得到这样的东西:

现在只有”上半部分“的clip,重复很多行,放大一看,哇,边缘的锯齿就这么明显啦,所以你说,需不需要边缘抗锯齿呢,对吧。所以本身才会带有抗锯齿效果、本身才会有边缘模糊
如果为了避免缝隙你觉得重复行使得行数太多,那就扩大你的clip即可避免缝隙了。扩大clip当然要一定程度的扩大,不要只扩大一点点,因为你知道有边缘抗锯齿这个东西,所以边缘会一定程度的模糊,而这个模糊当然是有一定范围的,所以你只要扩大的clip比这个范围大,就能避免缝隙了。因为如果clip拼接的时候还是”无缝拼接“或者接近”无缝拼接“的话,那因为有边缘模糊,所以可能模糊的那个边界还是会有缝隙,所以clip当然要扩大一定范围,比如



将”上半部分“的clip变大、下半部分的clip不变,这样就看不见缝隙了:

所以想要没有缝隙,其实很简单,只要知道出现缝隙的原因是什么就可以了(抗锯齿)。因为很多人可能有疑问说,为什么clip明明是”无缝拼接“的,却出现了缝隙,实际上想要没有缝隙,把你的clip两边都扩大一下、变成不是”无缝拼接“的clip,这样就会变成真真正正的无缝拼接了。(或者像刚刚说的多重复几行也可以。总之根据相应的需求来决定)
其实不管用哪种方法解决clip拼接时的缝隙问题,效果上都有一定影响,你消除了缝隙就带来了新的影响。比如重复一些行来消除缝隙,那么缝隙是消除了,但是叠加绘图会减弱边缘模糊效果、可能会让边缘锯齿看起来更明显,就像刚刚说的。而扩大clip范围也是同理,当你扩大以后,重叠的边缘不就变多了吗,所以重叠部分的边缘柔化效果就比没重叠的边缘要弱了。所以,你可以根据自己的意愿用一种方法来消除clip拼接时的缝隙,但是这样效果上就会有其他变化。毕竟,本身就有抗锯齿,人家又不会聪明到边缘有拼接的时候那个边缘就不抗锯齿、其他剩下的边缘又抗锯齿。不过好在,锯齿要把屏幕放得很大才能看见,所以就算你重复行以后,抗锯齿效果减弱,但是肉眼还是不易看出来的。
另外,关于边缘柔化,你会发现随着pos的不同,边缘柔化的结果也可能不同,就像下面的这个动图一样:

显然,上面那个小“像素”绘图,随着pos地移动,你看到的图像(边缘)也在不停地变化(当然也可以用其他大一些绘图来测试,只是小一点的绘图方便观察罢了),所以不要以为绘图一样看到的图像就一样。