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

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

[完整特效] [youkaze]004_Natsume Yuujinchou ShiOP [复制链接]

Moderator

youkaze

Rank: 5Rank: 5

跳转到指定楼层
楼主
发表于 2012-2-23 22:10:17 |只看该作者 |倒序浏览
本帖最后由 七海の游风 于 2012-2-24 10:43 编辑
  1. from tcaxPy import *


  2. def tcaxPy_Init():

  3.     global _FontFileName
  4.     global _FaceID
  5.     global _Fs
  6.     global _Height
  7.     global Font
  8.     _FontFileName = GetVal(val_FontFileName)
  9.     _FaceID       = GetVal(val_FaceID)
  10.     _Fs           = GetVal(val_FontSize)
  11.     _Height       = GetVal(val_TextHeight)
  12.     Font = InitFont(_FontFileName, _FaceID, _Fs, GetVal(val_Spacing), GetVal(val_SpaceScale), 0xFFFFFF, 0, 0)   

  13. def tcaxPy_Fin():


  14.     FinFont(Font)

  15. def tcaxPy_Main(_i, _j, _n, _BT, _ET, _SK, _KT, _X, _Y, _A, _TXT,):
  16.     ASS_BUF = []


  17.     COLOR=[ "C9F2DC", "C9F2DC","C9F2DC","C9F2DC","C9F2DC","A5BDED","C9F2DC" ]
  18.     COLOR1=color1(COLOR[randint(0,6)])

  19.     dx = _X - int(_A  / 2 + 0.5)
  20.     dy = _Y - int(_Fs / 2 + 0.5)
  21.     mask = TextOutlineDraw(Font, _TXT, dx, dy)

  22.     global _H
  23.     _H = GetVal(val_FontSize)                 #字体大小
  24.     _7X = _X - int(_A / 2 + 0.5)              # 第i句卡拉OK歌词的j个字符的左上角X轴坐标
  25.     _7Y = _Y - int(_H / 2 + 0.5)             # 第i句卡拉OK歌词的j个字符的左上角Y轴坐标




  26.     if _i == 7 and _TXT == 'と':
  27.             sb1=""
  28.             for i in range (0,30):
  29.                 a = -0.15+0.01*i
  30.                 l = (pow((abs(a)/0.15),0.3)+0.5)*60*8
  31.                 sb1= sb1 + "m 0 0 l"+" "+str(int(l*cos(a)))+" "+str(int(l*sin(a)))+" 0 1 c "

  32.             sb2 = ""
  33.             for j in range (0,30):
  34.                 a = -0.15+0.01*j
  35.                 l = (pow((abs(a)/0.15),0.3)+0.5)*20*8
  36.                 sb2 = sb2 +"m 0 0 l"+" "+str(int(l*cos(a)))+" "+str(int(l*sin(a)))+" 0 1 c "

  37.             tStep = 2
  38.             for ptt0 in range(_BT+_SK - 10,_BT+_SK+_KT,tStep):
  39.                 startag = randint(0, 359)
  40.                 endag = startag + randint(0,9)/10 * randint(50, 100)
  41.                 ass_main(ASS_BUF, SubL(ptt0,ptt0 + 100), an(7)+pos(_X,_Y)+fad(300, 300)+alpha1(0)+be(1)+shad(0)+bord(0)+color1("A5BDED")+ frz(startag) + t1(0,1000,frz(endag)),"{\p4}"+sb1)
  42.                 ass_main(ASS_BUF, SubL(ptt0,ptt0 + 100), an(7)+pos(_X,_Y)+fad(300, 300)+alpha1(17)+be(1)+shad(0)+bord(0)+color1("FFFFFF")+ frz(startag) + t1(0,1000,frz(endag)),"{\p4}"+sb2)

  43.             
  44.     if _i > 3:
  45.         ass_main(ASS_BUF, SubL(_BT+_SK,_BT+_SK+_KT), pos(_X-0.3,_Y-0.2)+blur(2)+bord(2)+ alpha3(0)+ alpha1(255)+color3('FFFFFF')+fs(35)+t(fs(60))+fad(100,200), _TXT)



  46.         
  47.     ass_main(ASS_BUF, SubL(_BT+(_j+1)*5,_BT+_SK),pos(_X-0.3,_Y-0.2)+bord(1.5)+alpha1(180)+alpha3(100), _TXT)
  48.     ass_main(ASS_BUF, SubL(_BT+_SK,_BT+_SK+_KT),pos(_X-0.3,_Y-0.2)+bord(1.5)+alpha1(180)+alpha3(100)+color3('2E2E2E')+t(alpha3(70)+color3('000000')), _TXT)
  49.    
  50.     ass_main(ASS_BUF, SubL(_BT+_SK+_KT,_ET,10),pos(_X-0.3,_Y-0.2)+bord(1.5)+alpha1(0)+alpha3(0)+COLOR1, _TXT)


  51.     for i in range(0,_A,5):
  52.         for j in range(0,_H,5):
  53.             Xx = 40+randint(-20,20)
  54.             Yy = randint(-20,20)
  55.             CLIP1 = clip(_7X+i+Xx,_7Y+j+Yy,_7X+i+5+Xx,_7Y+j+5+Yy)+t(clip(_7X+i,_7Y+j,_7X+i+5,_7Y+j+5))
  56.             CLIP2 = clip(_7X+i,_7Y+j,_7X+i+5,_7Y+j+5)
  57.             MOVE = move(_X-0.3+Xx,_Y-0.2+Yy,_X-0.3,_Y-0.2)
  58.             POS = pos(_X-0.3,_Y-0.2)
  59.             ass_main(ASS_BUF, SubL(_BT-40-8+_j*5+randint(-10,10),_BT+(_j+1)*5),CLIP1+MOVE+bord(1.5)+alpha1(180)+alpha3(100)+fad(200,0), _TXT)
  60.             ass_main(ASS_BUF, SubL(_ET,_ET+10-8+_j*5+randint(-10,10)),CLIP2+POS+bord(1.5)+alpha1(0)+alpha3(00)+COLOR1+fad(0,50), _TXT)

  61.     if _i > -1 and _i < 4:
  62.         EFT = alpha1(255) + color3('FFFFFF') + alpha3(0) +bord(0) + t(bord(2) + blur(5))
  63.         ass_main(ASS_BUF, SubL(_BT+_SK-10,_BT+_SK+_KT/2),pos(_X-0.3,_Y-0.2) + EFT, _TXT)
  64.         EFT = alpha1(255) + color3('FFFFFF') + alpha3(0) +bord(2) + blur(5) + t(bord(0) + blur(0) + alpha3(255))
  65.         ass_main(ASS_BUF, SubL(_BT+_SK+_KT/2,_BT+_SK+_KT),pos(_X-0.3,_Y-0.2) + EFT, _TXT)

  66.    

  67.     if _i == 7 and _TXT == 'と':
  68.         for i in range(_BT+_SK,_BT+_SK+_KT,10):
  69.             ass_main(ASS_BUF, SubL(i,i+10), pos(_X-0.3,_Y-0.2)+blur(2)+shad(0)+bord(2)+ alpha3(0)+ alpha1(0)+color1("FFFFFF")+ color3('FFFFFF')+fad(10,50), _TXT)


  70.     ass_main(ASS_BUF, SubL(_BT+_SK-20, _BT+_SK+_KT),an(5) + pos(_X+randint(-15,15), _Y+randint(-15,15)) + COLOR1 + bord(0)+blur(4)+ alpha1(0)+fs(1)+t(0,_KT*10,fs(100)) + clip2(7, mask), "●")



  71.     return (ASS_BUF, None)
复制代码
115下载预览:http://115.com/file/c24q13q4
1

查看全部评分

Rank: 4

沙发
发表于 2022-2-2 11:04:41 |只看该作者
本帖最后由 Seekladoom 于 2022-2-2 20:32 编辑

先附上拆分简化后的附件,字幕脚本分辨率已经改成1920×1080了:
【夏目友人帐 第4季 OP 1080P化】TCAX Karaoke Effect 315-317.rar (153.34 KB, 下载次数: 1069)

原来可以这样弄啊,
单独闪耀的”“:
  1. if _i == 7 and _TXT == 'と':
复制代码
入场和退场特效的代码来源于如下链接:
[SAI]025_no6OP

旋转光线特效的来源:

[SAI]012_nurarihyonnomakoOP2


【旋转光线】夏目友人帐 第4季 OP.rar (0 Bytes, 下载次数: 1077)
旋转光线代码:
  1. from tcaxPy import *

  2. def tcaxPy_Init():
  3.     global _FontFileName
  4.     global _FaceID
  5.     global _Fs
  6.     global Font
  7.     _FontFileName = GetVal(val_FontFileName)
  8.     _FaceID       = GetVal(val_FaceID)
  9.     _Fs           = GetVal(val_FontSize)
  10.     Font = InitFont(_FontFileName, _FaceID, _Fs, GetVal(val_Spacing), GetVal(val_SpaceScale), 0xFFFFFF, 0, 0)
  11.    
  12. def tcaxPy_Main(_i, _j, _n, _BT, _ET, _SK, _KT, _X, _Y, _A, _TXT):
  13.     ASS_BUF = []

  14.     DY = _Y - 13
  15.     _7X = _X - int(_A / 2 + 0.5)              # 第i句卡拉OK歌词的j个字符的左上角X轴坐标
  16.     _7Y = DY - int(_Fs / 2 + 0.5)             # 第i句卡拉OK歌词的j个字符的左上角Y轴坐标
  17.     COLOR=[ 'C9F2DC', 'C9F2DC','C9F2DC','C9F2DC','C9F2DC','A5BDED','C9F2DC' ]
  18.     COLOR1=color1(COLOR[randint(0,6)])
  19.     dx = _X - int(_A  / 2 + 0.5)
  20.     dy = DY - int(_Fs / 2 + 0.5)
  21.     mask = TextOutlineDraw(Font, _TXT, dx, dy)

  22.     #全行通用区
  23.     ass_main(ASS_BUF, SubL(_BT+(_j+1)*5,_BT+_SK),pos(_X-0.3,DY-0.2)+bord(2.3)+alpha1(180)+alpha3(100), _TXT)
  24.     ass_main(ASS_BUF, SubL(_BT+_SK,_BT+_SK+_KT),pos(_X-0.3,DY-0.2)+bord(2.3)+alpha1(180)+alpha3(100)+color3('2E2E2E')+t(alpha3(70)+color3('000000')), _TXT)
  25.     ass_main(ASS_BUF, SubL(_BT+_SK+_KT,_ET,10),pos(_X-0.3,DY-0.2)+bord(2.3)+alpha1(0)+alpha3(0)+COLOR1, _TXT)
  26.     ass_main(ASS_BUF, SubL(_BT+_SK-20, _BT+_SK+_KT),an(5) + pos(_X+randint(-15,15), DY+randint(-15,15)) + COLOR1 + bord(0) + blur(4) + alpha1(0) + fs(1) + t(0,_KT*10,fs(100)) + clip2(7, mask), "●")

  27.     for i in range(0,_A,5):
  28.         for j in range(0,_Fs,5):
  29.             Xx = 40+randint(-20,20)
  30.             Yy = randint(-20,20)
  31.             CLIP1 = clip(_7X+i+Xx,_7Y+j+Yy,_7X+i+5+Xx,_7Y+j+5+Yy)+t(clip(_7X+i,_7Y+j,_7X+i+5,_7Y+j+5))
  32.             CLIP2 = clip(_7X+i,_7Y+j,_7X+i+5,_7Y+j+5)
  33.             MOVE = move(_X-0.3+Xx,DY-0.2+Yy,_X-0.3,DY-0.2)
  34.             POS = pos(_X-0.3,DY-0.2)
  35.             ass_main(ASS_BUF, SubL(_BT-40-8+_j*5+randint(-10,10),_BT+(_j+1)*5),CLIP1+MOVE+bord(2.3)+alpha1(180)+alpha3(100)+fad(200,0), _TXT)
  36.             ass_main(ASS_BUF, SubL(_ET,_ET+10-8+_j*5+randint(-10,10)),CLIP2+POS+bord(2.3)+alpha1(0)+alpha3(00)+COLOR1+fad(0,50), _TXT)

  37.     #白边透明文字变大
  38.     ass_main(ASS_BUF, SubL(_BT+_SK,_BT+_SK+_KT), pos(_X-0.3,DY-0.2)+blur(2)+bord(3)+ alpha3(0)+ alpha1(255)+color3('FFFFFF')+fs(53)+t(fs(90))+fad(100,200), _TXT)

  39.     #旋转光线
  40.     sb1=""
  41.     for i in range (0,30):
  42.         a = -0.15+0.01*i
  43.         l = (pow((abs(a)/0.15),0.3)+0.5)*60*8
  44.         sb1= sb1 + "m 0 0 l"+" "+str(int(l*cos(a)))+" "+str(int(l*sin(a)))+" 0 1 c "

  45.     sb2 = ""
  46.     for j in range (0,30):
  47.         a = -0.15+0.01*j
  48.         l = (pow((abs(a)/0.15),0.3)+0.5)*20*8
  49.         sb2 = sb2 +"m 0 0 l"+" "+str(int(l*cos(a)))+" "+str(int(l*sin(a)))+" 0 1 c "

  50.     tStep = 2
  51.     for ptt0 in range(_BT+_SK - 10,_BT+_SK+_KT,tStep):
  52.         startag = randint(0, 359)
  53.         endag = startag + randint(0,9)/10 * randint(50, 100)
  54.         ass_main(ASS_BUF, SubL(ptt0,ptt0 + 100), an(7)+pos(_X,DY)+fad(300, 300)+alpha1(0)+be(1)+shad(0)+bord(0)+color1("A5BDED")+ frz(startag) + t1(0,1000,frz(endag)),"{\p4}"+sb1)
  55.         ass_main(ASS_BUF, SubL(ptt0,ptt0 + 100), an(7)+pos(_X,DY)+fad(300, 300)+alpha1(17)+be(1)+shad(0)+bord(0)+color1("FFFFFF")+ frz(startag) + t1(0,1000,frz(endag)),"{\p4}"+sb2)

  56.     #频闪文字
  57.     for i in range(_BT+_SK,_BT+_SK+_KT,10):
  58.         ass_main(ASS_BUF, SubL(i,i+10), pos(_X-0.3,DY-0.2)+blur(2)+shad(0)+bord(3)+ alpha3(0)+ alpha1(0)+color1("FFFFFF")+ color3('FFFFFF')+fad(10,50), _TXT)

  59.     return (ASS_BUF, None)
复制代码

Rank: 4

板凳
发表于 2022-2-2 20:04:27 |只看该作者
本帖最后由 Seekladoom 于 2022-2-2 20:22 编辑

[youkaze]004 Natsume Yuujinchou Shi OP.py (4.28 KB, 下载次数: 1112)
整理了下楼主的代码排列顺序并添加注释,方便理解:
  1. from tcaxPy import *

  2. def tcaxPy_Init():
  3.     global _FontFileName
  4.     global _FaceID
  5.     global _Fs
  6.     global Font
  7.     _FontFileName = GetVal(val_FontFileName)
  8.     _FaceID       = GetVal(val_FaceID)
  9.     _Fs           = GetVal(val_FontSize)
  10.     Font = InitFont(_FontFileName, _FaceID, _Fs, GetVal(val_Spacing), GetVal(val_SpaceScale), 0xFFFFFF, 0, 0)   

  11. def tcaxPy_Fin():
  12.     FinFont(Font)

  13. def tcaxPy_Main(_i, _j, _n, _BT, _ET, _SK, _KT, _X, _Y, _A, _TXT,):
  14.     ASS_BUF = []

  15.     #一些变量
  16.     DY = _Y - 13
  17.     _7X = _X - int(_A / 2 + 0.5)              # 第i句卡拉OK歌词的j个字符的左上角X轴坐标
  18.     _7Y = DY - int(_Fs / 2 + 0.5)             # 第i句卡拉OK歌词的j个字符的左上角Y轴坐标
  19.     COLOR=[ "C9F2DC", "C9F2DC","C9F2DC","C9F2DC","C9F2DC","A5BDED","C9F2DC" ]
  20.     COLOR1=color1(COLOR[randint(0,6)])
  21.     dx = _X - int(_A  / 2 + 0.5)
  22.     dy = DY - int(_Fs / 2 + 0.5)
  23.     mask = TextOutlineDraw(Font, _TXT, dx, dy)

  24.     #----------全行通用区----------
  25.     #随机绿字、红字
  26.     ass_main(ASS_BUF, SubL(_BT+(_j+1)*5,_BT+_SK),pos(_X-0.3,DY-0.2)+bord(2.3)+alpha1(180)+alpha3(100), _TXT)
  27.     ass_main(ASS_BUF, SubL(_BT+_SK,_BT+_SK+_KT),pos(_X-0.3,DY-0.2)+bord(2.3)+alpha1(180)+alpha3(100)+color3('2E2E2E')+t(alpha3(70)+color3('000000')), _TXT)
  28.     ass_main(ASS_BUF, SubL(_BT+_SK+_KT,_ET,10),pos(_X-0.3,DY-0.2)+bord(2.3)+alpha1(0)+alpha3(0)+COLOR1, _TXT)
  29.     ass_main(ASS_BUF, SubL(_BT+_SK-20, _BT+_SK+_KT),an(5) + pos(_X+randint(-15,15), DY+randint(-15,15)) + COLOR1 + bord(0)+blur(4)+ alpha1(0)+fs(1)+t(0,_KT*10,fs(100)) + clip2(7, mask), "●")

  30.     #伪像素化文字切割
  31.     for i in range(0,_A,5):
  32.         for j in range(0,_Fs,5):
  33.             Xx = 40+randint(-20,20)
  34.             Yy = randint(-20,20)
  35.             CLIP1 = clip(_7X+i+Xx,_7Y+j+Yy,_7X+i+5+Xx,_7Y+j+5+Yy)+t(clip(_7X+i,_7Y+j,_7X+i+5,_7Y+j+5))
  36.             CLIP2 = clip(_7X+i,_7Y+j,_7X+i+5,_7Y+j+5)
  37.             MOVE = move(_X-0.3+Xx,DY-0.2+Yy,_X-0.3,DY-0.2)
  38.             POS = pos(_X-0.3,DY-0.2)
  39.             ass_main(ASS_BUF, SubL(_BT-40-8+_j*5+randint(-10,10),_BT+(_j+1)*5),CLIP1+MOVE+bord(2.3)+alpha1(180)+alpha3(100)+fad(200,0), _TXT)
  40.             ass_main(ASS_BUF, SubL(_ET,_ET+10-8+_j*5+randint(-10,10)),CLIP2+POS+bord(2.3)+alpha1(0)+alpha3(00)+COLOR1+fad(0,50), _TXT)

  41.     #----------分行判断区----------
  42.     #白边发光文字
  43.     if _i > -1 and _i < 4:
  44.         EFT = alpha1(255) + color3('FFFFFF') + alpha3(0) +bord(0) + t(bord(3) + blur(5))
  45.         ass_main(ASS_BUF, SubL(_BT+_SK-10,_BT+_SK+_KT/2),pos(_X-0.3,DY-0.2) + EFT, _TXT)
  46.         EFT = alpha1(255) + color3('FFFFFF') + alpha3(0) +bord(3) + blur(5) + t(bord(0) + blur(0) + alpha3(255))
  47.         ass_main(ASS_BUF, SubL(_BT+_SK+_KT/2,_BT+_SK+_KT),pos(_X-0.3,DY-0.2) + EFT, _TXT)

  48.     #白边透明文字变大
  49.     if _i > 3:
  50.         ass_main(ASS_BUF, SubL(_BT+_SK,_BT+_SK+_KT), pos(_X-0.3,DY-0.2)+blur(2)+bord(3)+ alpha3(0)+ alpha1(255)+color3('FFFFFF')+fs(53)+t(fs(90))+fad(100,200), _TXT)

  51.     #旋转光线
  52.     if _i == 7 and _TXT == 'と':
  53.         sb1=""
  54.         for i in range (0,30):
  55.             a = -0.15+0.01*i
  56.             l = (pow((abs(a)/0.15),0.3)+0.5)*60*8
  57.             sb1= sb1 + "m 0 0 l"+" "+str(int(l*cos(a)))+" "+str(int(l*sin(a)))+" 0 1 c "

  58.         sb2 = ""
  59.         for j in range (0,30):
  60.             a = -0.15+0.01*j
  61.             l = (pow((abs(a)/0.15),0.3)+0.5)*20*8
  62.             sb2 = sb2 +"m 0 0 l"+" "+str(int(l*cos(a)))+" "+str(int(l*sin(a)))+" 0 1 c "

  63.         tStep = 2
  64.         for ptt0 in range(_BT+_SK - 10,_BT+_SK+_KT,tStep):
  65.             startag = randint(0, 359)
  66.             endag = startag + randint(0,9)/10 * randint(50, 100)
  67.             ass_main(ASS_BUF, SubL(ptt0,ptt0 + 100), an(7)+pos(_X,DY)+fad(300, 300)+alpha1(0)+be(1)+shad(0)+bord(0)+color1("A5BDED")+ frz(startag) + t1(0,1000,frz(endag)),"{\p4}"+sb1)
  68.             ass_main(ASS_BUF, SubL(ptt0,ptt0 + 100), an(7)+pos(_X,DY)+fad(300, 300)+alpha1(17)+be(1)+shad(0)+bord(0)+color1("FFFFFF")+ frz(startag) + t1(0,1000,frz(endag)),"{\p4}"+sb2)

  69.     #频闪文字
  70.     if _i == 7 and _TXT == 'と':
  71.         for i in range(_BT+_SK,_BT+_SK+_KT,10):
  72.             ass_main(ASS_BUF, SubL(i,i+10), pos(_X-0.3,DY-0.2)+blur(2)+shad(0)+bord(3)+ alpha3(0)+ alpha1(0)+color1("FFFFFF")+ color3('FFFFFF')+fad(10,50), _TXT)

  73.     return (ASS_BUF, None)
复制代码


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

GitHub|TCAX 主页

GMT+8, 2024-4-23 22:04

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH