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.

Facem 11 cercuri cu raza 0,4 . Variabila i creste de la 2 la 12, iar cercurile vor fi “nurbsCircle2″,…,”nurbsCircle12”. Incepem de la 2 pentru ca exista deja cercul cu numarul 1, e cel de la inceput. Centrele cercurilor au coordonatele y si z fixe: 0,1. Coordonata x e variabila si o potrivim in asa fel incat cercurile sa fie pe pozitiile dorite. Din nou s=20 ca sa am cercuri frumoase.

for i in range(2,13):
    cmds.circle(r=.4,c=(-i+2, 0, 1),s=20)

Cele 11 cercuri noi le proiectez pe forma de la inceput, pentru a face gaurile. Ca sa obtin numele cercurilor am nevoie de o noua variabila “a”, care ia numerele “i”, cele de la 2 la 12 si le transforma pentru a putea fi lipite apoi la cuvantul “nurbsCircle”. La projectCurve trebuie sa apara numele cercurilor, numele suprafetei create la inceput si directia pe care se face proiectia . La noi e (0,0,1) adica directia “z”.

for i in range(2,13):
    a=str(i)
    cmds.projectCurve(“nurbsCircle”+a,”planarTrimmedSurface1”,d=(0,0,1))

Facem taierea gaurilor . Selectam forma de la inceput, numele ei e “planarTrimmedSurface1”. La comanda “trim” caut numere potrivite pentru lu si lv , intre 0 si 1, care sa stearga cercurile .

cmds.select(“planarTrimmedSurface1”)
cmds.trim(lu=.31,lv=.51)

Forma gaurita e de tip nurbs , o vom transforma in forma poligonala pentru a o extruda si apoi pentru a o exporta in jocurile Unity sau Unreal Engine.

cmds.nurbsToPoly(“planarTrimmedSurface1”)
cmds.polyExtrudeFacet(“nurbsToPoly1.f[:]”,kft=True,ltz=1)

La extrudare folosim f[:] , pentru a extruda toate fetele, kft=True ca sa le tina lipite si ltz=1 pentru distanta de extrudare pe directia “z”.

Piesa Lego e super faina, ramane doar sa stergem celelalte obiecte din scena, cercurile , incepand cu “nurbsCircle1” si pana la “nurbsCircle12”.

for i in range(1,13):
    a=str(i)
    cmds.delete(“nurbsCircle”+a)

La sfarsit, fara programare, coloram piesa si stergem inca o forma care ramasese abandonata in scena.

Tema de casa: Sa faceti o piesa de acelasi fel cu cea din lectie dar cu 15 gauri.