最近复习了一下TCAX的用法,用夏天前辈分享的代码([附加效果] ext_fluf002)改了下配合彗星体中日匹配做了罪恶王冠OP2的特效,太久没人做动画这块的科幻风歌词特效了。。。(:з」∠)

另外这六边形代码我暂时还没找到精简的方法,做两段效果时复制粘贴了一次,不知道有没有方法只留一段六边形代码然后跨行给多个ass_main行使用(找到方法了我还会再改的)。。。(:з」∠)

内附ass、py、tcc文件以及字体文件的下载链接:
github:[Seek] 罪恶王冠 Guilty Crown OP2.rar

在线预览:
【歌词特效】罪恶王冠 OP2

注:以后我自己写的中日双语特效,tcc文件中的字体名称一律使用Sarasa Gothic J Semibold(更纱黑体日文版的Semibold字重),这个字体的字数足够多(换成微软雅黑、黑体、楷体、平方等字数在27000以上的字体也行,没有的话就把字体装上。),因此可以确保TCAX运行时不会因为TCC中的日文或中文字体缺字而无法正常运行,具体的中日字体名称修改可以放到py脚本中去修改即可,就像下面这样:

fn('FOT-Comet Std B')
fn('MZhiHei PRC UltraBold')

如此一来也算是让TCAX在字体上挣脱了必须在TCC文件中修改字体名称且只能用英文名称的限制了。

单段特效:红色文字和六边形

from tcaxPy import *def tcaxPy_Init():global _FD                              # frame duration, in millisecondglobal _Blur, _Bordglobal _FS_FD = 1000 / GetVal(val_FXFPS)_Blur = GetVal(val_Blur)_Bord = GetVal(val_Bord)_FS = GetVal(val_FontSize)def tcaxPy_Fin():passdef tcaxPy_Main(_i, _j, _n, _start, _end, _elapk, _k, _x, _y, _a, _txt):ASS_BUF = []        # used for saving ASS FX lines# ----------OPJP----------if _i < 12:ass_main(ASS_BUF, SubL(_start+_j*3-20,_start+_elapk,1,'OPJP'), pos(_x,_y)+color1('1F20EF')+color3('FFFFFF')+b(1)+blur(4)+fad(200,0)+fn('FOT-Comet Std B'), _txt)                                 #入场特效 - start2sylass_main(ASS_BUF, SubL(_start+_elapk,_start+_elapk+_k,1,'OPJP'), pos(_x,_y)+color1('1F20EF')+color3('FFFFFF')+t(color1('FFFFFF')+color3('1F20EF'))+b(1)+blur(4)+fn('FOT-Comet Std B'), _txt)     #卡拉OK特效 - sylass_main(ASS_BUF, SubL(_start+_elapk+_k,_end-(_n-_j-1)*3+20,1,'OPJP'), pos(_x,_y)+color1('FFFFFF')+color3('1F20EF')+b(1)+blur(4)+fad(0,200)+fn('FOT-Comet Std B'), _txt)                         #退场特效 - syl2endhexagon = 'm -6 -10 l 6 -10 l 12 0 l 6 10 l -6 10 l -12 0 l -6 -10 'clist = []able = []f = 10zoom1 = 45zoom2 = 52initx = int(GetVal(5) // 2 - _n / 2 * _FS - 55)lastx = int(GetVal(5) // 2 + _n / 2 * _FS + 55)inity = int(_y - _FS)for x in range(initx - f * 1 , lastx + _a + f * 2, f * 2):for y in range(inity - f * 0, _y + _FS + f * 1, f):clist.append((x, y))for x in range(initx - f * 2 , lastx + _a + f * 1, f * 2):for y in range(inity - f // 2 - f * 0, _y + _FS - f // 2 + f * 1, f):clist.append((x, y))for (px, py) in clist:if (px - _x) ** 2 + (py - _y) ** 2 <= 30 ** 2:able.append((px, py))count = int(_k * 1.6)for i in range(count):pt = choice(able)px = pt[0]py = pt[1]st = randint(_start + _elapk - 10, _start + _elapk + _k)et = st + randint(55, 75)if st >= _start + _elapk + _k - 5:et = st + randint(70, 100)dur = et - st - 10transp = 50ass_main(ASS_BUF, SubL(st, et, 0, 'OPJP'), pos(px, py+10) + color3('FFFFFF') + color1('1F20EF') + alpha1(255) + alpha3(transp) + bord(1) + fad(100, dur * 10) + fsc(zoom1, zoom1), r'{\\p1}'+ hexagon +'{\\p0}')ass_main(ASS_BUF, SubL(st, et, 0, 'OPJP'), pos(px, py+10) + color3('FFFFFF') + color1('1F20EF') + alpha1(100) + alpha3(transp) + bord(1) + fad(100, dur * 10) + fsc(zoom2, zoom2), r'{\\p1}'+ hexagon +'{\\p0}')# ----------OPCN----------if _i > 11:ass_main(ASS_BUF, SubL(_start+_j*3-20,_end-(_n-_j-1)*3+20,1,'OPCN'), pos(_x,_y+993)+color1('FFFFFF')+color3('1F20EF')+blur(4)+fad(200,200)+fax(-0.11)+fn('MZhiHei PRC UltraBold')+fs(66)+fscx(85)+'\\fsp11', _txt)  #整体特效 - linereturn (ASS_BUF, None)
复制代码

两段特效:红色文字和六边形+蓝色文字和六边形

写法1:

from tcaxPy import *def tcaxPy_Init():global _FD                              # frame duration, in millisecondglobal _Blur, _Bordglobal _FS_FD = 1000 / GetVal(val_FXFPS)_Blur = GetVal(val_Blur)_Bord = GetVal(val_Bord)_FS = GetVal(val_FontSize)def tcaxPy_Fin():passdef tcaxPy_Main(_i, _j, _n, _start, _end, _elapk, _k, _x, _y, _a, _txt):ASS_BUF = []        # used for saving ASS FX lines# ----------OPJP----------if _i < 6:ass_main(ASS_BUF, SubL(_start+_j*3-20,_start+_elapk,1,'OPJP'), pos(_x,_y)+color1('1F20EF')+color3('FFFFFF')+b(1)+blur(4)+fad(200,0)+fn('FOT-Comet Std B'), _txt)                                 #入场特效 - start2sylass_main(ASS_BUF, SubL(_start+_elapk,_start+_elapk+_k,1,'OPJP'), pos(_x,_y)+color1('1F20EF')+color3('FFFFFF')+t(color1('FFFFFF')+color3('1F20EF'))+b(1)+blur(4)+fn('FOT-Comet Std B'), _txt)     #卡拉OK特效 - sylass_main(ASS_BUF, SubL(_start+_elapk+_k,_end-(_n-_j-1)*3+20,1,'OPJP'), pos(_x,_y)+color1('FFFFFF')+color3('1F20EF')+b(1)+blur(4)+fad(0,200)+fn('FOT-Comet Std B'), _txt)                         #退场特效 - syl2endhexagon = 'm -6 -10 l 6 -10 l 12 0 l 6 10 l -6 10 l -12 0 l -6 -10 'clist = []able = []f = 10zoom1 = 45zoom2 = 52initx = int(GetVal(5) // 2 - _n / 2 * _FS - 55)lastx = int(GetVal(5) // 2 + _n / 2 * _FS + 55)inity = int(_y - _FS)for x in range(initx - f * 1 , lastx + _a + f * 2, f * 2):for y in range(inity - f * 0, _y + _FS + f * 1, f):clist.append((x, y))for x in range(initx - f * 2 , lastx + _a + f * 1, f * 2):for y in range(inity - f // 2 - f * 0, _y + _FS - f // 2 + f * 1, f):clist.append((x, y))for (px, py) in clist:if (px - _x) ** 2 + (py - _y) ** 2 <= 30 ** 2:able.append((px, py))count = int(_k * 1.6)for i in range(count):pt = choice(able)px = pt[0]py = pt[1]st = randint(_start + _elapk - 10, _start + _elapk + _k)et = st + randint(55, 75)if st >= _start + _elapk + _k - 5:et = st + randint(70, 100)dur = et - st - 10transp = 50ass_main(ASS_BUF, SubL(st, et, 0, 'OPJP'), pos(px, py+10) + color3('FFFFFF') + color1('1F20EF') + alpha1(255) + alpha3(transp) + bord(1) + fad(100, dur * 10) + fsc(zoom1, zoom1), r'{\\p1}'+ hexagon +'{\\p0}')ass_main(ASS_BUF, SubL(st, et, 0, 'OPJP'), pos(px, py+10) + color3('FFFFFF') + color1('1F20EF') + alpha1(100) + alpha3(transp) + bord(1) + fad(100, dur * 10) + fsc(zoom2, zoom2), r'{\\p1}'+ hexagon +'{\\p0}')# ----------OPJP2----------if _i > 5 and _i < 12:ass_main(ASS_BUF, SubL(_start+_j*3-20,_start+_elapk,1,'OPJP2'), pos(_x,_y)+color1('FFBC11')+color3('FFFFFF')+b(1)+blur(4)+fad(200,0)+fn('FOT-Comet Std B'), _txt)                                 #入场特效 - start2sylass_main(ASS_BUF, SubL(_start+_elapk,_start+_elapk+_k,1,'OPJP2'), pos(_x,_y)+color1('FFBC11')+color3('FFFFFF')+t(color1('FFFFFF')+color3('FFBC11'))+b(1)+blur(4)+fn('FOT-Comet Std B'), _txt)     #卡拉OK特效 - sylass_main(ASS_BUF, SubL(_start+_elapk+_k,_end-(_n-_j-1)*3+20,1,'OPJP2'), pos(_x,_y)+color1('FFFFFF')+color3('FFBC11')+b(1)+blur(4)+fad(0,200)+fn('FOT-Comet Std B'), _txt)   hexagon = 'm -6 -10 l 6 -10 l 12 0 l 6 10 l -6 10 l -12 0 l -6 -10 'clist = []able = []f = 10zoom1 = 45zoom2 = 52initx = int(GetVal(5) // 2 - _n / 2 * _FS - 55)lastx = int(GetVal(5) // 2 + _n / 2 * _FS + 55)inity = int(_y - _FS)for x in range(initx - f * 1 , lastx + _a + f * 2, f * 2):for y in range(inity - f * 0, _y + _FS + f * 1, f):clist.append((x, y))for x in range(initx - f * 2 , lastx + _a + f * 1, f * 2):for y in range(inity - f // 2 - f * 0, _y + _FS - f // 2 + f * 1, f):clist.append((x, y))for (px, py) in clist:if (px - _x) ** 2 + (py - _y) ** 2 <= 30 ** 2:able.append((px, py))count = int(_k * 1.6)for i in range(count):pt = choice(able)px = pt[0]py = pt[1]st = randint(_start + _elapk - 10, _start + _elapk + _k)et = st + randint(55, 75)if st >= _start + _elapk + _k - 5:et = st + randint(70, 100)dur = et - st - 10transp = 50ass_main(ASS_BUF, SubL(st, et, 0, 'OPJP2'), pos(px, py+10) + color3('FFFFFF') + color1('FFBC11') + alpha1(255) + alpha3(transp) + bord(1) + fad(100, dur * 10) + fsc(zoom1, zoom1), r'{\\p1}'+ hexagon +'{\\p0}')ass_main(ASS_BUF, SubL(st, et, 0, 'OPJP2'), pos(px, py+10) + color3('FFFFFF') + color1('FFBC11') + alpha1(100) + alpha3(transp) + bord(1) + fad(100, dur * 10) + fsc(zoom2, zoom2), r'{\\p1}'+ hexagon +'{\\p0}')# ----------OPCN----------if _i > 11 and _i < 18:ass_main(ASS_BUF, SubL(_start+_j*3-20,_end-(_n-_j-1)*3+20,1,'OPCN'), pos(_x,_y+993)+color1('FFFFFF')+color3('1F20EF')+blur(4)+fad(200,200)+fax(-0.11)+fn('MZhiHei PRC UltraBold')+fs(66)+fscx(85)+'\\fsp11', _txt)  #整体特效 - line# ----------OPCN2----------if _i > 17:ass_main(ASS_BUF, SubL(_start+_j*3-20,_end-(_n-_j-1)*3+20,1,'OPCN2'), pos(_x,_y+993)+color1('FFFFFF')+color3('FFBC11')+blur(4)+fad(200,200)+fax(-0.11)+fn('MZhiHei PRC UltraBold')+fs(66)+fscx(85)+'\\fsp11', _txt)  #整体特效 - linereturn (ASS_BUF, None)

写法2:为节省代码行数,把绘图代码的if代码块写进for循环

from tcaxPy import *def tcaxPy_Init():global _FD                              # frame duration, in millisecondglobal _Blur, _Bordglobal _FS_FD = 1000 / GetVal(val_FXFPS)_Blur = GetVal(val_Blur)_Bord = GetVal(val_Bord)_FS = GetVal(val_FontSize)def tcaxPy_Fin():passdef tcaxPy_Main(_i, _j, _n, _start, _end, _elapk, _k, _x, _y, _a, _txt):ASS_BUF = []        # used for saving ASS FX lines# ----------tcax line----------hexagon = 'm -6 -10 l 6 -10 l 12 0 l 6 10 l -6 10 l -12 0 l -6 -10 'hlist = []able = []f = 10zoom1 = 45zoom2 = 52initx = int(GetVal(5) // 2 - _n / 2 * _FS - 55)lastx = int(GetVal(5) // 2 + _n / 2 * _FS + 55)inity = int(_y - _FS)for x in range(initx - f * 1 , lastx + _a + f * 2, f * 2):for y in range(inity - f * 0, _y + _FS + f * 1, f):hlist.append((x, y))for x in range(initx - f * 2 , lastx + _a + f * 1, f * 2):for y in range(inity - f // 2 - f * 0, _y + _FS - f // 2 + f * 1, f):hlist.append((x, y))for (px, py) in hlist:if (px - _x) ** 2 + (py - _y) ** 2 <= 30 ** 2:able.append((px, py))count = int(_k * 1.6)for i in range(count):pt = choice(able)px = pt[0]py = pt[1]st = randint(_start + _elapk - 10, _start + _elapk + _k)et = st + randint(55, 75)if st >= _start + _elapk + _k - 5:et = st + randint(70, 100)dur = et - st - 10transp = 50# ----------绘图代码行----------if _i < 6:#OPJPass_main(ASS_BUF, SubL(st, et, 0, 'OPJP'), pos(px, py+10) + color3('FFFFFF') + color1('1F20EF') + alpha1(255) + alpha3(transp) + bord(1) + fad(100, dur * 10) + fsc(zoom1, zoom1) + p(1), hexagon)ass_main(ASS_BUF, SubL(st, et, 0, 'OPJP'), pos(px, py+10) + color3('FFFFFF') + color1('1F20EF') + alpha1(100) + alpha3(transp) + bord(1) + fad(100, dur * 10) + fsc(zoom2, zoom2) + p(1), hexagon)if _i > 5 and _i < 12:#OPJP2ass_main(ASS_BUF, SubL(st, et, 0, 'OPJP2'), pos(px, py+10) + color3('FFFFFF') + color1('FFBC11') + alpha1(255) + alpha3(transp) + bord(1) + fad(100, dur * 10) + fsc(zoom1, zoom1) + p(1), hexagon)ass_main(ASS_BUF, SubL(st, et, 0, 'OPJP2'), pos(px, py+10) + color3('FFFFFF') + color1('FFBC11') + alpha1(100) + alpha3(transp) + bord(1) + fad(100, dur * 10) + fsc(zoom2, zoom2) + p(1), hexagon)# ----------文本行----------if _i < 6:#OPJPass_main(ASS_BUF, SubL(_start+_j*3-20,_start+_elapk,1,'OPJP'), pos(_x,_y)+color1('1F20EF')+color3('FFFFFF')+b(1)+blur(4)+fad(200,0)+fn('FOT-Comet Std B'), _txt)                                 #入场特效 - start2sylass_main(ASS_BUF, SubL(_start+_elapk,_start+_elapk+_k,1,'OPJP'), pos(_x,_y)+color1('1F20EF')+color3('FFFFFF')+t(color1('FFFFFF')+color3('1F20EF'))+b(1)+blur(4)+fn('FOT-Comet Std B'), _txt)     #卡拉OK特效 - sylass_main(ASS_BUF, SubL(_start+_elapk+_k,_end-(_n-_j-1)*3+20,1,'OPJP'), pos(_x,_y)+color1('FFFFFF')+color3('1F20EF')+b(1)+blur(4)+fad(0,200)+fn('FOT-Comet Std B'), _txt)                         #退场特效 - syl2endif _i > 5 and _i < 12:#OPJP2ass_main(ASS_BUF, SubL(_start+_j*3-20,_start+_elapk,1,'OPJP2'), pos(_x,_y)+color1('FFBC11')+color3('FFFFFF')+b(1)+blur(4)+fad(200,0)+fn('FOT-Comet Std B'), _txt)                                 #入场特效 - start2sylass_main(ASS_BUF, SubL(_start+_elapk,_start+_elapk+_k,1,'OPJP2'), pos(_x,_y)+color1('FFBC11')+color3('FFFFFF')+t(color1('FFFFFF')+color3('FFBC11'))+b(1)+blur(4)+fn('FOT-Comet Std B'), _txt)     #卡拉OK特效 - sylass_main(ASS_BUF, SubL(_start+_elapk+_k,_end-(_n-_j-1)*3+20,1,'OPJP2'), pos(_x,_y)+color1('FFFFFF')+color3('FFBC11')+b(1)+blur(4)+fad(0,200)+fn('FOT-Comet Std B'), _txt)                         #退场特效 - syl2endif _i > 11 and _i < 18:#OPCNass_main(ASS_BUF, SubL(_start+_j*3-20,_end-(_n-_j-1)*3+20,1,'OPCN'), pos(_x,_y+993)+color1('FFFFFF')+color3('1F20EF')+blur(4)+fad(200,200)+fax(-0.11)+fn('MZhiHei PRC UltraBold')+fs(66)+fscx(85)+'\\fsp11', _txt)  #整体特效 - lineif _i > 17:#OPCN2ass_main(ASS_BUF, SubL(_start+_j*3-20,_end-(_n-_j-1)*3+20,1,'OPCN2'), pos(_x,_y+993)+color1('FFFFFF')+color3('FFBC11')+blur(4)+fad(200,200)+fax(-0.11)+fn('MZhiHei PRC UltraBold')+fs(66)+fscx(85)+'\\fsp11', _txt)  #整体特效 - linereturn (ASS_BUF, None)

【TCAX模板】罪恶王冠 Guilty Crown OP2相关推荐

  1. 关于Guilty Crown(罪恶王冠) 的一些随想

    //许多年后的某日,看到当时naive的自己写下的naive的文字,深感尴尬...本来想删除文章的,算了,黑历史就让它留着吧,就当是对中二青春的一点纪念 //以下内容可能涉及剧透,酌情食用 //初次观 ...

  2. 【TCAX模板】Little Busters! OP(单段版+两段版:中日双语特效)

    注:以下两种方法(针对单段版脚本)最终生成的ASS字幕文本内容完全一致,本专栏单段版分内容的主要目的是给在TCAX视频教程到论坛内比较成熟的完整特效脚本之间的过渡学习上有障碍的初学者准备的. gith ...

  3. 【TCAX相关】一键套用完整特效脚本制作中日双语特效的条件

    本帖主要讲一键套用完整特效脚本制作中日双语特效需要满足的条件及套用方法,后续会在本帖基础上多做一些模板方便新人学习. 需要满足的条件 图1:TCC设置中为确保中日特效制作更方便而需要在字体名称上注意的 ...

  4. 2019十二省联考游记

    Day0 早上在机房复习复习模板,准备下午去试机时打打LCT/多项式各类运算什么的- 试机的时候发现键盘的线垫在下面很不舒服 然后晚上莫名和机房几位大佬一起被拉去与教练,家长们吃饭-(据说死刑犯上刑场 ...

  5. TCAX 特效字幕模板(附带在线预览,不定期更新)

    不定期更新,找到了时间会更新模板压缩包的...(:з」∠) 模板下载链接(不定期更新): github gitee 在线预览: [特效预览]TCAX 特效字幕模板(不定期更新) 目前预览视频的字体全部 ...

  6. HotSpot模板解释器目标代码生成过程源码分析

    虽然说解释执行模式是逐字逐句翻译给目标平台运行的,但这样的过程未免太过缓慢,如果能把字节码说的话做成纸条,运行时只要把对应的纸条交给目标平台就可以了,这样,执行速度就会明显提升.JVM的Hotspot ...

  7. 26.C++- 泛型编程之类模板(详解)

    在上章25.C++- 泛型编程之函数模板(详解) 学习了后,本章继续来学习类模板   类模板介绍 和函数模板一样,将泛型思想应用于类. 编译器对类模板处理方式和函数模板相同,都是进行2次编译 类模板通 ...

  8. Link-Cut Tree指针模板

    模板: 以下为弹飞绵羊代码: 1 #define Troy 2 3 #include "bits/stdc++.h" 4 5 using namespace std; 6 7 co ...

  9. 【C++深度剖析教程37】类模板的概念和意义

    加qq1126137994 微信:liu1126137994 一起学习更多技术!!! 1.类模板 一些类主要用于存储和组织数据元素 类中数据的组织方式和数据元素的具体类型无关 如 数组类,链表类,st ...

最新文章

  1. api工程IOS学习:在IOS开发中使用GoogleMaps SDK
  2. 可高效训练超大规模图模型,PyTorch BigGraph是如何做到的?
  3. (三)线程同步工具集_2---控制并发访问资源的多个副本
  4. java配置openjdk_Java大新闻不断涌现:Java SE 6和OpenJDK
  5. python实现矩阵叉乘_矩阵乘法的纯Python实现 | 离开Python库!!
  6. PHP检查微信域名屏蔽接口,微信域名检测API接口,实时查询域名是否被微信拦截...
  7. php正则实例,php 正则表达式实例详解(适合初学者)
  8. phpstorm 的下载、安装与激活
  9. pythonATM,购物车项目实战_补充2-模块功能
  10. 解决苹果手机ios系统app store无法下载讯飞有声的问题
  11. 解决知网外文文献无法下载全文的问题
  12. 【本站公告】近期Picasa图片没法查看的解决方案
  13. android微信卡,微信无响应怎么弄 让别人微信卡死的小技巧(PC/安卓适用)
  14. SpringBoot源码解析(十一)自定义banner
  15. StringUtils中isNotEmpty和isNotBlank及isBlank()和isEmpty()区别
  16. 南京微盟最新推出:PD电源六级能效 外推芯片 ME8224AM6G ME8224BM6G SOT23-6
  17. Qt编写的开源帖子集合(懒人专用)
  18. 【多媒体封装格式详解】---ASF(WMV/WMA)【1】
  19. CHAPTER 24 Dialog Systems and Chatbots
  20. Lifekeeper产品正版与盗版的区别

热门文章

  1. 【原创分享】动态新增行和删除行
  2. 【剑指Offer】字符串
  3. KDD 2018 | 小波分解网络用于可解释的时间序列分析
  4. 【方案】AI智能技术如何助力智慧工地安全生产与风险预控?
  5. 设计模式之解释器模式
  6. 模拟开关的认识与应用
  7. a标签下划线的距离问题
  8. 民宿/酒店预订小程序管理系统设计与实现
  9. MySQL数据库实现本地数据库和远程服务器数据库数据同步
  10. Git删除远程仓库分支