PDA

View Full Version : Applying textures to geometry via script


Matt1882
01-10-2011, 03:33 AM
Hi there,

Im currently experimenting with creating geometry and textures via script, and have succeeded so far, but I am stuck on how to 'apply' the textures to the geometry through script.


## Creating Background ## cmds.polyPlane(w=50, h=50, n="BackGround")
cmds.move(0,0,-0.6)
cmds.rotate(90,0,0)
cmds.shadingNode('mib_amb_occlusion', asShader=True)
cmds.setAttr('mib_amb_occlusion1.samples', 64)



Any help would be greatly appreciated

Matt

pixelranger
01-10-2011, 04:57 AM
A shading group is basically a 'set'.
So you're looking for the 'set' command.

cmds.sets( 'pSphere1', e=True, fe='blinn1SG' )

Matt1882
01-10-2011, 10:09 AM
Ahh I see, thanks very much.......

So I've created the materials and assigned them using the 'sets' command as you suggested:


cmds.sets(renderable=True, empty=True, nss=True, n='MyShaderGroup1')
cmds.connectAttr('blinn1.outColor','MyShaderGroup1.surfaceShader')
cmds.sets( 'pCube1', e=True, forceElement='MyShaderGroup1')


But say I had 60 pCube's (all named pCube1-60) and wanted to assign them the same shader group, would I have to write the cmds.sets('pCube1/2/3/4/4/5.....) command for each of them??

Thanks

NaughtyNathan
01-10-2011, 10:27 AM
cmds.sets( 'pCube*', e=True, forceElement='MyShaderGroup1')
or use a list, something like:cubes = cmds.ls(type='mesh')
cmds.sets( cubes, e=True, forceElement='MyShaderGroup1'):nathaN

pixelranger
01-10-2011, 10:34 AM
what NaughtyNathan said,
or if you want to select them first in case you either have other objects whose names start with 'pCube' (Nathan's first example) or other meshes in general (Nathan's second example) that you would want to exclude:

cubes = cmds.ls(sl=True)
cmds.sets (cubes, e=True, fe='myShadingGroup')

Matt1882
01-10-2011, 10:39 AM
Awesome! Yeh thats cool because what I can do is, have the objects created with a certain name then a number say 'dialCubes*' and then assign the texture to all of them using


cmds.sets( 'dialCubes*', e=True, forceElement='MyShaderGroup1')


Thanks very much to the both of you

Matt1882
01-10-2011, 11:40 AM
Bad news, I've got my code sorted for applying the textures to the geometry, which is:


cmds.shadingNode('blinn', asShader=True, n='secHandMat') cmds.setAttr('secHandMat.color', 1,0,0)
cmds.setAttr('secHandMat.transparency', 1,0,0)
cmds.sets(renderable=True, empty=True, nss=True, n='MySGSecHand')
cmds.connectAttr('secHandMat.outColor','MySGSecHand.surfaceShader')
cmds.sets( 'secHand', e=True, forceElement='MySGSecHand')



But for some reason it will only work when hitting ctrl+enter within maya's script editor, where as when I try and run the script as a whole, it creates all the materials/shader groups but doesn't apply the materials to the geometry :s (attached image) also, it doesnt even give an error at command line.

Im too confused!

CGTalk Moderation
01-10-2011, 11:40 AM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.