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

 找回密码
 新人加入
查看: 8392|回复: 32

[已解决] 这种特效如何编写得到呢? [复制链接]

Rank: 4

发表于 2012-9-9 20:43:00 |显示全部楼层
本帖最后由 爱雪音MiKu 于 2012-9-12 20:11 编辑

呜咕。。就是那种。。一开始一句字幕。。无颜色的。。然后通过颜色填充就有颜色了。。偶试了改EFT的。。可是填充一个字。。到下一个字之前的填充就没了(T.T)。。可以改什么代码修改这样的缺憾吗。。这种特效很多字幕组用呢。。。


偶会在这里常驻一段时间。。好好学习TCAX。。希望这里的大大帮忙。。
(之前一直都用AE,Vegas做字幕。。可是TCAX的特效真的非常的美。。。偶非常喜欢。。)
偶对编程几乎不懂。。所以学TCAX的时候问题很多。。。希望这里的大大能帮帮偶。。非常感谢。。

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2012-9-9 20:50:24 |显示全部楼层
之前填充的没掉, 是因为时效设定的问题...拼接下时间就行了. 更详细说, 就是, 增加一行代码, 开始时间是K值表现时间的结束, 结束时间等于第一句(无颜色)的结束时间...

给你的一点建议是, 先系统的开过一些教程+代码, 有了全局的理解后, 再去考虑这些具体效果...

Rank: 4

发表于 2012-9-9 20:53:31 |显示全部楼层
milkyjing 发表于 2012-9-9 20:50
之前填充的没掉, 是因为时效设定的问题...拼接下时间就行了
  1. ################################################################################
  2. ### description:
  3. ### normal karaoke


  4. from tcaxPy import *


  5. def tcaxPy_Init():
  6.     global _FD                         # frame duration, in millisecond
  7.     global _Blur
  8.     _FD = 1000 / GetVal(val_FXFPS)
  9.     _Blur = GetVal(val_Blur)


  10. def tcaxPy_Fin():
  11.     pass


  12. def tcaxPy_Main(_i, _j, _n, _start, _end, _elapk, _k, _x, _y, _a, _txt):
  13.     ASS_BUF  = []        # used for saving ASS FX lines
  14.     TCAS_BUF = []        # used for saving TCAS FX raw data

  15.     ts = _start + _elapk                                   # start time, in semi-second
  16.     te = _start + _elapk + _k                              # end time, in semi-second
  17.     EFT = pos(_x, _y) + K(_k)                              # ASS events
  18.     if _Blur > 0:
  19.         EFT += blur(_Blur)
  20.     ass_main(ASS_BUF, SubL(ts, te, 10), EFT, _txt)         # store the effect

  21.     return (ASS_BUF, TCAS_BUF)
复制代码
呜咕。。比如eft_001的这个内置特效。。。K(_k)这句就单字的K值。。这个K值特效做完了。。就会回复到原来的字了。。。要怎么设置。。才可以保留填充的颜色呢?

Rank: 4

发表于 2012-9-9 22:01:23 |显示全部楼层
修改时间,比如将te直接改成结束效果的开始时间,然后不要存在效果了。
或者将存在效果的颜色改为填充色也行
方法很多

Moderator

疯子

Rank: 5Rank: 5

发表于 2012-9-10 10:10:45 |显示全部楼层
内置脚本里有类似的效果吧,而且用clip也可以做,eft_001就是这个效果

Rank: 4

发表于 2012-9-10 12:45:08 |显示全部楼层
kk123456 发表于 2012-9-9 22:01
修改时间,比如将te直接改成结束效果的开始时间,然后不要存在效果了。
或者将存在效果的颜色改为填充色也 ...

呜咕。。可以详细点吗。。如何改te?。。偶试了把那个_k这个去了就和开始的那个一样了。。可是有错误(T.T)

Rank: 4

发表于 2012-9-10 12:45:32 |显示全部楼层
渣渣疯子 发表于 2012-9-10 10:10
内置脚本里有类似的效果吧,而且用clip也可以做,eft_001就是这个效果

呜咕。。0.0。。clip是什么

Moderator

疯子

Rank: 5Rank: 5

发表于 2012-9-10 17:56:32 |显示全部楼层
爱雪音MiKu 发表于 2012-9-10 12:45
呜咕。。0.0。。clip是什么

clip是切割,切割一个形状做遮罩,具体的用法的话...http://www.tcax.org/forum.php?mo ... &extra=page%3D2不介意就看看我这个脚本吧...29~32行的代码就是clip的用法...这个是横向的,你也可以做成纵向的,只要控制好坐标

Rank: 4

发表于 2012-9-10 20:11:21 |显示全部楼层
渣渣疯子 发表于 2012-9-10 17:56
clip是切割,切割一个形状做遮罩,具体的用法的话...http://www.tcax.org/forum.php?mod=viewthread&ti ...

呜咕。。看不懂(T.T)。。Clip = clip(int(_X-_A / 2), int(_Y-_Fs/2+k), int(_X+_A/2), int(_Y-_Fs/2+k+1))

这句能帮偶讲解一下吗  。。还有那个/2是干什么的呢?(是除号?)

Moderator

疯子

Rank: 5Rank: 5

发表于 2012-9-10 20:20:38 |显示全部楼层
爱雪音MiKu 发表于 2012-9-10 20:11
呜咕。。看不懂(T.T)。。Clip = clip(int(_X-_A / 2), int(_Y-_Fs/2+k), int(_X+_A/2), int(_Y-_Fs/2+k ...

未命名1.jpg
配个渣图吧,clip就是做个遮罩,显示范围就是方框内,clip(x1,y1,x2,y2)这些坐标对应方框的范围,/2是除法,这个遮罩的宽度是字体的宽度,高度是1,因为我选择的定位是an(5)所谓范围就这样设置了,如果定位是an(7)的话,就要修改clip里面的数了

Rank: 4

发表于 2012-9-10 20:27:31 |显示全部楼层
渣渣疯子 发表于 2012-9-10 20:20
配个渣图吧,clip就是做个遮罩,显示范围就是方框内,clip(x1,y1,x2,y2)这些坐标对应方框的范围,/2是除 ...

呜咕。。V。。明白。。对了TCAX里 符号偶想了解一下。。。“—”是减号?,“*”乘号?,“+”是加特效?

Moderator

疯子

Rank: 5Rank: 5

发表于 2012-9-10 21:55:01 |显示全部楼层
爱雪音MiKu 发表于 2012-9-10 20:27
呜咕。。V。。明白。。对了TCAX里 符号偶想了解一下。。。“—”是减号?,“*”乘号?,“+”是加特效? ...

没看过python的基础教程么?_这符号不是减号,- 才是减号...乘号没错,+号可以算连接符,也可以是加法

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2012-9-10 22:10:41 |显示全部楼层
爱雪音MiKu 发表于 2012-9-10 20:27
呜咕。。V。。明白。。对了TCAX里 符号偶想了解一下。。。“—”是减号?,“*”乘号?,“+”是加特效? ...


对于数字, 有四则运算, 加%取摸, //整除, 对于字符串+就是连接两个字符串了...
可以先看一下基本的Python教程, 有助于你更快入门...

呜咕。。比如eft_001的这个内置特效。。。K(_k)这句就单字的K值。。这个K值特效做完了。。就会回复到原来的字了。。。要怎么设置。。才可以保留填充的颜色呢?

这个理解不是很到位, 每句效果都有它自己的存在时间, 坐标位置, 以及层(同一时间, 同一地点, 层数高的会覆盖层数低的). 所以K值效果之后, 并不是"回"到原来的效果(颜色), 本质上是, 原来的颜色还继续存在着(而K值效果消失了). 如何保留K值过后的颜色? 一个很好理解的做法是, 在增加一行特效(ass_main), 这个特效的起始时间是K效果的结束时间(_start + _elapk + _k), 结束时间和第一个效果(就是你说的"原来那颜色")的结束时间相同. 把这个效果加到两个效果之后, 或者把这个效果的Layer值设高一点.

Rank: 5Rank: 5

发表于 2012-9-11 08:25:33 |显示全部楼层
milkyjing 发表于 2012-9-10 22:10
对于数字, 有四则运算, 加%取摸, //整除, 对于字符串+就是连接两个字符串了...
可以先看一下基本的Pytho ...

他应该先在Aegisub里撸几根普通轴 @@

Rank: 4

发表于 2012-9-11 13:21:11 |显示全部楼层
milkyjing 发表于 2012-9-10 22:10
对于数字, 有四则运算, 加%取摸, //整除, 对于字符串+就是连接两个字符串了...
可以先看一下基本的Pytho ...
  1. from tcaxPy import *


  2. def tcaxPy_Init():
  3.     global _FD                         # frame duration, in millisecond
  4.     global _Blur
  5.     _FD = 1000 / GetVal(val_FXFPS)
  6.     _Blur = GetVal(val_Blur)


  7. def tcaxPy_Fin():
  8.     pass


  9. def tcaxPy_Main(_i, _j, _n, _start, _end, _elapk, _k, _x, _y, _a, _txt):
  10.     ASS_BUF  = []        # used for saving ASS FX lines
  11.     TCAS_BUF = []        # used for saving TCAS FX raw data

  12.     ts = _start + _elapk                                   # start time, in semi-second
  13.     te = _start + _elapk + _k                              # end time, in semi-second
  14.     EFT = pos(_x, _y) + K(_k)                              # ASS events
  15.     if _Blur > 0:
  16.         EFT += blur(_Blur)
  17.     ass_main(ASS_BUF, SubL(ts, te, 10), EFT, _txt)
  18.      
  19.     ts = _start + _elapk + _k
  20.     te = _end + _k
  21.     EFT = pos(_x, _y) + K(_k)
  22.     ass_main(ASS_BUF, SubL(ts, te, 10), EFT, _txt)        
  23.     return (ASS_BUF, TCAS_BUF)
复制代码
呜咕。。这样么0.0。效果不是那样填充的(T.T)。。偶理解错了吗

Rank: 4

发表于 2012-9-11 13:23:34 |显示全部楼层
渣渣疯子 发表于 2012-9-10 21:55
没看过python的基础教程么?_这符号不是减号,- 才是减号...乘号没错,+号可以算连接符, ...

呜咕。。看过0.0。。偶看的就是本论坛的入门教程和进阶教程。。就是-这个号没讲到。。在编程里各种符号的用法不一样。。所以偶不确定这个符号的意思。

Moderator

疯子

Rank: 5Rank: 5

发表于 2012-9-11 19:53:11 |显示全部楼层
爱雪音MiKu 发表于 2012-9-11 13:23
呜咕。。看过0.0。。偶看的就是本论坛的入门教程和进阶教程。。就是-这个号没讲到。。在编程里各种符号的 ...

去找些完整脚本看看吧,然后尝试改写,等熟悉了格式,再尝试自己来写自己的东西吧

Rank: 4

发表于 2012-9-11 20:28:25 |显示全部楼层
渣渣疯子 发表于 2012-9-11 19:53
去找些完整脚本看看吧,然后尝试改写,等熟悉了格式,再尝试自己来写自己的东西吧 ...
  1. x1 = _x - _a / 2
  2.     x2 = _x + _a / 2
  3.     for i in range(_Fs):
  4.         y1 = _y - _Fs / 2 + i
  5.         y2 = y1 + 1
  6.         EFT = pos(_x, _y) + clip(x1, y1, x2, y2) + color1(COLOR[i]) + alpha3(255)
复制代码
呜咕。。V。。先学习内置特效咯。。。上面的这段代码的意思是:
是:X坐标减a(a相当于字的宽度?)除2
      x坐标加a除2
      for i in range(_Fs)这句什么意思?。。偶只知道与字的大小有关0.0
      y坐标减设置的字体大小除2,加i
      Y1再加1
      字幕的位置,切割遮罩,颜色,透明度。。。。。这样理解对吗?
   
可是偶感觉那个遮罩切割了好奇怪(T.T)。。想不出那个遮罩的形状(T.T)
  

Moderator

疯子

Rank: 5Rank: 5

发表于 2012-9-11 20:43:00 |显示全部楼层
本帖最后由 渣渣疯子 于 2012-9-11 20:43 编辑
爱雪音MiKu 发表于 2012-9-11 20:28
呜咕。。V。。先学习内置特效咯。。。上面的这段代码的意思是:
是:X坐标减a(a相当于字的宽度?)除2
    ...


for i in range (5)如果这样明白么?你有看到教程的循环部分么?for循环和while循环都去看一下吧,_Fs就是字体高度嘛...把它当成一个数字就好了_a是字体宽度没错,遮罩形状的话,貌似之前有说过,去仔细看看10L的回复吧

Rank: 4

发表于 2012-9-11 20:55:51 |显示全部楼层
渣渣疯子 发表于 2012-9-11 20:43
for i in range (5)如果这样明白么?你有看到教程的循环部分么?for循环和while循环都去看 ...

呜咕。。V。。遮罩形状知道了。。就为什么要除2呢?。。除2偶总是想不通(T.T)。。
您需要登录后才可以回帖 登录 | 新人加入

GitHub|TCAX 主页

GMT+8, 2024-3-19 17:07

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH