Il blog di Sandro Rizzetto

Il mio codice è un’opera d’arte

 

No…non sono stato preso da una botta di megalomania o di super-narcisismo; purtroppo non ritengo di aver mai scritto algoritmi geniali o routine così ben strutturate da essere definite in quel modo.

Semplicemente un mio piccolo software è diventato parte integrante di un’installazione artistica di videoarte del famoso artista Fabrizio Plessi.

E’ successo infatti che l’amico Walter (che rammento essere –per chi dice che sono un buon fotografo- il mio mentore e la persona che mi ha insegnato piú di tutte, anche solo guardando le sue opere) mi ha coinvolto nello sviluppo di questo progetto consistente in un’altalena di acciaio che muovendosi fa scorrere l'acqua da un serbatoio (virtuale) all'altro. L’opera originale era del 1981 ed i video proiettati da due dvd player avevano ovviamente un forte problema di perdita di sincronismo dopo poche oscillazioni.

image

Il commitment di Altalena 2.0 era quindi di migliorare questo aspetto di sincronismo e, dopo varie elucubrazioni, la strada più semplice (ed economica) ci è sembrata quella di usare un pc con una scheda grafica con due uscite video e un programma che proiettasse sui due monitor due filmati in fullscreen in SINCRO tra di loro e soprattutto con i comandi dati al motore/PLC che fa  muovere la struttura di acciaio arruginito.

Alla fine nulla di fantascientifico, se uno avesse un po’ di esperienza nel mondo Win32 (cosa che a me manca). Mi sono dovuto quindi, con piacere, studiare un po’ di concurrent programming per gestire un po’ di multithreading e risolvere un paio di tricks per il dual display, il full screen, ecc. Inizialmente sono partito con un progetto WPF ma mi sono scontrato con le performance dell’oggetto mediaelement che con due video FullHD non era sufficiente (dopo un po’ uno dei due “driftava” troppo rispetto all’altro). Sicuramente avendo più tempo (e budget!) la cosa presumo fosse risolvibile (magari cambiando solo il controllo da usare), ma per tagliare velocemente la testa al toro ho preferito passare alle care e vecchie WinForms e soprattutto alle librerie DirectShow che andando forse più a basso livello si sono rilevate molto più veloci e stabili (ripeto, è per mia ignoranza, non vuole essere una critica a WPF).

La parte di controllo del motore è stata molto semplificata da un wrapper C# (gentilmente fornito da Manuel, altro bravissimo fotografo) di una libreria che controlla un fieldbus controller (ethernet) a sua volta responsabile dei comandi di start/stop/pause/reset da dare al motore.

Il risultato finale lo vedete nel video e foto gentilmente “scippati” dal sito della capocommessa pixxelfactory:

 

DSCF0013

DSCF0053

 

Insomma una bella esperienza della quale ringrazio Walter per aver pensato (e creduto!) in me.

PS magari la prossima volta le specifiche del progetto dammele tutte all’inizio, non a metà Smile

Aggiungi Commento

Copyright © 1997-2017 Sandro Rizzetto | All Rights Reserved | Riproduzione delle fotografie vietata | Powered by me