相关IMG样本已私下发送。
列表如下:
"new: Map/Obj/_Canvas/bossMalitia.img/boss/portal/Portal.png": "Not enough bytes have been read. (actual:2795472, expected:2805120)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver.png": "Not enough bytes have been read. (actual:4151376, expected:4161584)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver_2.png": "Not enough bytes have been read. (actual:4135012, expected:4145152)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver_3.png": "Not enough bytes have been read. (actual:3528432, expected:3532096)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver_4.png": "Not enough bytes have been read. (actual:4019184, expected:4031280)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver_5.png": "Not enough bytes have been read. (actual:4036080, expected:4048144)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver_6.png": "Not enough bytes have been read. (actual:4036080, expected:4048144)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver_7.png": "Not enough bytes have been read. (actual:4021848, expected:4031920)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver_8.png": "Not enough bytes have been read. (actual:4021848, expected:4031920)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver_9.png": "Not enough bytes have been read. (actual:4021848, expected:4031920)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver_10.png": "Not enough bytes have been read. (actual:4021848, expected:4031920)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver_11.png": "Not enough bytes have been read. (actual:4021848, expected:4031920)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver_12.png": "Not enough bytes have been read. (actual:4059864, expected:4072000)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver_13.png": "Not enough bytes have been read. (actual:4048128, expected:4056160)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver_14.png": "Not enough bytes have been read. (actual:4048128, expected:4056160)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver_15.png": "Not enough bytes have been read. (actual:4052160, expected:4064240)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver_16.png": "Not enough bytes have been read. (actual:3769136, expected:3777312)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver_17.png": "Not enough bytes have been read. (actual:3770980, expected:3784704)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver_18.png": "Not enough bytes have been read. (actual:3674720, expected:3686256)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver_19.png": "Not enough bytes have been read. (actual:3674720, expected:3686256)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver_20.png": "Not enough bytes have been read. (actual:3674720, expected:3686256)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver_21.png": "Not enough bytes have been read. (actual:3885480, expected:3895232)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver_22.png": "Not enough bytes have been read. (actual:4036080, expected:4048144)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver_23.png": "Not enough bytes have been read. (actual:4108704, expected:4112768)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver_24.png": "Not enough bytes have been read. (actual:3732256, expected:3739632)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver_25.png": "Not enough bytes have been read. (actual:3721192, expected:3724880)",
"new: Mob/BossPattern/_Canvas/BossMalitia.img/3001/000/smash/feron_4.1ver_26.png": "Not enough bytes have been read. (actual:914872, expected:915824)"
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END
- 最新
- 最热
只看作者看起来没毛病
推送了一个更新。
目前方案:切除无效尺寸,无论对于预览还是保存,都仅解码有效数据。
理论上对于骨骼的uv计算会出现问题,理论上uv和纹理加载都是按照atlas文件中声明的大小去处理的,如果atlasPage定义的大小和实际加载后的大小不一致,后续绘制是必定会出现偏差的。
实际效果需要提供完整的spine声明才能验证,目前wc的TextureLoader和SpineRenderer都没处理这个差异。
初步结论:新的客户端中使用了非标准大小的BC7纹理,以及自定义的像素数据编码。
我们拿第二张图举例,它的原始尺寸为2043x2035,宽高都不是4的倍数,而BC纹理格式是按照4x4大小的块进行编码,并且按行列顺序存储到文件的。
那么4151376是怎么来的呢?实际上4151376=2043x2032,也就是说,图片切掉了底部3个像素行,并且在每行添加了一些padding,实际有效数据大小只有2040*2032。
如图所示,蓝色阴影的部分是NX擅自添加的填充数据,黑色阴影部分数据被省略。
目前没有足够的样本证明NX对于所有BC格式纹理都使用了一样的处理方式,所以wc计划只修复BC7,其他格式后来碰到再说。
不过修复后来还会存在许多细节问题。
能正确地显示和保存只是第一步,我们还要思考游戏中是如何使用这张纹理的。如果这些纹理是被用于骨骼动画,还需要思考擅自调平纹理大小会不会影响骨骼坐标计算。此外也要思考保存到png时是否需要对齐尺寸或切掉无效数据,texture和canvas尺寸不一致时会不会产生副作用或无法预期的bug等等。