Grace a l'API maya et a MFnHikEffector:
import maya.OpenMayaAnim as OpenMayaAnim node = OpenMayaAnim.MFnHikEffector() node.create()
import maya.OpenMayaAnim as OpenMayaAnim node = OpenMayaAnim.MFnHikEffector() node.create()
cmds.delete(ch = True)
sal = 12 d = 'sal' v = locals()[d] print v #Result: 12
bt1 = cmds.button(l = 'test1', c = maFonction(monArgument))
functools.partial(maFonction, monArgument)
import maya.cmds as cmds
from functools import partial
def selType(none = None, types = None):
t = cmds.ls(type = types)
cmds.select(t)
if cmds.window('partialEx', q= True, ex = True):
cmds.deleteUI('partialEx')
win = cmds.window('partialEx')
lay = cmds.columnLayout()
bt1 = cmds.button(l = 'test1',p = lay, c = partial(selType, types = 'mesh'))
bt2 = cmds.button(l = 'test2',p = lay, c = partial(selType, types = 'nurbsSurface'))
cmds.showWindow(win)
vector $vect1 = <<0,1,0>>; vector $vect2 = <<1,3,0>>; vector $vect3 = $vect1 + $vect2; // Result: <<1, 4, 0>> //
import maya.cmds as m
import maya.OpenMaya as om
vX = m.pointPosition("pCube1.vtx[2]")
vX = m.pointPosition("pCube1.vtx[3]")
vXx = om.MVector(vX[0], vX[1], vX[2])
vYy = om.MVector(vY[0], vY[1], vY[2])
vZz = vYy - vXx
print vZz.x
print vZz.y
print vZz.z
#recuperation de la derniere image
endFrame = cmds.playbackOptions(q = True, maxTime = True)
#recuperation de la premiere image
startFrame = cmds.playbackOptions(q = True, minTime = True)
#recuperation de la selection, dans l'ordre nParticle Instance de base
sel = cmds.ls(sl = True)
part = sel[0]
inst = sel[1]
#nom des futurs instances dupliques
new = ("newInstance_"+part+"_")
#alignement et freeze de l'instance de base
cmds.pointConstraint(part, inst, mo = False)
cmds.pointConstraint(part, inst, rm = True)
cmds.makeIdentity(inst, apply=True, t=1, r=1, s=1, n=0)
#pour chaque frame
for i in range(startFrame, endFrame):
#deplacement du curseur de la timeline
cmds.currentTime(i)
#recuperation du nombre de particles
nPart = cmds.nParticle(part, ct = True, q = True )
print i
#pour chaque particle
for j in range(1, nPart+1):
#test de l'existence pour pas dupliquer a chaque frame
if cmds.objExists((new+str(j))) == 0:
#duplication de linstance de base
dup = cmds.duplicate(inst, n = (new+str(j)))
#recuperation de la position de chaque particle
posPP = cmds.nParticle(part, at = 'position', id = j, q = True )
#Attribution de la position a linstance duplique
cmds.setAttr((new+str(j)+".tx"), posPP[0])
cmds.setAttr((new+str(j)+".ty"), posPP[1])
cmds.setAttr((new+str(j)+".tz"), posPP[2])
#creation de keyframe
cmds.setKeyframe(new+str(j)+".tx")
cmds.setKeyframe(new+str(j)+".ty")
cmds.setKeyframe(new+str(j)+".tz")
if ( `objExists $nomTest` ) {}
//interrupteur attr
float $of = `getAttr "nurbsCircle1.onOff"`;
//boucle pour chaque petit cube
for ( $i=1; $i<99; ++$i ){
//nom des petits cubes
string $cu = "pCube" + $i;
//test existence du nom
if ( `objExists $cu` ) {
//random value
float $ra = `rand 1 3`;
float $ran = 1+((noise(time)*$ra)/10)*$of;
//application au scale
scale -a $ran $ran $ran $cu;
}
else{
//rien mm pas un string ca evite les ralentissements
}
}