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

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

[其他代码] TCAX的几种ASS特效标签写法 [复制链接]

Rank: 4

跳转到指定楼层
楼主
发表于 2021-8-21 08:02:18 |只看该作者 |倒序浏览
本帖最后由 Seekladoom 于 2021-8-26 03:35 编辑

注:这5种写法都能生成准确无误的ASS特效字幕。
TCAX的几种ASS特效标签写法.rar (0 Bytes, 下载次数: 1764)


第1种:an(5)+pos(_X,_Y)+blur(3)+fad(200,200)
  1. ass_main(ASS_BUF,SubL(_BT,_ET,1),an(5)+pos(_X,_Y)+blur(3)+fad(200,200),_TXT)
复制代码
第2种(混搭写法):'\\an5\\blur3\\fad(200,200)'+pos(_X,_Y)
  1. ass_main(ASS_BUF,SubL(_BT,_ET,1),'\\an5\\blur3\\fad(200,200)'+pos(_X,_Y),_TXT)
复制代码
第3种(混搭写法):r'\an5\blur3\fad(200,200)'+pos(_X,_Y)
  1. ass_main(ASS_BUF,SubL(_BT,_ET,1),r'\an5\blur3\fad(200,200)'+pos(_X,_Y),_TXT)
复制代码
第4种:'\\an5\\blur3\\fad(200,200)\\pos({0},{1})'.format(_X,_Y),_TXT)
  1. ass_main(ASS_BUF,SubL(_BT,_ET,1),'\\an5\\blur3\\fad(200,200)\\pos({0},{1})'.format(_X,_Y),_TXT)
复制代码
第5种:r'\an5\blur3\fad(200,200)\pos({0},{1})'.format(_X,_Y),_TXT)
  1. ass_main(ASS_BUF,SubL(_BT,_ET,1),r'\an5\blur3\fad(200,200)\pos({0},{1})'.format(_X,_Y),_TXT)
复制代码
第6种(此法需要修改TCAX源码才能实现,留作后续开发用):\an5\pos(_X,_Y)\blur3\fad(200,200)
  1. ass_main(ASS_BUF,SubL(_BT,_ET,1),\an5\pos(_X,_Y)\blur3\fad(200,200),_TXT)
复制代码

另外,第2种写法中 \\an5\\blur3\\fad(200,200) 两边的符号',是将这段ASS特效标签代码变成TCAX可以识别的字符串用的,因此不能省略。也不能换成{},否则会无法生成特效字幕。第3种
写法r'\an5\blur3\fad(200,200)' 跟第2种一样,也是方便TCAX识别字符串用的。

第2-3种写法之所以会出现在TCAX的各种python特效脚本中,是因为TCAX的自动化特效模块——tcaxPy.py脚本有很长一段时间都没有补上常规ASS特效标签b(即粗体标签)和各种mod标签所需的字符串代码造成的,在没人完善tcaxPy.py脚本的情况下,很多人就只能用'\\an5'、r'\an5\'这样的方法去掩盖tcaxPy.py脚本存在的缺陷。

第4-5种写法是在第2-3种写法的基础之上,在完全不使用tcaxPy.py脚本中的字符串逻辑的情况下,尽可能只用 \ 、单引号和 r 的ASS特效标签编写方式,亲测可以正常跑并计算出相应的结果,但在代码长度上还是比第1种要长一些,有变量的ASS特效标签越多,同一行内的代码越长。。。_(:з」∠)_

这些因在tcaxPy.py脚本中未定义相应的字符串逻辑而被迫用第2-3种写法的ASS特效标签如果碰到需要填写变量(比如Python的randint函数,TCAX的_X、_Y等)时,写在'\\ '或r'\ '内的变量(比如'\\pos(_X,_Y)'和r'\pos(_X,_Y)')在TCAX自动化编译生成ASS特效字幕时,就会出现无法计算这些变量的情况。考虑到长期代码维护的便利性,请使用上述提到的第1种写法

目前tcaxPy.py脚本已经开始逐渐补上此前缺失的字符串逻辑了,请看如下帖子2楼:

【tcaxPy脚本】tcaxPy Version 0.8.0.2

tcaxPy.py脚本的最新版会在这里持续更新:
【tcaxPy脚本】tcaxPy Version 0.8.0.3(更新中)

Rank: 4

沙发
发表于 2021-8-21 17:46:44 |只看该作者
本帖最后由 Seekladoom 于 2022-3-17 02:58 编辑

相关链接:
Python 基础篇-正斜杠("/")和反斜杠("\")的用法
python-字符串中含有变量的表示方法

Rank: 4

板凳
发表于 2022-4-4 03:20:48 |只看该作者
本帖最后由 Seekladoom 于 2022-4-4 03:30 编辑

补充:
Python的格式化输出函数format()在字符串有花括号{}的情况下,不适用于本帖上述中提到的TCAX的几种写法规则。


PyonFX由于没有TCAX的ass_main函数那样的字符串处理规则,所以在PyonFX中要写成下面这样:
  1. "{\\an5\\pos(%.f,%.f)\\blur3\\fad(200,200)}%s" % (syl.center, syl.middle, syl.text)
复制代码

相关链接:
Python中使用 %s 和 format 传递参数的区别

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

GitHub|TCAX 主页

GMT+8, 2024-4-20 17:10

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH