Programare Python Maya Piesa Lego

cmds.circle(r=.5, s=20)

Facem un cerc cu raza 0,5 si cu 20 de sectiuni. Daca nu am scrie s=20 cercul ar avea doar 8 sectiuni, cam putine pentru ce vrem noi.

Acum trebuie sa prindem de jumatate din cv-uri (vertexuri de control) si sa le tragem in lateral. E dificil sa selectam cv-urile dorite si sa tragem de ele in asa fel incat sa obtinem forma dorita, asa ca rotim putin cercul , cu 9 grade . cmds.rotate(0,0,9)

Mutam cv-urile din jumatatea stanga, spre stanga , distanta 10. Cv-urile sunt cele cu numerele intre 1 si 10 . cmds.move(-10,0,0,”nurbsCircle1.cv[1:10]”,r=True)

Forma obtinuta este goala pe dinauntru , o umplem cu cmds.planarSrf( ) , care face o suprafata plana in interiorul unei linii. Ca sa nu apara erori trebuie sa fiu in “Object mode” , adica sa fie selectat obiectul intreg si nu cv-urile sale.

Continue reading “Programare Python Maya Piesa Lego”

Programare Python Maya HumanIK

Avem un personaj nou, care, pe langa scheletul personajului de saptamana trecuta mai are niste obiecte folosite pentru animatii mai spectaculoase. Deschidem fereastra Outliner  si le vedem acolo , grupate in obiectul Character1_Ctrl_Reference. Aceste obiecte se numesc HumanIK si deschidem fereastra  cu acelasi nume. O deschidem si pe cea pentru programare. Selectia obiectelor HumanIK o pot face si din Outliner si din fereastra HumanIK. Saptamana trecuta am vazut ca operatiile de tip “move” nu erau bune asa ca am folosit doar “rotate”. Acum vom incerca sa mutam obiectele HumanIK , selectam genunchii si oricat ne chinuim nu reusim sa-i mutam. Sa incercam cu gatul fetei. Se muta usor si trecem la mutarea intregului personaj , folosind obiectul de jos, dintre pantofii fetei. Apoi trecem la glezne si la articulatiile mainilor, obtinand animatii faine, pe care le puteam realiza mult mai greu folosind operatiile de saptamana trecuta. In Outliner am numele obiectelor HumanIK pe care o sa le folosim imediat la programare.

Continue reading “Programare Python Maya HumanIK”

Programare Python Maya Animatii de Personaje

Download de aici https://drive.google.com/file/d/1SLmDfw1WAw-DoIaCBtmwgtwiOIsBHC-D/view?usp=sharing
arhiva friend.zip care contine un personaj cu numele friend1.fbx si materialele friend1.fbm
Personajul se importa in Maya. Folosim importul atunci cand avem obiecte facute in alte programe sau in alte versiuni de Maya. E cam mare asa ca ne indepartam de el , ca sa-l putem vedea mai bine. Nu are materialele vizibile pana cand nu apasam butonul “textured”. Materialul alb al ochilor (Cornea) trebuie corectat, il cautam in “hypershade” si il facem transparent. Salvam scena in Maya.


Personajul contine, pe langa partea exterioara, vizibila , si un schelet, care e mai bine sa fie invizibil: Show- Joints. Acum personajul arata mai bine.
Scriem primul program care animeaza un picior. La fiecare comanda trebuie sa scriem numele articulatiei (joint)care se misca. Aceste nume se gasesc in fereastra Outliner, si le putem vedea pe toate apasand pe “+”. La fiecare clic pe “+” apar noi nume de articulatii. Acum ne ocupam de rotirea gleznelor (shin) si a coapselor (thigh). Incercam diferite numere la t si la v, pana le gasim pe cele mai bune. Modificam numarul de frame-uri din animatie , vor fi 150 ( 5 secunde). Piciorul se misca incet cand facem clic pe butonul Play.

Continue reading “Programare Python Maya Animatii de Personaje”

Programare Python Maya Obiecte Nurbs

Obiectele de tip NURBS se folosesc pentru crearea formelor cu suprafete rotunjite. Le gasim la Curves/Surfaces.
La inceput , o sfera NURBS seamana cu una poligonala. Facem clic-dreapta pe ea si alegem “Control Vertices”. Avem acces la punctele de control pe care le putem muta cu “Move”.
Incepem programarea: construim un plan, numele lui e nurbsPlane1. Acest plan simplu are 4 randuri de cate 4 cv-uri. Cele doua numere , care indica pozitia vertexului in plan, sunt intre 0 si 3.. Selectez un cv (control vertex) , cel de pe pozitia [0][0] si il mut in pozitia 0,0,1 .
Planul acesta este foarte simplu , are putine vertexuri de control. Daca vreau sa obtin obiecte mai complicate am nevoie demai multe cv-uri. Urmatorul plan va avea mai multe cv-uri. Dreptunghiurile cele mici din care e facut planul se numesc patch-uri (adica petice). Daca scriu u=8 si v=6 voi avea 8 randuri si pe fiecare rand 6 patch-uri. Vor fi 8+3 =11 randuri si pe fiecare rand 6+3=9 cv-uri. Daca vreau sa mut cv-ul din colt pe directia z pe distanta 1 atunci scriu si r=True adica mutarea va fi relativa. Aici, cele 4 colturi sunt [0][0], [0][8], [10][8] si [10][0].
Daca vreau sa mut mai multe cv-uri odata, pot sa scriu [3][2:6] adica cv-urile 2,3,4,5,6 de pe linia treia. Sau [5][:] adica toate cv-urile de pe linia numarul 5.

Continue reading “Programare Python Maya Obiecte Nurbs”

Programare Python Animatii Maya

Pentru a crea animatii avem nevoie de keyframe-uri, Prima data facem keyframeuri fara programare . Simple, pentru miscarea , rotirea si redimensionarea obiectului. Le vedem jos, rosii, in Time Slider.

Facem o sfera poligonala si punem pe ea o imagine luata de pe internet.
Imaginea apare pe obiect doar dupa ce apasam pe butonul “Textured”
Fixam doua keyframe-uri pentru marime. Modificam pe rand valorile “v” si timpul “t” obtinand animatii diferite. De jos modific numarul de frame-uri a animatiei si numarul de frame-uri afisate in time-slider.

Apoi vom anima o multime de mici cuburi pe o sfera. Facem 3 materiale , o sfera simpla si 250 cuburi mici. Folosim variabila col1 pentru a schimba culoarea cuburilor. pointPosition ne ajuta sa aflam coordonatele vertexurilor sferei. Punem cuburile in acele pozitii si animam marimea lor, cu doua keyframeuri. Pornim programul si , ca sa vedem animatia, apasam butonul play.

Continue reading “Programare Python Animatii Maya”

Programare Python Maya Face Extrusion

Example 1

import maya.cmds as cmds
#create a polygonal sphere
cmds.polySphere()
#delete faces , from 160 to the end
cmds.delete('pSphere1.f[160:]')
#extrude all remaining faces
#extrusion distance 0.1
# faces are pulled independently
cmds.polyExtrudeFacet('pSphere1.f[:]',kft=False, ltz=.1)

Example 2

import maya.cmds as cmds
cmds.polySphere()

# extrude one face 20 times
# for every extrusion we perform a rotation and a translation
for i in range(1,20):
if i%2 ==0:
cmds.polyExtrudeFacet(‘pSphere1.f[0]’,rx=60,ty=2)
else:
cmds.polyExtrudeFacet(‘pSphere1.f[0]’,rx=-60,ty=2)

Example 3

#create a polygonal sphere having 10 subdivisions on x , 10 on y and radius equal to 5
cmds.polySphere(n=’sfera’,sx=10,sy=10,r=5)
#find out the number of faces
nrFete=cmds.polyEvaluate(f=True)
#extrude the faces with an even number , pulling them independently
for i in range(1,nrFete):
if i%2 ==0:
cmds.polyExtrudeFacet(‘sfera.f[%d]’%i,ltz=2,kft=False)