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

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

[特效算法] 文字描边test [复制链接]

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

跳转到指定楼层
楼主
发表于 2011-9-1 21:17:14 |只看该作者 |倒序浏览
主要借助由 tcaxLib.pyd 提供的 TextOutlinePoints 函数获取文字边框点集, 然后按顺序将其显示出来.
  1. from tcaxPy import *

  2. def tcaxPy_Init():
  3.     global _Fs
  4.     global Font
  5.     _Fs = GetVal(val_FontSize)
  6.     Font = InitFont(GetVal(val_FontFileName), GetVal(val_FaceID), _Fs, GetVal(val_Spacing), GetVal(val_SpaceScale), 0xFFFFFF, 0, 0)

  7. def tcaxPy_Fin():
  8.     FinFont(Font)

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

  10.     ASS_BUF = []
  11.     TCS_BUF = []

  12.     ass_main(ASS_BUF, SubL(_BT + 200, _ET), pos(_X, _Y) + color1('00FFFF') + bord(0) + blur(4) + fad(400, 0), _TXT)

  13.     dx = _X - int(_A / 2 + 0.5)
  14.     dy = _Y - int(_Fs / 2 + 0.5)
  15.     outline = TextOutlinePoints(Font, _TXT, 1.0)
  16.     num = len(outline)
  17.     dur = 200
  18.     for i in range(num):
  19.         ts = _BT + dur * i / num
  20.         te = _ET
  21.         x = dx + outline[i][0]
  22.         y = dy + outline[i][1]
  23.         EFT = pos(x, y) + alpha1(0) + alpha3(150) + alpha4(200) + bord(1) + shad(1) + be(1) + \
  24.               color1('0000FF') + color3('FF00FF') + color4('FFFF00') + fad(200, 0)
  25.         ass_main(ASS_BUF, SubL(ts, te, 1, Pix_Style), EFT, PixPt())

  26.     return (ASS_BUF, TCS_BUF)
复制代码

outline.py

1.08 KB, 下载次数: 2345

脚本

preview.mp4

98.15 KB, 下载次数: 2424

预览

2

查看全部评分

Rank: 4

沙发
发表于 2012-6-27 09:15:19 |只看该作者
可以获取图像边框吗?比如我用ass画个椭圆,我想获取它的边框作描边的特效,请问该如何做呢?

Rank: 4

板凳
发表于 2012-6-27 23:33:33 |只看该作者
不知python中有没有画椭圆的函数,用贝赛尔曲线弄了半天也弄不出个,用RandCir再加
fry就有点像,但再加frz似乎没变化。

Moderator

youkaze

Rank: 5Rank: 5

地板
发表于 2012-6-28 09:47:12 |只看该作者
居然有人注意到这货了 这函数写出来基本没人用过

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

5#
发表于 2012-6-28 12:28:35 |只看该作者
kk123456 发表于 2012-6-27 09:15
可以获取图像边框吗?比如我用ass画个椭圆,我想获取它的边框作描边的特效,请问该如何做呢? ...


这里有个暂未公开的例子(需要用到util.cairo模块,虽然已经进行了一定程度的封装)
ass_draw_to_points.rar (4.04 KB, 下载次数: 2002)

另外,这个例子可做一定的参考 http://www.tcax.org/forum.php?mod=viewthread&tid=52

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

6#
发表于 2012-6-28 12:30:27 |只看该作者
kk123456 发表于 2012-6-27 23:33
不知python中有没有画椭圆的函数,用贝赛尔曲线弄了半天也弄不出个,用RandCir再加
fry就有点像,但再加frz ...


根据上一帖提供的脚本,可以直接用ASSDraw来绘制椭圆。。。

补充:或者也可以直接利用数学的椭圆方程自行计算,贝塞尔曲线也是按照公式计算出来的。

椭圆参数方程:x(t) = a*cos(t), y(t) = b*sin(t)

您需要登录后才可以回帖 登录 | 新人加入

GitHub|TCAX 主页

GMT+8, 2024-4-24 23:15

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH