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

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

[特效算法] 波浪形淡出效果 [复制链接]

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

跳转到指定楼层
楼主
发表于 2012-5-10 18:03:49 |只看该作者 |倒序浏览
说明: 修改自 Mirael 发我的Lua脚本.

wobble_text.rar (2.67 KB, 下载次数: 3474)
  1. from tcaxPy import *
  2. from util.cairo import *

  3. def tcaxPy_Init():
  4.     global _Fs
  5.     global _FD          # 一帧的持续时间, 约40毫秒
  6.     global _Spacing     # 字体间距
  7.     global Font         # 首要字体
  8.     _Fs = GetVal(val_FontSize)
  9.     _FD = 1000 / GetVal(val_FXFPS)
  10.     _FontFileName = GetVal(val_FontFileName)
  11.     _FaceID = GetVal(val_FaceID)
  12.     _Spacing = GetVal(val_Spacing)
  13.     Font = InitFont(_FontFileName, _FaceID, _Fs, _Spacing, GetVal(val_SpaceScale), MakeRGB(255, 255, 255), 0, False)
  14.     # cairo
  15.     global ctx
  16.     fx_width = GetVal(val_ResolutionX)
  17.     fx_height = GetVal(val_ResolutionY)
  18.     surface = ImageSurface(FORMAT_ARGB32, fx_width, fx_height)
  19.     ctx = Context(surface)

  20. def tcaxPy_Fin():
  21.     FinFont(Font)

  22. def tcaxPy_Main(_i, _j, _n, _start, _end, _elapk, _k, _x, _y, _a, _txt):
  23.     ASS_BUF  = []        # 保存ASS特效
  24.     TCAS_BUF = []        # 保存TCAS特效
  25.     ##### 主要特效编写操作 #####
  26.     ### begin of line scope, do not change the code ###
  27.     lineChanged = IsLineChanged(_i)
  28.     if lineChanged:
  29.         _initX = _x - int((_a + _Spacing) / 2 + 0.5)
  30.         _initY = _y - int(_Fs / 2 + 0.5)
  31.         _length = GetVal(val_TextLength)[_i]
  32.         tcaxPy_Line(_i, _start, _end, _initX, _initY, _length, ASS_BUF, TCAS_BUF)
  33.     ### end of line scope, do not change the code ###
  34.     ##### 将结果返回给tcax进行处理 #####
  35.     return (ASS_BUF, TCAS_BUF)

  36. def tcaxPy_Line(_i, _start, _end, _initX, _initY, _length, ASS_BUF, TCAS_BUF):
  37.     texts = GetVal(val_Text)[_i]
  38.     num = len(texts)
  39.     frames = int(2000 / _FD + 0.5)
  40.     for i in range(frames):
  41.         ts = _end + i * _FD / 10
  42.         te = _end + (i + 1) * _FD / 10
  43.         frame_pct = i / frames
  44.         text = ''
  45.         for j in range(num):
  46.             if '' == texts[j] or ' ' == texts[j] or ' ' == texts[j]:
  47.                 continue
  48.             assDraw = TextOutlineDraw(Font, texts[j], 0, 0)
  49.             AssDraw(ctx, assDraw)
  50.             dx = _initX + GetVal(val_TextAdvanceDiff)[_i][j]
  51.             path_trans(ctx, wobble_filter, (dx, _initX, _length, _Fs, frame_pct))
  52.             text += ToAssDraw(ctx)
  53.         EFT = an(7) + pos(_initX, _initY) + alpha(255 * frame_pct) + blur(3) + bord(1) + color1('FFFFFF') + p(7)
  54.         ass_main(ASS_BUF, SubL(ts, te), EFT, text)

  55. def wobble_filter(x, y, param):
  56.     char_left, line_left, line_width, line_height, frame_pct = param
  57.     char_x = ceil(x + char_left * 64 - line_left * 64)
  58.     max_diff_x = sin(y / line_height * pi / 10 + frame_pct * pi * 5) * 20 * 64
  59.     max_diff_y = cos(char_x / line_width * pi / 10 + frame_pct * pi * 5) * 20 * 64
  60.     new_x = char_x + floor(max_diff_y * frame_pct)
  61.     new_y = y + floor(max_diff_y * frame_pct)
  62.     return new_x, new_y
复制代码

Rank: 4

沙发
发表于 2012-5-11 16:06:38 |只看该作者
谢谢大神。。。

Rank: 5Rank: 5

板凳
发表于 2012-5-13 12:37:51 |只看该作者
我试了试用mod,貌似也能做出类似的效果哎。。。= =等做出来再说吧。。。

Rank: 4

地板
发表于 2012-5-13 19:17:59 |只看该作者
本帖最后由 zxcqwert 于 2012-5-13 19:18 编辑
ひまり 发表于 2012-5-13 12:37
我试了试用mod,貌似也能做出类似的效果哎。。。= =等做出来再说吧。。。


刚刚看到鬼道做出了类似的效果,还不错

Rank: 4

5#
发表于 2012-5-19 09:22:37 |只看该作者

运行时报错,请问是怎么回事,求解决。

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

6#
发表于 2012-5-19 14:38:50 |只看该作者
kk123456 发表于 2012-5-19 09:22
运行时报错,请问是怎么回事,求解决。

下载1.1.9, 执行其中的assoc.exe, 然后重新解析改工程.

p.s. 1.1.9 sp1要在119的基础上更新

Rank: 4

7#
发表于 2022-2-17 23:38:29 |只看该作者
本帖最后由 Seekladoom 于 2022-2-17 23:48 编辑

注:请避免在Aegisub中挂载VSFilterMod预览此脚本生成的ASS特效字幕文件,否则无法得到正确的字幕预览特效。不过压制此特效并不受VSFilterMod的预览效果影响,压制出来的英字幕内嵌特效还是正常的

如下是预览效果截图:
【VSFilterMod】
【VSFilterMod】TCAX Karaoke Effect 458.png

【XY-VSFilter】
【XY-VSFilter】TCAX Karaoke Effect 458.png

Rank: 4

8#
发表于 2022-2-17 23:54:06 |只看该作者
本帖最后由 Seekladoom 于 2022-2-17 23:54 编辑

如下贴也有类似的问题:
http://www.tcax.org/forum.php?mod=viewthread&tid=1280
您需要登录后才可以回帖 登录 | 新人加入

GitHub|TCAX 主页

GMT+8, 2024-11-22 01:47

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH