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

 找回密码
 新人加入
楼主: milkyjing

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

Rank: 4

发表于 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

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

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

Moderator

疯子

Rank: 5Rank: 5

发表于 2013-2-2 21:57:00 |显示全部楼层
爱雪音MiKu 发表于 2013-2-2 21:41
啊呜。。。0.0。。刚刚看了一下。。这样写的确和一条线的效果一样0.0

我复制了想测试下,发现你编程方面的错误太多了,你去好好看看编程的书籍啊...等号后面对应的东西都不一样,当然会错了我测试完了正确代码给你,你也去好好看看教程吧

Moderator

疯子

Rank: 5Rank: 5

发表于 2013-2-2 22:14:41 |显示全部楼层
爱雪音MiKu 发表于 2013-2-2 21:48
啊呜。。偶明白啦。。这样成功了。。谢谢轴神大大,M大大,KK大大  0.0

已经好了么=。=。。。我这里测试生成的东西看不到粒子点。。。这次换我郁闷了

Rank: 4

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

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

Moderator

疯子

Rank: 5Rank: 5

发表于 2013-2-3 13:13:55 |显示全部楼层
爱雪音MiKu 发表于 2013-2-3 07:42
嘎哦。。0.0。。那么测试的代码给偶
  1. from tcaxPy import *


  2. def tcaxPy_Init():
  3.     global _FontFileName          # frame duration, in millisecond
  4.     global _FD                  
  5.     global _Fs
  6.     global _Length
  7.     global _Bd
  8.     global _Br
  9.     global _FaceID
  10.     global _Font
  11.     _FontFileName = GetVal(val_FontFileName)
  12.     _FD = 1000 / GetVal(val_FXFPS)
  13.     _Fs = GetVal(val_FontSize)
  14.     _Length = GetVal(val_TextLength)
  15.     _Bd = GetVal(val_Bord)
  16.     _Br = GetVal(val_Blur)
  17.     _FaceID = GetVal(val_FaceID)
  18.     _Font = InitFont(_FontFileName, _FaceID, _Fs, GetVal(val_Spacing), GetVal(val_SpaceScale), 0xFFFFFF, 2, False)

  19. def fr(x):

  20.     X = randint(-x,x)

  21.     return frx(X)+fry(X)+frz(X)

  22. def tcaxPy_Main(_i, _j, _n, _BT, _ET, _SK, _KT, _X, _Y, _A, _TXT):


  23.     ASS_BUF  = []        # 保存ASS特效
  24.     TCAS_BUF = []        # 保存TCAS特效

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

  26.     ts = _BT + _SK - 20       # 效果开始时间
  27.     _Fs = GetVal(val_FontSize)      # 字体大小
  28.     for k in range(2):
  29.          num = 60    # 曲线上点的个数
  30.          xs = _X     # 开始点
  31.          ys = _Y - 30
  32.          xc1 = _X - 30  # 控制点1
  33.          yc1 = _Y
  34.          xc2 = _X    # 控制点2
  35.          yc2 = _Y + 30
  36.          xe = _X     # 结束点
  37.          ye = _Y
  38.          num = 60
  39.          ixs = _X     # 开始点
  40.          iys = _Y + 30
  41.          ixc1 = _X + 30  # 控制点1
  42.          iyc1 = _Y
  43.          ixc2 = _X    # 控制点2
  44.          iyc2 = _Y - 30
  45.          ixe = _X     # 结束点
  46.          iye = _Y
  47.          points1 = Bezier3(num, xs, ys, xe, ye, xc1, yc1, xc2, yc2)   # 3阶贝塞尔曲线, 控制点的生成是重点以及难点
  48.          points2 = Bezier3(num,ixs, iys, ixe, iye, ixc1, iyc1, ixc2, iyc2)
  49.          for i in range(num):
  50.               POS1 = pos(points1[i][0], points1[i][1])
  51.               POS2 = pos(points2[i][0], points2[i][1])
  52.               EFT1 = POS1 + color3('5A3AFF')+bord(2)
  53.               ass_main(ASS_BUF, SubL(ts + i, ts + i + 30, 15, Pix_Style), EFT1, PixPt())
  54.               EFT2 = POS2 +bord(2)
  55.               ass_main(ASS_BUF, SubL(ts + i, ts + i + 30, 15, Pix_Style), EFT2, PixPt())

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

  57.     return (ASS_BUF, TCAS_BUF)
复制代码
生成的东西看不到=。=不知道为什么,可能复制过程中删掉了什么。。。与其找出来不如重新写一份...不过我懒得写了...你可以对比下POS和EFT的问题。别的应该也没什么帮助了

Rank: 4

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

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

Rank: 4

发表于 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?。。

Moderator

疯子

Rank: 5Rank: 5

发表于 2013-2-8 11:01:30 |显示全部楼层
爱雪音MiKu 发表于 2013-2-7 19:17
呜咕。。求问0.0为什么曲线无法在偶这个设定的时间内呢0.0?。。而且曲线移动速度好快。。一下子就到_X,_Y ...

噗。。。你这时间点设定这么久,它当然会拉着一条长长的线了,你这个时间点设定的是单个粒子的时间,而不是整条曲线的时间,只不过利用别的变量比如说i来改变每个粒子的时间,你再考虑考虑时间点的具体设定?

Rank: 4

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

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

Rank: 4

发表于 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

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

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

Rank: 4

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

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

Moderator

疯子

Rank: 5Rank: 5

发表于 2013-2-8 15:24:56 |显示全部楼层
爱雪音MiKu 发表于 2013-2-8 12:29
呜咕。。可还是不在时间内到_X,_Y。。(T.T)

你的设定是一个点,你要想的是这个点出现多久,而不是一条线出现多久,(_BT+_SK+i,_BT+_SK+i+1)你可以试试这样,也可以试试(_BT+_SK+i,_BT+_SK+i+30)先看看这两个的区别,再想想怎么设置一个点的时间?

Rank: 4

发表于 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))

Moderator

疯子

Rank: 5Rank: 5

发表于 2013-2-8 20:02:55 |显示全部楼层
爱雪音MiKu 发表于 2013-2-8 15:56
呜咕。。第一个曲线几乎是透明的。。生成后就消失了0.0?
第二个曲线有了而且慢慢消失的

你这样试验后是不是会拖很长一条线?你这样就等于让每个点存在了0.7 * _KT的时间,如果这是你需要的效果,你就这样写,如果不是,就继续改吧

Rank: 4

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

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

Rank: 4

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

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

Moderator

疯子

Rank: 5Rank: 5

发表于 2013-2-8 21:02:36 |显示全部楼层
爱雪音MiKu 发表于 2013-2-8 20:35
呜咕。。如果要让整条线设置成0.7*_KT的时间呢。。怎么设置呀0.0

我不知道你想要什么样的效果。。。说个大概吧,一条曲线的点数是num,你想要的时间是_BT+_SK到_BT+_SK+(_KT*0.7)这个时间段,配合数列i,把这些点均摊在这个时间段内就好了。。。能明白么?具体时间点我还真不知道你想怎么弄,不过(_KT * 0.7)/num我觉得应该有用吧?

Rank: 4

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

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

GitHub|TCAX 主页

GMT+8, 2024-3-19 12:47

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH