Le script

C'est assez basique mais ça évite bien des clics. :sourit:

import maya.cmds as cmds
 
# get the selected nodes
selectionList = cmds.ls( selection=True )
 
nodeList = selectionList[:len(selectionList)-1 ]	# get all nodes except the last one
myPlane = selectionList[ len(selectionList)-1 ]	# get the last node wich should be the plane you want to spread particle on
 
# create the particle system
myEmitter = cmds.emitter( myPlane, type="surface", speed=0 )[1]
myParticleSys = cmds.particle()	# [u'particle1', u'particleShape1']
 
cmds.connectDynamic( myParticleSys[0], emitters=myEmitter )	# connect the emitter to the particle system
 
myInstancer = cmds.particleInstancer( myParticleSys[1], addObject=True, object=nodeList )	# create instancer from all the selected objects
 
# add per particle attributes
cmds.addAttr( myParticleSys[1], ln="randIndexPP", dt="doubleArray" )
cmds.addAttr( myParticleSys[1], ln="rotPP", dt="vectorArray" )
 
# tell the particle system to use attribut "randIndexPP" for objectIndex and "rotPP" for rotation
cmds.particleInstancer( myParticleSys[1], edit=True, name=myInstancer, objectIndex="randIndexPP" )
cmds.particleInstancer( myParticleSys[1], edit=True, name=myInstancer, rotation="rotPP" )
 
# prepare and create the expression
expressionStr = "%s.randIndexPP = rand(0,%s.9999999);\n" % (myParticleSys[1], len(selectionList)-2)
expressionStr += "particleShape1.rotPP = << rand(-15, 15), rand(-15, 15), rand(-15, 15) >>;"
cmds.dynExpression( myParticleSys[1], creation=True, string=expressionStr )

Exemple

Je n'allais tout de même pas balancer le truc sans que vous ayez au moins un aperçu de ce que ça donne en pratique! :hehe:

Voici trois brins d'herbe différents:

code_particle_objectid

Avec points de pivot bien placés et freeze transformés évidement! :redface:

Sélectionnez les:

code_particle_objectid003.png

Puis sélectionnez le plan sur lequel vous souhaitez que les particules soit placées:

code_particle_objectid004.png

Lancez le script! :grenadelauncher:

Avancez de quelques images:

code_particle_objectid005.png

Et voyez le résultat:

code_particle_objectid006.png

Bon, c'est vrai qu'avec des brins d'herbe ça ne saute pas aux yeux mais essayez avec des formes plus claires et vous verrez de suite les objets que vous avez sélectionné placés de manière aléatoire. :sauteJoie:

Conclusion

En espérant que ce micro-billet-express vous servira.

A bientôt!

Dorian