Blender 2.8 Python Scripting Superpoteri per i non programmatori

Creazione di rendering 3d, giochi e animazioni è sempre incredibilmente eccitante! Beh, tranne quando diventa impegnativo o noioso. Se hai usato Blender o qualsiasi altra applicazione 3D per un po’, ti sei trovato slogging attraverso le stesse attività più e più volte e ad un certo punto il pensiero, “Vorrei davvero Blender appena fatto questo per me”.

Attraverso lo scripting, può! Non solo, Python può creare nuove funzionalità divertenti che non sono nemmeno possibili facendo clic sull’interfaccia.

Se sei come me e non hai avuto alcuna formazione in informatica, la programmazione può sembrare una parola di quattro lettere tranne che con undici lettere (2,75 volte più male!). È come un linguaggio segreto che solo le persone intelligenti conoscono, che probabilmente leggono sempre i fatti nutrizionali, costruiscono motori a razzo per divertimento o hanno un dottorato in qualche tipo di matematica che non usa nemmeno i numeri.

Per fortuna non è affatto così. La verità è che se puoi usare Ctrl + C e Ctrl + V per copiare e incollare, puoi iniziare subito a creare i tuoi script Python di Blender.

Abituati a vedere il codice

Terapia di esposizione. Desensibilizzazione progressiva. Chiamalo come vuoi, ma il modo migliore per normalizzare qualcosa che sembra strano inizialmente è vederlo abbastanza spesso nel giusto contesto.

Ogni azione eseguita nell’interfaccia di Blender viene eseguita tramite comandi Python. Puoi verificarlo tu stesso passando la tua Timeline all’Editor di informazioni e vedendo cosa sputa quando vai sul tuo normale lavoro.

L’editor di informazioni può essere un po ‘ firehose, ma c’è qualcosa sulle righe di comando e tale che potrebbe essere l’eresia di programmazione, ma mi ha messo a mio agio all’inizio – la maggior parte di ciò che vedi è lì nel caso in cui ne hai bisogno e il 98% delle volte non ne avrai bisogno. Quindi, quando fai qualcosa di semplice come spostare il cubo e ti dà due o tre righe complete di codice, puoi ignorarne la maggior parte. La parte importante è proprio all’inizio:

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

Sai già che il nome per spostare qualcosa si chiama ‘translate’, quindi i valori che vengono dopo sono quanto hai tradotto il tuo oggetto rispettivamente sugli assi X, Y e Z. Tutto prima di “tradurre” è dove si trova quel comando nel codice di Blender. È come se Blender fosse un menu nidificato gigante e tu avessi selezionato Blender Python – > Operations -> Transform – > Translate.

Ci sono nove sezioni principali di Blender Python (bpy). Non è necessario memorizzare questi, ma riconoscendo alcuni di loro può aiutare a capire come Blender sta lavorando sotto il cofano.

  • bpy.app-Informazioni su Blender stesso che non cambia durante l’esecuzione.
  • bpy.elenchi di sola lettura contestuale di ciò che è attualmente attivo in Blender.
  • bpy.dati – Tutti i dati interni di Blender, come gli oggetti.
  • bpy.msgbus-Sta per “message bus”, e viene utilizzato per notificare Blender di alcune modifiche. Non e ‘ qualcosa di cui dobbiamo preoccuparci.
  • bpy.ops-Tutte le operazioni che puoi fare in Blender, dalla modellazione all’aggiunta di file al rendering.
  • bpy.path-Funzioni che si occupano di percorsi di file.
  • bpy.props – Le diverse proprietà che Blender utilizza. Useresti questo per dire a Blender se un input dovrebbe essere un numero o un colore.
  • bpy.tipi-Ogni tipo di cosa che esiste in Blender, dai modificatori alle texture alle lampade e molto altro ancora.
  • bpy.utils-Funzioni di utilità che sono solo per Blender, ma non si occupano di dati interni.

Se siete curiosi, ecco la documentazione API per Blender 2.8 e per tutte le versioni precedenti.

Mentre lavori, abituati a vedere dove possono essere trovati i tuoi strumenti preferiti nel codice. Non è necessario capire tutto a questo punto-basta abituarsi a quello che sembra!

La console Python di Power

Una volta che sei pronto per il passaggio successivo, vai alla scheda Scripting workspace. Troverete l’editor di informazioni ormai familiare in basso a sinistra. Direttamente sopra c’è la console Python, dove è possibile incollare i comandi e far accadere le cose. Prova questo: seleziona una riga nell’editor delle informazioni, premi Ctrl + C per copiare, quindi usa Ctrl+V per incollarla nella console. Premi invio e vedrai che la stessa identica azione si ripeterà!

Ora prova questo: ruota, scala e sposta qualcosa, o fai altre tre azioni di fila. Copia tutti e tre dall’editor di informazioni e incollali nella Console. Ora hai appena fatto tre cose in una volta! Non c’è limite a questo, quindi potresti fare centinaia di cose contemporaneamente in questo modo se lo volessi. Anche se non vai oltre nella codifica, questo è un grande trucco da tenere nella tasca posteriore.

Salvare i comandi con l’editor di testo

Cacciare attraverso una serie di comandi e copiare / incollare tutto il tempo è di per sé piuttosto noioso se lo fai molto! Risparmiamo un po ‘ di tempo e rendiamo il nostro multitasking ancora più efficiente utilizzando l’editor di testo di Blender.

Crea un nuovo file di testo e copia e incolla tre o più azioni diverse dall’editor di informazioni nell’editor di testo. Inizierò aggiungendo un cubo:

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

Quindi ruoterò il cubo lungo l’asse 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, questo è un sacco di codice per qualcosa di così semplice! Se non ti dà fastidio, allora vai avanti e tienilo. Se lo trovi intimidatorio, prova a cancellare tutto tranne il valore e l’asse orientato in modo che legga più facilmente. Il resto assumerà semplicemente i valori predefiniti.

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

Infine, aggiungiamo un modificatore smusso:

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

L’unica cosa in più che dovrai fare per far funzionare lo script è il tipo:

import.bpy

Nella parte superiore del file, in modo che possa leggere Blender Python. È anche utile attivare i tre pulsanti per i numeri di riga, a capo automatico e l’evidenziazione della sintassi nell’intestazione dell’editor di testo.

Ecco, ora hai un copione! Ora puoi fare tre cose molto importanti tutte in una volta facendo clic su Esegui script nell’intestazione dell’editor di testo. Se vuoi salvarlo per dopo o usarlo in un file diverso, vai su Text -> Salva con nome e salvalo come file Python .py.

Se hai provato comandi diversi da quelli che ho fatto e il tuo script non funziona come previsto, è probabilmente dovuto al contesto – quale oggetto è selezionato o quale editor è attivo. È possibile selezionare o deselezionare gli oggetti in Blender 2.8 impostando la proprietà selection su True o False:

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

Tutti Hail Completamento automatico

Alcuni comandi che Blender ha può essere fatto solo attraverso il codice e non si trovano nell’interfaccia. Inoltre, altre cose che cambiano nell’interfaccia (come il lavaggio della timeline) non sempre ti danno qualcosa nell’Editor delle informazioni che puoi copiare e incollare.

Puoi sempre utilizzare Google o i documenti API di Blender per aiutarti a trovare il comando giusto per fare ciò di cui hai bisogno, ma spesso è più facile trovarlo usando il completamento automatico. Se inizi a digitare un indirizzo nella console Python, puoi premere Ctrl + Spazio e Blender ti mostrerà tutti i modi disponibili per completare ciò che hai scritto. È un ottimo modo per navigare nella base di codice e scoprire nuove funzionalità.

L’editor di testo ha anche una funzione di completamento automatico Ctrl+Space, ma non funziona allo stesso modo e generalmente non è così utile. Se è qualcosa che useresti spesso, ti consiglio di afferrare l’addon di completamento automatico del codice di Jacques Lucke che ti permetterà di lavorare molto più velocemente.

Modelli formidabili

Se desideri trasformare il tuo script in un addon appropriato a cui puoi accedere tramite un pulsante nell’interfaccia o un menu, i modelli integrati di Blender sono un ottimo punto di partenza. Ci può essere molto da ricordare quando si tratta di come fornire le informazioni che si vedono nelle preferenze dell’utente o come registrare l’addon in modo che sia visualizzato correttamente, quindi i modelli sono una grande cosa a cui fare riferimento (o copiare e incollare da) se ti trovi in difficoltà.

In realtà imparando Python

Se ti è piaciuto creare i tuoi script ma ti senti un po ‘ deluso dalla loro mancanza di potere (ho fatto alcune grandi promesse all’inizio!), quindi è il momento di saperne di più su Python e sulla programmazione in generale. Concetti come variabili, loop e funzioni sono essenziali per rendere qualcosa di veramente nuovo o potente. Un po ‘ di conoscenza può andare un lungo cammino qui, quindi vale davvero la pena lo sforzo supplementare. Consiglierei di scavare in Python in uno dei seguenti siti. Non siamo affiliati in alcun modo, fanno solo un buon lavoro.

  • Team Treehouse
  • Code Academy
  • Data Camp
  • Impara Python

Invia aiuto!

Inevitabilmente, rimarrai bloccato nel mezzo della creazione di script e componenti aggiuntivi. Succede ai migliori di noi! Ecco i posti dove puoi andare per porre domande sulla codifica in Blender:

  • Blender StackExchange
  • Blender DevTalk

Puoi anche saperne di più guardando questi corsi su CG Cookie:

  • Introduzione allo scripting Python in Blender
  • Scripting con le funzioni del gestore Python in Blender
  • Scripting un’interfaccia utente personalizzata in Blender