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

 找回密码
 新人加入
查看: 31021|回复: 39
打印 上一主题 下一主题

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

Rank: 4

楼主
发表于 2013-2-1 17:11:53 |显示全部楼层
milkyjing 发表于 2012-5-17 12:49
那你写还是不写 233

啊呜。。那个。。问一下。。控制点可以生成很多个吗0.0?【如果就2个控制点貌似不够用0.0】

Rank: 4

沙发
发表于 2013-2-1 22:10:36 |显示全部楼层
milkyjing 发表于 2013-2-1 21:33
常用的是2階, 3階貝塞爾曲線 (分別有1個控制點和2個控制點), 多了曲線形狀反而不好弄.

還有一個n階貝塞 ...

嘎哦。。0.0是么。。对了。。乃们大大不是可以用貝塞爾曲線绘制图形么0.0?。。。难道就是用UCBS?。。如果不用UCBS可以做到吗0.0?

Rank: 4

板凳
发表于 2013-2-1 22:44:33 |显示全部楼层
milkyjing 发表于 2013-2-1 22:22
ASS繪圖用的是3階貝塞爾...
貝塞爾曲線與UCBS是兩種不同的曲線...

呜咕。。。V。。可是2个控制点画的图形会很少吧0.0。。。ASSDraw如果要画一个雪花也需要创建很多个点然后调整曲线画出来的。。。如果是2个点以偶现有的知识只知道画园呀。。类似比较简单的图形0.0。。。其他的偶不知道呢

Rank: 4

地板
发表于 2013-2-2 07:28:28 |显示全部楼层
milkyjing 发表于 2013-2-1 23:09
花點功夫能畫出很多神奇的東西.

http://www.tcax.org/forum.php?mod=viewthread&tid=450

嘎哦0.0。。。哇。。好漂亮的图形。。可以构出这么多图形。。偶也去画画

Rank: 4

5#
发表于 2013-2-2 09:17:37 |显示全部楼层
渣渣疯子 发表于 2013-2-2 08:34
与其用贝塞尔曲线画图形,不如用ass3draw画出图,把边框弄成粒子来用比较方便 ...

嘎哦。。。0.0。。。看到一个未知的知识0.0。。。边框弄成粒子0.0?。。。偶不会呢。。。需要用PIX函数么?

Rank: 4

6#
发表于 2013-2-2 09:21:42 |显示全部楼层
milkyjing 发表于 2013-2-1 23:09
花點功夫能畫出很多神奇的東西.

http://www.tcax.org/forum.php?mod=viewthread&tid=450

啊呜。。曲线可以生成很多条吗0.0?

Rank: 4

7#
发表于 2013-2-2 10:49:11 |显示全部楼层
渣渣疯子 发表于 2013-2-2 10:08
http://www.tcax.org/forum.php?mod=viewthread&tid=523&extra=page%3D1我就用过一次,这个脚本ash部分 ...

嘎哦。。。0.0。是很难呢。。而且还有一些代码没看懂

Rank: 4

8#
发表于 2013-2-2 10:50:25 |显示全部楼层
渣渣疯子 发表于 2013-2-2 10:18
你只要不怕卡,曲线可以生成很多条,没问题的。。。无非就是生成的字幕略大... ...

呜咕。。。生成多个曲线有什么简单的方法吗0.0?。。还是就复制一下代码?

Rank: 4

9#
发表于 2013-2-2 11:15:43 |显示全部楼层
渣渣疯子 发表于 2013-2-2 10:51
基本和用字体粒子差不多。。。唯一的区别就是坐标方面的差别=。=。。。我是没控制好。。。 ...

呜咕。。。0.0直接固定粒子的开始位置。。。然后慢慢找想要的控制点呢0.0?。。是因为粒子太多所以不好控制的吗

Rank: 4

10#
发表于 2013-2-2 11:16:16 |显示全部楼层
渣渣疯子 发表于 2013-2-2 10:59
复制代码。。。或者直接一个for循环不就好了么?

呜咕。。V。。明白的说0.0

Rank: 4

11#
发表于 2013-2-2 11:23:05 |显示全部楼层
渣渣疯子 发表于 2013-2-2 11:19
不是,这个和字体切成粒子是一个用法,但是一般图形用的时候都不是原大小,这个切割出来的 ...

呜咕。。。0.0。。明白的说。。那直接把代码写成   图形的大小= 字体的大小+ N   0.0?。。。偶这个简单的大脑想的办法。。。估计没用

Rank: 4

12#
发表于 2013-2-2 11:23:56 |显示全部楼层
渣渣疯子 发表于 2013-2-2 11:19
不是,这个和字体切成粒子是一个用法,但是一般图形用的时候都不是原大小,这个切割出来的 ...

呜咕。。。曲线可以在Z轴上移动吗。。偶想带一点立体。。

Rank: 4

13#
发表于 2013-2-2 11:35:10 |显示全部楼层
渣渣疯子 发表于 2013-2-2 11:31
图形的大小是用{\p1}这个后面的数字控制,或者fsc,和字体大小不一样,字体大小在切割粒子的时候是有考虑 ...

啊呜。。。V。。这样是很难控制呢。。那TCAX中为什么不创建一个可以控制图形大小的函数呢0.0。。【偶想的太天真了0.0?

Rank: 4

14#
发表于 2013-2-2 13:50:18 |显示全部楼层
渣渣疯子 发表于 2013-2-2 11:37
这个可以问问M大。。。我也只是会用不会写。。。

啊呜。。。0.0。。M大大好厉害

Rank: 4

15#
发表于 2013-2-2 13:52:51 |显示全部楼层
kk123456 发表于 2013-2-2 13:12
加个循环,套写随机坐标就行了

呜咕。。。循环0.0。。循环就是for (EFT1,EFT2,num)这样写么0.0?。。然后下面加坐标

Rank: 4

16#
发表于 2013-2-2 17:03:07 |显示全部楼层
kk123456 发表于 2013-2-2 14:07
例如这样

呜咕。。求详细讲解的说(T.T)。。。偶不会用循环函数的说。。偶写成这样了
  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.     ixs = _x     # 开始点
  23.     iys = _y + 30
  24.     ixc1 = _x + 30  # 控制点1
  25.     iyc1 = _y
  26.     ixc2 = _x    # 控制点2
  27.     iyc2 = _y - 30
  28.     ixe = _x     # 结束点
  29.     iye = _y
  30.     points1 = Bezier3(num1, xs, ys, xe, ye, xc1, yc1, xc2, yc2)   # 3阶贝塞尔曲线, 控制点的生成是重点以及

  31. 难点
  32.     points2 = Berier3f(num2,ixs, iys, ixe, iye, ixc1, iyc1, ixc2, iyc2)
  33.     for i in range(num):
  34.         POS = pos[(points1[i][0], points1[i][1]) + (points2[i][0], points2[i][0])]   # 获取曲线上点坐标
  35.         EFT = POS + EFT1 + color3('5A3AFF')
  36.         ass_main(ASS_BUF, SubL(ts + i, ts + i + 30, 15, Pix_Style), EFT, PixPt())
  37.         EFT = POS + EFT2
  38.         ass_main(ASS_BUF, SubL(ts + i, ts + i + 30, 15, Pix_Style), EFT, PixPt())

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

  40.     return (ASS_BUF, TCAS_BUF)
复制代码
呜咕。。执行总是失败

Rank: 4

17#
发表于 2013-2-2 17:04:27 |显示全部楼层
渣渣疯子 发表于 2013-2-2 15:15
循环有两种,一种是for循环,一种是while循环。。。while循环的话,之前的哪个脚本里也有 ...

呜咕。。。循环语句都没用过的说。。所以看了不是很明白的说

Rank: 4

18#
发表于 2013-2-2 18:03:28 |显示全部楼层
渣渣疯子 发表于 2013-2-2 17:45
缩进不对,缩进不对啊。。。for k in range(2):底下缩进不对,你对比一下上面的看看 ...

啊呜。。明白的说
  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.          num1 = 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.          num2 = 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(num1, xs, ys, xe, ye, xc1, yc1, xc2, yc2)   # 3阶贝塞尔曲线, 控制点的生成是重点

  32. 以及难点
  33.          points2 = Berier3(num2,ixs, iys, ixe, iye, ixc1, iyc1, ixc2, iyc2)
  34.          for i in range(num):
  35.               POS = pos[(points1[i][0], points1[i][1]) + (points2[i][0], points2[i][0])]   # 获取曲线上点坐标
  36.               EFT = POS + EFT1 + color3('5A3AFF')
  37.               ass_main(ASS_BUF, SubL(ts + i, ts + i + 30, 15, Pix_Style), EFT, PixPt())
  38.               EFT = POS + EFT2
  39.               ass_main(ASS_BUF, SubL(ts + i, ts + i + 30, 15, Pix_Style), EFT, PixPt())

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

  41.     return (ASS_BUF, TCAS_BUF)
复制代码
呜咕。。这个是改版0.0。。points2 = Berier3(num2,ixs, iys, ixe, iye, ixc1, iyc1, ixc2, iyc2)
  这句总是显示错误(T.T)

Rank: 4

19#
发表于 2013-2-2 18:27:07 |显示全部楼层
渣渣疯子 发表于 2013-2-2 18:16
你那个for i in range(num):...你的不是num1 num2么?。。。都一样的话,统一一个num = 60 ...

46GROHCQ9Y6F{336)57OQS3.jpg    呜咕。。这样的说0.0

Rank: 4

20#
发表于 2013-2-2 18:59:28 |显示全部楼层
渣渣疯子 发表于 2013-2-2 18:48
bezier3,不是berier3字母打错了,那里显示的错误原因是berier3未定义

WGBGK4JSUEX)HFOU}46E)RK.jpg    呜咕。。这样了。。现在貌似是TCC的设置问题0.0
您需要登录后才可以回帖 登录 | 新人加入

GitHub|TCAX 主页

GMT+8, 2024-5-3 09:30

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH