Francesco Andresciani - Blender Foundation Certified Trainer

Python – Appunti di studio 2

In BlenderClick on 14 Novembre 2014 at 00:26

Python è un linguaggio di programmazione in grado di aprirci le porte delle stanze più segrete di Blender (e non solo: anche molte aziende internazionali ne fanno uso per la realizzazione di applicazioni scientifiche, giochi, applicazioni per il web ecc.)
Il mio obiettivo per cui scrivo questi appunti è quello di imparare, e contemporaneamente condividere, il modo in cui Python può essere utilizzato all’interno di Blender.
Non so bene quale sarà la meta definitiva, ma scrivere un addon già non sarebbe male. Se poi fosse anche utile a qualcosa… chissà!

Sul sito ufficiale www.python.org potrete trovare (in inglese) una marea di informazioni. Vi consiglio di farci un giretto.

Python è un linguaggio di programmazione interpretato. Questo vuol dire che per poter essere eseguito è necessario avere un interprete. All’interno di Blender questo interprete si trova nell’editor Python Console ed è interattivo. Possiamo quindi scrivere i comandi per farli eseguire istantaneamente. Naturalmente questo non è il modo più comodo per eseguire programmi complessi, ma vedremo più avanti come fare per salvare i nostri programmi su un file a parte per farli poi eseguire a nostro piacimento.

141114-0002
Un esempio di esecuzione istantanea di comandi l’abbiamo visto nella prima puntata di questa serie di appunti. Ora vedremo come trovare spunti per muoverci da soli.

Apriamo un nuovo file con il cubo di default selezionato e premiamo [X] per eliminarlo, ma anziché fare click su OK teniamo fermo il cursore del mouse finché non comparirà il tooltip che ci indica il nome del comando che stiamo per eseguire e la relativa funzione richiamata in Python (se non vi compare potete abilitarla in User Prefereces->Interface->Python Tooltips).

141114-0001

Vedrete che la funzione richiamata è bpy.ops.object.delete(use_global=False)

Ora fate una prova: anziché fare click su OK andate nella Python Console ed inserite il comando che avete appena letto.

Fatto! Il cubo è stato eliminato!

Dovreste aver capito che è possibile ricavare tantissimi comandi semplicemente leggendoli nelle tooltips, facile no?

Bene, abbiamo imparato un po’ di cose, ma ancora non sappiamo niente di questo linguaggio. Quali sono i suoi “vocaboli”? E soprattutto: quali sono le “regole grammaticali”?

Da qui, e per le prossime puntate, parte ora un percorso un po’ noioso, ma che varrà la pena seguire. Soprattutto cercheremo di mettere in pratica ogni cosa che impareremo in modo da non addormentarci sulla tastiera.

I blocchi di codice nidificati.
Cosa sono i blocchi di codice nidificati? Senza volerlo ne avete già fatto uso nella prima tappa del nostro viaggio (Appunti di studio 1) quando avete usato un ciclo for.
Detta in maniera un po’ riduttiva, si tratta di una serie di istruzioni racchiuse all’interno di un’altra istruzione. Rivediamolo:

for x in range(500): bpy.ops.mesh.primitive_uv_sphere_add(view_align=False, enter_editmode=False, location=((x/10)*sin(x), (x/10)/cos(x), (x/10)*cos(x)), layers=(True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False))

Con questo lunghissimo comando abbiamo detto:

per ogni x in un intervallo da 0 a 499 esegui questo comando: aggiungi una mesh di tipo UVsphere utilizzando le seguenti coordinate e le seguenti opzioni (elenco di opzioni)

Quindi il comando bpy.ops.mesh.primitive_uv_sphere_add (indovinate ora come avevo fatto a trovarlo?) era nidificato all’interno del comando for.

Quando scriviamo codice contenente comandi nidificati dobbiamo usare l’indentazione utilizzando 4 spazi (sempre 4 spazi, non chiediamoci il motivo, non ci interessa).
Per inserire delle note nel codice utilizziamo il #

Esempio di codice nidificato:

# Questa è una nota
for n in range(10): # per ogni n compreso tra 0 e 9 eseguiamo:
    for m in range (10): # per ogni m compreso tra 0 e 9 eseguiamo:
        print (m * n) # stampiamo a video il prodotto tra m ed n

Potete copiare e incollare il codice direttamente nella Python Console e premere INVIO due volte per eseguirlo.

ESERCIZIO: provate a usare una volta 4 spazi e una volta 3 spazi, o la tabulazione per vedere cosa succede.

Alla prossima!

< Appunti di studio 1

Rispondi