giovedì 29 giugno 2017

...CASA?

Sono iscritto, come tutti, ad una innumerevole serie di siti, sitacci e sitarelli che ci propinano di tutto. Viviamo nell'epoca dell'architettura dell'immagine - anche definita assai propriamente "architettura degli SMS" da un mio collega ed amico - ed ogni giorno veniamo letteralmente investiti da qualunque informazione: materiali innovativi, nuove soluzioni tecniche, nuovi concorsi, nuovi premi, nuovi progetti, nuove realizzazioni... il tutto, ad opera di chiunque, in qualunque parte del globo. 

Noi più o meno svogliatamente clicchiamo sul nostro schermo luminescente e scorriamo con più o meno interesse le centinaia di immagini (rendering? fotografie? chi li distingue più?). Carino. Interessante. Una cagata. Essere poco obiettivi ci è più che sufficiente, tanto tra 15 secondi avremo già chiuso tutto e saremo tornati alla nostra occupazione principale. Non assorbiamo più le informazioni: le teniamo nella nostra RAM per provare quel piacere serotoninico che ci viene dalla visione di una bella immagine, senza fare il nostro lavoro: CAPIRE gli spazi.

A volte è impossibile, non abbiamo abbastanza elementi per capire alcunché. Non ci sono piante, non ci sono schemi, ci rifilano solo 4 immagini e festa finita. A volte però, bastano.

E oggi l'invettiva è suscitata/dedicata da/a questo articolo: LINK

Io non voglio perdermi nel mare di considerazioni da purista dell'architettura, né tantomeno scadere nel volgare giudizio sull'operazione immobiliare in sé (dobbiamo pur mangiare, no?). 

Non posso però non essere indotto ad interrogarmi sul significato di abitare che oggi ci porta a questo genere di aberrazioni. L'idea di per sé è nobile: ho uno spazio "magazzino" e lo trasformo in uno spazio "residenza". E' un po' il criterio alla base del riutilizzo in loft di tutti quei capannoni industriali abbandonati che avevamo costruito. Ma è davvero possibile che un QUALSIASI magazzino sia compatibile con l'idea e la funzione di CASA?

A mio avviso, ridipingere le pareti, rivestire il bagno in ceramiche Porcelanosa, buttare lì due moduli 60x60 e chiamarli cucina, sistemare un materasso su un soppalco senza parapetto non solo non è realizzare una abitazione, ma non è nemmeno da considerarsi una ristrutturazione. In più, descrivere il tutto come una sorta di attenzione per il riuso al fine di preservare le aree non ancora costruite mi sa - come dire - un po' da presa per i fondelli. 

Questa è solo una becera ed insultante speculazione. 

Specula su chi lavora in una città carissima e ha lo stipendio fermo al 2005, e deve accontentarsi di un loculo travestito da casa (perche ci sono le piastrelle Porcelanosa sapete!) oppure farsi 3 ore di mezzi pubblici al giorno nel traffico e vivere a Monza Brianza. Sfrutta una normativa che si impegna tanto a non farti realizzare una cuccia in legno per il tuo cane per tutelare il tuo vicino, ma che tu viva in 18mq con una singola finestra (magari rivolta a Nord) va benissimo. Hai visto mai che ti rilassi e cominci a PENSARE. E poi avete visto che bel panorama?

Tra le immagini, ce n'è una particolarmente riuscita: compare un tavolo sconfinato (ma non credeteci: è  un tavolino 40x40cm che con un obiettivo grandangolare pare il tavolo delle feste di Natale) con tanto di candeline accese. 
Ma chi credete di abbindolare? Credete ancora che ci sia gente così stupida che vede due lucine e dice "OOOOHHHHHHHHHH ma che bello spazio.....anche io lo vorrei così, il mio soggiorno, la mia VITA..."? Ma facciamoci il piacere, è un insulto alla nostra intelligenza.

So che alcuni dei miei lettori sono giovani: ragazzi, leggetevi l'articolo che vi ho linkato, perché in internet esistono anche esempi di cosa NON bisogna fare. Siate sempre critici, cercate i veri valori, la vera coerenza. 

E vi prego: nei vostri progetti, considerate sempre la dignità delle persone.



A prestissimo

mercoledì 28 giugno 2017

Dove l'architettura si interseca con la CG
l'esperienza nel RPBW

Questo blog, come sa chi legge i miei post, non è nato come uno tra i 5.000 blog che disquisiscono di architettura e di computer grafica; piuttosto, è uno tra i 70.000.000 di blog che ospitano tutorial, how-to e chi più ne ha più ne metta sulla pura e semplice renderistica. Ho pensato che forse una svolta sarebbe il caso di darla: in fondo, prima che visual artist sono architetto, sensibile a certe tematiche più di un semplice renderista. 

Forse questo post sarà solo un episodio sporadico, o forse mi occorrerà realizzare quel blend di pazienza, costanza e tempo che ancora oggi non sono riuscito a bilanciare. Resto dell'idea che comunque vada sarà stato un piacere scrivere queste poche righe per segnalarvi un interessante articolo postato su TREDDI (portale italiano di computer grafica), in cui viene intervistato Dionysios Tsagkaropoulos, la figura che sta dietro praticamente a tutte le visualizzazioni del Renzo Piano Building Workshop. Oltre alle competenze tecniche di cui potrete rendervi conto sia dalle immagini che dalle risposte che Dionysios dà al suo intervistatore, mi sembra interessante vedere l'atteggiamento col quale si pone nei confronti dell'oggetto da rappresentare, ed in quale modo esso non venga recepito e realizzato A SEGUITO della elaborazione progettuale, ma che sia invece un processo INTEGRATO nella progettazione. 

Il RPBW è uno studio tecnico di rilevanza mondiale, ed all'avanguardia sotto moltissimi aspetti puramente professionali e non. Anche in questo campo di applicazione, mi auguro che lo studio possa costituire un esempio da seguire.

A prestissimo!

giovedì 8 giugno 2017

ERBETTA FAST AND FURIOUS

Ciao a tutti!

Oggi vediamo come si può dribblare un eterno problema, ovvero come ottenere dei prati realistici per le nostre visualizzazioni, anche in poco tempo.

Poco tempo = photoshop, sappiatelo.

Parentesi che apro e chiudo: di recente è stato prodotto un interessantissimo plugin per Sketchup che trovate qui, il quale consente di gestire una grandissima quantità di oggetti 3D senza appesantire la scena; esiste anche un forum in cui potete vedere parecchi esempi dei molti entusiasti utenti. Purtroppo il plugin è a pagamento, ma ne vale la pena.

Bando alle ciance: di cosa stiamo parlando? Prati facili e veloci. Benissimo. 

Innanzitutto chiarisco che questo metodo funziona bene per viste soggettive, è applicabile anche a viste assonometriche o dall'alto ma con molta più difficoltà. Partiamo quindi da un modello molto basico, fatto più o meno così:
Il terreno è stato modellato in maniera molto approssimativa con lo strumento sabbiera, per dare un po' di movimento e quindi di ombreggiatura. Non è necessario: si può lavorare benissimo anche con un piano puro e semplice. Il materiale che applicheremo al terreno è un verde molto pallido, anche più chiaro di quello che vedete rappresentato. Lo shader di Indigo potrà essere impostato tranquillamente su diffuse (inutile complicare tutti i calcoli con shader più complicati).

Otteniamo una immagine di questo tipo (ho allungato un po' le ombre direttamente in Indigo per renderle più visibili):
 

A questo punto apriamo la nostra immagine in Photoshop e cominciamo a lavorarci su. Come primissima cosa, è necessario che ci procuriamo una buona fotografia di erba nella giusta prospettiva. Qualcosa come le due immagini che seguono, che potete trovare a questo e questo link. 


Una volta trovata l'immagine giusta (servirà un po' di esperienza), carichiamola nella nostra immagine su un nuovo livello, ottenendo qualcosa di questo tipo:

Se l'immagine iniziale è stata resa affiancabile, possiamo copiare questo livello più volte per coprire tutta l'area verde del nostro render.


A questo punto, procediamo unendo i livelli che abbiamo creato (selezione dei livelli e ctrl+E) e cambiamo il metodo di fusione del livello, da "normale" a "moltiplica" o "sovrapponi" (la scelta cambia a seconda della immagine d'erba che avrete trovato).
Otterrete qualcosa di questo tipo:

Non troppo sexy. 

Il passo successivo consiste nel creare una maschera di livello e di ritagliare tutte le parti che non si trovano sul nostro piano verde (vedete la maschera nell'immagine che segue): 
Va da sé che è ovviamente possibile lavorare su altre modifiche del livello della texture d'erba trovata, per controllarne al meglio l'effetto finale con l'ambientazione del render; come vedete, alla mia erba ho applicato una correzione di valore tonale, per virare tutto su toni un po' più caldi.
Dopo il lavoro con la maschera, otteniamo questo risultato, tutt'altro che disgustoso:


Per mia ricerca ho fatto un test con la seconda erba che vi ho indicato, ed ho prodotto un risultato a mio gusto più soddisfacente:


E' ovviamente possibile combinare entrambe le ipotesi semplicemente accendendo contemporaneamente i due livelli delle relative textures, con relativi correttivi: io utilizzo i layer organizzati in cartelle, lo trovo un metodo molto efficace (nell'immagine che segue, "opzione 2" è la cartella della seconda texture d'erba; "opzione 1" è la cartella della prima).

Il risultato finale combinando i due livelli è il seguente:


E qui termina il mio brevissimo tutorial. Spero e credo che questi semplici passaggi possano rendere la vostra vita da grafici fotoritoccatori un po' più leggera. 

A presto!

giovedì 25 maggio 2017

I NUOVI SETTAGGI MATERIALE


Non si capisce bene perché, ma pare che ciclicamente gli sviluppatori dei programmi si divertano a cambiare un po' le carte in tavola. Così, nel caso di Indigo, il parametro che una volta si chiamava Exponent con le nuove versioni di Indigo e SkIndigo si chiamerà Roughness, allineandosi peraltro alla schiera di altri motori che da sempre si riferiscono alla rugosità del materiale con questo termine (..colgo l'occasione per chiarire - a chi non lo sapesse - come va letto: si pronuncia "rafness". Non "raug-ness" o "roughess", ve ne prego... Voi - o miei lettori assigui - DISTINGUETEVI!).

Ma bando alle ciance: come funzionano i nuovi parametri che controllano la lucidità dei nostri materiali? Mi sono preso qualche tempo per darci un occhio ed eccomi qui a relazionarvi.

Innanzitutto, i parametri da regolare sono 2: Fresnel Scale ed il neoentrato Roughness. Il primo regola il valore di IOR (indice di rifrazione, ignorantoni), il secondo regola la quantità di rugosità superficiale. I parametri lavorano in parallelo, ed integrano uno le funzioni dell'altro. Entrambi possono essere regolati numericamente da 0 a 1, oppure tramite un mappa (che esclude automaticamente il valore numerico eventualmente impostato).
A livello intuitivo, si coglie una certa differenza tra i due parametri, ma è difficile spiegarla a parole: affidiamoci come sempre a qualche immagine cotta apposta per voi.



OH IL MIO ADORATO LEGNO! Quale migliore materiale per fare qualche test? Bene, in questo caso vedete un elegante pavimento in listellini a spina di pesce. Dev'essere stato piallato di recente perché la vernice è stata evidentemente grattata via: non ha alcuna riflessione. Otteniamo questo risultato applicando al materiale del legno lo shader DIFFUSE.

Proviamo ora a trasformare lo shader in un PHONG, ed impostare qualche parametro.

Ecco a voi un pavimento perfettamente levigato e verniciato di recente. Piuttosto fintello, eh? Come si ottiene questo? Semplicemente col parametro ROUGHNESS settato a 0.2 (lasciamo per ora impostato ad 1 il valore Fresnel Scale). Il numero è molto vicino a 0, quindi la rugosità e quasi pari a zero, quindi il materiale è lucido; diciamo, indicativamente, 1/5 della sua potenziale lucidità massima. E se invece ci spostassimo più verso l'1, cioè la rugosità massima? PRRRRONTI!
Come ci aspettavamo, con Roughness impostata a 0.7 le riflessioni quasi completamente sono sparite. Se siete acuti osservatori potete notare però che esiste una differenza tra questa resa e quella dello shader DIFFUSE: in effetti la presenza di una piccola percentuale di lucidità (quello 0.3 che manca per arrivare alla rugosità massima) ci dà quella sensazione di "materiale usato da lungo tempo". In alcuni casi, questo risultato potrebbe quasi andare bene, posto che comunque è un effetto troppo uniforme per essere completamente verosimile.


Vediamo quindi come regolare le disomogeneità. Iniziamo riportando il valore di Roughness a 0.2, e specificando una mappa nel canale Fresnel Scale. In questo modo annulliamo il significato del valore numerico 1 dato in precedenza al parametro, e ci affidiamo ad una mappa che descriverà ad Indigo le variazioni di IOR. 
Utilizzeremo questa mappa:
Il colore del pixel definisce il valore numerico puntuale da assegnare al canale: in questo caso, i pixel neri assegneranno il valore 0 di Fresnel Scale in quel punto, i pixel bianchi varranno come Fresnel Scale pari a 1. Fresnel Scale 0 sta a significare "Fresnel Scale nulla", quindi in sostanza effetto Fresnel nullo, quindi nessuna riflessione. Fresnel Scale 1 sta a significare al contrario "Fresnel Scale massimo", quindi massima visibilità della riflessione, con valore specificato nello slot IOR. 

E' importante ricordare che questo 1 non sta a significare SUPERMEGAGIGARIFLESSIONI: il valore 1 semplicemente rende visibile al 100% la quantità di riflessioni specificate con l'IOR. 


....vabbè Filì: cosa otteniamo? 

Eccovi serviti. Come potevamo immaginare, la mappa prevalentemente chiara ha determinato la presenza di visibilità di riflessione in molti punti. Nei punti della mappa perfettamente bianchi, la visibilità del valore IOR è massima.


Cosa succede se a variare è la rugosità e non la visibilità dell'IOR? Impostiamo un valore costante per il parametro Fresnel Scale scegliendo "none" dal menu a tendina e riportiamo il valore ad 1. Assegniamo invece una texture al canale Roughness, utilizzeremo la seguente:
Quando lavoro con mappe Roughness mi è sempre risultato difficile collegare mentalmente colore del pixel e risultato: ho quindi escogitato una piccola filastrocca mnemonica: "Pixel nero, raughness zero". Questa rimetta mi aiuta a ricordare che i punti neri della mappa avranno rugosità zero, quindi saranno perfettamente lucidi. Per antitesi, quelli bianchi saranno assolutamente opachi. Ecco perché è utile in questo caso che le fughe del parquet siano chiare: saranno molto più opache, con tutta la microsporcizia che ci si ferma dentro.


Ecco il risultato:

Le mappe specificate sui due canali, alla bisogna, possono controllare i parametri parallelamente. Ecco cosa risulta se assegniamo ed abilitiamo le mappe su entrambi i canali:
Con un po' di pratica, si impara a bilanciare i valori in modo da ottenere il risultato materico che ci immaginiamo. Personalmente preferisco un effetto finale di questo tipo, ottenuto con shader PHONG, IOR 1.38, Roughness lineare 0.68 e Fresnel Scale con mappa:


Saluti a tutti! E postatemi i vostri test!!!!!!!

mercoledì 23 novembre 2016

MY.SKETCHUP
per la modellazione ovunque voi siate


Questo brevissimo post per segnalarvi l'avvio della piattaforma online my.sketchup. Si tratta di un sito online che raccoglie molte delle funzionalità del nostro amato Sketchy per darvi la possibilità di lavorare sui vostri files senza l'inghippo di avere il software installato nel dispositivo su cui dovete lavorare. 


Come vedete, l'interfaccia è piuttosto simile alla versione desktop del programma, sulla sinistra trovate gli strumenti, sulla destra invece i pannelli finestra; entrambi sono ridotti a barre a scomparsa per ottimizzare la sezione dedicata al viewport. In alto a sinistra si trovano invece le impostazioni generali (vi consiglio di cercare in questo menu l'impostazione delle unità di misura: di default my.sketchup si avvia in sistema con unità imperiali).

Ancora una volta, una proposta di migliore connettività da parte di Trimble. Questo programmino secondo me farà strada. 

A presto!

sabato 5 novembre 2016

MODELLARE UNA FINESTRA REALISTICA PER IL RENDERING

Un altro capitolo interessante è quello della modellazione dei serramenti. Chi modella per l'architettura ha la tendenza a semplificare la questione, vuoi perché l'attenzione di chi progetta - una volta individuata una determinata forometria - si rivolge ad altro, vuoi perché un serramento riprodotto per bene in tutte le sue parti può essere piuttosto pesante, a livello di geometria 3D. 

Che sia per un motivo o per l'altro, spesso nella fase di pre-renderizzazione il nostro serramento appare più o meno così 

Il più delle volte - vi metto in guardia - il vetro è composto da una singola faccia; a questo proposito vi ricordo che in caso di estrema e impellente necessità Indigo può renderizzare anche un vetro "impossibile" se impostate lo shader su ThinGlass.

Ad ogni modo, se renderizziamo il modello rappresentato sopra otteniamo questo:
La tristezza era tanta che non ho avuto cuore di lasciarlo cuocere più a lungo. Direi che comunque ci siamo capiti. Questo non sembra affatto un serramento. Vediamo allora come possiamo modellare in tempi ragionevoli un serramento verosimile. 

