2015-12-01 1 views
2

Я запускаю сценарий майя-питона, который проходит через сцену и уменьшает количество многоугольников объекта-меша, если он превышает определенный диапазон.майя питон памяти флеш?

Это нормально работает на небольшой сцене, но когда я запускаю ее на тысячах объектов сетки, использование моей машины в памяти подсчитывается до тех пор, пока майя не замерзнет примерно на 80% от использования физической памяти.

Мой вопрос: могу ли я добавить какой-то флеш-память, кроме того, что у меня уже есть, в цикл питона, который «перезапустит» использование памяти? Или это невозможно, поскольку поток все еще работает?

Я бег это:

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, используйте профилировщик, чтобы узнать, кто делает беспорядок. – Achayan

+0

Я не хочу видеть, кто создает беспорядок, я просто хочу его очистить. Пока я не нашел способ сделать это ... Протестировано также в Maya 2017. – Romulus