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

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

[完整特效] [SAI]027_nekogamiED [复制链接]

Administrator

Shanzhai Pro.

Rank: 7Rank: 7Rank: 7

跳转到指定楼层
楼主
发表于 2011-10-22 19:29:06 |只看该作者 |倒序浏览
預覽:http://pan.baidu.com/s/1hqqY9CC#dir/path=%2FSaiyakuFX_Preview
  1. from tcaxPy import *
  2. from extLibs.XXParticleSystem import *

  3. def fr(x):
  4.     X = randint(-x,x)
  5.     return frx(X)+fry(X)+frz(X)

  6. def tcaxPy_Init():
  7.     global _FontFileName
  8.     global _FaceID
  9.     global _Fs
  10.     global _Height
  11.     global Font
  12.     _FontFileName = GetVal(val_FontFileName)
  13.     _FaceID       = GetVal(val_FaceID)
  14.     _Fs           = GetVal(val_FontSize)
  15.     _Height       = GetVal(val_TextHeight)
  16.     Font = InitFont(_FontFileName, _FaceID, _Fs, GetVal(val_Spacing), GetVal(val_SpaceScale), 0xFFFFFF, 0, 0)

  17. def tcaxPy_Main(_i, _j, _n, _BT, _ET, _SK, _KT, _X, _Y, _A, _TXT):

  18.     ASS_BUF = []
  19.     TCS_BUF = []


  20.     t2 = _BT + _SK
  21.     t3 = _BT + _SK + _KT




  22.     dx = _X - int(_A / 2 + 0.5)   
  23.     dy = _Y - int(_Fs / 2 + 0.5)  


  24.     ass_main(ASS_BUF, SubL(t2-10, _ET,20), pos(_X, _Y)+blur(3)+t(0,50,fsc(130,130))+t(50,_KT*10,fsc(100,100))+fad(0,100) , _TXT)

  25.     ass_main(ASS_BUF, SubL(_BT, t2-10), pos(_X, _Y)+blur(3)+fad(100,0) , _TXT)
  26.     if _i < 7:
  27.         for i in range(20):
  28.             ass_main(ASS_BUF, SubL(t2-10, t2+150), move(_X+randint(-10,10), _Y+10+randint(-10,10),_X-50+randint(-50,50), _Y+_Fs/2+30+randint(-50,50))+color1("HDAD5EA")+bord(0)+blur(1)+t(fr(720))+fad(50,300) , RandPolygon(15/6, 23/6, 6))
  29.     n = 40
  30.     if _i >= 13:
  31.         n = 70

  32.     if IsLineChanged(_i):
  33.         global textpath
  34.         textpath = []
  35.     textpath.append([t2, XXPoint(x = _X, y = _Y, start = t2 / 100, end = t3 / 100)])


  36.     if  _j==_n-1 and _i > 6:
  37.         num = len(textpath) - 1
  38.         for i in range(num):
  39.             if textpath[i][1].end < textpath[i + 1][1].start:
  40.                 textpath[i][1].end = textpath[i + 1][1].start
  41.             textpath[num][1].end = _ET
  42.         emitterList = []
  43.         for pair in textpath:
  44.             emitterList.append(XXPoint(start = pair[1].start,
  45.                                        end = pair[1].end,
  46.                                        x = pair[1].x + RandomDouble(-20, 20),
  47.                                        y = pair[1].y + RandomDouble(-20, 20)))
  48.         forceCurve = CompositeCurve(minTime = _BT / 100, maxTime = _ET / 100 + 10)
  49.         lastag = 0
  50.         time = forceCurve.minTime
  51.         maxTime = forceCurve.maxTime
  52.         while time <= maxTime:
  53.             ag = RandomDouble(0, math.pi * 2)
  54.             while abs(ag - lastag) < math.pi * 0.5 or abs(ag - lastag) > math.pi * 1.5:
  55.                 ag = RandomDouble(0, math.pi * 2)
  56.             lastag = ag
  57.             x = 1500 * math.cos(ag)
  58.             y = 800 * math.sin(ag)
  59.             forceCurve.AddCurve(time, time + 0.7, Line(x0 = x, y0 = y, x1 = 0, y1 = 0, acc = 0.7))
  60.             time += 0.7

  61.         emitter = XXEmitter(n, emitterList)
  62.         forceField = XXForceField(forceCurve)
  63.         gravityPosition = XXGravityPosition()
  64.         xxps = XXParticleSystem(emitter = emitter,
  65.                                 forceField = forceField,
  66.                                 startTime = _BT / 100,
  67.                                 endTime = _ET / 100,
  68.                                 interpolationPrecision = 0.01,
  69.                                 resistance = 0.04,
  70.                                 repulsion = -3600,
  71.                                 gravity = 0,
  72.                                 gravityPosition = gravityPosition)
  73.         result = xxps.RenderT()
  74.         for pKey in result:
  75.             s = RandPolygon(15/6, 23/6, 6)
  76.             ptstr = "{\\p1}m 0 0 l 1 0 1 1 0 1"
  77.             ptcol = 'HDAD5EA'
  78.             pValue = result[pKey]
  79.             ass_main(ASS_BUF, SubL(100 * pKey.born, 100 * (pKey.born + pKey.life), 25, Pix_Style), '', \
  80.                             '{' + pos(-100, -100) + pValue[1] + '}' + ptstr + "\\N{\\r" + \
  81.                             pValue[0] + '}' + ptstr + '{\\r' + alpha1(34) + alpha3(119) + blur(1) + bord(0) + color1(ptcol) + '}' + s)



  82.     return (ASS_BUF, TCS_BUF)   

  83. def tcaxPy_Fin():
  84.     FinFont(Font)
复制代码
1

查看全部评分

正式会员

爱理人士

Rank: 4

沙发
发表于 2011-12-20 15:16:21 |只看该作者
运行时提示第34行出错啊
mask.jpg

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

板凳
发表于 2011-12-20 15:49:56 |只看该作者
5231251 发表于 2011-12-20 15:16
运行时提示第34行出错啊

直接把那一行注释掉吧, 我看了下脚本中好像没有哪个地方使用了 MASK 变量.

正式会员

爱理人士

Rank: 4

地板
发表于 2011-12-20 16:14:50 |只看该作者
注释掉了可以了  就是编译的时候变得好慢......

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

5#
发表于 2011-12-20 16:23:36 |只看该作者
5231251 发表于 2011-12-20 16:14
注释掉了可以了  就是编译的时候变得好慢......

XXParticleSystem模块效率没优化过, 所以有点慢...

Administrator

Shanzhai Pro.

Rank: 7Rank: 7Rank: 7

6#
发表于 2011-12-20 23:19:46 |只看该作者
嗯 去掉好了 解決outline的bug 寫的測試用函數 特效里沒用到

Rank: 5Rank: 5

7#
发表于 2012-3-2 01:19:47 |只看该作者
话说这个不是一般的慢啊···
有解决方法么?

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

8#
发表于 2012-3-2 01:32:29 |只看该作者
忘却の小伊 发表于 2012-3-2 01:19
话说这个不是一般的慢啊···
有解决方法么?

xxparticle模塊沒優化過,是比較慢的……不過基本不會有誰去用它的。
解決辦法么?生成期間去喝杯咖啡吧 :-D
您需要登录后才可以回帖 登录 | 新人加入

GitHub|TCAX 主页

GMT+8, 2024-11-22 06:20

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH