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

 找回密码
 新人加入
查看: 4842|回复: 8

TCAX特效脚本之特效语句的作用域 [复制链接]

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2011-11-28 15:50:15 |显示全部楼层
一个效果有三种作用域, 或者说生存周期, 分别是 全局, 整句, 单字.

tcaxPy_Init函数及tcaxPy_Fin函数提供了全局特效支持, 不过通常全局有效的效果是比较少使用的, 所以对应的, 在这两个函数里, 我们基本上只做初始化及销毁工作.

tcaxPy_Line函数提供了整句特效支持, 在这个函数里写的特效是整句歌词适用的.

tcaxPy_Main函数提供了单字特效支持, 在这个函数里写的特效是对一个文字有效的.


tcaxPy_Line函数实际上是tcaxPy_Main函数的一个衍生物, 依靠IsLineChanged函数来实现.
(参考 http://www.tcax.org/forum.php?mod=viewthread&tid=127)

具体写法如下
  1. from tcaxPy import *

  2. def tcaxPy_Line(_i, _start, _end, _initX, _initY, _length, ASS_BUF, TCAS_BUF):
  3.     pass

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

  5.     ASS_BUF  = []        # 保存ASS特效
  6.     TCAS_BUF = []        # 保存TCAS特效

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

  8.     ### begin of line scope, do not change the code ###
  9.     lineChanged = IsLineChanged(_i)
  10.     if lineChanged:
  11.         _initX = _x - int(_a / 2 + 0.5)
  12.         _initY = _y - int(GetVal(val_FontSize) / 2 + 0.5)
  13.         _length = GetVal(val_TextLength)[_i]
  14.         tcaxPy_Line(_i, _start, _end, _initX, _initY, _length, ASS_BUF, TCAS_BUF)
  15.     ### end of line scope, do not change the code ###

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

  17.     return (ASS_BUF, TCAS_BUF)
复制代码

test_line_change.py

821 Bytes, 下载次数: 2356

Rank: 5Rank: 5

发表于 2013-1-29 20:58:03 |显示全部楼层
这个有点不明白,窝要在哪里写自己的效果?
是在第21行吗?还是 ass_main(ASS_BUF, SubL(_start, _end), pos(_x,_y), _txt) 这种形式吗?
编程白痴,见谅。。

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2013-1-29 21:55:47 |显示全部楼层
oloroso 发表于 2013-1-29 20:58
这个有点不明白,窝要在哪里写自己的效果?
是在第21行吗?还是 ass_main(ASS_BUF, SubL(_start, _end), po ...

04, 12, 21等都可以, 看你要寫什麼效果. (整行, 還是逐字等).

tcaxPy_Line函数提供了整句特效支持, 在这个函数里写的特效是整句歌词适用的.

tcaxPy_Main函数提供了单字特效支持, 在这个函数里写的特效是对一个文字有效的.


13到20是固定代碼, 基本不怎麼修改. 是為了"引申"出tcaxPy_Line函數用的.

Rank: 5Rank: 5

发表于 2013-1-29 22:03:48 |显示全部楼层
。。。窝的意思是。。。如果让整行move,是不是只要在21行的地方写ass_main(ASS_BUF, SubL(_start, _end), move(_x1,_y1,_x2,_y2), _txt) 这样子就行了。。。?还是说应该写在第4行呢。。。?喵。。。

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2013-1-29 22:22:52 |显示全部楼层
oloroso 发表于 2013-1-29 22:03
。。。窝的意思是。。。如果让整行move,是不是只要在21行的地方写ass_main(ASS_BUF, SubL(_start, _end),  ...

寫在21行就能達到效果了...

你這個例子其實不好說明問題... 因為單個字的移動, 只要保證時間, 最終看起來的效果就可以是 "整行移動".

換個例子. 假設, 你想讓一束光 (或者一個圖案) 從一句歌詞的左邊移動到右邊.
就只能寫在4行. 否則你得到的就不是一個, 而是很多個圖案了 (除非你進行了特殊處理-->不在本次討論範圍).


Rank: 4

发表于 2013-9-10 07:13:01 |显示全部楼层
milkyjing 发表于 2013-1-29 22:22
寫在21行就能達到效果了...

你這個例子其實不好說明問題... 因為單個字的移動, 只要保證時間, 最終看起 ...

奶大,效果写在第四行的话该用什么样的形式写啊??  试了试ass_main(ASS_BUF, SubL(_start, _end), move(_x1,_y1,_x2,_y2), _txt)   会报错  有相应的脚本例子么? 我找到的大大们做的整行效果几乎都是用tcaxPy_User的貌似

觉得
  1. def tcaxPy_Line(_i, _start, _end, _initX, _initY, _length, ASS_BUF, TCAS_BUF):

  2.     pass
复制代码
果然还是有点不懂啊, 为什么后面是ASS_BUF, TCAS_BUF 各种纠结,ass_main下面的那几句引出tcaxPy_Line函數,但是如果我在21行写效果的话  如果使用ass_main(ASS_BUF, SubL(_start, _end), move(_x1,_y1,_x2,_y2), _txt)的话   感觉并没有用到tcaxPy_Line啊 为什么可以达到整行移动啊  难道有什么隐藏攻略??

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2013-9-12 21:38:12 |显示全部楼层
yyxxlc 发表于 2013-9-10 07:13
奶大,效果写在第四行的话该用什么样的形式写啊??  试了试ass_main(ASS_BUF, SubL(_start, _end), move ...
效果写在第四行的话该用什么样的形式写啊??


就用本帖的脚本, 第4行改成

if _i == 4 - 1:
    ass_main(ASS_BUF, ....)

就OK了

为什么后面是ASS_BUF, TCAS_BUF 各种纠结
不明白你纠结的是啥...

但是你需要注意的是tcaxPy_Line是由tcaxPy_Main函数调用的. ASS_BUF是一个数组, 由ass_main往里面添加元素(效果字符串), 因此tcaxPy_Line要产生作用, 也需要往ASS_BUF填充内容, 因此需要有这两个参数.

但是如果我在21行写效果的话  如果使用ass_main(ASS_BUF, SubL(_start, _end), move(_x1,_y1,_x2,_y2), _txt)的话   感觉并没有用到tcaxPy_Line啊 为什么可以达到整行移动啊  难道有什么隐藏攻略??


一句话的移动, 可以分成一个字一个字的移动, 只要他们移动的起始时间相同, 速率相同, 方向相同. 没什么特别的啊...

Rank: 4

发表于 2013-9-12 21:57:56 |显示全部楼层
milkyjing 发表于 2013-9-12 21:38
就用本帖的脚本, 第4行改成

if _i == 4 - 1:

如果是纯数学的东西 倒是还可以恶补下  但是程序方面的知识有时候看的真的好想吐血  这个星期+上个星期 看XXParticleSystem突然发现了好多不懂的东西 超出理解范围脑洞不够用了泪 只好慢慢的理了 不过我真的好喜欢这个飞的霸气的粒子系统啊  实在是太漂亮了~ 谢谢奶大的回复 我会再继续研究哒

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2013-9-12 22:08:31 |显示全部楼层
yyxxlc 发表于 2013-9-12 21:57
如果是纯数学的东西 倒是还可以恶补下  但是程序方面的知识有时候看的真的好想吐血  这个星期+上个星期  ...


加油, 那东西是X大最早用C#搞的, 我纯移植, 不过网络上关于粒子系统的文章挺多的... 我毕业设计貌似就翻译了一篇..
您需要登录后才可以回帖 登录 | 新人加入

GitHub|TCAX 主页

GMT+8, 2024-3-29 10:36

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH