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

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

[已解决] tcax停止工作 [复制链接]

Rank: 5Rank: 5

跳转到指定楼层
楼主
发表于 2012-6-6 22:15:37 |只看该作者 |倒序浏览
本帖最后由 jijidata 于 2012-6-7 15:51 编辑

问题现象:在使用[youkaze]012_Hyouka_ED py中的的第二个特效时发生错误

4.png
3.png
2.png
1.png

补充:在使用tcax_1.0.0_sp1 的tcaxLib.pyd替换tcax_1.1.9_sp1的tcaxLib.pyd后,程序工作正常
5.png

引起出错部分的脚本代码
  1.   if _i > 1 and _i < 7:
  2.         
  3.         dx = _x - int(_a / 2 + 0.5)
  4.         dy = _y - int(_Fs / 2 + 0.5)
  5.    
  6.         outline = TextOutlinePoints(Font, _txt, 1.0)
  7.         
  8.         num = len(outline)
  9.         dur = 100
  10.         for i in range(num):
  11.             CIR=RandCir2(_x, _y, 30, 34)
  12.             ts = _BT + dur * i / num
  13.             te = _ET
  14.             x = dx + outline[i][0]
  15.             y = dy + outline[i][1]
  16.             B = randint(-100,100)
  17.             
  18.             ass_main(ASS_BUF, SubL(ts-20, _BT+_SK, 1, Pix_Style), an(7)+pos(x, y) + alpha1(0) + alpha3(150) + bord(1.5) + shad(0) + color3('EC487C') + color1('EC487C') + fad(200, 0) + blur(1.5), PixPt())
  19.             ass_main(ASS_BUF, SubL(_BT+_SK, _BT+_SK+_KT+20, 1, Pix_Style), an(7)+mov(x, y, CIR[0], CIR[1]) + alpha1(0) + alpha3(150) + bord(1.5) + shad(0) + color3('EC487C') + color1('ED00BA') + fad(0, 300) + blur(1.5), PixPt())

  20.    
  21.         #points = gfGetPoints(GdiFont, _txt)  #GDIfont

  22.         #PIX = PixFromPoints(points)   #GDIfont
  23.    
  24.         PIX = TextPix(Font, _txt)
  25.         InitPosX = _x - int(_a / 2 + 0.5) + PIX[0][0]        # 第一个像素的X轴坐标
  26.         InitPosY = _y - int(_Fs / 2 + 0.5) + PIX[0][1]        # 第一个像素的Y轴坐标
  27.         for h in range(PIX[1][1]):                                # 开始纵向扫描
  28.             PosY  = InitPosY + h
  29.                                       # 当前像素Y轴坐标
  30.             for w in range(PIX[1][0]):                        # 开始横向扫描
  31.                 PosX = InitPosX + w
  32.                 X = PosX-randint(-50,50)
  33.                 Y = PosY-randint(-50,50)                        # 当前像素X轴坐标
  34.                 idx  = 4 * (h * PIX[1][0] + w)                # 脚标
  35.                 PixR = PIX[2][idx + 0]                        # 当前像素的红色分量
  36.                 PixG = PIX[2][idx + 1]                        # 当前像素的绿色分量
  37.                 PixB = PIX[2][idx + 2]                        # 当前像素的蓝色分量
  38.                 PixA = PIX[2][idx + 3]                        # 当前像素的透明度
  39.                 if PixA != 0:                                # 如果当前像素不为透明则进行如下操作
  40.                     rnd = randint(-30,30)
  41.                     R = randint(-100,100)
  42.                     H = randint(-10,10)

  43.                     ass_main(ASS_BUF, SubL(int(_BT+_SK+w*(_KT/PIX[1][0]))+H,int(_BT+_SK+150+rnd+w*(_KT/PIX[1][0])),1, Pix_Style),an(7)+mov(PosX,PosY,PosX-20+rnd,PosY)+fad(0,300+R+rnd)+alpha(255-PixA)+shad(0)+bord(1)+blur(1)+org(_x,_y)+color1("FFFFFF")+frx(0)+t(500,0,frx(360)+color3('FFA739')), "{\p5}m -5 -15 l -15 0 l -6 7 l 9 12 l 5 4 l 13 -13 ")
  44.                
  45.                     ass_main(ASS_BUF, SubL(_BT,int(_BT+_SK+w*(_KT/PIX[1][0]))+H,1, Pix_Style),an(7)+pos(PosX,PosY)+shad(0)+bord(0)+alpha(255-PixA)+color1("FFFFFF")+fad(200,0), PixPt())
复制代码
tcc:
  1. # tcc file version

  2. < tcc file version = 1.000 >

  3. # mode configuration

  4. < inherit ass header = false >
  5. < k mode = syllable >
  6. < text layout = horizontal >
  7. < tcaxpy init = true >
  8. < tcaxpy user = ture >
  9. < tcaxpy fin = true>

  10. # py settings
  11. < py file = D:\SubClub\tcax\scripts\ALL\youkaze-012-.py >    < beg line = 1 >    < end line = 0 >





  12. # main settings

  13. < k-timed ass file = XXX_k.ass >
  14. < font file = DF顔真卿体W7.ttc >    < font face id = 2 >    < font size = 30 >
  15. < fx width = 1920 >    < fx height = 1080 >    < fx fps = 23.976 >
  16. < alignment = 2 >
  17. < x offset = 30 >    < y offset = 30 >
  18. < spacing = 0 >    < space scale = 1.000 >


  19. # style settings

  20. < font face name = "" >
  21. < bord = 2 >    < shad = 0 >
  22. < primary color = DA84FB >    < secondary color = 00AAFF >    < outline color = FFFF00 >    < back color = 000000 >
  23. < primary alpha = 0 >    < secondary alpha = 0 >    < outline alpha = 0 >    < back alpha = 100 >

  24. # additional settings

  25. < blur = 1.000 >
复制代码

Rank: 5Rank: 5

沙发
发表于 2012-6-7 13:51:18 |只看该作者
第一个和第三个特效正常

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

板凳
发表于 2012-6-7 15:08:41 |只看该作者
感谢季季提供的详细反馈。测试的结果是,该问题是由119sp1的
4. tcaxLib.pyd 更新points结构(由PixPoints()函数返回), ((x, y, a), (x, y, a), ...), 其中a为不透明度

这个更新所造成的改动,对函数TextOutlinePoints测试不完全引起的。(也就是说sp1的TextOutlinePoints这个函数有Bug,119的可以正常使用)

临时解决方案是:(重新下载)使用119,升级sp1,不替换tcaxLib.pyd。即可。
该Bug的解决下次升级会放出的。

Moderator

youkaze

Rank: 5Rank: 5

地板
发表于 2012-6-7 15:22:44 |只看该作者
……如牛奶大说的升级sp1的时候保留之前的1.1.9版本的tcaxLib.pyd……

PS:我个人其实没升级到SP1(逃

Rank: 5Rank: 5

5#
发表于 2012-6-7 15:51:00 |只看该作者

RE: tcax停止工作

milkyjing 发表于 2012-6-7 15:08
感谢季季提供的详细反馈。测试的结果是,该问题是由119sp1的

这个更新所造成的改动,对函 ...

ok~找到原因就好~

Rank: 5Rank: 5

6#
发表于 2012-6-7 16:34:21 |只看该作者
milkyjing 发表于 2012-6-7 15:08
感谢季季提供的详细反馈。测试的结果是,该问题是由119sp1的

这个更新所造成的改动,对函 ...

都好牛逼,找bug的,解决bug的- -

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

7#
发表于 2012-6-20 15:27:41 |只看该作者
本Bug已修复。。。等下一版本

Rank: 4

8#
发表于 2012-7-14 19:19:13 |只看该作者
原来我机子还是给力的

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

9#
发表于 2012-8-4 00:53:21 |只看该作者

Rank: 5Rank: 5

10#
发表于 2012-8-4 04:48:28 |只看该作者
本帖最后由 jijidata 于 2012-8-4 05:08 编辑
milkyjing 发表于 2012-8-4 00:53
1.2.0 已解决该问题

http://www.tcax.org/forum.php?mod=viewthread&tid=13


又有新的问题了
1.png
tcc什么的都跟原来一样....
1~.png
然后解决方法...用上一版本版本的tcax.py就可解决
1

查看全部评分

Rank: 5Rank: 5

11#
发表于 2012-8-4 05:21:38 |只看该作者
milkyjing 发表于 2012-8-4 00:53
1.2.0 已解决该问题

http://www.tcax.org/forum.php?mod=viewthread&tid=13

并且
http://www.tcax.org/forum.php?mo ... &extra=page%3D1
这个还是如此....难道我真的算是奇葩??

Rank: 4

12#
发表于 2012-8-4 08:09:42 |只看该作者
本帖最后由 youkaze 于 2012-8-4 09:01 编辑

哈这次我也遇到了问题

更新 tcaxPy.py     - 修改了ASS标签函数, fs, fax, fay, frx, fry, frz, fr, 支持接受浮点数参数  好吧这个问题- -

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

13#
发表于 2012-8-4 10:51:39 |只看该作者
jijidata 发表于 2012-8-4 04:48
又有新的问题了

tcc什么的都跟原来一样....

噗,这个是我大意了,Copy了代码,忘记改变量名 Orz...

和四月说的

更新 tcaxPy.py     - 修改了ASS标签函数, fs, fax, fay, frx, fry, frz, fr, 支持接受浮点数参数  好吧这个问题- -

一样。更新一下重新打包- -

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

14#
发表于 2012-8-4 10:52:05 |只看该作者
youkaze 发表于 2012-8-4 08:09
哈这次我也遇到了问题

更新 tcaxPy.py     - 修改了ASS标签函数, fs, fax, fay, frx, fry, frz, fr, 支持 ...

忘记改变量名了 Orz。。。

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

15#
发表于 2012-8-4 10:52:53 |只看该作者
jijidata 发表于 2012-8-4 05:21
并且
http://www.tcax.org/forum.php?mod=viewthread&tid=444&extra=page%3D1
这个还是如此....难道我 ...

有把tcAudio模块拖到120的util下么?

我真的没发现别的问题。要不上Q说吧

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

16#
发表于 2012-8-4 13:59:41 |只看该作者
jijidata 发表于 2012-8-4 04:48
又有新的问题了

tcc什么的都跟原来一样....


该低级失误已修复,到 http://www.tcax.org/forum.php?mod=viewthread&tid=13 重新下载。
请谅解。感谢及时反馈问题。

Administrator

TCAX Dev.

Rank: 7Rank: 7Rank: 7

17#
发表于 2012-8-5 17:03:18 |只看该作者
jijidata 发表于 2012-8-4 05:21
并且
http://www.tcax.org/forum.php?mo ... &extra=page%3D1
这个还是如此....难道我 ...


从结论上来说就是:安装工程中的字体

----------------- 以下是Debug之旅 ----------------

该问题在经过 四月,疯子,以及猪猪的测试帮助下,总算是让我得出了一定的结论(虽然是个让人蛋疼的结论)。

结论:不同的机子,GDI模块有一定的差异,可能是代码层面的,也可能是字体什么的额外因素(还没排查)。

理由:3位测试出问题的会员,虽然是同样的一个错误,但进度条停的位置不同:季季 12.09%, 四月 22.56%, 疯子 3.66%。但每个会员独立测试多次都是停在同一进度(说明代码本身没有随机性,也说明了和不同运行环境有一定关联)。又总结了一下出错的代码,用
  1. gf_pt = gfGetPoints(GdiFontThin, _txt)
  2. if len(gf_pt) == 0:
  3.     Pause()
  4. PIX = PixFromPoints(gf_pt)
复制代码
替换第86行的
  1. PIX = PixFromPoints(gfGetPoints(GdiFontThin, _txt))
复制代码
得出的结论是,对于某个文字,被“消减”后得到的点数为0。消减(细化)的代码在第23行
  1. GdiFontThin = gfInitFont(GetVal(val_FontFaceName), _Fs, GetVal(val_Spacing), GetVal(val_SpaceScale), -2.5, False)
复制代码
由此可得出结论:不同环境的GDI差异性造成了这一“神奇”问题。
解决方法:把-2.5改成-2降低消减的程度,从而避免得到的点数为0. 因为尽管存在一定的差异,但差异相对来说肯定是微小的。

-------------- 结论更新 --------------

进一步测试发现,该GDI相关问题,其实是字体问题。虽然TCAX能直接利用工程目录下的字体(不需要安装),但GDI不行,如果未找到指定字体,则会用一个系统默认的字体替代。所以该问题最本质且最直接的解决方法是,安装字体!(将工程目录下的字体拷贝到系统的Fonts文件夹下)不需要修改代码即可执行通过。


Rank: 5Rank: 5

18#
发表于 2012-8-6 04:22:30 |只看该作者
milkyjing 发表于 2012-8-5 17:03
从结论上来说就是:安装工程中的字体。

----------------- 以下是Debug之旅 ----------------

....这结论真让人...无语..
居然是字体安装...
好吧,找到就好
您需要登录后才可以回帖 登录 | 新人加入

GitHub|TCAX 主页

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

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH