2015-12-01 113 views
2

我正在運行一個Maya python腳本,該腳本在場景中運行,並在網格對象高於特定範圍時減少多邊形數量。瑪雅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() 

添加沖洗撤銷似乎有點幫助,但我還是看到內存上升...

回答

1

您可以嘗試打開減少瑪雅的撤消的大小緩存或使用cmds.undoInfo完全關閉撤消隊列。你需要嘗試一些策略來看看真正的罪魁禍首是什麼 - 但最終你會改變成千上萬的網格物體的內容,所以撤消堆棧將是巨大的,因爲你需要保持舊的和數千個網格的新狀態。

如果這變得不可能,您可以拖動大場景,將單個對象存儲到不同的文件中,並將它們引回到原始場景中。然後你可以單獨處理所有這些文件。這將有一些性能開銷,但它可能會讓你完成這項工作。

+0

如果您使用2015 Ext 1或2016,那麼使用Profiler查看是誰製作混亂 – Achayan

+0

我不想看到誰在製作混亂,我只想沖洗它。到目前爲止,我還沒有找到一種方法來做到這一點...測試也在2017年瑪雅。 – Romulus