Francesco Andresciani - Blender Foundation Certified Trainer

Posts Tagged ‘python’

Python – Appunti di studio 3 – Lo Zen di Python

In BlenderClick on 8 Marzo 2015 at 01:05

tronco1680

La volta scorsa abbiamo parlato dei blocchi di codice nidificati. Vi ho proposto un semplice esercizio che SICURAMENTE avrete svolto con estrema diligenza.

L’esercizio vi chiedeva di provare ad utilizzare un diverso numero di spazi o la tabulazione per creare le indentazioni nel codice per farvi capire che così facendo sareste incorsi in errore. Questo perché in Python le indentazioni non sono una questione di stile, ma sono un vero e proprio requisito.

Quello che invece non è un vero e proprio requisito, ma fa parte della filosofia di questo splendido linguaggio sono le 19 regole dello Zen di Python, scritte nell’ormai lontano 1999 da Tim Peters e che qui riporto tradotte in italiano:

  1. Bello è meglio che brutto.
  2. Esplicito è meglio di implicito.
  3. Semplice è meglio che complesso.
  4. Complesso è meglio di complicato.
  5. Lineare è meglio che nidificato.
  6. Sparso è meglio di denso.
  7. La leggibilità conta.
  8. I casi speciali non sono abbastanza speciali per infrangere le regole.
  9. Anche se la praticità batte la purezza.
  10. Gli errori non dovrebbero mai essere ignorati.
  11. A meno che non vengano esplicitamente messi a tacere.
  12. In caso di ambiguità, rifiuta la tentazione di indovinare.
  13. Ci dovrebbe essere un modo ovvio, e preferibilmente uno solo, di fare le cose.
  14. Anche se questo modo potrebbe non essere ovvio da subito, a meno che non siate olandesi.
  15. Ora è meglio che mai.
  16. Sebbene mai sia spesso meglio che proprio adesso.
  17. Se l’implementazione è difficile da spiegare, l’idea è pessima.
  18. Se l’implementazione facile da spiegare, idea può essere buona.
  19. I namespace sono una grandissima idea, usiamoli il più possibile!

Esercizio: imparare a memoria quanto sopra!

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

Python – Appunti di studio 1

In BlenderClick on 28 Aprile 2014 at 23:49

python

Fermi tutti.

Prima di rompervi le scatole con una tonnellata di teoria proviamo a fare qualcosa di pratico.

Aprite Blender e cancellate il cubo. Fin qui tutto ok, giusto?

Bene.

Cambiate il tipo di editor della finestra in basso da Timeline a Python Console.

140428-0001

 

140428-0002

Wow! Che è?

Aspetta, non farti domande. Almeno per i prossimi 30 secondi.

Vedi questa strana scritta qui sotto?

 

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))

 

Ecco, copiala e incollala nella Python Console.

Premi INVIO 2 volte e attendi qualche secondo.

Ecco fatto. Hai appena detto a Blender di inserire 500 sfere nella scena seguendo uno schema dettato dalle seguenti formule:

  • per l’asse X: (x/10)*sin(x)
  • per l’asse Y: (x/10)/cos(x)
  • per l’asse Z: (x/10)*cos(x)

Per fare ciò hai utilizzato la “lingua” ufficiale di Blender: Python

Python è un linguaggio di programmazione di alto livello (alto livello vuol dire che con poche righe di codice puoi fare tante cose, al contrario dei programmi di basso livello in cui per fare una semplice somma devi diventare pazzo). E per quanto mi riguarda la definizione può fermarsi qui. Ma se ne vuoi una più completa eccoti accontentato: http://www.python.it/about/

Perché Python? Cosa centra con Blender?

Il linguaggio di programmazione Python ti permette di realizzare vere e proprie parti di Blender. Puoi creare dei nodi, degli addon personalizzati, impartire comandi diretti come hai appena fatto. Puoi utilizzarlo per implementare funzioni nei videogiochi creati con Blender Game, puoi creare un tuo sistema particellare personalizzato. La lista è lunga, ma credo che tu abbia già capito.

Chiudo questa brevissima pubblicazione introduttiva per proporti un esercizio.

Prova a modificare le istruzioni che hai copiato ed incollato per vedere che effetto hanno i cambiamenti sul risultato finale ponendoti magari anche qualche domanda tipo:

  • Come posso aumentare il numero di oggetti inseriti nella Scena?
  • Come posso fare in modo che le sfere siano più vicine tra loro?
  • Come posso fare in modo che anziché le sfere, vengano inseriti dei cubi?

A presto e buon lavoro!

Appunti di studio 2 >