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

 找回密码
 新人加入
楼主: milkyjing
打印 上一主题 下一主题

[ASS特效教程入门系列] 三. 曲线轨迹的简单应用及逐帧特效 [复制链接]

Rank: 4

21#
发表于 2013-2-2 19:56:13 |显示全部楼层
渣渣疯子 发表于 2013-2-2 19:18
< tcaxpy init = true >改了这个试试记得改true别改成ture...

呜咕。。还是那样。。错误的说

Rank: 4

22#
发表于 2013-2-2 21:03:26 |显示全部楼层
渣渣疯子 发表于 2013-2-2 20:28
好像是命名冲突?你给TCC改个奇葩的名字再试试?

O6R8HAHF7@1C)V6HA4AIY(Q.jpg   啊呜。。这样貌似还是不行呢

Rank: 4

23#
发表于 2013-2-2 21:03:53 |显示全部楼层
kk123456 发表于 2013-2-2 20:36
k值文件还在?确定命名为test_k.ass?

呜咕。。。。还在的说。。命名也对的

Rank: 4

24#
发表于 2013-2-2 21:16:10 |显示全部楼层
milkyjing 发表于 2013-2-2 21:07
你要看錯誤提示, (已經是不同的提示了.)

如果你的py腳本裡面沒有定義tcaxPy_Init函數, 那麼tcc中  要相 ...

{RJ[7UIRPUZXK~]Z8G%@K2A.jpg 呜咕。。新的问题0.0。。。貌似代码又错了(T.T)

Rank: 4

25#
发表于 2013-2-2 21:27:44 |显示全部楼层
milkyjing 发表于 2013-2-2 21:18
第38行, pos是個函數, 不是一個數組, pos[...] 用法是錯誤的, 應該改成 pos()...

p.s. 編輯腳本, 建議使 ...

3W}A1U~SY5PAGLZ5RO7[~PP.jpg   啊呜。。这样也不对呢(T.T)

Rank: 4

26#
发表于 2013-2-2 21:36:50 |显示全部楼层
milkyjing 发表于 2013-2-2 21:31
pos函數接收兩個參數, x, y, 你給了3個參數了..

話說, 這麼問答效率有點低啊... 雖然我們歡迎多提問題,  ...
  1. from tcaxPy import *

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

  3.     ASS_BUF  = []        # 保存ASS特效
  4.     TCAS_BUF = []        # 保存TCAS特效

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

  6.     ts = _start + _elapk - 20       # 效果开始时间
  7.     _Fs = GetVal(val_FontSize)      # 字体大小
  8.     EFT1 = alpha1(HexToDec('AA')) + alpha3(HexToDec('AA')) + color1('FFFFFF') + \
  9.             bord(5) + blur(5) + t(0, 100, bord(3) + blur(3)) + fad(0, 200)
  10.     EFT2 = alpha1(HexToDec('AA')) + alpha3(HexToDec('00')) + color1('FFFFFF') + color3('FFFFFF') + \
  11.             bord(3) + blur(3) + t(0, 100, bord(1) + blur(1) + alpha3(HexToDec('44'))) + fad(0, 200)
  12.     for k in range(2):
  13.          num = 60    # 曲线上点的个数
  14.          xs = _x     # 开始点
  15.          ys = _y - 30
  16.          xc1 = _x - 30  # 控制点1
  17.          yc1 = _y
  18.          xc2 = _x    # 控制点2
  19.          yc2 = _y + 30
  20.          xe = _x     # 结束点
  21.          ye = _y
  22.          num = 60
  23.          ixs = _x     # 开始点
  24.          iys = _y + 30
  25.          ixc1 = _x + 30  # 控制点1
  26.          iyc1 = _y
  27.          ixc2 = _x    # 控制点2
  28.          iyc2 = _y - 30
  29.          ixe = _x     # 结束点
  30.          iye = _y
  31.          points1 = Bezier3(num, xs, ys, xe, ye, xc1, yc1, xc2, yc2)   # 3阶贝塞尔曲线, 控制点的生成是重点以及难点
  32.          points2 = Bezier3(num,ixs, iys, ixe, iye, ixc1, iyc1, ixc2, iyc2)
  33.          for i in range(num):
  34.               POS1 = pos(points1[i][0], points1[i][1])
  35.               POS2 = pos(points2[i][0], points2[i][1])
  36.               POS = POS1 + POS2   # 获取曲线上点坐标
  37.               EFT = POS + EFT1 + color3('5A3AFF')
  38.               ass_main(ASS_BUF, SubL(ts + i, ts + i + 30, 15, Pix_Style), EFT, PixPt())
  39.               EFT = POS + EFT2
  40.               ass_main(ASS_BUF, SubL(ts + i, ts + i + 30, 15, Pix_Style), EFT, PixPt())

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

  42.     return (ASS_BUF, TCAS_BUF)
复制代码
呜咕。。这样级可以了。。但是第二条曲线没有生成出来0.0。。。。不是把两条线的位置都给了吗。。为什么只显示一条0.0?

Rank: 4

27#
发表于 2013-2-2 21:40:13 |显示全部楼层
milkyjing 发表于 2013-2-2 21:38
POS = POS1 + POS2 這行代碼達不到你的預期, 你可以說下你通過這行代碼想要達成什麼樣的效果? ...

呜咕。。就是两天线的开始点和控制点都完全相反。。然后回到X,Y

Rank: 4

28#
发表于 2013-2-2 21:48:17 |显示全部楼层
渣渣疯子 发表于 2013-2-2 21:38
你那个POS有问题啊...你完全没必要用POS,第一条曲线是POS1第二条是POS2就好了 ...

G~M{2SJS%R5ZJ6WMCR8XO)R.jpg   啊呜。。偶明白啦。。这样成功了。。谢谢轴神大大,M大大,KK大大  0.0

Rank: 4

29#
发表于 2013-2-2 21:49:38 |显示全部楼层
milkyjing 发表于 2013-2-2 21:47
嘛, 既然代碼已經能夠執行了, LZ就隨便玩玩唄... 多摸索, 收穫大... ...

嘎哦。。V。。谢谢M大大的指导。。。对偶来说。。写出了不容易(T.T)。。错误那么多。。

Rank: 4

30#
发表于 2013-2-3 07:42:57 |显示全部楼层
渣渣疯子 发表于 2013-2-2 22:14
已经好了么=。=。。。我这里测试生成的东西看不到粒子点。。。这次换我郁闷了 ...

嘎哦。。0.0。。那么测试的代码给偶

Rank: 4

31#
发表于 2013-2-3 13:49:33 |显示全部楼层
渣渣疯子 发表于 2013-2-3 13:13
生成的东西看不到=。=不知道为什么,可能复制过程中删掉了什么。。。与其找出来不如重新写一份...不过我 ...

呜咕。。明白的说。。谢谢

Rank: 4

32#
发表于 2013-2-7 19:17:52 |显示全部楼层
呜咕。。求问0.0
  1. ass_main(ASS_BUF, SubL(_BT-15,_BT+_SK),color1("FF5150")+fad(100,0)+pos(_X,_Y),_TXT)
  2.         ass_main(ASS_BUF, SubL(_BT+_SK,_BT+_SK+(0.6 * _KT)),pos(_X,_Y)+blur(2)+color1("46FFDD"),_TXT)
  3.         ass_main(ASS_BUF, SubL(_BT+_SK+(0.6 * _KT),_BT+_SK+(0.7 * _KT)),pos(_X,_Y)+blur(7)+bord(5)+color1("FFFFFF"),_TXT)
  4.         ass_main(ASS_BUF, SubL(_BT+_SK+(0.7 * _KT),_ET),pos(_X,_Y)+bord(1.5)+blur(1)+color1("FE5B85")+alpha1(255),_TXT)
  5.    
  6.     # 字体大小
  7.         EFT1 = alpha1(HexToDec('AA')) + alpha3(HexToDec('00')) + color1('FFFFFF') + color3('FFFFFF') + \
  8.             bord(3) + blur(3) + t(0, 100, bord(1) + blur(1) + alpha3(HexToDec('44')))  + fad(0,250)
  9.         EFT2 = alpha1(HexToDec('AA')) + alpha3(HexToDec('00')) + color1('FFFFFF') + color3('FFFFFF') + \
  10.             bord(3) + blur(3) + t(0, 100, bord(1) + blur(1) + alpha3(HexToDec('44')))  + fad(0,250)
  11.         for k in range(4):
  12.              num = 35    # 曲线上点的个数
  13.              xs = _X + randint(-42, 36)    # 开始点
  14.              ys = _Y + randint(-40, 20)
  15.              xc1 = xs + randint(-30, 50)     # 控制点1
  16.              yc1 = ys + randint(-35, 50)
  17.              xc2 = xc1 + randint(-40, 40)    # 控制点2
  18.              yc2 = yc1 + randint(-40, 40)
  19.              xe = _X     # 结束点
  20.              ye = _Y
  21.             
  22.              points1 = Bezier3(num, xs, ys, xe, ye, xc1, yc1, xc2, yc2)   # 3阶贝塞尔曲线, 控制点的生成是重点以及难点
  23.             
  24.              for i in range(num):
  25.                   POS1 = pos(points1[i][0], points1[i][1])
  26.                   # 获取曲线上点坐标
  27.                   EFT = POS1  + EFT1 + color3('68DDF1')
  28.                   ass_main(ASS_BUF, SubL(_BT+_SK  + i ,_BT+_SK+(0.7 * _KT) , 1, Pix_Style), EFT, PixPt())
  29.                   EFT = POS1 + EFT2
  30.                   ass_main(ASS_BUF, SubL(_BT+_SK  + i ,_BT+_SK+(0.7 * _KT) , 1, Pix_Style), EFT, PixPt())
复制代码
为什么曲线无法在偶这个设定的时间内呢0.0?。。而且曲线移动速度好快。。一下子就到_X,_Y了。。然后就拉着长长的一条线就定在这里了0.0?。。

Rank: 4

33#
发表于 2013-2-8 12:04:33 |显示全部楼层
渣渣疯子 发表于 2013-2-8 11:01
噗。。。你这时间点设定这么久,它当然会拉着一条长长的线了,你这个时间点设定的是单个粒子的时间,而不 ...

呜咕。。偶想想。。把时间去掉。。然后在循环外加一个时间0.0?

Rank: 4

34#
发表于 2013-2-8 12:23:08 |显示全部楼层
渣渣疯子 发表于 2013-2-8 11:01
噗。。。你这时间点设定这么久,它当然会拉着一条长长的线了,你这个时间点设定的是单个粒子的时间,而不 ...

呜咕。。。(_BT+_SK  + i ,_BT+_SK+(0.7 * _KT)     这样不是开始时间+K值开始的时间,到开始的时间+K值开始的时间+K值的7/10的时间0.0?。。。。呜咕。。偶想不明白(T.T)

Rank: 4

35#
发表于 2013-2-8 12:26:32 |显示全部楼层
渣渣疯子 发表于 2013-2-8 11:01
噗。。。你这时间点设定这么久,它当然会拉着一条长长的线了,你这个时间点设定的是单个粒子的时间,而不 ...

呜咕。。偶明白了。。时间旁边的1是设定粒子的数量吧。。。这里要和粒子数一样才是整条线吧0.0?

Rank: 4

36#
发表于 2013-2-8 12:29:03 |显示全部楼层
爱雪音MiKu 发表于 2013-2-8 12:26
呜咕。。偶明白了。。时间旁边的1是设定粒子的数量吧。。。这里要和粒子数一样才是整条线吧0.0? ...

呜咕。。可还是不在时间内到_X,_Y。。(T.T)

Rank: 4

37#
发表于 2013-2-8 15:56:52 |显示全部楼层
渣渣疯子 发表于 2013-2-8 15:24
你的设定是一个点,你要想的是这个点出现多久,而不是一条线出现多久,(_BT+_SK+i,_BT+_SK+ ...

呜咕。。第一个曲线几乎是透明的。。生成后就消失了0.0?
第二个曲线有了而且慢慢消失的

那么偶应该这样0.0(_BT+_SK +i ,_BT+_SK+i+(0.7 * _KT))

Rank: 4

38#
发表于 2013-2-8 20:19:09 |显示全部楼层
渣渣疯子 发表于 2013-2-8 20:02
你这样试验后是不是会拖很长一条线?你这样就等于让每个点存在了0.7 * _KT的时间,如果这是 ...

呜咕。。偶是这样的。。在这里偶设置的是0.7*_KT的时候字体会边框高亮的。。所以。。曲线正好到字体里

Rank: 4

39#
发表于 2013-2-8 20:35:11 |显示全部楼层
渣渣疯子 发表于 2013-2-8 20:02
你这样试验后是不是会拖很长一条线?你这样就等于让每个点存在了0.7 * _KT的时间,如果这是 ...

呜咕。。如果要让整条线设置成0.7*_KT的时间呢。。怎么设置呀0.0

Rank: 4

40#
发表于 2013-2-8 21:17:02 |显示全部楼层
渣渣疯子 发表于 2013-2-8 21:02
我不知道你想要什么样的效果。。。说个大概吧,一条曲线的点数是num,你想要的时间是_BT+_SK到_BT+_SK+(_ ...

呜咕。。V。。偶知道。。原来是这个原理。。。谢谢大大。。新年快乐
您需要登录后才可以回帖 登录 | 新人加入

GitHub|TCAX 主页

GMT+8, 2024-5-2 12:20

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH