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

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

[完整特效] [youkaze]010_Natsuiro_Kiseki_ED [复制链接]

Moderator

youkaze

Rank: 5Rank: 5

跳转到指定楼层
楼主
发表于 2012-7-19 08:51:26 |只看该作者 |倒序浏览
本帖最后由 四月一日 君寻 于 2012-7-19 08:56 编辑
  1. from tcaxPy import *
  2. from gdiFont import *

  3. def tcaxPy_Init():

  4.     global _FontFileName
  5.     global _FaceID
  6.     global _Fs
  7.     global _TextWidth
  8.     global _TextHeight
  9.     global _TextLength
  10.     global _TextAdvDiff
  11.     global _ResolutionX
  12.     global _FD
  13.     global _Font
  14.     global _GdiFont


  15.     _FontFileName = GetVal(val_FontFileName)
  16.     _FaceID       = GetVal(val_FaceID)
  17.     _Fs           = GetVal(val_FontSize)
  18.     _TextHeight   = GetVal(val_TextHeight)
  19.     _TextWidth    = GetVal(val_TextWidth)
  20.     _TextLength   = GetVal(val_TextLength)
  21.     _TextAdvDiff  = GetVal(val_TextAdvanceDiff)
  22.     _ResolutionX  = GetVal(val_ResolutionX)
  23.     _FD           = 1000 / GetVal(val_FXFPS)
  24.     _GdiFont = gfInitFont(GetVal(val_FontFaceName), _Fs, GetVal(val_Spacing), GetVal(val_SpaceScale), 0, False)
  25.    


  26. def tcaxPy_Fin():
  27.     gfFinFont(_GdiFont)



  28. def tcaxPy_Main(_i, _j, _n, _BT, _ET, _SK, _KT, _x, _y, _a, _txt):
  29.     ASS_BUF = []
  30.     dx = _x - int(_a / 2 + 0.5)         # 一个固定操作, 将an5的坐标转换为an7
  31.     dy = _y - int(_Fs / 2 + 0.5)        # ASS特效默认采用an5坐标, TCAS特效则采用an7坐标
  32.     TUX2 = '{\p3}m 30 23 b 24 23 24 33 30 33 b 36 33 37 23 30 23 m 35 27 l 61 28 l 35 29 m 26 27 l 0 28 l 26 29 m 29 23 l 30 0 l 31 23 m 29 33 l 30 57 l 31 33 '
  33.     COLOR = ['0061FF','00CCFF','D5CFFE', '008100']
  34.     COLOR1=color1(choice(COLOR))
  35.     COLOR3=color3(choice(COLOR))
  36.    
  37.     B = RandCir2(_x, _y, 14, 15)
  38.    
  39.    
  40.    
  41.     if _j == 0:
  42.         global CLR
  43.         CLR = DivClr('0061FF', '008100', 4)
  44.         CLR.extend(DivClr('008100', '00CCFF', 5))
  45.         CLR.extend(DivClr('00CCFF', 'D5CFFE', _n - 4 - 5))
  46.         
  47.         
  48.         global CLR2
  49.         CLR2 = DivClr('0061FF', 'D5CFFE', _n)
  50.         
  51.         global CLR3
  52.         CLR3 = DivClr('008100', '00CCFF', _n)
  53.         
  54.     mask = gfGetOutline(_GdiFont, _txt, dx, dy)
  55.    


  56.     if _i == 0:
  57.         ass_main(ASS_BUF, SubL(_BT-20+_j*5,_BT+(_j+1)*5,1),an(5)+pos(_x, _y)+fad(200,0)+bord(2)+blur(2)+color3('0061FF'), _txt)
  58.         ass_main(ASS_BUF, SubL(_BT+(_j+1)*5,_BT+_SK,1),an(5)+pos(_x, _y)+bord(2)+blur(2)+color3('0061FF'), _txt)
  59.         ass_main(ASS_BUF, SubL(_BT+_SK,_BT+_SK+_KT,1),an(5)+pos(_x, _y)+bord(2)+blur(2)+color3('0061FF')+t(color3('FFFFFF')), _txt)
  60.         ass_main(ASS_BUF, SubL(_BT+_SK+_KT,_ET,1),an(5)+pos(_x, _y)+bord(2)+blur(2)+color3('FFFFFF'), _txt)
  61.         ass_main(ASS_BUF, SubL(_ET,_ET+10+_j*5,1),an(5)+pos(_x, _y)+fad(0,200)+bord(2)+blur(2)+color3('FFFFFF'), _txt)
  62.         
  63.         
  64.     elif _i == 1:
  65.         ass_main(ASS_BUF, SubL(_BT-20+_j*5,_BT+(_j+1)*5,1),an(5)+pos(_x, _y)+fad(200,0)+bord(2)+blur(2)+color3('008100'), _txt)
  66.         ass_main(ASS_BUF, SubL(_BT+(_j+1)*5,_BT+_SK,1),an(5)+pos(_x, _y)+bord(2)+blur(2)+color3('008100'), _txt)
  67.         ass_main(ASS_BUF, SubL(_BT+_SK,_BT+_SK+_KT,1),an(5)+pos(_x, _y)+bord(2)+blur(2)+color3('008100')+t(color3('FFFFFF')), _txt)
  68.         ass_main(ASS_BUF, SubL(_BT+_SK+_KT,_ET,1),an(5)+pos(_x, _y)+bord(2)+blur(2)+color3('FFFFFF'), _txt)
  69.         ass_main(ASS_BUF, SubL(_ET,_ET+10+_j*5,1),an(5)+pos(_x, _y)+fad(0,200)+bord(2)+blur(2)+color3('FFFFFF'), _txt)
  70.         
  71.     elif _i == 2:
  72.         ass_main(ASS_BUF, SubL(_BT-20+_j*5,_BT+(_j+1)*5,1),an(5)+pos(_x, _y)+fad(200,0)+bord(2)+blur(2)+color3('00CCFF'), _txt)
  73.         ass_main(ASS_BUF, SubL(_BT+(_j+1)*5,_BT+_SK,1),an(5)+pos(_x, _y)+bord(2)+blur(2)+color3('00CCFF'), _txt)
  74.         ass_main(ASS_BUF, SubL(_BT+_SK,_BT+_SK+_KT,1),an(5)+pos(_x, _y)+bord(2)+blur(2)+color3('00CCFF')+t(color3('FFFFFF')), _txt)
  75.         ass_main(ASS_BUF, SubL(_BT+_SK+_KT,_ET,1),an(5)+pos(_x, _y)+bord(2)+blur(2)+color3('FFFFFF'), _txt)
  76.         ass_main(ASS_BUF, SubL(_ET,_ET+10+_j*5,1),an(5)+pos(_x, _y)+fad(0,200)+bord(2)+blur(2)+color3('FFFFFF'), _txt)
  77.         
  78.     elif _i == 3:
  79.         ass_main(ASS_BUF, SubL(_BT-20+_j*5,_BT+(_j+1)*5,1),an(5)+pos(_x, _y)+fad(200,0)+bord(2)+blur(2)+color3('A9A9FF'), _txt)
  80.         ass_main(ASS_BUF, SubL(_BT+(_j+1)*5,_BT+_SK,1),an(5)+pos(_x, _y)+bord(2)+blur(2)+color3('A9A9FF'), _txt)
  81.         ass_main(ASS_BUF, SubL(_BT+_SK,_BT+_SK+_KT,1),an(5)+pos(_x, _y)+bord(2)+blur(2)+color3('A9A9FF')+t(color3('FFFFFF')), _txt)
  82.         ass_main(ASS_BUF, SubL(_BT+_SK+_KT,_ET,1),an(5)+pos(_x, _y)+bord(2)+blur(2)+color3('FFFFFF'), _txt)
  83.         ass_main(ASS_BUF, SubL(_ET,_ET+10+_j*5,1),an(5)+pos(_x, _y)+fad(0,200)+bord(2)+blur(2)+color3('FFFFFF'), _txt)
  84.         
  85.         
  86.     if _i > -1 and _i < 4:
  87.         ass_main(ASS_BUF, SubL(_BT+_SK-10,_ET,3),an(5)+pos(B[0],B[1])+color1('FF8000')+bord(0)+blur(6)+alpha1(0)+fs(1)+t(0,_KT*10,fs(60))+clip2(4, mask), "●")
  88.         ass_main(ASS_BUF, SubL(_ET,_ET+20+_j*5,3),an(5)+pos(B[0],B[1])+color1('FF8000')+bord(0)+blur(6)+alpha1(0)+fs(60)+fad(0,200)+clip2(4, mask), "●")
  89.         
  90.     elif _i > 3 and _i < 9:
  91.         ass_main(ASS_BUF, SubL(_BT-20+_j*5,_BT+(_j+1)*5,1),an(5)+pos(_x, _y)+fad(200,0)+bord(2)+blur(2)+color3(CLR[_j]), _txt)
  92.         ass_main(ASS_BUF, SubL(_BT+(_j+1)*5,_BT+_SK,1),an(5)+pos(_x, _y)+bord(2)+blur(2)+color3(CLR[_j]), _txt)
  93.         ass_main(ASS_BUF, SubL(_BT+_SK,_BT+_SK+_KT,1),an(5)+pos(_x, _y)+bord(2)+blur(2)+color3(CLR[_j])+t(color3('FFFFFF')), _txt)
  94.         ass_main(ASS_BUF, SubL(_BT+_SK+_KT,_ET,1),an(5)+pos(_x, _y)+bord(2)+blur(2)+color3('FFFFFF'), _txt)
  95.         ass_main(ASS_BUF, SubL(_ET,_ET+10+_j*5,1),an(5)+pos(_x, _y)+fad(0,200)+bord(2)+blur(2)+color3('FFFFFF'), _txt)
  96.         
  97.     elif _i > 8:
  98.         if _j == 0:
  99.             global COO
  100.             COO = DivClr('0061FF', '008100', 2)
  101.             COO.extend(DivClr('008100', '00CCFF', 3))
  102.             COO.extend(DivClr('00CCFF', 'D5CFFE', _n - 2 - 3))
  103.             
  104.         ass_main(ASS_BUF, SubL(_BT-20+_j*5,_BT+(_j+1)*5,1),an(5)+pos(_x, _y)+fad(200,0)+bord(2)+blur(2)+color3(COO[_j]), _txt)
  105.         ass_main(ASS_BUF, SubL(_BT+(_j+1)*5,_BT+_SK,1),an(5)+pos(_x, _y)+bord(2)+blur(2)+color3(COO[_j]), _txt)
  106.         ass_main(ASS_BUF, SubL(_BT+_SK,_BT+_SK+_KT,1),an(5)+pos(_x, _y)+bord(2)+blur(2)+color3(COO[_j])+t(color3('FFFFFF')), _txt)
  107.         ass_main(ASS_BUF, SubL(_BT+_SK+_KT,_ET,1),an(5)+pos(_x, _y)+bord(2)+blur(2)+color3('FFFFFF'), _txt)
  108.         ass_main(ASS_BUF, SubL(_ET,_ET+10+_j*5,1),an(5)+pos(_x, _y)+fad(0,200)+bord(2)+blur(2)+color3('FFFFFF'), _txt)
  109.         
  110.     if _i >3:
  111.         ass_main(ASS_BUF, SubL(_BT+_SK-10,_ET,3),an(5)+pos(B[0],B[1])+color1('FF8000')+bord(0)+blur(6)+alpha1(0)+fs(1)+t(0,_KT*10,fs(60))+clip2(4, mask), "●")
  112.         ass_main(ASS_BUF, SubL(_ET,_ET+20+_j*5,3),an(5)+pos(B[0],B[1])+color1('FF8000')+bord(0)+blur(6)+alpha1(0)+fs(60)+t(fs(1))+fad(0,200)+clip2(4, mask), "●")
  113.         
  114.     if _i > -1:
  115.         C = ['0061FF','00CCFF','D5CFFE', '008100']
  116.         T = -_n*3
  117.         
  118.         for i in range(int(_BT+_SK-30),int(_ET-_j*(T)/_n),30):
  119.             for j in range (int(_a/30)):
  120.                 X = [_x+randint(int(-_a/2),int(_a/2)),_y+randint(-20,20)]
  121.                 R = RandCir2(_x, _y, 25, 27)
  122.                 D = sqrt((X[0]-R[0])**2+(X[1]-R[1])**2)
  123.                 CO = choice(C)
  124.                 F =randint(60,110)
  125.                 FS = fsc(F,F)
  126.                 angel =randint(-360,360)
  127.                 for k in range(0,130,40):
  128.                     ass_main(ASS_BUF, SubL( i+k, i+k + 50,1),fad(120,120)+ mov(X[0]+(X[0]-R[0])/130*k,X[1]+(X[1]-R[1])/130*k,X[0]+(X[0]-R[0])/130*(k+50),X[1]+(X[1]-R[1])/130*(k+50))+color1('FFFFFF')+color3(CO)+alpha(20)+bord(1.2)+blur(2)+frz(angel)+FS, '{\\p3}m 20 0  b  20 10  30 20  40 20  b  30 20  20 30  20 40  b  20 30  10 20  0 20  b  10 20  20 10  20 0')   

  129.             
  130.             
  131.             
  132.     return (ASS_BUF, None)
复制代码

算是一个GDIfont的例子吧 这次是mask的 代码挺简单 最近没撸内置撸不出- -没东西放上来(逃

预览:
感谢 哔哔姐 上传

2

查看全部评分

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

沙发
发表于 2012-7-19 11:04:17 |只看该作者
顶一下,久违的新代码啊

Rank: 6Rank: 6

板凳
发表于 2012-7-19 19:27:36 |只看该作者

Rank: 4

地板
发表于 2012-7-20 21:11:07 |只看该作者
强力支持大大发布 特来围观支持我喜欢的类型特效谢谢了 赶快抱走

Rank: 4

5#
发表于 2012-7-21 23:21:00 |只看该作者
顶~~~~师傅威武。- -

Rank: 4

6#
发表于 2012-7-24 13:31:54 |只看该作者
顶起

Rank: 5Rank: 5

7#
发表于 2012-8-25 21:52:40 |只看该作者
真喜欢这个效果~~给人一种温馨的感觉呢!

Rank: 4

8#
发表于 2013-3-10 14:43:25 |只看该作者


请问这是什么情况?

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

9#
发表于 2013-3-10 14:56:47 |只看该作者
渡辺麻友 发表于 2013-3-10 14:43
请问这是什么情况?


你保存py文件的时候, 是不是有提示什么东西? 记得选择utf-8编码保存.

记事本默认使用的是ANSI编码, 有些字符保存不了的.

Rank: 4

10#
发表于 2013-3-10 15:04:06 |只看该作者
milkyjing 发表于 2013-3-10 14:56
你保存py文件的时候, 是不是有提示什么东西? 记得选择utf-8编码保存.

记事本默认使用的是ANSI编码, 有些 ...

就是utf-8编码保存的,真纠结

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

11#
发表于 2013-3-10 16:07:57 |只看该作者
渡辺麻友 发表于 2013-3-10 15:04
就是utf-8编码保存的,真纠结

打开文件, 看一下第98行, 确定和上面贴出来的一样么

Rank: 4

12#
发表于 2013-3-10 18:42:44 |只看该作者
milkyjing 发表于 2013-3-10 16:07
打开文件, 看一下第98行, 确定和上面贴出来的一样么

parse前是一样的,parse之后就变了,这是怎么回事?汗...

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

13#
发表于 2013-3-10 19:28:37 |只看该作者
渡辺麻友 发表于 2013-3-10 18:42
parse前是一样的,parse之后就变了,这是怎么回事?汗...


我这边刚试过了, 没有问题.

换个文本编辑工具试试,

http://www.tcax.org/forum.php?mod=viewthread&tid=63

Rank: 4

14#
发表于 2013-3-10 21:23:38 |只看该作者
milkyjing 发表于 2013-3-10 19:28
我这边刚试过了, 没有问题.

换个文本编辑工具试试,

试了几种,编辑完是没问题的,parse之后就变了,我再试试咯

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

15#
发表于 2013-3-11 22:13:52 |只看该作者
渡辺麻友 发表于 2013-3-10 21:23
试了几种,编辑完是没问题的,parse之后就变了,我再试试咯


要不试试这个..   

[youkaze]010_Natsuiro_Kiseki_ED.py

7.38 KB, 下载次数: 3389

Rank: 4

16#
发表于 2013-3-11 23:37:46 |只看该作者
milkyjing 发表于 2013-3-11 22:13
要不试试这个..

已经解决了,parse之后我再去把py文件改过就成功了

Rank: 4

17#
发表于 2022-2-3 23:42:30 |只看该作者
本帖最后由 Seekladoom 于 2022-2-3 23:44 编辑
渡辺麻友 发表于 2013-3-11 23:37
已经解决了,parse之后我再去把py文件改过就成功了
应该是UTF-8编码的问题,换成UTF-8-BOM编码就没问题了。

另外附上简化拆分脚本:
【夏色奇迹 ED 简化拆分】TCAX Karaoke Effect 332-333.rar (656.98 KB, 下载次数: 3012)

您需要登录后才可以回帖 登录 | 新人加入

GitHub|TCAX 主页

GMT+8, 2024-11-27 11:18

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH