我正在运行一个贯穿场景的maya python脚本,如果它超出一定范围,则会减少网格对象的多边形数量。
这在一个小场景上运行正常,但是当我在数千个网格对象上运行它时,我的机器的内存使用会一直向上计数,直到maya冻结在大约80%的物理内存使用中。
我的问题是,我可以在python循环中添加某种内存刷新(除了我已经拥有的内容)以“重置”内存使用吗?或者这是不可能的,因为线程仍在运行?
我正在运行:
selectedObjects = ls (sl=True, fl=True)
for obj in selectedObjects:
reduceMesh(obj) # my function
cmds.flushUndo()
cmds.clearCache( all=True )
cmds.DeleteHistory()
添加刷新撤消似乎有点帮助,但我仍然看到内存上升......
答案 0 :(得分:1)
您可以尝试使用cmds.undoInfo缩小Maya撤消缓存的大小或完全关闭撤消队列。你需要尝试一些策略才能看到真正的罪魁祸首 - 但最终你要改变成千上万个网格的内容,所以撤销堆栈将是巨大的,因为你实际上需要维护数千个网格的新旧状态。
如果这变得不可能,你可以转动大场景,将单个对象保存到不同的文件中并将它们引用回原始场景。然后,您可以单独处理所有这些文件。这将有一些必要的开销,但它可能会让你完成这项工作。