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

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

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

Moderator

疯子

Rank: 5Rank: 5

楼主
发表于 2013-2-2 08:34:01 |显示全部楼层
爱雪音MiKu 发表于 2013-2-2 07:28
嘎哦0.0。。。哇。。好漂亮的图形。。可以构出这么多图形。。偶也去画画 ...

与其用贝塞尔曲线画图形,不如用ass3draw画出图,把边框弄成粒子来用比较方便

Moderator

疯子

Rank: 5Rank: 5

沙发
发表于 2013-2-2 10:08:15 |显示全部楼层
本帖最后由 渣渣疯子 于 2013-2-2 10:08 编辑
爱雪音MiKu 发表于 2013-2-2 09:17
嘎哦。。。0.0。。。看到一个未知的知识0.0。。。边框弄成粒子0.0?。。。偶不会呢。。。需要用PIX函数么 ...


http://www.tcax.org/forum.php?mo ... &extra=page%3D1我就用过一次,这个脚本ash部分以下就是矢量图变粒子的做法...说实话我也不是很会用=。=没控制好,最后那个粒子做的有点烂了...游风也做过一个。。。不过我想不起是他哪个脚本了...

Moderator

疯子

Rank: 5Rank: 5

板凳
发表于 2013-2-2 10:18:33 |显示全部楼层
爱雪音MiKu 发表于 2013-2-2 09:21
啊呜。。曲线可以生成很多条吗0.0?

你只要不怕卡,曲线可以生成很多条,没问题的。。。无非就是生成的字幕略大...

Moderator

疯子

Rank: 5Rank: 5

地板
发表于 2013-2-2 10:51:13 |显示全部楼层
爱雪音MiKu 发表于 2013-2-2 10:49
嘎哦。。。0.0。是很难呢。。而且还有一些代码没看懂

基本和用字体粒子差不多。。。唯一的区别就是坐标方面的差别=。=。。。我是没控制好。。。

Moderator

疯子

Rank: 5Rank: 5

5#
发表于 2013-2-2 10:59:20 |显示全部楼层
爱雪音MiKu 发表于 2013-2-2 10:50
呜咕。。。生成多个曲线有什么简单的方法吗0.0?。。还是就复制一下代码? ...

复制代码。。。或者直接一个for循环不就好了么?

Moderator

疯子

Rank: 5Rank: 5

6#
发表于 2013-2-2 11:19:37 |显示全部楼层
爱雪音MiKu 发表于 2013-2-2 11:15
呜咕。。。0.0直接固定粒子的开始位置。。。然后慢慢找想要的控制点呢0.0?。。是因为粒子太多所以不好控 ...

不是,这个和字体切成粒子是一个用法,但是一般图形用的时候都不是原大小,这个切割出来的位置都是按原大小的位置来的。。。我是有点弄不明白它的原始位置,然后就不知道怎么控制它们移动了。。。

Moderator

疯子

Rank: 5Rank: 5

7#
发表于 2013-2-2 11:31:12 |显示全部楼层
爱雪音MiKu 发表于 2013-2-2 11:23
呜咕。。。0.0。。明白的说。。那直接把代码写成   图形的大小= 字体的大小+ N   0.0?。。。偶这个简单 ...

图形的大小是用{\p1}这个后面的数字控制,或者fsc,和字体大小不一样,字体大小在切割粒子的时候是有考虑的,但是图形切割里没有。。。所以麻烦点。。。至于立体感,你弄出来的东西本身就是在一个平面上吧。Z轴不也就是在直角坐标系里画一条斜线么。。。Z轴移动,不就是让大小发生一些变化么?

Moderator

疯子

Rank: 5Rank: 5

8#
发表于 2013-2-2 11:37:36 |显示全部楼层
爱雪音MiKu 发表于 2013-2-2 11:35
啊呜。。。V。。这样是很难控制呢。。那TCAX中为什么不创建一个可以控制图形大小的函数呢0.0。。【偶想的 ...

这个可以问问M大。。。我也只是会用不会写。。。

Moderator

疯子

Rank: 5Rank: 5

9#
发表于 2013-2-2 15:15:32 |显示全部楼层
爱雪音MiKu 发表于 2013-2-2 13:52
呜咕。。。循环0.0。。循环就是for (EFT1,EFT2,num)这样写么0.0?。。然后下面加坐标 ...

循环有两种,一种是for循环,一种是while循环。。。while循环的话,之前的哪个脚本里也有用到,你可以看看butterfly下面有用到

Moderator

疯子

Rank: 5Rank: 5

10#
发表于 2013-2-2 17:45:23 |显示全部楼层
爱雪音MiKu 发表于 2013-2-2 17:03
呜咕。。求详细讲解的说(T.T)。。。偶不会用循环函数的说。。偶写成这样了呜咕。。执行总是失败{:onion ...

缩进不对,缩进不对啊。。。for k in range(2):底下缩进不对,你对比一下上面的看看

Moderator

疯子

Rank: 5Rank: 5

11#
发表于 2013-2-2 17:45:55 |显示全部楼层
爱雪音MiKu 发表于 2013-2-2 17:04
呜咕。。。循环语句都没用过的说。。所以看了不是很明白的说

这两个循环去看看python的教程吧,里面有讲

Moderator

疯子

Rank: 5Rank: 5

12#
发表于 2013-2-2 18:16:44 |显示全部楼层
本帖最后由 渣渣疯子 于 2013-2-2 18:18 编辑
爱雪音MiKu 发表于 2013-2-2 18:03
啊呜。。明白的说呜咕。。这个是改版0.0。。points2 = Berier3(num2,ixs, iys, ixe, iye, ixc1, iyc1, ix ...


你那个for i in range(num):...你的不是num1 num2么?。。。都一样的话,统一一个num = 60不就好了么?你的pos好像也有问题。另外,不行就把错误截图发上来看看

Moderator

疯子

Rank: 5Rank: 5

13#
发表于 2013-2-2 18:48:09 |显示全部楼层
爱雪音MiKu 发表于 2013-2-2 18:27
呜咕。。这样的说0.0

bezier3,不是berier3字母打错了,那里显示的错误原因是berier3未定义

Moderator

疯子

Rank: 5Rank: 5

14#
发表于 2013-2-2 19:18:34 |显示全部楼层
爱雪音MiKu 发表于 2013-2-2 18:59
呜咕。。这样了。。现在貌似是TCC的设置问题0.0

< tcaxpy init = true >改了这个试试记得改true别改成ture...

Moderator

疯子

Rank: 5Rank: 5

15#
发表于 2013-2-2 20:28:42 |显示全部楼层
爱雪音MiKu 发表于 2013-2-2 19:56
呜咕。。还是那样。。错误的说

好像是命名冲突?你给TCC改个奇葩的名字再试试?

Moderator

疯子

Rank: 5Rank: 5

16#
发表于 2013-2-2 21:06:09 |显示全部楼层
爱雪音MiKu 发表于 2013-2-2 21:03
啊呜。。这样貌似还是不行呢

召唤了M大,让他闪亮登场解决问题吧

Moderator

疯子

Rank: 5Rank: 5

17#
发表于 2013-2-2 21:38:34 |显示全部楼层
爱雪音MiKu 发表于 2013-2-2 21:36
呜咕。。这样级可以了。。但是第二条曲线没有生成出来0.0。。。。不是把两条线的位置都给了吗。。为什么 ...

你那个POS有问题啊...你完全没必要用POS,第一条曲线是POS1第二条是POS2就好了

Moderator

疯子

Rank: 5Rank: 5

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

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

Moderator

疯子

Rank: 5Rank: 5

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

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

Moderator

疯子

Rank: 5Rank: 5

20#
发表于 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的问题。别的应该也没什么帮助了
您需要登录后才可以回帖 登录 | 新人加入

GitHub|TCAX 主页

GMT+8, 2024-5-3 08:17

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH