I loaded up a rather complex project to test that had been set up to use VRay materials, and had been choking up and causing havoc on the render-farm here.
What I didn't know when I loaded this (given I've primarily been using Renderman) was that VRay was set to render all material swatches when I opened up the Hypershade - and when I say render, it cranked all 8 cores of my CPU to 100% and consumed around 3-4 Gigabytes of memory as it went.
A few minutes later once that was out of the way, Maya returned to normal and I thought I was fine... Until I hit the swatches on file nodes! While they shouldn't have done anything, they also started to choke Maya again. Why - I'm not sure (hey, its Maya - if you've used it for a while, you learn not to be surprised by anything lol!) but I figured I'd had enough and quickly bashed out this python script to take care of setting everything OFF for the next scene I loaded (and needed to use Hypershade with)
The first part of this deals with VRay materials in particular. I'd recommend if you have a very complex scene with LOTS of materials, you run this before opening the Hypershade (ie. why I wrote it).
# Optimise scene (VRay) to stop hogging CPU on workstation
import maya.cmds as cmds
# Disable all Swatches for materials (eats CPU and RAM!)
vrayMtls = cmds.ls(type='VRayMtl')
for mtl in vrayMtls:
print "VRay Material : ",mtl
attribName = mtl + '.swatchAutoUpdate'
cmds.setAttr(attribName,0)
attribName = mtl + '.swatchAlwaysRender'
cmds.setAttr(attribName,0)
attribName = mtl + '.swatchMaxRes'
cmds.setAttr(attribName,64)
import maya.cmds as cmds
# Disable all Swatches for materials (eats CPU and RAM!)
vrayMtls = cmds.ls(type='VRayMtl')
for mtl in vrayMtls:
print "VRay Material : ",mtl
attribName = mtl + '.swatchAutoUpdate'
cmds.setAttr(attribName,0)
attribName = mtl + '.swatchAlwaysRender'
cmds.setAttr(attribName,0)
attribName = mtl + '.swatchMaxRes'
cmds.setAttr(attribName,64)
The second part here deals with the preview thumbnail generation. I decided that I wanted to keep the thumbnail generation on, but instead I forced it to low quality so it would be a little quicker to process.
# Lower the Preview thumb quality for images
imgFile = cmds.ls(type='file')
for img in imgFile:
print "File node : ",img
attribName = img + '.uvTileProxyQuality'
cmds.setAttr(attribName,4)
imgFile = cmds.ls(type='file')
for img in imgFile:
print "File node : ",img
attribName = img + '.uvTileProxyQuality'
cmds.setAttr(attribName,4)
So there you have it. This is just one of many issues I've run over - and while frustrating, they make for great excuse to play with a few scripting projects.
0 comments:
Post a Comment