Blender 2.8 Python scripting superputeri pentru non-programatori

crearea de randări 3d, jocuri și animații este întotdeauna incredibil de interesant! Ei bine, cu excepția cazului în care devine provocator sau plictisitor. Dacă folosești Blender sau orice altă aplicație 3D de ceva vreme, te-ai trezit trecând prin aceleași sarcini din nou și din nou și la un moment dat gândindu-te: „chiar îmi doresc ca Blender să fi făcut asta pentru mine”.

prin scripting, se poate! Nu numai că, Python poate crea funcții noi distractive care nici măcar nu sunt posibile făcând clic pe interfață.

dacă ești ca mine și nu ai avut nicio pregătire în informatică, programarea poate părea un cuvânt din patru litere, cu excepția a unsprezece litere (de 2,75 ori mai rău!). Este ca un limbaj secret pe care doar oamenii deștepți îl cunosc, care probabil citesc întotdeauna faptele nutriționale, construiesc motoare rachetă pentru distracție sau au un doctorat.într-un tip de matematică care nici măcar nu folosește numere.

din fericire nu este deloc cazul. Adevărul este că, dacă puteți utiliza Ctrl+C și Ctrl+V pentru a copia și lipi, puteți începe să creați propriile scripturi Python Blender imediat.

obișnuiți-vă să vedeți codul

terapia de expunere. Desensibilizare progresivă. Spune-i cum vrei, dar cel mai bun mod de a normaliza ceva care pare ciudat inițial este să-l vezi suficient de des în contextul potrivit.

fiecare acțiune pe care o faceți în Interfața Blender este executată prin comenzi Python. Puteți verifica acest lucru pentru dvs., trecând cronologia la editorul de informații și văzând ce scuipă atunci când vă ocupați de munca normală.

editorul de informații poate fi un pic de firehose, dar există ceva despre liniile de comandă și astfel care ar putea fi programarea ereziei, dar mă pune în largul meu la început – cea mai mare parte a ceea ce vedeți este acolo doar în cazul în care aveți nevoie de ea și 98% din timp nu veți avea nevoie de ea. Deci, atunci când faci ceva simplu, cum ar fi mutarea cubului și îți oferă două sau trei linii complete de cod, poți ignora cea mai mare parte a acestuia. Partea importantă este chiar la început:

bpy.ops.transform.translate(value = (0.5, 0, 0))

știți deja că numele pentru a muta ceva se numește ‘traduce’, astfel încât valorile care vin după aceea sunt cât de mult v-ați tradus obiectul pe axele X, Y și respectiv Z. Totul înainte de ‘traducere’ este în cazul în care această comandă este găsit în codul Blender. Este ca și cum Blender este un meniu gigant imbricat și ați selectat Blender Python -> operații -> transformare -> traducere.

există nouă secțiuni principale ale Blender Python (BPY). Nu trebuie să le memorați, dar recunoașterea unora dintre ele vă poate ajuta să înțelegeți cum funcționează Blender sub capotă.

  • bpy.app-Informații despre Blender în sine, care nu se schimbă în timp ce rulează.
  • bpy.context-liste numai în citire a ceea ce este activ în prezent în Blender.
  • bpy.date – toate datele interne ale Blender, cum ar fi obiectele.
  • bpy.msgbus-înseamnă „message bus” și este utilizat pentru notificarea Blender a anumitor modificări. Nu e ceva de care să ne facem griji.
  • bpy.ops – toate operațiunile pe care le puteți face în Blender, de la modelare la adăugarea fișierelor la redare.
  • bpy.path-funcții care se ocupă cu căi de fișiere.
  • bpy.props – diferitele proprietăți pe care le folosește blenderul. Ați folosi acest lucru pentru a spune Blender dacă o intrare ar trebui să fie un număr sau o culoare.
  • bpy.tipuri – fiecare tip de lucru care există în Blender, de la modificatori la texturi la lămpi și multe altele.
  • bpy.utils – funcții utilitare care sunt doar pentru Blender, dar nu se ocupă de date interne.

dacă sunteți curioși, aici este documentația API pentru Blender 2.8 și pentru toate versiunile anterioare.

pe măsură ce lucrați, obișnuiți-vă să vedeți unde pot fi găsite instrumentele preferate în cod. Nu trebuie să înțelegeți totul în acest moment-doar obișnuiți-vă cu ceea ce arată!

consola Python de putere

după ce sunteți gata pentru pasul următor, peste cap de la fila spațiu de lucru Scripting. Veți găsi editorul de informații acum familiar în partea stângă jos. Direct deasupra este consola Python, unde puteți lipi comenzi și puteți face lucrurile să se întâmple. Încercați acest lucru: selectați o linie în Editorul de informații, apăsați Ctrl+C pentru a copia, apoi utilizați Ctrl+V pentru a o lipi în consolă. Apăsați enter și veți vedea că aceeași acțiune se întâmplă din nou!

acum încercați acest lucru: rotiți, scalați și mutați ceva sau faceți orice alte trei acțiuni la rând. Copiați toate cele trei din editorul de informații și lipiți-le în consolă. Acum ai făcut doar trei lucruri dintr-o dată! Nu există nicio limită în acest sens, așa că ai putea face sute de lucruri simultan în acest fel, dacă ai vrea. Chiar dacă nu mergeți mai departe în codificare, acesta este un truc minunat de păstrat în buzunarul din spate.

salvarea comenzilor cu editorul de Text

vânătoarea printr-o grămadă de comenzi și copierea / lipirea tot timpul este ea însăși destul de obositoare dacă o faci mult! Să ne economisim ceva timp și să facem multitasking-ul nostru și mai eficient folosind editorul de Text Blender.

creați un fișier text nou și copiați și lipiți trei sau mai multe acțiuni diferite din editorul de informații în editorul de text. Voi începe prin adăugarea unui cub:

bpy.ops.mesh.primitive_cube_add(size=2, view_align=False, enter_editmode=False, location=(0, 0, 0))

apoi voi roti cubul de-a lungul axei Z:

bpy.ops.transform.rotate(value=-0.261911, orient_axis='Z', orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', constraint_axis=(False, False, True), mirror=True, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1)

Yikes, asta e o mulțime de cod pentru ceva atât de simplu! Dacă nu vă deranjează, atunci continuați și păstrați-l. Dacă vi se pare intimidant, încercați să ștergeți totul, cu excepția valorii și a axei orientate, astfel încât să se citească mai ușor. Restul își va asuma pur și simplu valorile implicite.

bpy.ops.transform.rotate(value=-0.261911, orient_axis='Z')

în cele din urmă, să adăugăm un modificator conic:

bpy.ops.object.modifier_add(type='BEVEL')

un lucru suplimentar pe care va trebui să faceți pentru a obține script-ul pentru a rula este de tip:

import.bpy

în partea de sus a fișierului, astfel încât să poată citi Blender Python. De asemenea, este util să activați cele trei butoane pentru numerele de linie, înfășurarea cuvintelor și evidențierea sintaxei în antetul editorului de Text.

poftim, acum ai un scenariu! Acum Puteți face trei lucruri foarte importante dintr-o dată făcând clic pe Executare Script în antetul editorului de Text. Dacă doriți să îl salvați pentru mai târziu sau să îl utilizați într-un alt fișier, accesați Text – > salvați ca și salvați-l ca fișier .Py Python.

dacă ați încercat comenzi diferite decât mine și scriptul dvs. nu funcționează conform așteptărilor, este probabil din cauza contextului – care obiect este selectat sau care editor este activ. Puteți selecta sau deselecta obiecte în Blender 2.8 setând proprietatea de selecție la True sau False:

bpy.data.objects.select_set(state=True)

toate apelurile automate

unele comenzi pe care le are Blender pot fi efectuate numai prin cod și nu se găsesc în interfață. În plus, alte lucruri care se schimbă în interfață (cum ar fi spălarea cronologiei) nu vă oferă întotdeauna ceva în Editorul de informații pe care îl puteți copia și lipi.

puteți utiliza întotdeauna Google sau Blender API Docs pentru a vă ajuta să găsiți comanda potrivită pentru a face ceea ce aveți nevoie, dar de multe ori este mai ușor să o găsiți doar folosind completarea automată. Dacă începeți să tastați o adresă în consola Python, puteți apăsa Ctrl+Space și Blender vă va arăta toate modalitățile disponibile pentru a finaliza ceea ce ați scris. Este o modalitate foarte bună de a naviga codebase și de a descoperi noi caracteristici.

editorul de Text are, de asemenea, o caracteristică de completare automată Ctrl+Space, dar nu funcționează la fel și, în general, nu este atât de util. Dacă este ceva ce ar folosi de multe ori, aș recomanda hapsân Addon Code Autocomplete Jacques Lucke, care vă va permite să lucreze mult mai repede.

template-uri grozave

dacă doriți să transformați scriptul într-un addon adecvat care poate fi accesat printr-un buton din interfață sau dintr-un meniu, șabloanele încorporate Blender sunt un loc minunat pentru a începe. Pot fi multe de reținut când vine vorba de modul de furnizare a informațiilor care se văd în preferințele utilizatorului sau cum să înregistrați suplimentul astfel încât să fie afișat corect, astfel încât șabloanele sunt un lucru minunat la care să vă referiți (sau să copiați și să lipiți) dacă rămâneți blocat.

de fapt, de învățare Python

dacă v-ați bucurat de a crea propriile script-uri, dar simt un pic scenariul la lipsa lor de putere (am făcut niște promisiuni mari la început!), atunci este timpul să aflați mai multe despre Python și programare în general. Concepte precum variabile, bucle și funcții sunt esențiale pentru a face ceva cu adevărat nou sau puternic. O mică cunoaștere poate merge mult aici, așa că merită cu adevărat efortul suplimentar. Aș recomanda săparea în Python la unul dintre următoarele site-uri. Nu suntem afiliați în nici un fel, ei fac doar o treabă bună.

  • Team Treehouse
  • Code Academy
  • Data Camp
  • Învață Python

Trimite Ajutor!

inevitabil, veți rămâne blocați în mijlocul construirii propriilor scripturi și suplimente. Se întâmplă celor mai buni dintre noi! Iată locurile în care puteți merge pentru a pune întrebări despre codificarea în Blender:

  • Blender StackExchange
  • Blender DevTalk

de asemenea, puteți afla mai multe vizionând aceste cursuri pe CG Cookie:

  • Introducere în Python Scripting în Blender
  • Scripting cu funcții de manipulare Python în Blender
  • Scripting o interfață de utilizare personalizată în Blender