Aegisub特效随记:行内多个绘图

基础

ASS的一行字幕如有多个绘图,那么它们会被依次并排排列(an7下)。
具体来说,在an7定位时,an7的字幕定位拖放点相当于绘图的(0,0),根据绘图代码,绘图的位置也是相对于(0,0)确定的。如果在一行内有多个绘图时,只有第一个绘图的(0,0)an7字幕行的拖放点,之后所有图形的(0,0)都向右偏移,且偏移量为之前图形的宽度
例如,第一个图形的宽度为20,那么第二个图形的绘图(0,0)点实际上变成了(20,0)

{\\p1}m 0 0 l 100 0 100 50 0 50 {\\1cFFF}m 0 0 l 100 0 100 50 0 50 

image.png

取消偏移

想要取消偏移,让这两个图形叠加在一起,方法也很简单,只需要向左(通常)平移后面的图形本身的坐标。

{\\p1}m 0 0 l 100 0 100 50 0 50 {\\1cFFF}m -50 0 l 50 0 50 20 -50 20 

image.png

在自动化中,也可以用Yutils的_G.Yutils.shape.bounding(text)函数求出某个绘图的宽度,再用_G.Yutils.shape.move(shape,x,y)进行相应的平移。

以下是一段示例代码

Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,code once,square= "m 0 0 l 100 0 100 50 0 50"
Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,code line,color={}    for i=1, 5 do      color[i]=_G.interpolate_color(i/5,"&H00FFFFFF","&H000303A0")      end     t=""   a,b,c,d=_G.Yutils.shape.bounding(square)  w=c-a  h=d-b  for i=1,5 do        t=t.."{\\c"..color[i].."}"..square      square=_G.Yutils.shape.move(square,-w,-h)  end
Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,template line notext noblank,{\p1\an7\pos($lleft,$ltop)}!t!
Comment: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,karaoke,aa

其中的code行展开来为

color={}
for i=1, 5 do
color[i]=_G.interpolate_color(i/5,"&H00FFFFFF","&H000303A0")
end

t=""
a,b,c,d=_G.Yutils.shape.bounding(square) --获取矩形的两对定位点
w=c-a --矩形宽
h=d-b --矩形高

for i=1,5 do
    t=t.."{\\c"..color[i].."}"..square
    square=_G.Yutils.shape.move(square,-w,-h) --移动下一次即将生成的图形
end

image.png

可以类似水平渐变,写一个垂直渐变的自动化。

Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,code line,square= "m 0 0 l "..line.width.." 0 "..line.width.." 1 0 1"
Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,code line,shape = _G.decode.create_font(line.styleref.fontname, line.styleref.bold, line.styleref.italic, line.styleref.underline, line.styleref.strikeout, line.styleref.fontsize).text_to_shape(line.text_stripped)
Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,code line,color={}    for i=1, line.height do      color[i]=_G.interpolate_color(i/line.height,"&H00FFFFFF","&H000303A0")      end     t=""   a,b,c,d=_G.Yutils.shape.bounding(square)  w=c-a  h=d-b  for i=1,line.height do        t=t.."{\\c"..color[i].."}"..square      square=_G.Yutils.shape.move(square,-w,h)  end
Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,template line notext noblank,{\p1\an7\pos($lleft,$ltop)\clip(!_G.Yutils.shape.move(shape,$left,$top)!)}!t!
Comment: 1,0:00:00.00,0:00:05.00,Default,,0,0,0,karaoke,忘不了你的声音

image.png

标题:Aegisub特效随记:行内多个绘图
作者:IKK
除转载和特殊声明外,所有文章采用 CC BY-NC-SA 4.0协议
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