Il primo e unico consiglio che vi do, madre di tutti i consigli per l'architettura e quindi per il rendering SAGGIO - che è quello che facciamo noi, per inciso - è GUARDATEVI ATTORNO. Fortunatamente ognuno di noi sta in una casa calda: tutti i grandi buchi nei muri delle vostre case hanno una finestra a chiudere gli spifferi: coraggio, dateci un occhio. SU. 

La prima cosa che osserviamo è che non c'è quasi nulla di complanare. Si, qualche serramento può esserlo, ma qui stiamo creando un FACILE SERRAMENTO STANDARD, quindi consentiamoci qualche approssimazione. Prima cornice:
Questa rappresenta il telaio apribile del serramento. La sezione dell'elemento sarebbe in realtà molto più complessa, ma noi non vedremo mai nulla di tutto ciò per cui SEMPLIFICHIAMO.

Passiamo alla seconda cornice: questa è una finitura che va a coprire il giunto tra parte fissa del telaio e il muro. Praticamente qualunque cosa che copra un buco in architettura ha una cornice. In questo caso la semplifichiamo così:
In questo caso, vi consiglio di perderci un attimo di tempo e di costituire 2 coppie di componenti geometricamente separati (cornice orizzontale e cornice verticale). Sarà utile in una delle rifiniture finali.

Il telaio apribile di un serramento moderno presenta normalmente verso il lato esterno una protrusione nella sezione, in modo da consentire l'appoggio della lastra vetrata in fase di realizzazione. Posato il vetro, questo viene fissato con un fermavetro. Modelliamo questo semplice elemento:
Non avendo modellato la protrusione di cui sopra, ci accontentiamo di approssimare il tutto copiando il nostro fermavetro anche all'esterno, ottenendo questo:
Ora una parte importante: il vetraggio. Inutile dirvi che ormai i serramenti a vetro singolo sono piuttosto rari: questo ci costringe a modellare più elementi per comporre l'elemento centrale del serramento. Per stare su un serramento medio direi che potremmo partire con un 4-12-4. Questa scrittura tecnica sta a significare un vetraggio composto da due vetri di spessore 4mm e di una camera d'aria interclusa di 12mm di spessore. Realizziamo quindi un primo pannello vetrato di spessore 4 mm e appoggiamolo alla parte interna del fermavetro:
Abbiate cura ora di creare un minimo di aria tra tutte le facce che si toccano (vedete quelle spiacevoli righettine che si vedono sullo spessore del vetro?): basta anche mezzo millimetro. Ricordatevi quindi di spostare di mezzo millimetro verso l'interno il pannello vetrato, separandolo quindi dal fermavetro esterno. 
Abbiamo raggiunto una situazione del genere:
Già con questo fate felice il renderista. Ma se volete davvero commuoverlo potete realizzare un ultimo dettaglio che farà aumentare di molto il grado di realismo del vostro serramento. L'elemento che determina la posizione reciproca dei vetri si chiama distanziatore, e normalmente è una bandina di alluminio, caratterizzata da piccole striature longitudinali e delle piccole punzonature.
Potrei stare qui a farvi un predicozzo sul fatto che le cose bisogna sudarsele per imparare, e costringervi a lunghe ricerche in rete sulle textures da utilizzare. Ma sappiamo tutti che in fondo a questo post ci sarà un utilissimo link al mio modello pre-fatto, per cui soprassediamo. 

Col posizionamento dell'elemento ci troviamo in questa situazione (ho spento il vetro interno per rendere evidente il distanziatore):
Il materiale del distanziatore studiatevelo un attimo. Se avete domande sapete che siamo sempre qui al vostro servizio. Si fa per dire.

Un ultimissimo passaggio: se avete modo, cercate di smussare tutti gli spigoli, perché nella realtà - soprattutto quando si parla di elementi in legno - gli spigoli perfetti non esistono. Potete utilizzare l'utilissimo plugin ROUNDCORNER. Se volete capire come funziona, vi segnalo l'ottimo tutorial di Simo3D a questo indirizzo.

Volete vedere come funziona il modello? Ecco qua: velocissimo render, con tanto di fuori fuoco perché il modello vale veramente la pena.


A presto!


mercoledì 20 aprile 2016

Buondi a tutti! 
In questo ultimo periodo mi sono trovato a trafficare con un lavoro di modellazione urbanistica più che architettonica. Il primo pensiero di chiunque di noi si sia trovato ad affrontare una modellazione di questo tipo vola alla mappatura della strada; il secondo, terribile, allo sfacelo di elementi - lampioni, cordoli, segnapasso,... - che prima o poi ineluttabilmente ci toccherà distribuire lungo il tracciato. Mi sono quindi adoperato nella comprensione del problema, cercando una soluzione snella alternativa al diventare anziano a forza di copiare e ruotare oggetti centinaia di volte. Ovviamente esiste, anche se utilizziamo uno strumento semplice come il nostro Sketchy.

Partiamo quindi dalla nostra situazione tipica: ho disegnato una serie di archi del tutto casuale, a rappresentare un ciglio stradale tipo. Che si tratti di archi e non di linee rette non influisce assolutamente: potete partire dalla primitiva che volete.

Il prossimo passaggio consiste nell'utilizzo di un primo plugin, ovviamente gratuito, che ci darà la possibilità di "unire" in una sola entità la nostra direttrice di distribuzione: selezioniamo tutti gli oggetti, menu "Extensions" e cerchiamo "weld". Con un click trasformeremo gli oggetti selezionati in un'unica entità.

 A questo punto ammettiamo di voler distribuire un palo stradale a due lampade lungo questa traiettoria. Importiamo l'oggetto nel nostro modello: è importante che l'oggetto - gruppo o componente che sia - sia caratterizzato da un sistema interno di assi cartesiani posto correttamente. Nell'immagine sottostante vedete che al doppio click, il palo della luce mostra un asse spostato rispetto all'oggetto, e questo non è bene.
In questo caso, sarà nostra cura modificare il sistema di assi interno in modo che l'origine degli assi sia impostato sulla base dell'elemento, nel suo baricentro: questo punto esatto verrà preso come punto di distribuzione del lampione. Per far questo, clicchiamo con il tasto destro sugli assi che vediamo, selezioniamo l'opzione "place" e cerchiamo:
1. il centro del cerchio (origine degli assi)
2. direzione dell'asse rosso
3. conferma della direzione dell'asse rosso
Ora il componente ha un sistema di assi interno congruo al nostro scopo. 
A questo punto selezioniamo con un click la nostra curva e richiamiamo il plugin "Pathcopy" (subito sopra a "weld" se li avete scaricati ed installati entrambi). Non appena avrete cliccato, la casella di input numerico vi darà un valore: quello è il valore delle unità di disegno che verranno lasciate tra le diverse copie di elementi, nel nostro caso ho digitato 7 (metri). 

 Fatto questo, cliccate sul componente da copiare, ed il gioco è fatto.
Si...è vero: in questo momento il lampione non è orientato correttamente rispetto all'asse stradale. Possiamo agire in due modi: 
1. Torniamo indietro con le operazioni fino alla determinazione dell'asse interno al componente "palo della luce": dovremo dare come asse rosso interno una direzione ruotata di 90 gradi rispetto a quella precedentemente specificata, OPPURE
2. Entriamo nel componente e ruotiamo attorno all'asse blu con centro nel centro tutti gli oggetti che compongono il componente.

Il plugin funziona anche se doveste distribuire l'oggetto sul punto finale di ogni segmento che compone l'elemento di distribuzione: vi basterà digitare 0 al momento della scelta della distanza tra le copie. 
Nel mio caso, originariamente avevo disegnato 6 archi con 10 segmenti ciascuno, ed ecco il risultato se do 0 come input.
Spero che tutto vi sia chiaro, e soprattutto che vi sia stato utile. Se avete domande non esitate a scrivermi!

Per chi se li fosse persi, ecco i due plugins che faranno la magia:


A presto!