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

标题: [ASS特效教程入门系列] 二. ASS Mask特效的制作 [打印本页]

作者: milkyjing    时间: 2011-11-1 17:59:17     标题: [ASS特效教程入门系列] 二. ASS Mask特效的制作

说明

本系列教程旨在更好的引导大家使用TCAX制作一些特效, 有空我会逐渐补上我所了解的一些特效的制作.
为加深大家对教程代码的理解, 附上了可以直接执行的完整工程, 建议下载并实际操作一下.
  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.     # ASS Mask特效固定代码框架 开始
  21.     dx = _x - int(_a / 2 + 0.5)
  22.     dy = _y - int(_Fs / 2 + 0.5)
  23.     outline = TextOutlineDraw(_Font, _txt, dx, dy)      # 获取该文字的ASS Draw绘图命令字符串
  24.     ass_main(ASS_BUF, SubL(_start, _end), move(_x - 50, _y, _x, _y, 0, 5 * (_end - _start)) + clip(7, outline), _txt)       # clip(7, outline) 即为ASS Mask
  25.     # ASS Mask特效固定代码框架 结束

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

  27.     return (ASS_BUF, TCAS_BUF)
复制代码
后记

在理解了上述代码的基础上, 可以进一步学习具体的使用方法.
X大用Mask做的特效还是比较多的, 下面这个就是其中之一, 我移植到TCAX上来的...
一个具体例子 http://www.tcax.org/forum.php?mod=viewthread&tid=100


p.s. 如有疑问, 请直接跟帖...


------------------ 2012-01-19 14:31 ---------------------

如果TCC文件的spacing设置不是0, 则, 关于dx的计算需要进行如下修改
  1. dx = _x - int((_a + GetVal(val_Spacing)) / 2 + 0.5)
复制代码


附件: test_text_mask.zip (2011-11-1 18:01:38, 3.31 KB) / 下载次数 4255
http://www.tcax.org/forum.php?mod=attachment&aid=MTA0fGViYzVkNDcyfDE3MTQ2MjU5NjF8MHww
作者: 四月一日 君寻    时间: 2011-11-1 18:06:51

顶起 下载试试
作者: 殷六侠    时间: 2012-1-14 10:16:34

强烈支持,谢谢分享...
作者: milkyjing    时间: 2012-1-14 12:59:40

殷六侠 发表于 2012-1-14 10:16
强烈支持,谢谢分享...


说实话, 我怀疑这个账号为BOT...

作者: six    时间: 2012-2-12 22:00:53

本帖最后由 six 于 2012-2-12 22:09 编辑

报告M大,问题多多~~
    首先,关于MASK,简单理解就是按文字形态进行clip,然后移动文字来形成的一种动态效果?
    针对示例的py文件,tcc的边框设定是棕色,运行后为什么会经常有的字的经常也有一部分变成棕色(字体本是白色);
    bord = 0
    isOutline = False    #只有边框
    您给的Py脚本里,在tcaxPy_Init()里是这样写的,将False修改为True,或者修改bord的数值,重新运行后感觉不到效果上的差别;
    将tcc文件里的bord值修改后,效果会有明显差别,白色主上的棕色部分变大了,这大概是clip和预设的边框不一致所致?
但是比如我将tcc和py里的边框都设为5,不管isOutline = False / True,运行的效果都是白色字体上有部分的棕色效果,这种现象……(spacing已为0).
    还有那个color = MakeRGB(255, 255, 255) 有什么作用,修改数值看不出来影响了哪里、

    暂时好像就这么多了,入行不久,请多指教~
作者: milkyjing    时间: 2012-2-13 00:19:43

six 发表于 2012-2-12 22:00
报告M大,问题多多~~
    首先,关于MASK,简单理解就是按文字形态进行clip,然后移动文字来形成的一种动态 ...
首先,关于MASK,简单理解就是按文字形态进行clip,然后移动文字来形成的一种动态效果?

基本上是这样的. 不过在ASS里通常不好移动mask, 所以一般移动的是被mask的物体.
针对示例的py文件,tcc的边框设定是棕色,运行后为什么会经常有的字的经常也有一部分变成棕色(字体本是白色)

你好像还没太理解那代码的效果, 如果不加mask, 你将看到一个带有棕色边框的文字在移动, 但加了mask, 你就只能看到mask区域中的文字, 因为文字是移动的, 所以在mask区域内, 可能既有边框也有主体 (结果就是你所看到的, "文字"内部-->也即mask区域, 有棕色出现.
bord = 0
    isOutline = False    #只有边框
    您给的Py脚本里,在tcaxPy_Init()里是这样写的,将False修改为True,或者修改bord的数值,重新运行后感觉不到效果上的差别;

确实不会有差别...那些设置对做像素字特效才有影响... (mask暂时没加那功能)
将tcc文件里的bord值修改后,效果会有明显差别,白色主上的棕色部分变大了,这大概是clip和预设的边框不一致所致?

bord的值不会影响mask(也即你能看到的区域), 但会影响被mask的物体(也即_txt-->文字), 关于最终效果, 前面也提到了.
但是比如我将tcc和py里的边框都设为5,不管isOutline = False / True,运行的效果都是白色字体上有部分的棕色效果,这种现象……(spacing已为0).

前面都有提到了..
还有那个color = MakeRGB(255, 255, 255) 有什么作用,修改数值看不出来影响了哪里

对mask没影响, 做像素字时才有用...
暂时好像就这么多了,入行不久,请多指教~

加油...
作者: six    时间: 2012-2-13 09:26:33

milkyjing 发表于 2012-2-13 00:19
基本上是这样的. 不过在ASS里通常不好移动mask, 所以一般移动的是被mask的物体.

你好像还没太理解那代 ...

关于白色字体上的棕色,移动中的我能理解,我指的是一行的效果完全运行之后,还能在MAKS区域看到零零散散的棕色,有点儿像您最近群发的血迹那个特效的简化版(当然没那么高端洋气~)
作者: milkyjing    时间: 2012-2-13 15:48:19

six 发表于 2012-2-13 09:26
关于白色字体上的棕色,移动中的我能理解,我指的是一行的效果完全运行之后,还能在MAKS区域看到零零散散 ...

贴张图吧……
作者: six    时间: 2012-2-14 09:41:02

1 2

图补上了~

图片附件: [2] 2.jpg (2012-2-14 09:40:40, 2.5 KB) / 下载次数 900
http://www.tcax.org/forum.php?mod=attachment&aid=MjMyfDU2MjE3Yjk0fDE3MTQ2MjU5NjF8MHww



图片附件: [1] 1.jpg (2012-2-14 09:40:40, 7.76 KB) / 下载次数 904
http://www.tcax.org/forum.php?mod=attachment&aid=MjMxfGEzMTQyMTBlfDE3MTQ2MjU5NjF8MHww


作者: milkyjing    时间: 2012-2-14 09:45:30

six 发表于 2012-2-14 09:41
图补上了~

你是换过字体的吧?

感觉可能的原因是那个定位问题..
作者: six    时间: 2012-2-14 09:50:27

本帖最后由 six 于 2012-2-14 09:51 编辑
milkyjing 发表于 2012-2-14 09:45
你是换过字体的吧?

感觉可能的原因是那个定位问题..


换了啊,那个字体包里好像没有。

改字体会有影响?大小边框啥的都没动。
作者: milkyjing    时间: 2012-2-14 10:09:14

six 发表于 2012-2-14 09:50
换了啊,那个字体包里好像没有。

改字体会有影响?大小边框啥的都没动。 ...

因为这个定位问题(Positioning Issue)太过神奇了, 问题本身的存在是多方面的 (所以尝试修复过多次也一直没好方法), 但对于一部分字体, 这个问题会消失....

最切合实际的办法是手工调整定位 (增加修正参数), 或者通过一些别的手段绕过...

不过, 通常制作Mask特效, 我们不会拿文字去mask, 一般是 图形 (圆, 方形)等, 就不会有上述这种情况出现了(上面那情况是非直接可控的-->需要手工修正, 但利用图形, 就可以确实得填满整个mask)....

嘛, 表达的不是很清楚... (过于理论了), 要在实践中去体会的...

p.s. 可以和四月君交流下心得...

作者: six    时间: 2012-2-14 10:12:45

milkyjing 发表于 2012-2-14 10:09
因为这个定位问题(Positioning Issue)太过神奇了, 问题本身的存在是多方面的 (所以尝试修复过多次也一直 ...

哦了,没事了,其实是种实际出来的伪立体的效果也挺好看的~
作者: milkyjing    时间: 2012-2-14 10:15:16

你把字体改回 DFMincho-UB.ttc, 或DFMincho-UB_0.ttc 试试?

这个字体, 字体包里应该有的...


作者: milkyjing    时间: 2012-2-14 10:17:34

six 发表于 2012-2-14 10:12
哦了,没事了,其实是种实际出来的伪立体的效果也挺好看的~

其实可以制作更真实的立体效果的...

目前理论知识及工具都具备了, 打算回校后弄几个例子..

作者: six    时间: 2012-3-3 02:14:17

也就是1.19里已经不存在9楼的那种问题了?
作者: milkyjing    时间: 2012-3-3 11:34:29

six 发表于 2012-3-3 02:14
也就是1.19里已经不存在9楼的那种问题了?


9楼是定位问题, 该问题依然存在, 目前只有下面这个蹩脚的解决方法 http://www.tcax.org/forum.php?mod=viewthread&tid=274

119修复的是字体大小问题, 详情可见 http://www.tcax.org/forum.php?mod=viewthread&tid=279


以下为定位问题测试用例

100 with AGENCYR.TTF

118 with AGENCYR.TTF

119 with AGENCYR.TTF

100 with CONSTAN.TTF

118 with CONSTAN.TTF

119 with



附件: [测试用例] font_size_issue_test_case.rar (2012-3-3 11:34:13, 147.42 KB) / 下载次数 3880
http://www.tcax.org/forum.php?mod=attachment&aid=MzYwfDc2ZGIzZjE1fDE3MTQ2MjU5NjF8MHww

图片附件: [119 with] c_119.png (2012-3-3 11:32:41, 13.67 KB) / 下载次数 906
http://www.tcax.org/forum.php?mod=attachment&aid=MzU5fDZiMmNkMDJjfDE3MTQ2MjU5NjF8MHww



图片附件: [118 with CONSTAN.TTF] c_118.png (2012-3-3 11:32:41, 17.62 KB) / 下载次数 881
http://www.tcax.org/forum.php?mod=attachment&aid=MzU4fDZkNDRhN2E3fDE3MTQ2MjU5NjF8MHww



图片附件: [100 with CONSTAN.TTF] c_100.png (2012-3-3 11:32:40, 17.63 KB) / 下载次数 879
http://www.tcax.org/forum.php?mod=attachment&aid=MzU3fDcxZTZjNjBjfDE3MTQ2MjU5NjF8MHww



图片附件: [119 with AGENCYR.TTF] a_119.png (2012-3-3 11:32:40, 7.54 KB) / 下载次数 878
http://www.tcax.org/forum.php?mod=attachment&aid=MzU2fDU4Y2E3MDI1fDE3MTQ2MjU5NjF8MHww



图片附件: [118 with AGENCYR.TTF] a_118.png (2012-3-3 11:32:40, 8.85 KB) / 下载次数 930
http://www.tcax.org/forum.php?mod=attachment&aid=MzU1fGFlZjNlYjUxfDE3MTQ2MjU5NjF8MHww



图片附件: [100 with AGENCYR.TTF] a_100.png (2012-3-3 11:32:40, 7.94 KB) / 下载次数 881
http://www.tcax.org/forum.php?mod=attachment&aid=MzU0fGI0M2EzYTRlfDE3MTQ2MjU5NjF8MHww


作者: アクマ    时间: 2016-1-26 10:04:17

论坛里有clip的使用教程吗?
作者: milkyjing    时间: 2016-2-12 22:33:25

アクマ 发表于 2016-1-26 10:04
论坛里有clip的使用教程吗?

木有,你寫一個
作者: Det.Rush    时间: 2016-2-14 09:23:38

アクマ 发表于 2016-1-26 10:04
论坛里有clip的使用教程吗?

python的话看到这个,不知道是不是你想要的

↑↑原文链接↑↑

附上Aegisub标签说明
矩形蒙板 Clip(rectangle)
\clip (<x1>, <y1>, <x2>, <y2>) 【只有矩形内的内容被显示】
*默认为矩形,以 (x1, y1), (x2, y2) 分别为对角线端点坐标。
e.g. \clip (0, 0, 704, 245)

[扩]●矩形蒙板 Clip(rectangle)
\iclip (<x1>, <y1>, <x2>, <y2>) 【只有矩形内的内容不被显示】
*默认为矩形,以(x1, y1), (x2, y2) 分别为对角线端点坐标。
*iclip的影响效果是整行、无视代码放置位置的。
e.g. \iclip (0, 0, 704, 245)

●图形蒙板 Clip (vector drawing)
\clip (<drawing commands>)
\clip (<scale>, <drawing commands>)
[扩]\iclip(<drawing commands>)
[扩]\iclip(<scale>, <drawing commands>)
*iclip的影响效果是整行、无视代码放置位置的。
*代码使用方法、效果与Clip (rectangle) 一致,请结合Drawing tags自己探索。
e.g. \clip (1, m 50 0 b 100 0 100 100 50 100 b 0 100 0 0 50 0)
【绘图1:1,显示圆内字幕】


作者: アクマ    时间: 2016-2-17 20:23:01

Det.Rush 发表于 2016-2-14 09:23
python的话看到这个,不知道是不是你想要的

↑↑原文链接↑↑

好像.....
唔~謝謝~你是個好人(233
作者: アクマ    时间: 2016-2-17 20:25:35

milkyjing 发表于 2016-2-12 22:33
木有,你寫一個

別鬧
作者: 多久之后    时间: 2016-4-27 09:34:29

表示没有看懂..




欢迎光临 TCAX 字幕特效制作工具官方论坛 | ASS | TCAS | Python | Aegisub | Lua (http://www.tcax.org/) Powered by Discuz! X2