TCAX 字幕特效制作工具官方论坛 | ASS | TCAS | Python | Aegisub | Lua

 找回密码
 新人加入
查看: 9086|回复: 5
打印 上一主题 下一主题

[完整特效] [SAI]043_shingekinokyojinOP2 [复制链接]

Administrator

Shanzhai Pro.

Rank: 7Rank: 7Rank: 7

跳转到指定楼层
楼主
发表于 2014-2-14 19:29:26 |显示全部楼层 |倒序浏览
預覽:http://pan.baidu.com/s/1hqqY9CC#dir/path=%2FSaiyakuFX_Preview
  1. from tcaxPy import *
  2. from util.tcCurve import *
  3. from util.cairo import *


  4. def tcaxPy_Init():
  5.     global _Fs
  6.     global _Spacing
  7.     global Font
  8.     global surface
  9.     global ctx
  10.     global M
  11.     _Fs = GetVal(val_FontSize)
  12.     _FontFileName = GetVal(val_FontFileName)
  13.     _FaceID = GetVal(val_FaceID)
  14.     _Spacing = GetVal(val_Spacing)
  15.     Font = InitFont(_FontFileName, _FaceID, _Fs, _Spacing, GetVal(val_SpaceScale), MakeRGB(0, 0, 0), 0, False)
  16.     fx_width = GetVal(val_ResolutionX)
  17.     fx_height = GetVal(val_ResolutionY)
  18.     surface = ImageSurface(FORMAT_ARGB32, fx_width, fx_height)
  19.     ctx = Context(surface)
  20.     ctx.select_font_face(GetVal(val_FontFaceName))
  21.     ctx.set_font_size(CairoFontSize(_FontFileName, _FaceID, _Fs))

  22. def tcaxPy_Fin():
  23.     FinFont(Font)

  24. def tcaxPy_Main(_I, _J, _N, _BT, _ET, _SK, _KT, _X, _Y, _A, _TXT):
  25.     ASS_BUF = []        # used for saving ASS FX lines
  26.     if _I == 7:
  27.         _Y = _Y-50


  28.     dx = _X - int((_A + _Spacing) / 2 + 0.5)         
  29.     dy = _Y - int(_Fs / 2 + 0.5)                     

  30.     if _J == 0:
  31.         ctx.new_path()
  32.         ctx.move_to(dx,dy+ _Fs + GetVal(val_Descender))
  33.         TXT = ""
  34.         for j in range(_N):
  35.             TXT += getTXT(_I,j)

  36.         ctx.text_path(TXT)
  37.         ctx.scale(1 / 64, 1 / 64)
  38.         outline = ToAssDraw(ctx)
  39.         ctx.scale(64, 64)

  40.         END=_ET-int((getpos(_I,_N-1)[0]-getpos(_I,0)[0]+100)/3)-100


  41.         for T in range(_BT-5,END ,int((getpos(_I,_N-1)[0]-getpos(_I,0)[0]+100)/3)+100):
  42.             ass_main(ASS_BUF, SubL(T, T+(getpos(_I,_N-1)[0]-getpos(_I,0)[0]+100)/3,70), an(7) + mov(getpos(_I,0)[0]-50, _Y,getpos(_I,_N-1)[0]+50,_Y)+blur(3)+alpha1(30)+color1("FFFFFF")+bord(0)+shad(0)+clip(7,outline)+frz(-45) + fscx(70) ,"{\p1}m -15 -30 l 15 -30 15 30 -15 30")
  43.             ass_main(ASS_BUF, SubL(T, T+(getpos(_I,_N-1)[0]-getpos(_I,0)[0]+100)/3,70), an(7) + mov(getpos(_I,_N-1)[0]+50, _Y,getpos(_I,0)[0]-50,_Y)+blur(3)+alpha1(30)+color1("FFFFFF")+bord(0)+shad(0)+clip(7,outline)+frz(-45) + fscx(70) ,"{\p1}m -15 -30 l 15 -30 15 30 -15 30")
  44.             ass_main(ASS_BUF, SubL(T, T+(getpos(_I,_N-1)[0]-getpos(_I,0)[0]+100)/3,70), an(7) + mov(getpos(_I,0)[0]-50, _Y,getpos(_I,_N-1)[0]+50,_Y)+blur(3)+alpha1(30)+color1("FFFFFF")+bord(0)+shad(0)+clip(7,outline)+frz(-45) + fscx(70) ,"{\p1}m -15 -30 l 15 -30 15 30 -15 30")
  45.             ass_main(ASS_BUF, SubL(T, T+(getpos(_I,_N-1)[0]-getpos(_I,0)[0]+100)/3,70), an(7) + mov(getpos(_I,_N-1)[0]+50, _Y,getpos(_I,0)[0]-50,_Y)+blur(3)+alpha1(30)+color1("FFFFFF")+bord(0)+shad(0)+clip(7,outline)+frz(-45) + fscx(70) ,"{\p1}m -15 -30 l 15 -30 15 30 -15 30")
  46.    
  47.     ass_main(ASS_BUF, SubL(_BT-30+_J*3,_ET+10+_J*3,49),fad(300,300)+pos(_X+1,_Y+1)+alpha1(120) + color1("000000") + blur(1) , _TXT)
  48.     ass_main(ASS_BUF, SubL(_BT-30+_J*3,_ET+10+_J*3,50),fad(300,300)+pos(_X,_Y)+alpha1(0) + color1("FFFFFF"), _TXT)
  49.     ass_main(ASS_BUF, SubL(_BT-30+_J*3,_ET+10+_J*3,51),fad(300,300)+pos(_X+2,_Y+2)+alpha1(35) + color1("1B1B1B")+ blur(1) , _TXT)
  50.     ass_main(ASS_BUF, SubL(_BT+_SK,_BT+_SK+_KT,60),pos(_X,_Y)+alpha1(255) + color1("FFFFFF")+bord(2)+blur(6), _TXT)

  51.     for i in range(7):
  52.         for j in range(_BT+_SK,_BT+_SK+_KT,3):
  53.             ass_main(ASS_BUF, SubL(j,j+2,60),mov(_X,_Y,_X+randint(-1,1),_Y+randint(-1,1))+alpha1(170) + color1("FFFFFF")+bord(0)+blur(1), _TXT)
  54.   
  55.     global OPOS
  56.     global XPOS
  57.     if _J == 0 and _I == 0:
  58.         OPOS = [(0,0),(0,0),(0,0),(0,0),(0,0),(0,0),(0,0),(0,0)]
  59.         XPOS = [(0,0),(0,0),(0,0),(0,0),(0,0),(0,0),(0,0),(0,0)]


  60.     if _I > 3 and _I!=7:

  61.         for n in range(3):
  62.             if _I == 4 and _J==0:
  63.                 OPOS[n] = (_X+randint(int(-_A/4*3),int(_A/4*3)),_Y+randint(-30,30))
  64.             else:
  65.                 OPOS[n] = XPOS[n]
  66.       
  67.         for k in range(3):

  68.             PP = [OPOS[k],OPOS[k],OPOS[k]]

  69.             for x in range(_BT+_SK-5,_BT+_SK+_KT,20):
  70.                 XPOS[k] = (_X+randint(int(-_A/4*3),int(_A/4*3)),_Y+randint(-30,30))
  71.                 PP.append(XPOS[k])
  72.             PP.append(XPOS[k])
  73.             PP.append(XPOS[k])

  74.             ucb = UCBSpline(PP)
  75.   
  76.             STEP_N = _KT  

  77.             step_size = 1 / STEP_N

  78.             POS = []

  79.             for u in range(STEP_N):
  80.                  POS.append(ucb(u * step_size))

  81.             s = "●"
  82.             for w in range(STEP_N):
  83.             
  84.                 for j in range(7):
  85.                     rand1 = (POS[w][0],POS[w][1])
  86.                     rand2 = RandCir2(POS[w][0],POS[w][1],8,15)

  87.                     ass_main(ASS_BUF, SubL(_BT+_SK-5+w*1, _BT+_SK-5+16+(w+1)*1,30), alpha3(randint(80,120))+fs(1)+an(5)+xbord(0.1*randint(60,80))+ybord(0.1*randint(60,80))+blur(10)+shad(0)+mov(rand1[0], rand1[1],rand2[0], rand2[1]) +t(fsc(0,0)+xbord(0)+ybord(0))+fad(50,300)+color1('0000EE')+color3('0000EE'), s )
  88.                     ass_main(ASS_BUF, SubL(_BT+_SK-5+w*1, _BT+_SK-5+16+(w+1)*1,32), alpha3(randint(30,70))+fs(1)+an(5)+xbord(0.1*randint(40,60))+ybord(0.1*randint(40,60))+blur(6)+shad(0)+mov(rand1[0], rand1[1],rand2[0], rand2[1]) +t(fsc(0,0)+xbord(0)+ybord(0))+fad(50,300)+color1('0080FF')+color3('0080FF'), s )
  89.                     ass_main(ASS_BUF, SubL(_BT+_SK-5+w*1, _BT+_SK-5+16+(w+1)*1,35), alpha3(randint(0,50))+fs(1)+an(5)+xbord(0.1*randint(20,35))+ybord(0.1*randint(20,35))+blur(3)+shad(0)+ mov(rand1[0], rand1[1],rand2[0], rand2[1]) +t(fsc(0,0)+xbord(0)+ybord(0))+fad(50,300)+color1('FFFFFF')+color3('FFFFFF'), s )

  90.                 for i in range(randint(0,2)):

  91.                     C3 = DivClr('0080FF', '0000EE', 20)[randint(0, 19)]

  92.                     rand1 = RandCir(POS[w][0],POS[w][1],10)
  93.                     rand2 = RandCir2(POS[w][0],POS[w][1],20,40)
  94.                     x = RandPolygon(12/8, 12/8, 4)
  95.                     ass_main(ASS_BUF, SubL(_BT+_SK-5+w*1, _BT+_SK-5+60+(w+1)*1,35), alpha(80)+an(5)+t(fry(720))+color3(C3)+bord(1.8)+shad(0)+blur(2)+ mov(rand1[0], rand1[1],rand2[0], rand2[1]) +fad(50,500),x )


  96.                 c = DivClr('C0C0C0', '4F4F4F', 40)[randint(0, 39)]
  97.                 ox = randint(-10, 10)
  98.                 ass_main(ASS_BUF, SubL(_BT+_SK-5+w*1, _BT+_SK-5+100+(w+1)*1,15), an(5) + xbord(randint(4, 8)) + ybord(randint(4, 8)) + blur(8) + alpha(randint(100, 200)) + shad(0) + t(xbord(randint(1, 4)) + ybord(randint(1, 4)) ) +fs(1)+fad(50,500)+color1(c) + color3(c)+mov(POS[w][0] + ox,POS[w][1] + randint(0, 10),POS[w][0] + ox,POS[w][1]+ randint(-20, 0)),"●" )

  99.     return (ASS_BUF, None)
复制代码
2

查看全部评分

Administrator

Shanzhai Pro.

Rank: 7Rank: 7Rank: 7

沙发
发表于 2014-3-2 19:15:38 |显示全部楼层
< tcaxpy init = true >
< tcaxpy user = false >
< tcaxpy fin = true >

Administrator

Shanzhai Pro.

Rank: 7Rank: 7Rank: 7

板凳
发表于 2014-3-23 14:13:02 |显示全部楼层
圆圆一位 发表于 2014-3-23 12:57
之前的错误好像是没放在内置特效里面,放了之后,还是有下面错误

http://www.tcax.org/forum.php?mo ... &extra=page%3D1

更新一下

Administrator

Shanzhai Pro.

Rank: 7Rank: 7Rank: 7

地板
发表于 2014-3-25 23:43:37 |显示全部楼层
圆圆一位 发表于 2014-3-25 20:45
还出现错误了,这个对ass文件还有要求么?

這個應該是你的k軸裡面 有k時間為0的
所以除0 錯誤了

Administrator

Shanzhai Pro.

Rank: 7Rank: 7Rank: 7

5#
发表于 2014-3-26 21:17:27 |显示全部楼层
圆圆一位 发表于 2014-3-26 20:37
感谢大神的耐心指点,把符号什么的删掉就好了,解析出来了,可是ass文件用Aegisub打开的时候打不开,出现 ...

還是你k值沒打對 這次估計輸出null(空值)了

Administrator

Shanzhai Pro.

Rank: 7Rank: 7Rank: 7

6#
发表于 2014-3-26 23:40:30 |显示全部楼层
圆圆一位 发表于 2014-3-26 23:12
因为手上只有这个打了K值的歌词,所以我一直都是用这个试的。。。。PS:我把空格、.、-都删了 ...

我拿你這個K生成了一下 沒有問題
能考慮的錯誤 只有兩個
1 字體問題 你用simhei.ttf 生成試一下
2 你這個k有點長 我做的都是動畫OP 都只有1分半鐘 大概就15-20句歌詞 你這3倍都過了 生成文件會特別大
您需要登录后才可以回帖 登录 | 新人加入

GitHub|TCAX 主页

GMT+8, 2024-5-3 02:11

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH