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

标题: [J]030_working_II_op特效py脚本 [打印本页]

作者: milkyjing    时间: 2011-10-12 22:55:18     标题: [J]030_working_II_op特效py脚本

  1. from tcaxPy import *
  2. from pixLibs.ImageStone.pixStone import *

  3. def tcaxPy_Init():
  4.     global _FD          # 一帧的时间
  5.     global _Fs
  6.     global _TextLength
  7.     global Font
  8.     global FontOut
  9.     global PIX_tex
  10.     global PIX_tex2
  11.     _FD = 1000 / GetVal(val_FXFPS)
  12.     _Fs = GetVal(val_FontSize)
  13.     _TextLength = GetVal(val_TextLength)
  14.     _FontFileName = GetVal(val_FontFileName)
  15.     _FaceID       = GetVal(val_FaceID)
  16.     Font    = InitFont(_FontFileName, _FaceID, _Fs, GetVal(val_Spacing), GetVal(val_SpaceScale), MakeRGB(0, 0, 0), 1, 0)
  17.     FontOut = InitFont(_FontFileName, _FaceID, _Fs, GetVal(val_Spacing), GetVal(val_SpaceScale), MakeRGB(180, 180, 180), 5, 1)
  18.     PIX_tex = ImagePix(abspath('tex2.png'), _Fs, 0)
  19.     PIX_tex2 = ImagePix(abspath('tex5.png'))

  20. def tcaxPy_Fin():
  21.     FinFont(Font)
  22.     FinFont(FontOut)

  23. def tcaxPy_Main(_i, _j, _n, _start, _end, _elapk, _k, _x, _y, _a, _txt):

  24.     ASS_BUF  = []        # 保存ASS特效
  25.     TCAS_BUF = []        # 保存TCAS特效

  26.     ##### 主要特效编写操作 #####

  27.     dx = _x - int(_a / 2 + 0.5)         # 一个固定操作, 将an5的坐标转换为an7
  28.     dy = _y - int(_Fs / 2 + 0.5)        # ASS特效默认采用an5坐标, TCAS特效则采用an7坐标

  29.     if (_i == 12):
  30.         dy += _Fs + 8

  31.     ts_0 = _start - _FD * 10 / 10
  32.     ts = _start
  33.     te = _end
  34.     te_0 = te + _FD * 5 / 10
  35.     tm = _start + _elapk

  36.     PIX_t = TextPix(Font, _txt)             # 获取文字
  37.     PIX_t = PixTexture(PIX_t, PIX_tex)      # 增加纹理
  38.     PIX_out = TextPix(FontOut, _txt)        # 获取边框
  39.     PIX_out = PixTexture(PIX_out, PIX_tex2)
  40.     PIX_out = PixColorMul(PIX_out, 1, 1, 1, 0.9)    # 增加透明度
  41.     PIX_out = PixBlur(PIX_out, 6)           # 增加模糊
  42.     PIX_ori = CombinePixs(PIX_out, PIX_t)   # 混合文字主体和边框 (边框作底)

  43.     center = _n / 2 - 0.5      # center index of 5 texts is 2, center index of 6 is 2.5
  44.     x = dx + 50 * (_j - center) / center
  45.     y = dy + 10
  46.     for i in range(10):
  47.         x = x + (dx - x) * (i + 1) / 5
  48.         y = y + (dy - y) * (i + 1) / 5
  49.         PIX = PixBlur(PIX_ori, 40 - i * 4)
  50.         tcas_main(TCAS_BUF, PIX, 10 * ts_0 + _FD * i, 10 * ts_0 + _FD * (i + 1), x, y, 0)

  51.     PIX = PIX_ori
  52.     tcas_main(TCAS_BUF, PIX, 10 * ts, 10 * te, dx, dy, 0)

  53.     for i in range(0, 10 * _k, int(2 * _FD)):
  54.         PIX = PIX_ori
  55.         PIX = PixBlur(PIX, 0)
  56.         PIX = pstSoftGlow(PIX, 10, 60, 110)
  57.         tcas_main(TCAS_BUF, PIX, 10 * tm + i, 10 * tm + i + _FD, dx, dy, 0)     # PixBlur(PIX, 0) 有特殊效果

  58.     for i in range(5):
  59.         PIX = PixBlur(PIX_ori, (i + 1) * 4)
  60.         #PIX = PixColorMul(PIX, 1, 1, 1, 0.5 + 0.5 * (5 - i - 1) / 5)
  61.         tcas_main(TCAS_BUF, PIX, 10 * te_0 - _FD * (5 - i), 10 * te_0 - _FD * (5 - i - 1), dx, dy, 0)

  62.     # ASS
  63.     if IsLineChanged(_i):
  64.         num = int(_TextLength[_i] / 2)
  65.         points = Bezier1(num, dx, 10, dx + _TextLength[_i], 10)
  66.         for i in range(num):
  67.             ass_main(ASS_BUF, SubL(_start + i / 5, _start + i / 5 + 80, 0, Pix_Style), \
  68.                  pos(points[i][0], points[i][1]) + alpha1(HexToDec('77')) + alpha3(HexToDec('F4')) + bord(1) + blur(1) + color3('A54AFF') + color1('A54AFF') + \
  69.                  t(0, 200, bord(6) + blur(6)) + t(600, 800, bord(1) + blur(1)), PixPt())
  70.             ass_main(ASS_BUF, SubL(_start + i / 5, _start + i / 5 + 80, 1, Pix_Style), \
  71.                  pos(points[i][0], points[i][1]) + alpha1(HexToDec('77')) + alpha3(HexToDec('AA')) + bord(1) + blur(1) + color3('A54AFF') + color1('A54AFF') + \
  72.                  t(0, 100, bord(1.8) + blur(1.8)) + t(100, 200, bord(2.3) + blur(2.3)) +\
  73.                  t(200, 600, bord(1.8) + blur(1.8)) + t(600, 800, bord(1) + blur(1)), PixPt())
  74.             ass_main(ASS_BUF, SubL(_start + i / 5, _start + i / 5 + 80, 2, Pix_Style), \
  75.                  pos(points[i][0], points[i][1]) + alpha1(HexToDec('77')) + alpha3(HexToDec('AA')) + bord(0.7) + blur(0.7) + color3('FFFFFF') + color1('FFFFFF') + \
  76.                  t(0, 100, bord(1.6) + blur(1.6)) + t(100, 200, bord(2.1) + blur(2.1)) +\
  77.                  t(200, 600, bord(1.6) + blur(1.6)) + t(600, 800, bord(0.8) + blur(0.8) + alpha3(255)), PixPt())
  78.         points = Bezier1(num, dx + _TextLength[_i], dy + _Fs + 10, dx, dy + _Fs + 10)
  79.         for i in range(num):
  80.             ass_main(ASS_BUF, SubL(_start + i / 5, _start + i / 5 + 80, 0, Pix_Style), \
  81.                  pos(points[i][0], points[i][1]) + alpha1(HexToDec('77')) + alpha3(HexToDec('F4')) + bord(1) + blur(1) + color3('A54AFF') + color1('A54AFF') + \
  82.                  t(0, 200, bord(6) + blur(6)) + t(600, 800, bord(1) + blur(1)), PixPt())
  83.             ass_main(ASS_BUF, SubL(_start + i / 5, _start + i / 5 + 80, 1, Pix_Style), \
  84.                  pos(points[i][0], points[i][1]) + alpha1(HexToDec('77')) + alpha3(HexToDec('AA')) + bord(1) + blur(1) + color3('A54AFF') + color1('A54AFF') + \
  85.                  t(0, 100, bord(1.8) + blur(1.8)) + t(100, 200, bord(2.3) + blur(2.3)) +\
  86.                  t(200, 600, bord(1.8) + blur(1.8)) + t(600, 800, bord(1) + blur(1)), PixPt())
  87.             ass_main(ASS_BUF, SubL(_start + i / 5, _start + i / 5 + 80, 2, Pix_Style), \
  88.                  pos(points[i][0], points[i][1]) + alpha1(HexToDec('77')) + alpha3(HexToDec('AA')) + bord(0.7) + blur(0.7) + color3('FFFFFF') + color1('FFFFFF') + \
  89.                  t(0, 100, bord(1.6) + blur(1.6)) + t(100, 200, bord(2.1) + blur(2.1)) +\
  90.                  t(200, 600, bord(1.6) + blur(1.6)) + t(600, 800, bord(0.8) + blur(0.8) + alpha3(255)), PixPt())

  91.     ##### 将结果返回给tcax进行处理 #####

  92.     return (ASS_BUF, TCAS_BUF)
复制代码
预览见此帖: http://www.tcax.org/forum.php?mod=viewthread&tid=43

文件名为: [J]030_working_II_op.mkv


附完整特效工程 (包含所有需要的文件): http://www.tcax.org/forum.php?mod=viewthread&tid=117



作者: six    时间: 2012-2-24 23:31:14

本帖最后由 six 于 2012-2-25 00:20 编辑

好像删不掉~
作者: milkyjing    时间: 2012-2-25 00:25:09

six 发表于 2012-2-24 23:31
好像删不掉~

啥東西?
作者: six    时间: 2012-2-25 01:03:25

milkyjing 发表于 2012-2-25 00:25
啥東西?

自己发的帖子想问问题来着,接下来觉得没必要的想删掉,貌似操作不能。
作者: milkyjing    时间: 2012-2-25 14:38:30

six 发表于 2012-2-25 01:03
自己发的帖子想问问题来着,接下来觉得没必要的想删掉,貌似操作不能。 ...

恩, 只能编辑...





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