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

标题: [SAI]036_sukitteiinayoED [打印本页]

作者: saiyaku    时间: 2012-10-13 20:47:16     标题: [SAI]036_sukitteiinayoED

預覽:http://pan.baidu.com/s/1hqqY9CC#dir/path=%2FSaiyakuFX_Preview

沒什麽可說的
  1. from tcaxPy import *
  2. from util.cairo import *
  3. from util.gdiFont import *


  4. def tcaxPy_Init():

  5.     global _Fs

  6.     global _FD                  # 一帧的持续时间, 约40毫秒

  7.     global _Spacing         # 字体间距

  8.     global Font                 # 首要字体

  9.     global GdiFont
  10.     global _TextWidth                # 文字宽度
  11.     global _TextHeight                # 文字高度
  12.     global _TextLength
  13.     global _TextAdvDiff
  14.     global _ResolutionX
  15.     global _OffsetX
  16.     _TextHeight   = GetVal(val_TextHeight)
  17.     _TextWidth    = GetVal(val_TextWidth)
  18.     _TextLength   = GetVal(val_TextLength)
  19.     _TextAdvDiff  = GetVal(val_TextAdvanceDiff)
  20.     _ResolutionX  = GetVal(val_ResolutionX)
  21.     _OffsetX      = GetVal(val_OffsetX)

  22.     _Fs = GetVal(val_FontSize)

  23.     _FD = 1000 / GetVal(val_FXFPS)

  24.     _FontFileName = GetVal(val_FontFileName)

  25.     _FaceID = GetVal(val_FaceID)

  26.     _Spacing = GetVal(val_Spacing)

  27.     Font = InitFont(_FontFileName, _FaceID, _Fs, _Spacing, GetVal(val_SpaceScale), MakeRGB(255, 255, 255), 0, False)

  28.     GdiFont = gfInitFont(GetVal(val_FontFaceName), _Fs, GetVal(val_Spacing), GetVal(val_SpaceScale), 0, False)   #GDIfont
  29.    
  30.     # cairo

  31.     global ctx

  32.     fx_width = GetVal(val_ResolutionX)

  33.     fx_height = GetVal(val_ResolutionY)

  34.     surface = ImageSurface(FORMAT_ARGB32, fx_width, fx_height)

  35.     ctx = Context(surface)


  36. def tcaxPy_Fin():
  37.     FinFont(Font)
  38.     gfFinFont(GdiFont)   #GDIfont

  39. def tcaxPy_Main(_i, _j, _n, _BT, _ET, _SK, _KT, _X, _Y, _A, _TXT):

  40.     ASS_BUF  = []                # 保存ASS特效
  41.     TCAS_BUF = []                # 保存TCAS特效
  42.     if _i==0:
  43.         global bsf
  44.         bsf = _BT
  45.    
  46.     bs=75-(_BT-bsf)%75         

  47.     if _i==2 or _i==3 or _i==6 or _i==8or _i==9or _i==10:
  48.         POS=an(5) + pos(_ResolutionX -33-_TextLength[_i]/2, 22)
  49.         _X = _ResolutionX - _TextLength[_i] - _OffsetX + _TextAdvDiff[_i][_j]+_A/2
  50.     else:
  51.         POS=an(5) + pos(33+_TextLength[_i]/2, 22)
  52.     if _i > -1:

  53.         dx = _X - int(_A / 2 + 0.5)
  54.         dy = _Y - int(_Fs / 2 + 0.5)

  55.         frames = int((_KT+2)*10 / _FD + 0.5)

  56.         for i in range(frames):

  57.             ts = _BT+_SK-5 + i * _FD / 10

  58.             te = _BT+_SK-5 + (i + 1) * _FD / 10

  59.             frame_pct = i / frames

  60.             outline = gfGetOutline(GdiFont, _TXT, 0, 0)

  61.             AssDraw(ctx, outline)

  62.             path_trans(ctx, x_filter,(_A,_X,_Y,frame_pct))

  63.             text = ToAssDraw(ctx)

  64.             EFT = an(7) + pos(dx,dy) +bord(0.5)+color3("FF0000")+color4("FF0000") + p(4)

  65.             ass_main(ASS_BUF, SubL(ts, te,20), EFT, text)

  66.         outline = gfGetOutline(GdiFont, _TXT, 0, 0)

  67.         ass_main(ASS_BUF, SubL(_BT+_j*5, _BT+_SK-5,10),an(7)+bord(0.5) + pos(dx,dy)+fad(150,0)+p(4), outline)
  68.         ass_main(ASS_BUF, SubL(_BT+_SK+_KT, _ET+_j*5,10),an(7) +bord(0.5)+ pos(dx,dy)+fad(0,150)+p(4), outline)
  69.         
  70.         if _i==7:
  71.             TX = 103
  72.         elif _i==10:
  73.             TX = 71   
  74.         elif _i==13:
  75.             TX = 170
  76.         else:
  77.             TX = 0
  78.         for j in range(_BT+bs,_ET-30-TX,75):
  79.             ass_main(ASS_BUF, SubL(j-3, j+25),an(5) + pos(_X,_Y)+fad(50,300)+alpha3(180)+alpha1(255)+color3("FF0000")+bord(2)+blur(3)+shad(0)+t(fsc(100,160)), _TXT)
  80.         if _i==13:
  81.             TY = 170
  82.         else:
  83.             TY=0
  84.         for j in range(_BT+bs-75,_ET-TY,75):
  85.             ass_main(ASS_BUF, SubL(j-3, j-3+25, 0),  POS+blur(2)+bord(0.5)+fs(2)+alpha3(220)+alpha4(255) +color1("FFFFFF")+color3("FF0000")+ fsc(60*_TextLength[_i],130)+alpha1(255) +shad(0)+t(0,80,alpha3(255))+t(80,160,alpha3(220))+t(160,240,alpha3(255)), "●")
  86.     return (ASS_BUF,None)



  87. def x_filter(x, y, param):

  88.     _A, dx, dy, frame_pct = param

  89.     max_diff_x = randint(-1* 8,1* 8)
  90.     max_diff_y = randint(-1* 8,1* 8)  

  91.     p = 1+0.5*(1-frame_pct)
  92.          
  93.     new_x = floor(x*p-_A*4*(p-1) +  max_diff_x)

  94.     new_y = floor(y*p-_Fs*4*(p-1) +  max_diff_y)

  95.     return new_x, new_y
复制代码

作者: zxdfcgv    时间: 2012-10-13 20:50:11

来了来了
作者: mzlmcx    时间: 2012-10-13 22:24:11

右键来了
作者: 兜兜里没糖    时间: 2012-10-14 02:17:49

膜拜
作者: 渣渣疯子    时间: 2012-10-14 06:56:02

终于来了




欢迎光临 TCAX 字幕特效制作工具官方论坛 | ASS | TCAS | Python | Aegisub | Lua (http://tcax.org/) Powered by Discuz! X2