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

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

[ASS特效教程入门系列] 二. ASS Mask特效的制作 [复制链接]

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

跳转到指定楼层
楼主
发表于 2011-11-1 17:59:17 |只看该作者 |倒序浏览
说明

本系列教程旨在更好的引导大家使用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

3.31 KB, 下载次数: 4245

Moderator

youkaze

Rank: 5Rank: 5

沙发
发表于 2011-11-1 18:06:51 |只看该作者
顶起 下载试试

Rank: 4

板凳
发表于 2012-1-14 10:16:34 |只看该作者
强烈支持,谢谢分享...

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

地板
发表于 2012-1-14 12:59:40 |只看该作者
殷六侠 发表于 2012-1-14 10:16
强烈支持,谢谢分享...


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

Rank: 5Rank: 5

5#
发表于 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) 有什么作用,修改数值看不出来影响了哪里、

    暂时好像就这么多了,入行不久,请多指教~

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

6#
发表于 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没影响, 做像素字时才有用...
暂时好像就这么多了,入行不久,请多指教~

加油...

Rank: 5Rank: 5

7#
发表于 2012-2-13 09:26:33 |只看该作者
milkyjing 发表于 2012-2-13 00:19
基本上是这样的. 不过在ASS里通常不好移动mask, 所以一般移动的是被mask的物体.

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

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

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

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

贴张图吧……

Rank: 5Rank: 5

9#
发表于 2012-2-14 09:41:02 |只看该作者
1 2

图补上了~

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

10#
发表于 2012-2-14 09:45:30 |只看该作者
six 发表于 2012-2-14 09:41
图补上了~

你是换过字体的吧?

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

Rank: 5Rank: 5

11#
发表于 2012-2-14 09:50:27 |只看该作者
本帖最后由 six 于 2012-2-14 09:51 编辑
milkyjing 发表于 2012-2-14 09:45
你是换过字体的吧?

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


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

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

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

12#
发表于 2012-2-14 10:09:14 |只看该作者
six 发表于 2012-2-14 09:50
换了啊,那个字体包里好像没有。

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

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

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

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

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

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

Rank: 5Rank: 5

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

哦了,没事了,其实是种实际出来的伪立体的效果也挺好看的~

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

14#
发表于 2012-2-14 10:15:16 |只看该作者
你把字体改回 DFMincho-UB.ttc, 或DFMincho-UB_0.ttc 试试?

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

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

15#
发表于 2012-2-14 10:17:34 |只看该作者
six 发表于 2012-2-14 10:12
哦了,没事了,其实是种实际出来的伪立体的效果也挺好看的~

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

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

Rank: 5Rank: 5

16#
发表于 2012-3-3 02:14:17 |只看该作者
也就是1.19里已经不存在9楼的那种问题了?

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

17#
发表于 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

147.42 KB, 下载次数: 3871

测试用例

Rank: 6Rank: 6

18#
发表于 2016-1-26 10:04:17 |只看该作者
论坛里有clip的使用教程吗?

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

19#
发表于 2016-2-12 22:33:25 |只看该作者
アクマ 发表于 2016-1-26 10:04
论坛里有clip的使用教程吗?

木有,你寫一個

正式会员

御坂、凛

Rank: 4

20#
发表于 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,显示圆内字幕】

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

GitHub|TCAX 主页

GMT+8, 2024-4-19 15:11

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH