Skip to content

Instantly share code, notes, and snippets.

@Avgilles
Last active October 11, 2021 10:29
Show Gist options
  • Save Avgilles/077b872a1c38b9777059e6e582bac508 to your computer and use it in GitHub Desktop.
Save Avgilles/077b872a1c38b9777059e6e582bac508 to your computer and use it in GitHub Desktop.
import maya.cmds as cmds
cmds.file(f=True, new=True)
def chair(x,y,z):
# Creer un cube
cmds.polyCube(name="sit")
cmds.move(x+0,y+2,z+0)
cmds.scale(2,0.25, 1.25)
cmds.polySmooth(name="sit" , divisions=2)
def applyMaterial(node):
if cmds.objExists(node):
shd = cmds.shadingNode('lambert', name="%s_lambert" % node, asShader=True)
shdSG = cmds.sets(name='%sSG' % shd, empty=True, renderable=True, noSurfaceShader=True)
cmds.connectAttr('%s.outColor' % shd, '%s.surfaceShader' % shdSG)
cmds.sets(node, e=True, forceElement=shdSG)
applyMaterial("sit")
centerVertex = cmds.select("sit.vtx[21]")
vtx_pos = cmds.xform(centerVertex, q=1,ws=1,t=1)
vtx_world_mmat = OpenMaya.MMatrix()
for i in range(4):
cmds.polyCube(name="foot"+str(i))
cmds.scale(.1,2,.1)
cmds.select()
cmds.polyCut(
cuttingDirection = 'y',
cutPlaneCenter = [0,90,0],
)
cmds.select('foot'+str(i)+'.vtx[8:11]')
cmds.move(0,0.95,0, relative=True)
cmds.select('foot'+str(i)+'.f[2]')
cmds.polyExtrudeFacet(
localTranslateZ=.40
)
# second cut
cmds.select('foot'+str(i))
# cmds.polySmooth( name="foot"+str(i), divisions=2)
i = i + 1
# Manuel ?
cmds.select("foot0")
cmds.move(-.7,1,.7, relative=True)
cmds.rotate(0,-20,0)
cmds.select("foot1")
cmds.move(-.7,1,-.7, relative=True)
cmds.rotate(0,200,0)
cmds.select("foot2")
cmds.move(.7,1,-.7, relative=True)
cmds.rotate(0,160,0)
cmds.select("foot3")
cmds.move(.7,1,.7, relative=True)
cmds.rotate(0,30,0)
# Creer un cube
cmds.polyCube(name='backChair', subdivisionsWidth=2, width=1.5, depth=.25)
cmds.move(0,3,-.5)
cmds.makeIdentity(apply=True, t=1, r=1, s=1, n=0)
cmds.select('backChair.vtx[4]')
cmds.move(0,3,-.4)
cmds.select('backChair.vtx[7]')
cmds.move(0,3,-.7)
cmds.select('backChair')
cmds.polySmooth( name='backChair', divisions=2)
def Tube(x,y,z, rz):
tube = cmds.polyCube()[0]
cmds.scale(.1,1.4,.1)
cmds.move(x,y,z)
cmds.polyCut(
cuttingDirection = 'y',
cutPlaneCenter = [0,90,0],
)
cmds.select(tube+'.vtx[8:11]')
cmds.move(0,0.6,0, relative=True)
cmds.polyCut(
cuttingDirection = 'y',
cutPlaneCenter = [0,90,0],
)
cmds.rotate(0,0,rz)
cmds.select(tube+'.vtx[12:15]')
cmds.move(0,-0.65,0, relative=True)
cmds.select(tube+'.f[0]')
cmds.polyExtrudeFacet(
localTranslateZ=.20
)
cmds.select(tube)
cmds.rotate(0,0,rz)
cmds.polySmooth(divisions=2)
Tube(-0.4,2.6,-.6, -10)
Tube(0.4,2.6,-.6, 10)
chair(0,0,0)

Cours de python dans maya

fonctionnement

  • 1 ère partie de chaque cours : Nouvelles fonctions
  • 2 ème partie de chaque cours : Correction du TP précédent + TP du jour

-> 1 note individuelle à la fin du semestre

1 projet à faire pour début janvier (en groupe de 2 et 4) Thème à choisir début novembre

-> Note de groupe à la fin de semestre

Ouvrir le script éditor : script editor

Virer le menu mel

Comment commencer ?

  • Partie historique

Importer la librairie maya

# Importer les commandes de maya
import maya.cmds as cmds

# Créer un cube
cmds.polyCube()

Pour build nos fonction : execute all

Changer les parametre

#changer le scale
cmds.scale(1,3,1)

Execute un seul code pour le tester

  • selectionnant avec la souris la ligne que l'on veux executer:
  • Appuyer sur le bouton

singleExecute

penser a sauvegarder votre script

  • Save file

Grâce a Maya Python, nous pouvons avoir beaucoup plus de possiblité :
Doc maya Python

Savoir le nom de ses objets

object

cmds.polyCube(name="boite")

Débugger sur Maya

  • Dans l'onglet history
  • Activer le swho stack trace

suprimer tout les element du scene a chaque chargement

cmds.file(f=True, new=True)

TP 1 : création d'une chaise procéduralement en python

v1

All Script :

# Importer les commandes de maya
import maya.cmds as cmds
# Importer les commandes de maya
import maya.cmds as cmds

cmds.file(f=True, new=True)

# Creer un cube
cmds.polyCube()
cmds.move(0,2,0)
cmds.scale(1.5,0.25, 1.5)

# creation pied
i = 0
for i in range(4): 
    cmds.polyCube(name="chair"+str(i))
    cmds.scale(.1,2,.1)
    i = i + 1
    
cmds.move(-.7,1,.7 ,"chair0")
cmds.move(-.7,1,-.7 ,"chair1")
cmds.move(.7,1,-.7 ,"chair2")
cmds.move(.7,1,.7 ,"chair3")


# up chair

cmds.polyCube()
cmds.scale(.1,2,.1)
cmds.move(.7,3,.7)

cmds.polyCube()
cmds.scale(.1,2,.1)
cmds.move(.7,3,-.7)

# Dossier 

cmds.polyCube()
cmds.scale(.1,.25,1.5)
cmds.move(0.7,3.4,0)

cmds.polyCube()
cmds.scale(.1,.25,1.5)
cmds.move(0.7,3.85,0)

# Creer un cube
cmds.polyCube()
cmds.move(0,2,0)
cmds.scale(1.5,0.25, 1.5)

# creation des pieds
i = 0
for i in range(4): 
    cmds.polyCube(name="chair"+str(i))
    cmds.scale(.1,2,.1)
    i = i + 1
    
cmds.move(-.7,1,.7 ,"chair0")
cmds.move(-.7,1,-.7 ,"chair1")
cmds.move(.7,1,-.7 ,"chair2")
cmds.move(.7,1,.7 ,"chair3")


# up chair

cmds.polyCube()
cmds.scale(.1,1.5,.1)
cmds.move(.7,2.7,.7)

cmds.polyCube()
cmds.scale(.1,1.5,.1)
cmds.move(.7,2.7,-.7)

cmds.polyCube()
cmds.scale(.1,.5,1.5)
cmds.move(0.7,3.2,0)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment