说在前面
本文的内容整理自大头P群里上传的《VSFilterMod 中文说明文档》,会配上一些自己的理解你都没用 Windows 能有什么理解。总的来说是以快速查询为目的整理的,因此会跳过一些不必要的内容。
本文仅整理 VSFilterMod
的标签,如果想要使用标准的 ASS
标签请查阅前篇。
本文默认读者已经读过《[整理] ASS 标签(标准)》一文。文中跳过了原文档的例子,并建议读者亲自实践过后将本文作为简单的手册查询。
补充:$
标号
在下文的描述中,如果有用到 $
符号的,一律以下标的含义理解标签:
数字 | 含义 |
---|---|
1 | 主要颜色 |
2 | 次要颜色 |
3 | 边框 |
4 | 阴影 |
特效标签:整行
这一类特效标签会对整行字幕生效。
mover
(极坐标移动)
格式
mover(x1: number, y1: number, x2: number, y2: number, angle1: number, angle2: number, radius1: number, radius2: number, t1?: number, t2?: number)
说明
当不指定 angle
和 radius
时,和 move
效果一致。
当指定 angle
和 radius
后,就按照设定的角度和半径进行运动。
moves3
, moves4
(三次贝塞尔曲线移动)
格式
moves3(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, t1?: number, t2?: number) moves4(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number, t1?: number, t2?: number)
说明
使用 p1
、p2
和 p3
(以及 p4
)为基点,产生三(四)次贝塞尔曲线后以该曲线作为轨迹移动。
特效标签:标签后
fsc
(字体缩放)
格式
fsc(scale: number)
说明
设置字体的缩放,效果与同时使用 fscx
和 fscy
相同。
注意
这里存在 VSFilterMod
和 libass
的差异。libass
虽然也有 fsc
标签,但它的 fsc
标签并不解析之后的参数。具体的代码是这样的:
} else if (tag("fsc")) { render_priv->state.scale_x = render_priv->state.style->ScaleX; render_priv->state.scale_y = render_priv->state.style->ScaleY; }
对比上面的 fscx
:
} else if (tag("fscx")) { double val; if (nargs) { val = argtod(*args) / 100; val = render_priv->state.scale_x * (1 - pwr) + val * pwr; val = (val < 0) ? 0 : val; } else val = render_priv->state.style->ScaleX; render_priv->state.scale_x = val; }
可以很明显地看出差异。libass
中的 fsc
只能用户将字体大小恢复为样式默认值。
fsvp
(纵向偏移)
格式
fsvp(leading: number)
说明
改变文字的纵向偏移(vertical padding)。数字的正负代表其在 Y
轴上的偏移量。
frs
(基线倾斜)
格式
frs(angle: number)
说明
将文字的基线倾斜,即文字仍以原点开始渲染,但渲染的方向根据 angle
变化。
补充
个人感觉可以用 an7
、pos
加上 fr(z)
模拟这个效果。
z
(Z
坐标)
格式
z(depth: number)
说明
设置 Z
坐标,表示文字到屏幕之间的距离。
补充
感觉视角有点奇怪,具体还得研究源码。
distort
(扭曲)
格式
distort(u1: number, v2: number, u2: number, v2: number, u3: number, v3: number)
说明
通过移动 (u, v)
点的坐标,以自定义三个点配合原点的形式实现文本的扭曲。四个点从原点开始顺时针方向分别为:P0(0, 0)
、P1(u1, v1)
、P2(u2, v2)
、P3(u3, v3)
。
默认的状态为 \distort(1, 0, 1, 1, 0, 1)
。
rnd
, rndx
, rndy
, rndz
(边界变形)
格式
rnd(arg: number) rndx(arg: number) rndy(arg: number) rndz(arg: number)
说明
在选定的坐标轴上,字体的边界会产生某种可以认为是随机的变形。变形的范围是 (-arg, arg)
。
rndz
可能比较难以观察,使用 fscx45
观察相对较为清楚。
使用 rnd
相当于同时使用 rndx
、rndy
和 rndz
。
$vc
(颜色渐变)
格式
$vc(left_top: Color, right_top: Color, left_bottom: Color, right_bottom: Color)
说明
线性插值渲染颜色渐变。
$va
(透明度渐变)
格式
$va(left_top: Alpha, right_top: Alpha, left_bottom: Alpha, right_bottom: Alpha)
说明
线性插值渲染透明度渐变。
$img
(图片替代颜色填充)
格式
$img(path: string, x_offset?: number, y_offset?: number)
说明
将图片以重复(repeated)的形式作为颜色填充,配合绘图指令可以达到嵌入图片的效果。
图片路径以 /
符号作为目录分隔符,可以是相对或绝对路径。
图片只支持 24
位或 32
位不带透明通道的 TrueColor PNG
文件。
注意
\be
和 \blur
不能模糊图片,只能模糊图片填充的边框。
jitter
(抖动)
格式
jitter(left: number, right: number, up: number, down: number, period: number, seed?: number)
说明
根据 left
、right
、up
、down
限定抖动的区域,根据 period
设置抖动的周期,并以 seed
为随机数种子抖动。
特效标签:特殊
这里出现了一种特殊的标签,难以归到上述的两类之中,因此独立出来单列一类。
movevc
(移动矢量绘图遮罩)
格式
movevc(x1: number, y1: number, x2: number, y2: number, t1?: number, t2?: number)
说明
移动原本无法移动的矢量绘图遮罩。