欢迎光临散文网 会员登陆 & 注册

【Aegisub】预

2020-12-16 00:57 作者:多华宫与火火里  | 我要投稿

大家做特效时经常会利用图形的布尔运算来做比如碎片字幕的效果,所以以后的视频会介绍图形的布尔运算(交、并、差、异或)和自交图形的简化,当然是在不使用A3shape的情况下。下面主要对比一下用A3shape和不用A3shape的实际结果:

首先,A3shape目前没有加入简化图形的函数,那么直接来看,不用A3shape简化自交图形的效果:

图1.01是一个自交的图形

图1.01

绘图代码为m 0 0 l 31 1 l -9 44 l 60 40 m 22 23 l 40 6 l 33 37 m -11 6 l -5 25 m 0 10 l -8 25 m 48 2 l 64 2 l 66 24 l 47 28 l 49 24 l 51 30 l 54 23 l 58 31 l 61 23 m 68 7 l 42 7 l 52 16 m 10 -9 l 17 -9 l 22 -9 l 28 -9 l 33 -9 l 33 -4 l 25 -4 l 20 -4 l 10 -4 

使用简化函数,得到图1.02

图1.02

将结果取整后得到绘图字符串m 27 18 l 22 23 l 33 37 l 36 24 l 60 40 l -9 44 l 20 13 m 58 31 l 56 26 l 60 25 m 51 30 l 50 27 l 52 27 m 50 27 l 47 28 l 49 24 m 56 26 l 52 27 l 54 23 m 66 24 l 60 25 l 61 23 l 55 14 l 65 9 m -6 21 l 0 10 l -6 21 l -5 25 l -6 21 l -8 25 l -6 21 l -11 6 m 36 24 l 27 18 l 40 6 m 55 14 l 52 16 l 42 7 l 51 7 m 31 1 l 20 13 l 0 0 m 65 9 l 64 7 l 68 7 m 64 7 l 51 7 l 48 2 l 64 2 m 33 -9 l 33 -4 l 10 -4 l 10 -9

显然,在没有改变原始绘图的情况下,整个绘图的所有路径都不再自交了,一个自交的图形就被拆为多个m了。要知道有些字体在转绘图以后可能出现少量的自交(遇到过不止一个),还是有一点点烦人的。

再看一个明显的例子,自交图形图1.03简化以后得到图1.04:

图1.03
图1.04


接下来,继续对比,A3shape可以将图形转边框,但是比如一个自交的图形,转边框以后,路径当然不会简化,而如果不使用A3shape,显然,一个自交的图形转边框,路径是直接就” 帮你 “简化好了。

以图1.05作为初始绘图,然后对其转边框

图1.05

原绘图代码m 0 0 l 31 0 l -5 28 l 10 39 l 7 14 l 40 15 l 36 -7 l 55 -10 l 64 39 m 17 22 l 34 23 l 42 36 l 45 40 l 46 51 l 38 51 l 35 51 l 31 51 l 26 51 l 22 51 l 16 51 l -5 51 

用A3shape转边框得到图1.06

图1.06

用A3shape得到的绘图代码为m 0 -2 l 31 -2 l 32 2 l -4 30 l -5 28 l -4 26 l 11 37 l 10 39 l 8 39 l 5 14 l 7 12 l 40 13 l 40 15 l 38 15 l 34 -7 l 36 -9 l 55 -12 l 57 -10 l 66 39 l 66 41 l 62 41 l 62 39 l 53 -10 l 55 -10 l 55 -8 l 36 -5 l 36 -7 l 38 -7 l 42 15 l 40 17 l 7 16 l 7 14 l 9 14 l 12 39 l 9 41 l -6 30 l -6 26 l 30 -2 l 31 0 l 31 2 l 0 2 l -2 2 l -2 -2 l 0 -2 m 17 20 l 34 21 l 36 22 l 44 35 l 42 36 l 44 35 l 47 39 l 47 40 l 48 51 l 46 53 l 38 53 l 35 53 l 31 53 l 26 53 l 22 53 l 16 53 l -5 53 l -7 53 l -7 49 l -5 49 l 16 49 l 22 49 l 26 49 l 31 49 l 35 49 l 38 49 l 46 49 l 46 51 l 44 51 l 43 40 l 45 40 l 43 41 l 40 37 l 40 37 l 32 24 l 34 23 l 34 25 l 17 24 l 15 24 l 15 20 l 17 20 

现在不用A3shape转边框得到图1.07

图1.07

不用A3shape转边框得到的绘图为m 34 21 l 36 22 l 44 35 l 47 39 l 48 50 l 48 52 l 46 53 l -5 53 l -7 52 l -7 50 l -5 49 l 44 49 l 43 41 l 40 37 l 33 25 l 17 24 l 15 23 l 15 21 l 17 20 m 57 -10 l 66 39 l 65 40 l 64 41 l 62 39 l 53 -8 l 38 -5 l 42 15 l 40 17 l 14 16 l 10 19 l 12 39 l 11 41 l 9 41 l -6 30 l -6 26 l 5 17 l 5 14 l 7 12 l 12 12 l 25 2 l 0 2 l -2 1 l -2 -1 l 0 -2 l 31 -2 l 33 -1 l 32 2 l 19 12 l 38 13 l 34 -7 l 36 -9 l 55 -12 m 6 22 l -1 28 l 7 34 

显然,用A3shape转的边框可能会在某种程度上有些多余,而不用A3shape则可以直接“ 简化 ”整个路径,使生成的边框里没有自交等多余路径

当然,不用A3shape转边框也可以设定各种样式,比如图1.07是圆角,你也可以设定比如端点样式为Butt(在函数中端点样式设定为数值2,即表示Butt),那么就会得到图1.08

图1.08

图1.08的绘图代码为m 34 21 l 36 22 l 44 35 l 47 39 l 48 50 l 48 52 l 46 53 l -5 53 l -5 49 l 44 49 l 43 41 l 40 37 l 33 25 l 17 24 l 17 20 m 57 -10 l 66 39 l 62 39 l 53 -8 l 38 -5 l 42 15 l 40 17 l 14 16 l 10 19 l 12 39 l 11 41 l 9 41 l -6 30 l -6 26 l 5 17 l 5 14 l 7 12 l 12 12 l 25 2 l 0 2 l 0 -2 l 31 -2 l 33 -1 l 32 2 l 19 12 l 38 13 l 34 -7 l 36 -9 l 55 -12 m 6 22 l -1 28 l 7 34 

A3shape中可选择的端点以及拐点样式均能满足,并且还多出一种模式(虽然没什么用)


那么继续对比,现在比较图形取交的函数

先是A3shape来完成这个任务,直接用“ 刀切 ”的方式对一个文字绘图进行AND运算,得到图1.09和图1.10

图1.09
图1.10

在这个字体这个字这个角度附近,此情此景就可能会在AND运算时,出现这样奇怪的结果,显然这样并不是理想的碎片效果

那么,不用A3shape呢,同样来AND一下试试,得到图1.11和图1.12(刀切角度随机得到的)

图1.11
图1.12

显然不用A3shape来做AND运算就不会有bug,那么以下再给出该角度附近的更多结果,当然结论还是不用A3shape是没有bug的 :

图1.13
图1.14

显然,这一次角度几乎是和“ 第一个 例子 ”一样了。

实际上A3shape不需要经过大量测试就能马上发现,其在图形布尔运算的时候,结果经常会出现奇怪的错误,尤其是A3shape中计算差集时,出现错误的概率极其的大。

但是不用A3shape的话,就可以做到几种运算均不出现bug正确率百分百,已经过极大量试验),并且还能多提供一种运算——异或,因为A3shape里是没有XOR异或运算的(当然这个可以由其他运算得到)


然后也有判断点是否在图形内的函数。A3shape里没有判断两个图形(咱不提矩形啊)是否有包含关系的函数,但是这里不用A3shape有判断两个绘图包含关系的函数(并没有什么用)


正如标题那样,是”预“、是”预“啊,所以就不说太多了,反正以后会出视频的,现在最后就看看不用A3shape来进行XOR运算的结果

图1.15和图1.16进行XOR运算,得到图1.17

图1.15
图1.16
图1.17

图1.15的绘图代码为m 0 0 l 62 -1 l -4 50 l 35 -17 l 53 54 m 33 5 l 27 4 l 32 17 l 23 16 l 33 6 m 39 23 l 39 31 l 54 32 l 55 24 

图1.16的绘图代码为m 0 0 l 27 -5 l 51 9 l 51 52 l -4 50 m 34 14 l 17 10 l 12 34 

图1.17的绘图代码是m 53 54 l 51 52 l 51 46 m 28 -5 l 25 0 l 0 0 l 16 16 l 16 16 l -4 50 l 26 27 l 51 52 l 51 52 l -4 50 l 0 0 l 27 -5 m 51 32 l 51 46 l 47 32 m 34 14 l 12 34 l 16 16 l 16 16 l 16 16 l 17 10 m 55 24 l 54 32 l 51 32 l 51 24 m 45 23 l 47 32 l 39 31 l 39 23 m 51 9 l 51 24 l 45 23 l 43 14 l 50 8 m 39 -1 l 62 -1 l 50 8 l 28 -5 l 35 -17

显然,结果是正确的(显然个毛线)

另外,由于我个人强迫症的问题,我把图形布尔运算得到的绘图给保留了两位小数,我选择困难症,不知道该取整还是保留一位还是保留两位(我现在不想设定自定义精度,感觉很烦啊)

我一般现在的视频都是在几个月以前就做好的,所以说介绍图形的布尔运算怎么想都至少会等到半年以后,没准更久,因为我不会跳着出视频

天气太冷了,我讨厌冬天!

以上12月13日

---------------------------------------------------------------------------------------------------------------------------


12月14日补充:

 A3shape的取交有一个明显的错误,比如图1.18和图1.19进行取交就会得到图1.20

图1.18

图1.18的绘图代码为m 0 0 l 47 0 l 45 52 l 31 52 l 19 52 l 5 52 l -7 52 m 9 3 l 42 4 l 3 44 l 40 44 

图1.19

图1.19的绘图代码为m 0 0 l 33 9 l 6 25 l 30 2 l 31 18 

图1.20

图1.20的绘图代码为m 9 3 l 11 3 l 0 0 l 12 7 l 9 3 m 28 4 l 30 4 l 30 2 l 28 4 m 31 15 l 29 17 l 31 18 l 31 15 m 20 17 l 17 14 l 6 25 l 20 17 

显然在图形内部包含其他有自交图形时,将其与其他图形进行AND运算,那A3shape的取交就会出现“ 不理想 ”的结果

而如果不用A3shape的话,就不会有这样的问题了

现在不用A3shape来取交,看看效果,得到图1.21

图1.21

图1.21的绘图代码为m 25 7 l 30 2 l 30 8 l 33 9 l 31 10 l 31 18 l 24 14 l 6 25 l 20 12 l 0 0 

显然,不用A3shape的,就得到了正确的结果

然后由于A3shape目前没有加入绘图简化的函数,所以这里直接说不用A3shape的情况,不用A3shape进行图形简化,当然可以简化掉不需要的部分,比如图1.22简化为图1.23

图1.22

图1.22的绘图代码为m 0 0 l 43 0 l -1 45 l 50 42 m 19 2 l 34 2 l 22 11 m 35 37 l 25 28 l 10 41 l 32 29 

图1.23

图1.23的绘图代码为m 50 42 l -1 45 l 24 20 m 32 29 l 28 31 l 35 37 m 24 20 l 0 0 l 43 0 


以上就是不用A3shape、且正确率百分百的图形处理

【Aegisub】预的评论 (共 条)

分享到微博请遵守国家法律