我有一个名为Assets.blend的Blender文件,包含100多个对象,用于我在Unity中开发的游戏。 当我进行修改时,我运行一个脚本,将每个根对象导出为一个单独的fbx文件。 但是我无法检测哪些已更新,所以每次我必须重新导出每个对象,即使我只创建/修改了1。 运行脚本所需的时间大约为10秒,但Unity会检测到更改并花费超过30秒的时间来处理大多数未更改的预制件。
如何改进我的脚本以便它知道自上次导出以来哪些对象已被更改? 对象或网格似乎没有任何date_modified变量。
答案 0 :(得分:0)
Blender不记录对象修改的时间戳。我的第一个建议是将每个对象保存在自己的混合文件中,或者每个文件中可能包含较小的项目组。
另一种方法是更改导出脚本,而不是导出每个对象只导出所选对象。更改一两个项目后,选择您更改的项目,然后仅导出这些项目。
for obj in bpy.context.selected_objects:
bpy.ops.export_scene.fbx(obj.name+'.fbx')
答案 1 :(得分:0)
另一种方法是在有意义的值(网格几何,材料,无论你经常更改)上计算类似CRC的签名,并将其存储在某处(例如,在每个对象中作为自定义属性)。
然后,您可以轻松跳过自上次导出后签名未发生更改的对象。