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

 找回密码
 新人加入
查看: 9767|回复: 18

[ASS特效教程入门系列] 一. 像素字特效的制作 [复制链接]

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2011-11-1 16:47:26 |显示全部楼层
说明

本系列教程旨在更好的引导大家使用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.     # 像素字特效固定代码框架 开始
  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, _end, 0, Pix_Style), pos(posX, posY) + color1(FmtRGB(pixR, pixG, pixB)) + alpha1(255 - pixA), PixPt())
  36.     # 像素字特效固定代码框架 结束

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

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

在理解了上述代码的基础上, 可以进一步学习具体的使用方法.
saiyaku写了不少具体效果, 可以对着预览视频, 找到相应的脚本.

视频 http://www.tcax.org/forum.php?mod=viewthread&tid=44
代码 http://www.tcax.org/forum.php?mo ... typeid&typeid=3


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


test_pixelate_text.zip

3.63 KB, 下载次数: 2780

正式会员

妖木

Rank: 4

发表于 2011-11-1 17:32:42 |显示全部楼层
亲……这个好……今晚上找你教导一下啊……某个圆圈函数搞晕了

Rank: 4

发表于 2011-11-1 17:46:39 |显示全部楼层
终于等到M大关于ASS特效方面的教程了,这个是一定要支持的。

Rank: 4

发表于 2011-11-15 22:53:24 |显示全部楼层
表示手机党潜回来学习了= =

Rank: 4

发表于 2011-12-13 10:52:00 |显示全部楼层
支持一下

Rank: 4

发表于 2012-5-13 08:28:08 |显示全部楼层
非常感谢文字解释说明,有爱

Rank: 4

发表于 2013-2-18 09:11:25 |显示全部楼层
呜咕。。问一下制作像素字和字体有关吗。。。偶换了一个微软雅黑的字体(比较大众化的字体)就什么效果也没有。。就把字幕现在在_X,_Y     

Rank: 4

发表于 2013-2-18 17:58:35 |显示全部楼层
呜咕。。像素字是什么意思呀0.0?。。。能帮偶介绍一下呀

Moderator

疯子

Rank: 5Rank: 5

发表于 2013-2-18 19:21:26 |显示全部楼层
爱雪音MiKu 发表于 2013-2-18 17:58
呜咕。。像素字是什么意思呀0.0?。。。能帮偶介绍一下呀

字体切割成基本的像素点,就是像素字,比如说让字体像沙子一样散开,就是用的像素字

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2013-2-18 19:26:00 |显示全部楼层
爱雪音MiKu 发表于 2013-2-18 09:11
呜咕。。问一下制作像素字和字体有关吗。。。偶换了一个微软雅黑的字体(比较大众化的字体)就什么效果也没 ...

那個就是預期效果了, 這段代碼的含義就是用一個個獨立的像素"堆"出一個文字.

你可以修改修改下_k.ass文件, 只保留一個文字. 然後生成一下, 記事本打開生成的ASS文件. 找不到任何歌詞的...

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2013-2-18 19:28:09 |显示全部楼层
爱雪音MiKu 发表于 2013-2-18 17:58
呜咕。。像素字是什么意思呀0.0?。。。能帮偶介绍一下呀


"後記" 中的鏈接為什麼不點開看一下呢?

另外, 這個也可以作為參考.
http://www.tcax.org/forum.php?mod=viewthread&tid=382

p.s. 代碼共享區有不少, 多發掘, 少伸手.

Rank: 4

发表于 2013-2-18 20:07:34 |显示全部楼层
渣渣疯子 发表于 2013-2-18 19:21
字体切割成基本的像素点,就是像素字,比如说让字体像沙子一样散开,就是用的像素字 ...

呜咕。。明白。。

Rank: 4

发表于 2014-12-16 20:41:46 |显示全部楼层
为什么我预览AVS显示失败?

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2014-12-16 21:18:41 |显示全部楼层
stacer 发表于 2014-12-16 20:41
为什么我预览AVS显示失败?

可以把错误信息发上来

Rank: 6Rank: 6

发表于 2016-1-26 11:24:17 |显示全部楼层
码一个 回家看

Rank: 6Rank: 6

发表于 2016-1-28 09:59:14 |显示全部楼层
今日打卡

Rank: 4

发表于 2016-10-10 19:53:22 |显示全部楼层
感谢教程

Rank: 4

发表于 2016-11-7 09:07:15 |显示全部楼层
学习了

Rank: 4

发表于 2017-1-7 23:50:41 |显示全部楼层
是不是学TCAX,最好是了解下python?我打算再学下这门语言来方便做ASS特效

Rank: 4

发表于 2020-11-5 11:07:15 |显示全部楼层
补一篇相关资料:
如何从truetype字体文件中提取出贝塞尔曲线?
https://www.zhihu.com/question/46732171/answer/134550354
您需要登录后才可以回帖 登录 | 新人加入

GitHub|TCAX 主页

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

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH