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

 找回密码
 新人加入
查看: 3122|回复: 7

[已解决] 求这个特效的代码怎么做成的谢谢 [复制链接]

Rank: 4

发表于 2012-7-14 10:08:48 |显示全部楼层
本帖最后由 四月一日 君寻 于 2012-8-15 10:43 编辑

求这个特效的代码怎么做成的谢谢 别人说是什么粒子效果 又没PY不知道怎么搞求大大手把手简单点教 未命名333.jpg

Rank: 4

发表于 2012-7-14 13:30:26 |显示全部楼层
像素字,再加随机向上的位移

Rank: 4

发表于 2012-7-14 13:47:33 |显示全部楼层
  1. from tcaxPy import *
  2. def tcaxPy_Init():              # 主要作用是初始化一个字体

  3.     global _Fs                  # 字体大小

  4.     global _Font                # 我们将要创建的字体

  5.     _Fs = GetVal(val_FontSize)  # 获取字体大小

  6.     fontFileName = GetVal(val_FontFileName)     # 获取字体文件名

  7.     faceID = GetVal(val_FaceID)                 # 获取字体Face序号

  8.     spacing = GetVal(val_Spacing)               # 获取文字间隔

  9.     spaceScale = GetVal(val_SpaceScale)         # 获取空格缩放比率

  10.     color = MakeRGB(255, 255, 255)              # 字体颜色

  11.     bord = 0                    # 字体边框厚度

  12.     isOutline = False           # 只有边框

  13.     _Font = InitFont(fontFileName, faceID, _Fs, spacing, spaceScale, color, bord, isOutline)        # 创建字体



  14. def tcaxPy_Fin():

  15.     FinFont(_Font)   # 销毁字体 释放内存



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



  17.     ASS_BUF  = []        # 保存ASS特效

  18.     TCAS_BUF = []        # 保存TCAS特效



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



  20.     # 像素字特效固定代码框架 开始

  21.     PIX = TextPix(_Font, _txt)      # 获取当前文字的PIX结构

  22.     initPosX = _x - int(_a / 2 + 0.5) + PIX[0][0]        # 第一个像素的X轴坐标

  23.     initPosY = _y - int(_Fs / 2 + 0.5) + PIX[0][1]       # 第一个像素的Y轴坐标

  24.     for h in range(PIX[1][1]):                           # 开始纵向扫描

  25.         posY = initPosY + h                               # 当前像素Y轴坐标

  26.         for w in range(PIX[1][0]):                       # 开始横向扫描

  27.             posX = initPosX + w                           # 当前像素X轴坐标

  28.             idx  = 4 * (h * PIX[1][0] + w)                # 脚标

  29.             pixR = PIX[2][idx + 0]                        # 当前像素的红色分量

  30.             pixG = PIX[2][idx + 1]                        # 当前像素的绿色分量

  31.             pixB = PIX[2][idx + 2]                        # 当前像素的蓝色分量

  32.             pixA = PIX[2][idx + 3]                        # 当前像素的透明度

  33.             if pixA != 0:                                # 如果当前像素不为透明则进行如下操作

  34.                 # 增加你的效果, 注意Style使用Pix_Style

  35.                 ass_main(ASS_BUF, SubL(_start+_elapk, _start+_elapk+_k, 0, Pix_Style), move(posX, posY,posX+randint(-5,5), posY+randint(-60,-40)) + color1(FmtRGB(pixR, pixG, pixB)) + alpha1(255 - pixA)+fad(0,200), PixPt())
  36.     ass_main(ASS_BUF, SubL(_start, _start+_elapk), pos(_x,_y), _txt)
  37.     return (ASS_BUF, TCAS_BUF)
复制代码
试试这个,那move的坐标是我随便写的,可根据需要自己改。

Rank: 4

发表于 2012-7-14 14:04:03 |显示全部楼层
本帖最后由 fhangoo 于 2012-7-14 14:07 编辑

哦谢谢大大了你QQ多少 我不会改坐标移动呵呵 我先预览下看看
刚预览了下 太快了 完全看不到往上飘的效果

Rank: 4

发表于 2012-7-14 18:08:28 |显示全部楼层
fhangoo 发表于 2012-7-14 14:04
哦谢谢大大了你QQ多少 我不会改坐标移动呵呵 我先预览下看看
刚预览了下 太快了 完全看不到往上飘的效果 ...

关于坐标的修改:move(x,y,x2,y2)其中x,y是开始点的横纵坐标,x2,y2是结束点的横纵坐标。你可以直接修改”move(posX, posY,posX+randint(-5,5), posY+randint(-60,-40))“这句中的"posX+randint(-5,5), posY+randint(-60,-40)“即结束点的横纵坐标,另外randint(-60,-40)意为在-60~-40之间取随机值,可自行修改。
建议看一下入门教程,不过先学一下ass的特效代码和一些python的基础。
ps:我才不是什么大大呢!

Rank: 4

发表于 2012-7-14 18:11:09 |显示全部楼层
fhangoo 发表于 2012-7-14 14:04
哦谢谢大大了你QQ多少 我不会改坐标移动呵呵 我先预览下看看
刚预览了下 太快了 完全看不到往上飘的效果 ...

还有效果太快的话就修改时间,看完入门教程应该就知道怎么改了,不过要注意时间的衔接。

Rank: 4

发表于 2012-7-15 20:24:45 |显示全部楼层
哦谢谢拉 还是不太会搞最后只能找别人帮我改下了呵呵 自己改了半天效果没变

Rank: 4

发表于 2012-8-2 21:19:04 |显示全部楼层
好强大的解答
您需要登录后才可以回帖 登录 | 新人加入

GitHub|TCAX 主页

GMT+8, 2024-3-19 19:06

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH