TCAX 字幕特效制作工具官方论坛 | ASS | TCAS | Python | Aegisub | Lua
标题:
【葬桜】散落的花瓣
[打印本页]
作者:
BurySakura
时间:
2012-8-5 13:01:04
标题:
【葬桜】散落的花瓣
本帖最后由 BurySakura 于 2012-8-8 02:35 编辑
2012-8-5 13:13:52 上传
下载附件
(2.14 KB)
2012-8-5 13:01:00 上传
下载附件
(2.52 KB)
from cairo import *
from math import *
from random import *
SYL_FON_WID = 40
SYL_FON_HEI = 40
surface = ImageSurface(FORMAT_ARGB32, SYL_FON_WID, SYL_FON_HEI)
ctx = Context(surface)
ctx.scale(1 / 64, 1 / 64)
ctx.arc(20*64, 20*64, 20*64, 0 ,2*pi)
ctx.clip()
linear = LinearGradient(0, 0, SYL_FON_WID*64, SYL_FON_HEI*64)
linear.add_color_stop_rgb(0, 0, 0.3, 0.8)
linear.add_color_stop_rgb(1, 0, 0.8, 0.3)
radial = RadialGradient(SYL_FON_WID*64*randint(0,10)/10, SYL_FON_HEI*64*randint(0,10)/10, SYL_FON_WID*64*0,
SYL_FON_WID*64*randint(0,10)/10, SYL_FON_HEI*64*randint(0,10)/10, SYL_FON_WID*64*1)
radial.add_color_stop_rgba(0, 0, 0, 0, 0)
radial.add_color_stop_rgba(0.8, 0, 0, 0, 1)
ctx.set_source(linear)
ctx.mask(radial)
surface.write_to_png('mask.png')
复制代码
图片附件:
c.png
(2012-8-5 13:01:00, 2.52 KB) / 下载次数 1679
http://tcax.org/forum.php?mod=attachment&aid=ODUwfDY5OGM5OTBifDE3NDQwNjA1ODN8MHww
图片附件:
mask.png
(2012-8-5 13:13:52, 2.14 KB) / 下载次数 1672
http://tcax.org/forum.php?mod=attachment&aid=ODUyfDE0NWQ2YjVmfDE3NDQwNjA1ODN8MHww
作者:
BurySakura
时间:
2012-8-5 13:10:34
本帖最后由 BurySakura 于 2012-8-5 13:22 编辑
2012-8-5 13:10:19 上传
下载附件
(2.45 KB)
from cairo import *
from math import *
from random import *
SYL_FON_WID = 40
SYL_FON_HEI = 40
surface = ImageSurface(FORMAT_ARGB32, SYL_FON_WID, SYL_FON_HEI)
ctx = Context(surface)
mask = ImageSurface(FORMAT_ARGB32, SYL_FON_WID, SYL_FON_HEI)
cr = Context(mask)
ctx.scale(SYL_FON_WID, SYL_FON_HEI)
linear = LinearGradient(0, 0, 1, 1)
linear.add_color_stop_rgb(0, 0, 0.3, 0.8)
linear.add_color_stop_rgb(1, 0, 0.8, 0.3)
radial = RadialGradient(random(), random(), 0,
random(), random(), 1)
radial.add_color_stop_rgba(0, 0, 0, 0, 0)
radial.add_color_stop_rgba(0.8, 0, 0, 0, 1)
ctx.set_source(linear)
ctx.mask(radial)
cr.set_source_surface(surface,0,0)
cr.scale(1 / 64, 1 / 64)
cr.arc(20*64, 20*64, 20*64, 0, 2*pi)
cr.clip()
cr.paint()
mask.write_to_png('mask.png')
复制代码
图片附件:
c1.png
(2012-8-5 13:10:19, 2.45 KB) / 下载次数 1661
http://tcax.org/forum.php?mod=attachment&aid=ODUxfDZkODc1ZjU1fDE3NDQwNjA1ODN8MHww
作者:
BurySakura
时间:
2012-8-5 13:22:20
本帖最后由 BurySakura 于 2012-8-5 13:22 编辑
2012-8-5 13:21:52 上传
下载附件
(15.33 KB)
2012-8-5 13:21:58 上传
下载附件
(2.21 KB)
from cairo import *
from math import *
from random import *
SYL_FON_WID = 40
SYL_FON_HEI = 40
PAT_IMG_FIL = r'.\chara01.png'
img = ImageSurface.create_from_png(PAT_IMG_FIL)
width = img.get_width()
height = img.get_height()
imgpat = SurfacePattern(img)
scaler = Matrix()
scx = width / SYL_FON_WID
scy = height / SYL_FON_HEI
#1 = 100%; 2 = 50%;0.5 = 200%
scaler.scale(scx,scy)
imgpat.set_matrix(scaler)
#set resampling filter
imgpat.set_filter(FILTER_BEST)
mask = ImageSurface(FORMAT_ARGB32, SYL_FON_WID, SYL_FON_HEI)
cr = Context(mask)
cr.set_source(imgpat)
cr.scale(1 / 64, 1 / 64)
cr.arc(20*64, 20*64, 15*64, 0, 2*pi)
cr.clip()
cr.paint()
mask.write_to_png('mask.png')
复制代码
图片附件:
c1.png
(2012-8-5 13:21:58, 2.21 KB) / 下载次数 1646
http://tcax.org/forum.php?mod=attachment&aid=ODU0fGU4NjgyZWUxfDE3NDQwNjA1ODN8MHww
图片附件:
chara01.png
(2012-8-5 13:21:52, 15.33 KB) / 下载次数 1682
http://tcax.org/forum.php?mod=attachment&aid=ODUzfDZlZDMwNzc5fDE3NDQwNjA1ODN8MHww
作者:
BurySakura
时间:
2012-8-5 23:53:10
本帖最后由 BurySakura 于 2012-8-6 01:49 编辑
2012-8-5 23:52:52 上传
下载附件
(1.57 KB)
from cairo import *
from math import *
class translation(object):
def __init__(self, filename, width, height, img):
img = self.img = ImageSurface.create_from_png(img)
imgw = img.get_width()
imgh = img.get_height()
imgpat = SurfacePattern(img)
scaler = Matrix()
scx = imgw / width
scy = imgh / height
#1 = 100%; 2 = 50%;0.5 = 200%
scaler.scale(scx, scy)
imgpat.set_matrix(scaler)
#set resampling filter
imgpat.set_filter(FILTER_BEST)
self.mask = ImageSurface(FORMAT_ARGB32, width, height)
cr = self.cr = Context(self.mask)
cr.translate(10, 10)
cr.set_source(imgpat)
cr.translate(-10, -10)
cr.scale(1 / 64, 1 / 64)
cr.arc(20*64, 20*64, 15*64, 0 , 2*pi)
cr.clip()
cr.paint()
self.mask.write_to_png(filename + '.png')
self.mask.finish()
if __name__ == '__main__':
SYL_FON_WID = 40
SYL_FON_HEI = 40
PAT_IMG_FIL = r'.\chara01.png'
translation('mask', SYL_FON_WID, SYL_FON_HEI, PAT_IMG_FIL)
复制代码
图片附件:
mask.png
(2012-8-5 23:52:52, 1.57 KB) / 下载次数 1649
http://tcax.org/forum.php?mod=attachment&aid=ODU5fDExOGU2NTM4fDE3NDQwNjA1ODN8MHww
作者:
BurySakura
时间:
2012-8-8 00:06:00
2012-8-8 00:05:33 上传
下载附件
(46.3 KB)
#!/usr/bin/env python
import cairo
import math
def warpPath(ctx, function):
first = True
for type, points in ctx.copy_path():
if type == cairo.PATH_MOVE_TO:
if first:
ctx.new_path()
first = False
x, y = function(*points)
ctx.move_to(x, y)
elif type == cairo.PATH_LINE_TO:
x, y = function(*points)
ctx.line_to(x, y)
elif type == cairo.PATH_CURVE_TO:
x1, y1, x2, y2, x3, y3 = points
x1, y1 = function(x1, y1)
x2, y2 = function(x2, y2)
x3, y3 = function(x3, y3)
ctx.curve_to(x1, y1, x2, y2, x3, y3)
elif type == cairo.PATH_CLOSE_PATH:
ctx.close_path()
def spiral(x, y):
theta0 = -math.pi * 3 / 4
theta = x / Width * math.pi * 2 + theta0
radius = y + 200 - x/7
xnew = radius*math.cos(theta)
ynew = radius*math.sin(-theta)
return xnew + Width/2, ynew + Height/2
def curl(x, y):
xn = x - Textwidth/2
#yn = y - Textheight/2
xnew = xn
ynew = y + xn ** 3 / ((Textwidth/2)**3) * 70
return xnew + Width/2, ynew + Height*2/5
Width, Height = 512, 512
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, Width, Height)
ctx = cairo.Context(surface)
solidpattern = ctx.get_source()
# background
pat = cairo.LinearGradient (0.0, 0.0, 0, Height)
pat.add_color_stop_rgba (1, 0, 0, 0, 1)
pat.add_color_stop_rgba (0, 1, 1, 1, 1)
ctx.rectangle (0,0,Width,Height)
ctx.set_source (pat)
ctx.fill ()
# foreground
ctx.set_source (solidpattern)
ctx.set_source_rgb (1,1,1)
ctx.select_font_face("Sans")
ctx.set_font_size(80)
# spiral text
ctx.new_path()
ctx.move_to(0, 0)
ctx.text_path("pycairo - " + "spam " * 5)
warpPath(ctx, spiral)
ctx.fill()
# curly text
ctx.new_path()
ctx.move_to(0, 0)
ctx.set_source_rgb(0.3, 0.3, 0.3)
text = "I am curly :)"
ctx.text_path(text)
Textwidth, Textheight = ctx.text_extents(text)[2:4]
warpPath(ctx, curl)
ctx.fill()
surface.write_to_png("warpedtext.png")
复制代码
图片附件:
warpedtext.png
(2012-8-8 00:05:33, 46.3 KB) / 下载次数 1664
http://tcax.org/forum.php?mod=attachment&aid=ODYzfDZjYWRhN2JkfDE3NDQwNjA1ODN8MHww
作者:
BurySakura
时间:
2012-8-8 01:00:52
本帖最后由 BurySakura 于 2012-8-8 01:08 编辑
关于特效制作
本帖最后由 BurySakura 于 2011-4-10 13:34 在妇联字幕板块编辑。
当时没有TCAX,所以没有提到请见谅,TCAX大家最熟悉不过,也轮不到我来介绍。
我做的特效并不多,所以经验也不怎么丰富,就随便说说我对特效制作方面的体会。
一、必须掌握一种工具的使用
现在比较常用的是jfs写的Aegisub。至于如何使用,我写过一篇《Aegisub简易外挂ASS特效制作教程》,这个只是Automation 4的皮毛而已,想完全掌握对Automation 4的使用,必须要会Lua的前提下。不过它应该也可以使用纯Lua脚本制作特效,我没有使用过,所以也不怎么了解。具体参考Youka写的NyuFX vs. Automation 4:
http://youka.xobor.de/t86f4-NyuFX-vs-Automation.html
既然提到了NyuFX,那下面开始讲NyuFX吧。这是Youka写的一个相对纯脚本来说比较容易使用的工具。写一段只应用于特效的Lua脚本,然后用C/C++写的NyuFX生成ASS。而且在使用ASS的前提下,效果制作方面应该可以说是能完成所有特效的工具之一。工具只是工具,不过看了下作品(包括别人使用NyuFX制作的),在ASS限制的条件下还是没有人能达到Tenka_Muteki-7X3那个境界。使用方法:
http://youka.xobor.de/t61f4-Tutorials.html
然后就是Tenka_Muteki-7X3写的SSA Pawaa xD~。7X3可以说是EP特效的鼻祖,在那个没有VSFilter2.39的时代能完成这样的效果,即便是拿到今天,我个人认为还是没有出现使用ASS能超越7X3的人。至于如何使用SSA Pawaa xD~嘛,首先要会Python,然后得花时间把整个脚本完全理解,纯脚本看上去比较可怕,而且7X3变量又写得那么整齐,看着看着就晕了。我这里有份西班牙文的教程,如果有同学需要可以问我拿,西班牙文发出来也没有任何意义。不过活教程倒是有几只,说是活教程,其实都是半死不活。WLGO的small,绯空的卜卜猪,还有算上我吧(死。同样是使用SSA Pawaa xD~,但是效果方面跟7X3还是有一定的差距,思茅可能是因为怕卡所以也没有使用华丽的特效,不过他能把SSA Pawaa xD~山寨成自己的small_code,并且解决了生成中文乱码之类的问题。
后面就是思茅写的small_code,使用方法完全跟SSA Pawaa xD~一样,就不具体介绍了。
再来就是milkyjing写的milkyjing.pyc,没有拿到过,所以不知道长什么样。但是那就是牛奶看SSA Pawaa xD~晕了以后的产物,都是使用Python的,大概也就长那样了。不过牛奶实现了边框的点凑字。牛奶还写了TCSub,就是套用别人写了的效果,但是这就没有特效制作的乐趣了,我是这么认为了,大概后面也坑了吧。不过牛奶还是EP写了tcxCore,那个大概是抛弃VSFilter的产物,基本已经成形,不过没看见有人使用,GUI也坑那里了。
http://code.google.com/p/tcxcore
最后我提的就是MeteorX用C#写的MeteorX.AssTools,使用的话需要首先掌握C#。XX是使用ASS制作光效最好的,而且作品以华丽的效果让人折服。XX大概也是第一个用1M以内的ASS爆掉VSFilter的人,当然也有至今为止用于正常效果而制作的最大ASS。
上面所提到的都是一些ASS特效制作方面的工具,还有一些像combo_k写的我不知道叫啥也没有接触过(拖,Cysub,MexFX我不了解就不做介绍了,有兴趣的同学可以自己查找资料。AE我也不介绍了,据小艾说比较好用的脚本是KAK。
不使用ASS的工具有jfs的OverLua,Youka正在写的FLuaG。OverLua是Lua + Cairo的产物,可以制作一些超越EP的效果,不过使用要求也相对比较高,相对的效果也是我看到过最好的。不过除了jfs写的Gundam00的特效,其他估计他没怎么花时间跟精力去制作,看上去不像jfs写出来的效果。FLuaG(Floating Lua Graphics) = Avisynth + Lua + OpenGL (+ WinGDI)基本已经写的差不多了,使用了GPU,实现了3D效果,不过3D怎么也跟Animation搭不上边。
http://www.youtube.com/watch?v=NtwKdRZ1mBM
http://www.youtube.com/watch?v=jBQKdDen2Zs
二、特效制作方面
制作特效需要一份歌词的K值,这个用Aegisub可以完成。制作不准确的时间,我看上去比较明显,影响特效的美观性,所以K值的制作也不能忽视。至于教程,WLGO的Mystryl有录过一段视频:
http://mystryl.cn/2009/01/wlgo%e ... %e8%af%ad%e9%9f%b3/
在掌握了一只特效制作工具之后,可以按照自己的意愿制作效果,当然在制作过程中有一些需要注意的地方。
句子之间的时间差要掌握好,尽量避免句子进入跟退出时重叠,否则影响特效的观赏性。这一点思茅跟曲奇做得很好,这样特效看上去就比较柔和。由于追求效果的EP,导致持续时间不够用,从而压缩句子间的时间差那也是没有办法的事。
效果尽量跟画面去融合,这个只是个人的想法。结合整个画面做背景不把文字独立出来的话,就算特效不华丽,那也是完美之作。不过华丽的特效也是有可取之处的。如果可以结合音乐,那再好不过了。
特效不宜占用画面过多的空间,造成特效重点,动画次要的感觉,得尽量避免污染画面。
有些特效看上去就像文字挂在画面之上,特别是ASS特效,给人格格不入的感觉,就像是纯粹了玩文字罢了。所以做特效时要注意文字的柔化跟模糊。
特效制作最重要的就是细心跟耐心,要能有N天都蹲在计算姬前制作一个效果的思想准备。不断的尝试怎样的效果才是自己希望得到的,如果想敷衍当然是很容易的事情,随便给个\t就是一个效果。看着自己花很久写出满意的效果,这就是特效制作特效最大的乐趣吧。
特效还需要一定的想象能力,提取画面元素并能使用到文字中去。想法也是非常重要的,这个应该也是在会工具的前提下比较让人头疼的问题。工具毕竟只是工具,想法才是特效的灵魂。拿工具实现特效的过程是最快乐的,虽然实现过程并不是很容易的事情。
所以少年啊,要热爱生活,从生活中寻找特效的灵感。于是在寻找灵感的过程中,渐渐淡忘特效。那不是人做的事,会花费很多的时间跟精力,好好享受生活才是最最最重要的。
(啊嘞嘞,好像混进了奇怪的东西的说 的说
以上只是个人的体会,当然带有个人的偏见,所以仅供参考。
好吧,就写这么多,感觉歪了,像是在介绍特效制作工具。不过工具的使用才是特效制作的重点,如果连工具都不会用,谈什么特效制作。当然,最好的办法就是自己写工具,这样就能更深入的理解特效制作的过程。
作者:
BurySakura
时间:
2012-8-8 01:16:40
HOW TO LEARN MAKING KARAOKE
http://forum.aegisub.org/viewtopic.php?f=13&t=1566
[转载]如何学习制作卡拉OK特效
http://www.tcax.org/forum.php?mod=viewthread&tid=50
作者:
BurySakura
时间:
2012-8-8 01:56:34
本帖最后由 BurySakura 于 2012-8-8 01:59 编辑
2012-8-8 01:57:45 上传
下载附件
(10.18 KB)
#Overlay test
cb = colorbars(512, 384)
bg = blankclip(cb, color=$FFFFFF)
text = blankclip(cb).subtitle("人家才不会什么特效呢!哼~", x = 50, y = 235, size = 40,
\ text_color=$ffffff)
Overlay(bg, cb, mask = text)
复制代码
图片附件:
Overlay.jpg
(2012-8-8 01:57:45, 10.18 KB) / 下载次数 1658
http://tcax.org/forum.php?mod=attachment&aid=ODY1fDk5MDY3MzA1fDE3NDQwNjA1ODN8MHww
作者:
BurySakura
时间:
2014-4-18 09:31:44
#font_mask
SYL_FON_VEC = vector_fonts(SYL_SCR_VAL, VAL_FON_FAC, SYL_FON_WID, FON_LEV_ADJ)
x_m = int(SYL_POS_LEV)<<6
y_m = int(SYL_POS_VER)<<6
ass_clip = move_vector(SYL_FON_VEC,x_m,y_m)
point = ['m']
for i in range(20):
x = randint(-25, 25)
y = randint(-25, 25)
point.append(str(x))
point.append(str(y))
if i == 0:
point.append('l')
draw = ' '.join(point)
val_lay_num = 0
syl_str_tim = LIN_STR_TIM + CON_SYL_KAR * 5 - 30
syl_end_tim = LIN_END_TIM - 5*(NUM_SYL_KAR-1) + 5*CON_SYL_KAR + 30
val_ass_tag = an(7)+pos(SYL_POS_LEV,SYL_POS_VER)+c1('B25478')+be(1)+p(1)\
+clip(7,ass_clip)+fad(300,300)
syl_scr_val = draw
LIS_LIN_EVE = eve_line(val_lay_num, syl_str_tim, syl_end_tim, val_sty_nam, val_ass_tag, syl_scr_val, GER_SYL_SCR)
复制代码
嘛,我只是路过刷下存在感而已。
作者:
BurySakura
时间:
2014-4-22 16:03:58
本帖最后由 BurySakura 于 2014-4-22 16:09 编辑
SYL_FON_VEC = vector_fonts(SYL_SCR_VAL, VAL_FON_FAC, SYL_FON_WID, FON_LEV_ADJ)
x_m = int(SYL_POS_LEV)<<6
y_m = int(SYL_POS_VER)<<6
ass_clip = move_vector(SYL_FON_VEC,x_m,y_m)
point = ['m']
con = 6
for i in range(con*4):
if i%4 == 1:
point.append('b')
else:
x = randint(-40, 40)
y = randint(-40, 40)
point.append(str(x))
point.append(str(y))
if i == 0:
xt = x
yt = y
if i == con*4-1:
x = xt
y = yt
point.append(str(x))
point.append(str(y))
draw = ' '.join(point)
_ele = SYL_FON_VEC.split()
_mark = 0
for _i,_c in enumerate(_ele):
if not _c in ['m','n','l','b','s','p','c']:
if _mark == 0:
x = int(_c)
_ele[_i] = str(x+randint(-2<<6,2<<6))
_mark = 1
else:
y = int(_c)
_ele[_i] = str(y+randint(-2<<6,2<<6))
_mark = 0
SYL_FON_VEC_ = ' '.join(_ele)
x_m = int(SYL_POS_LEV)<<6
y_m = int(SYL_POS_VER)<<6
ass_clip_ = move_vector(SYL_FON_VEC_,x_m,y_m)
val_lay_num = 0
syl_str_tim = SYL_STR_TIM
syl_end_tim = SYL_END_TIM
val_ass_tag = an(7)+pos(SYL_POS_LEV,SYL_POS_VER)+c1('420096')\
+bord(1)+blur(2)+be(8)+shad(3)+fscxy(120)+p(7)
syl_scr_val = SYL_FON_VEC_
LIS_LIN_EVE = eve_line(val_lay_num, syl_str_tim, syl_end_tim, val_sty_nam, val_ass_tag, syl_scr_val, GER_SYL_SCR)
val_lay_num = 0
syl_str_tim = SYL_STR_TIM
syl_end_tim = SYL_END_TIM
val_ass_tag = an(7)+pos(SYL_POS_LEV+0,SYL_POS_VER)+c1('FFFFFF')\
+be(2)+p(1)+clip(7,ass_clip_)
syl_scr_val = draw
LIS_LIN_EVE = eve_line(val_lay_num, syl_str_tim, syl_end_tim, val_sty_nam, val_ass_tag, syl_scr_val, GER_SYL_SCR)
复制代码
作者:
BurySakura
时间:
2014-5-6 13:04:19
space = 16
x1 = SYL_POS_LEV - SYL_FON_WID / 2
y1 = SYL_POS_VER - SYL_FON_HEI / 2
x2 = x1
y2 = SYL_POS_VER + SYL_FON_HEI / 2
x3 = SYL_POS_LEV + SYL_FON_WID / 2
y3 = y2
x4 = x3
y4 = y1
if CON_SYL_KAR%4 == 0:
x_1 = x2
y_1 = y2
x_2 = x4
y_2 = y4
if CON_SYL_KAR%4 == 2:
x_1 = x1
y_1 = y1
x_2 = x3
y_2 = y3
fx = x1 - space
fy = (y_2-y_1)/(x_2-x_1)*(fx-x_1)+y_1
_x1 = fx
_y1 = fy
_x2 = 2*SYL_POS_LEV-_x1
_y2 = _y1
_x3 = _x2
_y3 = 2*SYL_POS_VER-_y1
_x4 = _x1
_y4 = _y3
clip_piont = ['m', str(round(_x1)), str(round(_y1)),
'l', str(round(_x2)), str(round(_y2)),
str(round(_x3)), str(round(_y3))]
iclip_piont = ['m', str(round(_x1)), str(round(_y1)),
'l', str(round(_x4)), str(round(_y4)),
str(round(_x3)), str(round(_y3))]
_clip = ' '.join(clip_piont)
_iclip = ' '.join(iclip_piont)
distance = 4
dy = SYL_POS_VER + distance
dx = (x_2-x_1)/(y_2-y_1)*(dy-y_1)+x_1
mx1 = SYL_POS_LEV
my1 = SYL_POS_VER
mx2 = dx
my2 = dy
t1 = kc
t2 = t1 + SYL_KAR_VAL*10
kc = t2
if CON_SYL_KAR%4 == 0:
fx1 = pos(SYL_POS_LEV,SYL_POS_VER)+clip(_clip)+fad(0,300)
fx2 = move(mx1,my1,mx2,my2,t2,t2+300)+clip(_iclip)+fad(0,300)
lay1 = 0
lay2 = 2
if CON_SYL_KAR%4 == 2:
fx1 = move(mx1,my1,mx2,my2,t2,t2+300)+clip(_clip)+fad(0,300)
fx2 = pos(SYL_POS_LEV,SYL_POS_VER)+clip(_iclip)+fad(0,300)
lay1 = 2
lay2 = 0
c = random_color()#100,255,100,255,100,255)
val_lay_num = lay1
syl_str_tim = LIN_STR_TIM
syl_end_tim = SYL_END_TIM+30
val_ass_tag = an(5)+blur(2)+be(2)+fx1
syl_scr_val = SYL_SCR_VAL
LIS_LIN_EVE = eve_line(val_lay_num, syl_str_tim, syl_end_tim, val_sty_nam, val_ass_tag, syl_scr_val, GER_SYL_SCR)
val_lay_num = lay2
val_ass_tag = an(5)+blur(2)+be(2)+fx2
syl_scr_val = SYL_SCR_VAL
LIS_LIN_EVE = eve_line(val_lay_num, syl_str_tim, syl_end_tim, val_sty_nam, val_ass_tag, syl_scr_val, GER_SYL_SCR)
dx1 = x1 - space
dy1 = y1
dx2 = x3 + space
dy2 = y3
if CON_SYL_KAR%4 == 0:
dmx1 = round(x2-space, 5)
dmy1 = round(y2, 5)
dmx2 = round(x4+space, 5)
dmy2 = round(y4, 5)
if CON_SYL_KAR%4 == 2:
dmx1 = round(x1-space, 5)
dmy1 = round(y1, 5)
dmx2 = round(x3+space, 5)
dmy2 = round(y3, 5)
dfr = round(math.atan((dmy2-dmy1)/(dmx2-dmx1))*180/math.pi, 5)
val_lay_num = 1
syl_str_tim = SYL_STR_TIM
syl_end_tim = SYL_END_TIM+30
val_ass_tag = an(7)+p(1)+move(dmx1,dmy1,dmx2,dmy2,0,SYL_KAR_VAL*10)+c1('3F5579')+c3('FFFFFF')\
+clip(dx1,dy1,dx2,dy2)+be(2)+blur(2)+fr(-dfr)+fad(0,300)+a1(50)
syl_scr_val = 'm 0 0 b -9 8 -17 13 -23 14 b -27 15 -33 16 -36 16 b -37 16 -37 15 -37 14 b -35 13 -35 12 -34 9 b -26 8 -26 4 -36 4 l -500 4 l -500 -4 l -36 -4 b -26 -4 -26 -8 -34 -9 b -35 -13 -35 -14 -37 -14 b -37 -15 -37 -16 -36 -16 b -33 -16 -27 -15 -23 -14 b -17 -13 -9 -8 0 0'
ass_clip = move_vector(syl_scr_val,40,0)
LIS_LIN_EVE = eve_line(val_lay_num, syl_str_tim, syl_end_tim, val_sty_nam, val_ass_tag, ass_clip, GER_SYL_SCR)
复制代码
作者:
2016dragon
时间:
2016-6-1 22:18:10
好复杂
作者:
Seekladoom
时间:
2022-2-6 21:25:35
BurySakura 发表于 2014-5-6 13:04
替身使者:白金之星!
欢迎光临 TCAX 字幕特效制作工具官方论坛 | ASS | TCAS | Python | Aegisub | Lua (http://tcax.org/)
Powered by Discuz! X2