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

 找回密码
 加入社区
查看: 3954|回复: 15

TCAS特效 MASK example [复制链接]

Administrator

Shanzhai Pro.

Rank: 7Rank: 7Rank: 7

发表于 2012-1-20 22:59:52 |显示全部楼层
使用tcax 1.1.8或更新版本,如果是舊版本,運行此腳本之前 請先升級一次 覆蓋即可
tcaxLib.zip (314.96 KB, 下载次数: 1028)

完整工程包 test.7z (0 Bytes, 下载次数: 1290)

預覽時請加載tcasfilter.dll 在tcax主目錄里有
腳本如下
  1. from tcaxPy import *
  2. ##### 额外的一些库 #####
  3. from collections import deque
  4. ##### 初始化函数, 用于设定一些全局变量 #####
  5. def tcaxPy_Init():
  6.     ##### 声明全局变量 #####
  7.     global _FontFileName        # 字体文件名
  8.     global _FaceID                # 字体Face序号
  9.     global _Fs                        # 字体大小
  10.     global _TextWidth                # 文字宽度
  11.     global _TextHeight                # 文字高度
  12.     global _TextLength
  13.     global _TextAdvDiff
  14.     global _ResolutionX
  15.     global _ResolutionY
  16.     global _OffsetX
  17.     global _OffsetY
  18.     global _FD                        # 一帧的持续时间, 40毫秒
  19.     global Font                        # 首要字体
  20.     global FontOut                # 字体边框
  21.     ##### 获取预定义的值 #####
  22.     _FontFileName = GetVal(val_FontFileName)
  23.     _FaceID       = GetVal(val_FaceID)
  24.     _Fs           = GetVal(val_FontSize)
  25.     _TextHeight   = GetVal(val_TextHeight)
  26.     _TextWidth    = GetVal(val_TextWidth)
  27.     _TextLength   = GetVal(val_TextLength)
  28.     _TextAdvDiff  = GetVal(val_TextAdvanceDiff)
  29.     _ResolutionX  = GetVal(val_ResolutionX)
  30.     _ResolutionY  = GetVal(val_ResolutionY)
  31.     _OffsetX      = GetVal(val_OffsetX)
  32.     _OffsetY      = GetVal(val_OffsetY)
  33.     _FD           = 1000 / GetVal(val_FXFPS)
  34.     ##### 设置自定义变量的值 #####
  35.     Font    = InitFont(_FontFileName, _FaceID, _Fs, GetVal(val_Spacing), GetVal(val_SpaceScale), 0xFFFFFF, 0, 0)        # 0xFFFFFF为16进制表示的白色
  36.     FontOut = InitFont(_FontFileName, _FaceID, _Fs, GetVal(val_Spacing), GetVal(val_SpaceScale), 0xFFFFFF, 4, 1)        # 最后一个参数置为1表示只提取边框
  37. ##### 结束函数, 用于一些收尾工作 #####
  38. def tcaxPy_Fin():
  39.     ##### 清理一些全局变量 #####
  40.     FinFont(Font)
  41.     FinFont(FontOut)
  42. def tcaxPy_Main(_i, _j, _n, _BT, _ET, _SK, _KT, _X, _Y, _A, _TXT,):
  43.     TCAS_BUF = []
  44.     texture = ImagePix(abspath('x.png'))
  45.     dx = _X - int(_A / 2 + 0.5)         # 一个固定操作, 将an5的坐标转换为an7
  46.     dy = _Y - int(_Fs / 2 + 0.5)        # ASS特效默认采用an5坐标, TCAS特效则采用an7坐标
  47.     PIX  = TextPix(Font, _TXT)
  48.     PIX2 = TextPix(Font, "●")
  49.     PIX2  = PixTexture(PIX2,texture)
  50.     PIX2 = PixBlur(PIX2, 8)
  51.     width = 2                  #原大小
  52.     height =2
  53.     inc_w = _A*3                 #目標大小
  54.     inc_h = _Fs*3
  55.     num = int(10 * (_KT) /_FD)
  56.     for i in range(num):
  57.         x = PIX2[0][0] +randint(-int(_A / 2),int(_A / 2))
  58.         y = PIX2[0][1] +randint(-int(_A / 2),int(_A / 2))
  59.         PIX3 = ((x,y),PIX2[1],PIX2[2])
  60.         f_w = width + inc_w * i / num
  61.         f_h = height + inc_h * i / num
  62.         i_w = int(f_w)
  63.         i_h = int(f_h)
  64.         PIX1 = PixResize(PIX3, i_w, i_h)
  65.         PIX1 = PixMask(PIX1, PIX)           
  66.         t1 = 10 * (_BT+_SK) + _FD * i
  67.         t2 = t1 + _FD
  68.         tcas_main(TCAS_BUF, PIX1, t1, t2, dx, dy, 0)
  69.     num2 = int(10 * (_ET-_BT-_SK-_KT) / _FD)
  70.     for j in range(num2):
  71.         x = PIX2[0][0] +randint(-int(_A / 2),int(_A / 2))
  72.         y = PIX2[0][1] +randint(-int(_A / 2),int(_A / 2))
  73.         PIX4 = ((x,y),PIX2[1],PIX2[2])
  74.         PIX4 = PixResize(PIX4,_A*3, _Fs*3)
  75.         PIX4 = PixMask(PIX4, PIX)
  76.         t3 = 10 * (_BT+_SK+_KT) + _FD * j
  77.         t4 = t3 + _FD   
  78.         tcas_main(TCAS_BUF, PIX4, t3, t4, dx, dy, 0)
  79.     return (None, TCAS_BUF)
复制代码

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2012-1-20 23:04:25 |显示全部楼层
GJ...

p.s. TCAS的Mask效率比ASS的要高很多, 玩法也更丰富...

唯一缺乏的是创新精神(或者EP)啊, 感慨...

Administrator

Shanzhai Pro.

Rank: 7Rank: 7Rank: 7

发表于 2012-1-20 23:07:52 |显示全部楼层
milkyjing 发表于 2012-1-20 23:04
GJ...

p.s. TCAS的Mask效率比ASS的要高很多, 玩法也更丰富...

現在玩法也一般 cario 會玩了之後 就好弄了

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2012-1-20 23:11:43 |显示全部楼层
saiyaku 发表于 2012-1-20 23:07
現在玩法也一般 cario 會玩了之後 就好弄了

PS的话, 单单是Mask, 纹理啥的不就能搞很多效果么...

Administrator

Shanzhai Pro.

Rank: 7Rank: 7Rank: 7

发表于 2012-1-20 23:14:00 |显示全部楼层
milkyjing 发表于 2012-1-20 23:11
PS的话, 单单是Mask, 纹理啥的不就能搞很多效果么...

那不是一類的麼 mask 現在基本來說就罩一個 底下變化 這麼一種玩法

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2012-1-20 23:17:12 |显示全部楼层
saiyaku 发表于 2012-1-20 23:14
那不是一類的麼 mask 現在基本來說就罩一個 底下變化 這麼一種玩法

主要是用来做静态的(文字显示效果), 要动态的话, 还真需要创新

Moderator

疯子

Rank: 5Rank: 5

发表于 2012-1-22 00:28:57 |显示全部楼层
目前唯一一个完全看懂的tcas脚本,支持下

Moderator

youkaze

Rank: 5Rank: 5

发表于 2012-1-24 13:23:15 |显示全部楼层
这个是上次sai大给我写的哪个例子的改进版本么?回家后试试

正式会员

妖木

Rank: 4

发表于 2012-1-24 21:24:49 |显示全部楼层
……我还是等回郑州再看吧
现在看这些都跟白痴一样

Rank: 4

发表于 2012-1-27 19:52:26 |显示全部楼层
表示看懂一部分,支持一下

Rank: 5Rank: 5

发表于 2012-2-28 10:05:39 |显示全部楼层
本帖最后由 six 于 2012-2-28 10:07 编辑

collections , 模块在哪里?
我看py文件里貌似再没有跟这个模块有关的东西,也没见到deque,只有ass文件里有个audio file: xx.mp3.
这样就可以播放了么?
from collections import deque,我把这句话注释掉还能播放音乐、

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

发表于 2012-2-28 10:25:41 |显示全部楼层
six 发表于 2012-2-28 10:05
collections , 模块在哪里?
我看py文件里貌似再没有跟这个模块有关的东西,也没见到deque,只有ass文件里 ...

那個是py自帶的庫,是一些常用數據結構。本腳本確實沒用到,大概是saiyaku忘記删了。

Administrator

Shanzhai Pro.

Rank: 7Rank: 7Rank: 7

发表于 2012-2-28 14:48:11 |显示全部楼层
milkyjing 发表于 2012-2-28 10:25
那個是py自帶的庫,是一些常用數據結構。本腳本確實沒用到,大概是saiyaku忘記删了。 ...

main 以上全複製粘貼的 忘了哪個腳本的了

Rank: 4

发表于 2013-10-21 20:20:56 |显示全部楼层
本帖最后由 yyxxlc 于 2013-10-21 20:22 编辑

sai大我知道这个问题比较诡异....但是绝对不是没事找事问的  这个脚本提供的x.png 这张图怎么看都是正方形的啊 为什么变成mask之后就变成圆形了??!!  有图为证
x3  原图.png

变成PIX之后的.png


不是 难道所有的变成PIX的图片都会变成圆形了么!!

Administrator

Shanzhai Pro.

Rank: 7Rank: 7Rank: 7

发表于 2013-10-22 18:06:24 |显示全部楼层
yyxxlc 发表于 2013-10-21 20:20
sai大我知道这个问题比较诡异....但是绝对不是没事找事问的  这个脚本提供的x.png 这张图怎么看都是正方形 ...

這個腳本什麽效果我已經快忘了
texture = ImagePix(abspath('x.png'))
PIX2 = TextPix(Font, "●")
PIX2  = PixTexture(PIX2,texture)
圖片 先作為texture(紋理)附在了這個上面 這邊改■之類的 應該就會變了
估計寫圓形是爲了仿之前那個ASS圓形漸變的效果吧  
另外不附在PIX2 上 下面直接使用texture 也是可以的 那樣就是圖片原來的形狀
所以如果你想取一些特殊的圖形 事先P好比較好
ASS繪圖的話 是可以利用cario轉成PIX結構的 好像是給了函數來著
嘛 我也沒用過 正常人這種情況也是先P好 而不會選擇ASS繪圖再texture
動態紋理什麽也完全可以 mask在texture的圖片形狀上

Rank: 4

发表于 2013-10-22 21:19:39 |显示全部楼层
本帖最后由 yyxxlc 于 2013-10-22 21:20 编辑
saiyaku 发表于 2013-10-22 18:06
這個腳本什麽效果我已經快忘了
texture = ImagePix(abspath('x.png'))
PIX2 = TextPix(Font, "●")


sai大呜呜呜呜.....我错了 我昨天没看清楚就问了 今早重新看了一遍突然发现有个活生生的●啊!ORZ
于是我的第一反应是立刻到这里来毁尸灭迹的  但是不知道怎么的今天一直连不上网(我真是输给它了!)
等我刚刚连上却发现你已经回了 而且回了这么多(T_T  真心觉得乃真是太好了sai大天使)
我以后一定会更加仔细的 各种羞愧 鞠躬
您需要登录后才可以回帖 登录 | 加入社区

GitHub|TCAX 主页

GMT+8, 2019-10-16 19:16

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH