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

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

ASS像素纹理 带边框的 [复制链接]

Moderator

youkaze

Rank: 5Rank: 5

跳转到指定楼层
楼主
发表于 2012-12-5 17:01:29 |显示全部楼层 |倒序浏览

hi 大家好! 我是 四月一日 这个教程是为 tcax 发布的特效教程
欢迎大家使用 短小精干 的ASS特效代码!


今天的代码是ASS像素纹理

1.jpg

见以下代码

  1. from tcaxPy import *
  2. from pixLibs.ImageStone.pixStone import *

  3. def tcaxPy_Init():
  4.     global _FD          # 一帧的时间
  5.     global _Fs
  6.     global _TextLength
  7.     global Font
  8.     global FontOut
  9.     global PIX_tex
  10.     global PIX_tex2
  11.     _FD = 1000 / GetVal(val_FXFPS)
  12.     _Fs = GetVal(val_FontSize)
  13.     _TextLength = GetVal(val_TextLength)
  14.     _FontFileName = GetVal(val_FontFileName)
  15.     _FaceID       = GetVal(val_FaceID)
  16.     Font    = InitFont(_FontFileName, _FaceID, _Fs, GetVal(val_Spacing), GetVal(val_SpaceScale), MakeRGB(0, 0, 0), 0, 0)  #文字主體
  17.     FontOut = InitFont(_FontFileName, _FaceID, _Fs, GetVal(val_Spacing), GetVal(val_SpaceScale), MakeRGB(0, 0, 0), 2, 0)  #文字邊框
  18.     PIX_tex = ImagePix(abspath('fire_texture.png'), _Fs, 0)   #文字主體圖片
  19.     PIX_tex2 = ImagePix(abspath('tex2.png'))     #文字邊框圖片
  20.    


  21. def tcaxPy_Fin():
  22.     FinFont(Font)
  23.     FinFont(FontOut)

  24. def tcaxPy_Main(_i, _j, _n, _BT, _ET, _SK, _KT, _x, _y, _a, _txt):

  25.     ASS_BUF  = []        # 保存ASS特效
  26.     TCAS_BUF = []        # 保存TCAS特效

  27.     ##### 主要特效编写操作 #####

  28.     dx = _x - int(_a / 2 + 0.5)         # 一个固定操作, 将an5的坐标转换为an7
  29.     dy = _y - int(_Fs / 2 + 0.5)        # ASS特效默认采用an5坐标, TCAS特效则采用an7坐标


  30.     PIX_t = TextPix(Font, _txt)             # 获取文字
  31.    
  32.     dx = _x - int(_a / 2 + 0.5) + PIX_t[0][0]
  33.     dy = _y - int(_Fs / 2 + 0.5) + PIX_t[0][1]
  34.     dur = _KT * 10
  35.     ts1 = _BT
  36.     te1 = _BT + _SK
  37.    
  38.     PIX_t = PixTexture(PIX_t, PIX_tex)      # 增加主體纹理
  39.     PIX_out = TextPix(FontOut, _txt)        # 获取边框
  40.     PIX_out = PixTexture(PIX_out, PIX_tex2)      #增加邊框紋理
  41.     PIX_out = PixColorMul(PIX_out, 1, 1, 1, 1)    # 增加邊框透明度 第四個數字不用邊框紋理的話可以設置為0 這樣能節省ASS體積
  42.     PIX_out = PixBlur(PIX_out, 0)           # 增加邊框模糊
  43.     PIX_ori = CombinePixs(PIX_out, PIX_t)   # 混合文字主体和边框 (边框作底)
  44.     points = PixPoints(PIX_ori)
  45.     pt_num = len(points)

  46.     center = _n / 2 - 0.5      # center index of 5 texts is 2, center index of 6 is 2.5
  47.     x = dx + 50 * (_j - center) / center
  48.     y = dy + 10
  49.    
  50.     for i in range(pt_num):
  51.         w = points[i][0]
  52.         h = points[i][1]
  53.         idx  = 4 * (h * PIX_ori[1][0] + w)                # 脚标
  54.         PixR = PIX_ori[2][idx + 0]                        # 当前像素的红色分量
  55.         PixG = PIX_ori[2][idx + 1]                        # 当前像素的绿色分量
  56.         PixB = PIX_ori[2][idx + 2]                        # 当前像素的蓝色分量
  57.         PixA = PIX_ori[2][idx + 3]                        # 当前像素的透明度
  58.         
  59.         x = dx + points[i][0]
  60.         y = dy + points[i][1]

  61.         EFT1 = an(7)+shad(0)+bord(0)+pos(x,y)+alpha(255-PixA)+color1(FmtRGB(PixR,PixG,PixB))  #這裡的顏色就不要去設置什麽COLOR1 COLOR3了
  62.         ass_main(ASS_BUF, SubL(ts1,te1,3,Pix_Style), EFT1, PixPt())
  63.         

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

  65.     return (ASS_BUF, TCAS_BUF)
复制代码
使用方法: 首先你得准备好你一套 套图中的随便两张 格式必须是PNG的 至于图的内容 也可以很工口很baoli然后简单设置下 透明度和blur值就OK了什么地方设置代码里有写。
之后的事就看你自己的想象来编写 ASS_MAIN里面的内容了。

ASS纹理能让图像粒子画这点MOD挂图是不能的 当然 代价就是ASS体积略大影响渲染效率 不过机器好的人也可以无视
要说的就这么多 嗯!

下面是例子 和脚本下载
脚本: asswenli.py (3.12 KB, 下载次数: 2457)
例子:http://www.tcax.org/forum.php?mod=viewthread&tid=568
4

查看全部评分

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

GitHub|TCAX 主页

GMT+8, 2024-5-6 18:26

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH