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

标题: durararaOP1特效py脚本 [打印本页]

作者: saiyaku    时间: 2011-8-5 22:07:09     标题: durararaOP1特效py脚本

durararaOP1的py脚本 作为tcax 学习参考用
配合新版tcax 代码重新修正过了
效果挺简单 就不写很多注释了 有问题请回复
预览待编辑
  1. from tcaxPy import *

  2. def tcaxPy_Main(_i, _j, _n, _BT, _ET, _SK, _KT, _X, _Y, _A, _TXT):
  3.     ASS_BUF = []
  4.     TCS_BUF = []

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

  9.     POS = pos(_X, _Y)                          
  10.     MOVE = move(_7X - _A, _Y, _X, _Y, 0, 150)
  11.     EFT = be(1)+bord(2)+blur(3)+alpha(200)

  12.     BegTime = _BT + 5 * _j - 45
  13.     for j in range(10):
  14.         EndTime = BegTime + 20 + j
  15.         for i in range (1,10,2):
  16.             CLIP = clip(_7X - 1, _7Y  - 1+((i-1)/10)*_H, _7X + 1 + 200 , _7Y + (i/10)*_H)
  17.             ass_main(ASS_BUF, SubL(BegTime + j, EndTime), MOVE + EFT+CLIP, _TXT)

  18.     ass_main(ASS_BUF, SubL(EndTime, _BT +_SK), POS, _TXT)
  19.    
  20.     for i in range(20):
  21.         MOVE = mov(_X+randint(-3,3),_Y+randint(-3,3),_X,_Y)
  22.         ass_main(ASS_BUF, SubL(_BT +_SK,_BT +_SK+_KT), MOVE + color1("FFFFFF") +alpha(220),_TXT)         

  23.     for k in range(_BT+_SK+_KT,_ET,10):
  24.         BEAT = mov(_X,_Y,_X+randint(-4,4),_Y+randint(-4,4))
  25.         ass_main(ASS_BUF, SubL(k, k+10),color1("FFFFFF")+BEAT, _TXT)

  26.     return (ASS_BUF, TCS_BUF)
复制代码

作者: dmcnero    时间: 2011-8-6 22:21:11

本帖最后由 dmcnero 于 2011-8-6 22:36 编辑

CLIP = clip(_7X - 1, _7Y  - 1+((i-1)/10)*_H, _7X + 1 + 200 , _7Y + (i/10)*_H)
意思大概明白,设置截取范围,是吗?
但X轴,Y轴减去这些,代码,数字,出来的效果是什么呢?
最关键:这些代码怎么想到啊?如:(i-1)/10)* _H,经验吗?

作者: saiyaku    时间: 2011-8-7 12:34:18

dmcnero 发表于 2011-8-6 22:21
CLIP = clip(_7X - 1, _7Y  - 1+((i-1)/10)*_H, _7X + 1 + 200 , _7Y + (i/10)*_H)
意思大概明白,设置截取 ...


这效果我随便弄的
这边就是将字像百叶窗那样切条
(1/10)*_H 是切片的高度
for i in range (1,10,2): 是按照 1,3,5,7,9 的方式走 2是步距 1,10 是范围
整理来说 就是切10条 一隔一取里面5条 不知道能不能理解了。。。
作者: dmcnero    时间: 2011-8-8 15:37:01

saiyaku 发表于 2011-8-7 12:34
这效果我随便弄的
这边就是将字像百叶窗那样切条
(1/10)*_H 是切片的高度

恩。明白了,讲的很清楚。
谢谢~
作者: lilight    时间: 2013-5-6 01:17:43

for语句不是很确定其效果,请教一下:


1.  for j in range(10):
这个的意图是连续产生10次200ms的那种切割么?
构思的时候,为啥构思成10次连续的呢。。

   
2.   for k in range(_BT+_SK+_KT,_ET,10):

这处的意思是不是每隔100ms产生一个震动序列? 但下面的语句里,这个震动序列持续时间为500ms 。。为啥



感谢~
作者: saiyaku    时间: 2013-5-6 22:01:27

lilight 发表于 2013-5-6 01:17
for语句不是很确定其效果,请教一下:

1 隨意切一下
2 這段代碼貌似沒寫對 無視掉t代碼就好 沒用的
作者: ccx    时间: 2013-12-14 12:08:10

有几个问题,7x= _X - int(_A / 2 + 0.5)  A是宽度吧
             _7Y = _Y - int(_H / 2 + 0.5)   H  前面声明fontsize 也就是高度?
可 宽度除2加0.5 肿么就是左上角X轴坐标呢
    高度除2加0.5 肿么就是左上角y轴坐标呢
  如果按这样子来计算的话一个字大约是多少?1吗?0.5为半个?也就是说一个字的宽度高度大约是多少 (和字体的大小是不是有关系 )

作者: saiyaku    时间: 2013-12-14 19:22:44

ccx 发表于 2013-12-14 12:08
有几个问题,7x= _X - int(_A / 2 + 0.5)  A是宽度吧
             _7Y = _Y - int(_H / 2  ...

+0.5 取 int 是爲了4舍5入 int取整是直接去掉小數點后的數字 +0.5 就能讓小數點后大於0.5的向個位進1了 編程里挺常用的一種方法
嘛 python 有round函數  習慣問題
作者: ABC不是菜    时间: 2016-9-11 20:45:28

辛苦了
作者: yjucg    时间: 2023-3-20 15:15:48

辛苦楼主!
作者: yjucg    时间: 2023-3-21 13:53:26

楼主好!我是刚学,这个脚本导入Aegisub中,为何不见有特效这栏?要如何设设置才能应用的!




欢迎光临 TCAX 字幕特效制作工具官方论坛 | ASS | TCAS | Python | Aegisub | Lua (http://tcax.org/) Powered by Discuz! X2