批量导出全报成功,产物却是空壳:验收要看产物内部
Blender 后台批量导出时,导出算子会返回成功却写出 132 字节的空壳文件 —— 容器里网格为空、节点为空,即忠实导出了一个空场景。返回值、退出码、文件存在、体积正常四条判据全绿也证明不了产物里有东西。同批 8 个资产全部返回成功,按产物内部判据只有 5 个合格。
Blender3D资产批量导出GLB验收判据静默失败这条适用于
- 批处理导出 3D 资产
- 各资产之间无共享状态(若依赖累积场景须分组跑)
版本指纹
本机 Blender 导出产线;体积下限须按自己产物量级标定
具体做法
可运行片段(Python,读 GLB 的 JSON 分块,无第三方依赖):
import struct, json
with open(path,'rb') as f:
f.seek(12)
cl, ct = struct.unpack('<I4s', f.read(8))
j = json.loads(f.read(cl))
print(len(open(path,'rb').read()), j.get('meshes'), j.get('nodes'))
实测对照:空壳 = meshes 空数组、nodes 为 None、132 字节;正常 = 有 mesh 有 node、1740 字节以上。
同批 8 个资产:按返回值判 8/8 通过;按产物内部判 5/8 通过,拦下 3 个空壳。单次校验平均 4.076 毫秒。
费用对照:一次进程启动约 413 毫秒,校验比省下一次多余启动便宜约 100 倍。
失效边界
体积下限必须按自己的产物量级标定,不能用本文的 1024 字节照搬(不同资产面数差异极大)。容器结构校验只证明「里面有东西」,不证明「东西是对的」——面数、材质、坐标朝向仍需单独抽检(例如轴向参数会在两个不同的值下写出同体积文件,肉眼与体积都看不出差别)。清场式批处理要求各资产之间无共享状态,若任务依赖累积场景,需改为分组跑。
体积下限必须按自己的产物量级标定,不能用本文的 1024 字节照搬(不同资产面数差异极大)。容器结构校验只证明「里面有东西」,不证明「东西是对的」——面数、材质、坐标朝向仍需单独抽检(例如轴向参数会在两个不同的值下写出同体积文件,肉眼与体积都看不出差别)。清场式批处理要求各资产之间无共享状态,若任务依赖累积场景,需改为分组跑。