Aegisub特效随记:颜色函数和渐变

函数

函数在手册中可查。

颜色 RGB to ASS

_G.ass_color(R,G,B)
输入RGB:三个RGB格式的颜色(0~255)
输出:ASS格式颜色代码
例如

> {\1c!_G.ass_color(200,300,120)!}
{\1c&H7812CC8&}

颜色 HSV to RGB

_G.HSV_to_RGB(H,S,V)
输入HSV:三个H(0~359)S(0~1)V(0~1)格式的颜色
输出:RGB格式的颜色;实际使用应搭配_G.ass_color(R,G,B)
例如

>{\1c!_G.ass_color(_G.HSV_to_RGB(100,1,1))!}
{\1c&H00FF55&}

透明度 D to H

_G.ass_alpha(D)
输入D:10进制(0-255,即(FF)16)
输出:16进制aegisub格式透明度
例如

> {\1a!_G.ass_alpha(256)!}
{\1a&H100&}

颜色算法

RGB

RGB即三原色发光模式。

image.png

(0, 0, 0)是黑色
(255, 255, 255)是白色
(255, 0, 0)是红色
(0, 255, 0)是绿色
(0, 0, 255)是蓝色
(255, 255, 0)是黄色
(0, 255, 255)是青色
(255, 0, 255)是品红

HSL

HSV即色相、饱和度、明度,是一种将RGB色彩模型中的点在圆柱坐标系中的表示法。
饱和度越小越淡,越接近白色。S=0,颜色为白。
明度越小越暗,L=0,颜色为黑。
S=1且L=1时,颜色才是纯色彩。

image.png

image.png

渐变的算法

一段渐变的颜色,可以用HSL来生成。利用循环指针或字符位置来计算。

字符位置

$si/$syln即为一个字符在整句话中的相对位置(0-1)

代码

Comment: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,code once,strips=20 startc={2,1,1} endc={119,1,1}
Comment: 0,0:00:00.00,0:00:05.00,Default,HSL,0,0,0,template line,!maxloop(strips)!{\clip($lleft,!$ltop+$lheight*(j-1)/maxj!,$lright,!$ltop+$lheight*j/maxj!)\pos($lcenter,$lmiddle)\1c!_G.ass_color(_G.HSV_to_RGB((startc[1]-(startc[1]-endc[1])*j/maxj),(startc[2]-(startc[2]-endc[2])*j/maxj),(startc[3]-(startc[3]-endc[3])*j/maxj)))!}
Comment: 0,0:00:00.00,0:00:05.00,Default,RGB,0,0,0,,!maxloop(strips)!{\clip($lleft,!$ltop+$lheight*(j-1)/maxj!,$lright,!$ltop+$lheight*j/maxj!)\pos($lcenter,$lmiddle)\1c!_G.ass_color((startc[1]-(startc[1]-endc[1])*j/maxj),(startc[2]-(startc[2]-endc[2])*j/maxj),(startc[3]-(startc[3]-endc[3])*j/maxj))!}
Comment: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,karaoke,测试字幕

image.png

平滑函数

在行数很多的时候,设置的头尾颜色可能不会被很多的显示出来。可以尝试使用平滑函数来使开头和结尾更平滑一些。

函数

$S_n(x) =
\begin{cases}
0 & \text{if $x\le0$} \\
x^{n+1}\sum_{k=0}^n\binom{n+k}{k}\binom{2n+1}{n-k}(-x)^k & \text{if $0\le{x}\le1$} \\
1 & \text{if $1\le{x}$}
\end{cases}$

$k=0$, $S_0=x$
$k=1$, $S_1=3x^2-2x^3$
$k=2$, $S_2=6x^5-15x^4+10x^3$
$k=3$, $S_3=-20x^7+70x^6-84x^5+35x^4$

image.png

应用代码

以$S_3$为例子。将$j/maxj$替换为-20*math.pow(j/maxj,7)+70*math.pow(j/maxj,6)-84*math.pow(j/maxj,5)+35*math.pow(j/maxj,4)
以下给出了S1-S3的HSL平滑渐变代码。

Comment: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,code once,strips=30 startc={2,1,1} endc={119,1,1}
Comment: 0,0:00:00.00,0:00:05.00,Default,HSL,0,0,0,template line,!maxloop(strips)!{\clip($lleft,!$ltop+$lheight*(j-1)/maxj!,$lright,!$ltop+$lheight*j/maxj!)\pos($lcenter,$lmiddle)\1c!_G.ass_color(_G.HSV_to_RGB((startc[1]-(startc[1]-endc[1])*j/maxj),(startc[2]-(startc[2]-endc[2])*j/maxj),(startc[3]-(startc[3]-endc[3])*j/maxj)))!}
Comment: 0,0:00:00.00,0:00:05.00,Default,HSL_Smooth1,0,0,0,,!maxloop(strips)!{\clip($lleft,!$ltop+$lheight*(j-1)/maxj!,$lright,!$ltop+$lheight*j/maxj!)\pos($lcenter,$lmiddle)\1c!_G.ass_color(_G.HSV_to_RGB((startc[1]-(startc[1]-endc[1])*(3*math.pow(j/maxj,2)-2*math.pow(j/maxj,3))),(startc[2]-(startc[2]-endc[2])*(3*math.pow(j/maxj,2)-2*math.pow(j/maxj,3))),(startc[3]-(startc[3]-endc[3])*(3*math.pow(j/maxj,2)-2*math.pow(j/maxj,3)))))!}
Comment: 0,0:00:00.00,0:00:05.00,Default,HSL_Smooth2,0,0,0,,!maxloop(strips)!{\clip($lleft,!$ltop+$lheight*(j-1)/maxj!,$lright,!$ltop+$lheight*j/maxj!)\pos($lcenter,$lmiddle)\1c!_G.ass_color(_G.HSV_to_RGB((startc[1]-(startc[1]-endc[1])*(6*math.pow(j/maxj,5)-15*math.pow(j/maxj,4)+10*math.pow(j/maxj,3))),(startc[2]-(startc[2]-endc[2])*(6*math.pow(j/maxj,5)-15*math.pow(j/maxj,4)+10*math.pow(j/maxj,3))),(startc[3]-(startc[3]-endc[3])*(6*math.pow(j/maxj,5)-15*math.pow(j/maxj,4)+10*math.pow(j/maxj,3)))))!}
Comment: 0,0:00:00.00,0:00:05.00,Default,HSL_Smooth3,0,0,0,,!maxloop(strips)!{\clip($lleft,!$ltop+$lheight*(j-1)/maxj!,$lright,!$ltop+$lheight*j/maxj!)\pos($lcenter,$lmiddle)\1c!_G.ass_color(_G.HSV_to_RGB((startc[1]-(startc[1]-endc[1])*(-20*math.pow(j/maxj,7)+70*math.pow(j/maxj,6)-84*math.pow(j/maxj,5)+35*math.pow(j/maxj,4))),(startc[2]-(startc[2]-endc[2])*(-20*math.pow(j/maxj,7)+70*math.pow(j/maxj,6)-84*math.pow(j/maxj,5)+35*math.pow(j/maxj,4))),(startc[3]-(startc[3]-endc[3])*(-20*math.pow(j/maxj,7)+70*math.pow(j/maxj,6)-84*math.pow(j/maxj,5)+35*math.pow(j/maxj,4)))))!}
Comment: 0,0:00:00.00,0:00:05.00,Default,RGB,0,0,0,,!maxloop(strips)!{\clip($lleft,!$ltop+$lheight*(j-1)/maxj!,$lright,!$ltop+$lheight*j/maxj!)\pos($lcenter,$lmiddle)\1c!_G.ass_color((startc[1]-(startc[1]-endc[1])*j/maxj),(startc[2]-(startc[2]-endc[2])*j/maxj),(startc[3]-(startc[3]-endc[3])*j/maxj))!}
Comment: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,karaoke,测试

以下为30条clip的S0—S4效果。

image.png

标题:Aegisub特效随记:颜色函数和渐变
作者:IKK
除转载和特殊声明外,所有文章采用 CC BY-NC-SA 4.0协议
暂无评论

发送评论 编辑评论


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