The code worked great!
I’m going to make it a callable function and put in some error-checking.
There were a couple of line I had to chg to get it to run, in case anyone needs something like this in the future (see below - I commented out the lines I changed and my corrected line is underneath - just typos i think)
for np in model.findAllMatches('**/+GeomNode'):
gn = np.node()
for gi in range(gn.getNumGeoms()):
state = gn.getGeomState(gi)
ta = state.getAttrib(TextureAttrib.getClassType())
if ta:
#for si in range(ta.getNumOnstages()):
for si in range(ta.getNumOnStages()):
stage = ta.getOnStage(si)
tex = ta.getOnTexture(stage)
filename = tex.getFilename()
filename2 = Filename('art/characters/batman/skins/standard', filename.getBasename())
tex2 = loader.loadTexture(filename2)
#ta = ta.addOnStage(ta.addOnStage(stage, tex2))
ta = ta.addOnStage(stage, tex2)
state = state.setAttrib(ta)
gn.setGeomState(gi, state)
Thx again!