Localise matLib in Softimage
- July 11th, 2012
- Write comment
Quick script for nAngus – this will import the material library from a referenced model and change the object assignments from the referenced to the local. Saves importing the refModel completely.
'''
localiseMatLib
Usage: select a referenced matLib. A (local) duplicate will be created and
objects assigned to these new materials
'''
app = Application
print '##########################'
shaderColl = {}
sel = app.Selection
for x in sel:
if x.Type == 'library_source':
# is locked by refmodel?
if x.lockType == 3:
matLibName = x.FullName
print 'Matlib:', matLibName
for mem in x.items:
print mem.name
usedBy = mem.UsedBy
itemList = []
for obj in usedBy:
itemList.append(obj.fullName)
shaderColl[str(mem.name)] = itemList
print 'shaderColl', shaderColl
# copy the material library
newMatLib = app.Duplicate(x)
print newMatLib
# assign objects to the new matlib
for mem in x.items:
objectList = shaderColl[str(mem.name)]
newMatName = mem.FullName.replace(matLibName, str(newMatLib))
print 'newMatName', newMatName
for obj in objectList:
print newMatName, obj
Application.SIAssignMaterial( obj, newMatName)
else:
print 'Pick a matlib that is referenced'