Numero 9 di Michael J. Hammel traduzione di Antonio Cartelli


Predisponete pure il vostro browser alla dimensione desiderata.
La Musa è stata predisposta per adattarsi allo spazio disponibile!



Barra dei Bottoni Musa: 
  1. v; per farsi assalire dai pensieri 
  2. n; [ fr. Una delle nove sorelle, dee delle scienze e delle arti nella mitologia greca ]: sorgente di ispirazione 
 Benvenuti dalla Musa della Grafica! Perché una "musa"? Al di là dell'aspetto delle sorelle, le precedenti definizioni sono la maniera migliore di descrivere il mio interesse nella Computer Graphica: questa disciplina mi fa sprofondare nelle mie riflessioni ed è una sorgente giornaliera di ispirazione. 

[ Novità nella Grafica ] [ Meraviglie del Web ] [ Riflessioni ] [ Risorse ]

Questo spazio è dedicato all'uso, alla creazione, alla distribuzione ed alla discussione di pacchetti per la Computer Grafica su sistemi Linux.
 
      Può mai essere vero? Ho veramente dedicato un intero anno alla Musa della Grafica? A quanto pare il tempo passa molto più velocemente di quanto non riusciamo ad accorgerci. I bei tempi della spensierata gioventù se ne sono andati per sempre, lasciando il posto alla vita febbrile della maturità con tutte le sue responsabilità. Eppure mi piace. La giovinezza, con tutto ciò che di bello aveva con sé, mi stordiva e mi frastornava. In effetti mi annoiavo.

      E così è passato un altro mese in cui sono stato indaffaratissimo. Sul lavoro sono ancora soggetto alla spada di Damocle della prova pre-assunzione anche se, fortunatamente, sembra che il mio lavoro negli ultimi tempi si sia stabilizzato. Ho perfino pensato di potermi proiettare così avanti da poter gestire altri progetti di lavoro a casa, mentre il resto della truppa cercava di raggiungermi. A favore loro devo dire che il lavoro che li aspettava era molto più duro del mio. Ho dovuto progettare e realizzare tutti i miei testi dal nulla visto che per me non c'era nessun testo in eredità.

      Uno dei temi ai quali ho lavorato è stato un approfondimento del GIMP. Se non l'avete ancora visto date un'occhiata al numero di novembre del Linux Journal, vi viene riportato il primo di una serie di 4 articoli che ho scritto sul GIMP. Ho anche iniziato ad imparare molto di più sul come realizzare effetti interessanti: se avete un attimo di tempo da perdere e vi è rimasto qualche credito di connessione provate a visitare la mia Galleria del GIMP. vi troverete la stragrande maggioranza delle immagini più interessanti che ho realizzato finora.

      Questo mese descriverò in maniera abbastanza sintetica come usare il GIMP per creare un'inquadratura dall'aspetto tridimensionale metallico o plastico. Il procedimento è pressoché banale ed è una di quelle cose che chi usa di frequente il GIMP vorrà imparare a memoria.

      Mi occuperò anche dei miei appunti su SIGGRAPH '97; avrei voluto farlo non appena rientrato, quando avevo ancora ben chiare in mente le varie conferenze del convegno, ma le cose non sono andate come avrebbero dovuto.

      Per finire mi occuperò della gestione dello scorrimento di immagini con JavaScript - quell'ingegnoso effetto di sovrapposizione di piccole immagini che molti si sono divertiti ad aggiungere alle proprie pagine Web. Questo effetto è ottenibile in una gran varietà di modi diversi ma, poiché per ora conosco discretamente solo JavaScript, mi occuperò esclusivamente di questo.

      Come sempre siete invitati ad inviarmi ogni commento su ciascuno dei temi che vado a sottoporvi.

Novità nella Grafica
     Avvertenza: Prima di addentrarmi eccessivamente nell'argomento devo far rilevare che ogni nuova informazione che inserisco in questa sezione ha solo ed essenzialmente un significato: quello di segnalazione di una novità. Ho avuto l'opportunità di venirne a conoscenza mediante alcune mailing-list cui sono iscritto, via gruppi di news Usenet, o infine, mediante messaggi inviatimi da lettori e curiosi. Certamente non garantisco questi prodotti (alcuni dei quali possono essere commerciali), faccio soltanto presente che ne ho sentito parlare il mese scorso.
 
indent

La CurveSoft annuncia il rilascio di FontScope.

La CurveSoft (tm) è lieta di annunciare la disponibilità di FontScope(tm): una libreria commerciale per i font scalabili Type 1 multipiattaforma, rasterizzabile e ad elevate prestazioni, talvolta chiamata anche font PostScript(tm).

FontScope consente a sviluppatori e programmatori di creare un supporto per i font Type 1 scalabili direttamente nelle loro applicazioni fornendo così una soluzione veloce, efficiente, di alta qualità e indipendente da ogni piattaforma, al problema della realizzazione di un supporto per font scalabili.

Si veda http://www.curvesoft.com per ulteriori dettagli sul prodotto.

DEMO GRATUITO
Se lo si desidera si può scaricare un demo gratuito dalla pagina web http://www.curvesoft.com per le piattaforme Linux(x86) e SunOS(SPARC). Il demo consente di ridimensionare, rendere obliquo e ruotare, in maniera arbitraria, ogni qualsivoglia carattere del font Type 1 e rappresentare a video la mappa di bit o il profilo dello stesso. Se si dispone di font Multiple Master, si potranno anche creare delle istanze dei vari caratteri e visualizzare queste ultime.

Se si dispone di una macchina Linux(x86) o SunOS(SPARC) si consiglia vivamente di scaricarsi il demo in quanto esso consente di testare il FontScope sul proprio set di font Type 1 così come di farsi un'idea della sua velocità e della qualità del risultato. Se permangono dubbi o curiosità non ci si faccia alcuno scrupolo ad inviare e-mail direttamente a info@curvesoft.com .

indent

L'ambiente GRASP per ADA 95, C, Java VHDL

GRASP è una GUI di immissione di tipo commerciale per GNAT, gcc e JDK. Ogni utilizzatore può compilare, editare ed eseguire programmi direttamente da GRASP. L'editor fornisce un'elegante colorazione per i font dei caratteri selezionati dall'utente (possono essere scelti anche i colori del testo), adeguata alla sintassi del linguaggio.

GRASP fornisce un pieno supporto per la generazione, l'editazione e la stampa di Diagrammi delle Strutture di controllo (CSD) relativi ai codici sorgenti di programmi Ada 95, C, Java e VHDL. Il diagramma CSD tende a far crescere l'efficienza nella comprensione del codice sorgente.

GRASP è attualmente disponibile per le piattaforme SunOS/Solaris, IRIX, Linux e WinNT. Lo si può ottenere gratuitamente attraverso la home page GRASP all'indirizzo
http://www.eng.auburn.edu/grasp
 
 


 

Il sito di mirroring della Libreria dei retini (Texture Library) di Vienna è stato spostato. Occorre aggiornare l'elenco dei siti preferiti (bookmark) da: 

http://klein.htu.tuwien.ac.at/~rs/
a
http://freibier.ml.org/texlib/
 
 

Lo sapevate?

... che Adobe Acrobat contiene alcuni font di caratteri molto carini utilizzabili in ambiente X Windows? e che si possono ottenere i seguenti font postscript scalabili:
 
Courier-Bold Courier-BoldOblique Courier-Oblique Courier
Helvetica-Bold Helvetica-BoldOblique Helvetica-Oblique Helvetica
Times-Bold Times-BoldItalic Times-Italic Times-Roman
AdobeSansMM AdobeSerifMM Symbol ZapfDingbats
Sono andato a controllare i termini dell'accordo di licenza d'uso e non compare alcuna controindicazione al loro utilizzo generalizzato su una qualsiasi macchina, per esserne certi basterà dare un'occhiata alla Licenza d'uso. Subito dopo si potrà andare a recuperare tutti i vecchi CD alla ricerca di file *.pfa e *.pfb. A titolo di esempio si consideri che Lotus 123 v1.1 per Windows permette di avere i seguenti:
 
ArialMT Bodoni-BoldCondensed BrushScript Courier
DomCasual LetterGothic NewsGothic Perpetua
Symbol TimesNewRomanPS TimesNewRomanPS-Bold TimesNewRomanPS-BoldItalic
TimesNewRomanPS-Italic
Si potrà quindi utilizzare lo script Type1Inst per predisporre le aree con i nuovi file. Non ci si dimentichi di eseguire xset per dire al server X dove sono le nuove directory!

Domande e Risposte

D:  Quali sono le ultime novità su VRML?

R:  Si provi a cercare tra gli aggiornamenti al sito VRML su BUILDER.COM:

http://www.cnet.com/Content/Builder/Authoring/Vrml/index.html?dd

D:  Quali sono le ultime novità sullo sviluppo di giochi commerciali in ambiente Linux?

R:  Recentemente c'è stato un importante annuncio dalla Crack.com.  Si provi a dare un'occhiata a

http://www.gamecenter.com/News/Item/0,3,1190,00.html
 

L'angolo della posta

Il dr. Norman Fahrer <fano@norcov.com> ha scritto:  'Musa: La 0.5 è in effetti abbastanza vecchia.  La 0.61 mi risulta essere stata l'ultima versione Motif pubblica rilasciata. 'Musa:  Dopo aver installato la libreria GTK occorre essere certi che il sistema (loader) sappia della sua esistenza. Per far ciò occorre innanzitutto eseguire "ldconfig -p | grep gtk" per vedere se effettivamente esso è al corrente dell'esistenza della libreria GTK.  Se dal comando detto non si ottiene alcuna risposta occorre eseguire nuovamente "ldconfig", questa volta senza l'opzione -p.  Non appena terminata questa operazione si riesegua nuovamente "ldconfig -p | grep gtk" per verificare che la libreria viene effettivamente individuata.  Si badi che perché l'operazione vada in porto, se si è installata la libreria in /usr/local/lib occorre eseguire ldconfig come utente root (superutente).

ldconfig, in generale, va a cercare le librerie in /usr/local/lib ed in pochi altri posti; per essere sicuri che le cose stiano proprio così si vada a verificare il contenuto di /etc/ld.so.conf per accertarsi che l'area vi sia effettivamente indicata.  Per ogni altro problema di questo tipo si vada a consultare il manuale (man) alle pagine di ldconfig.

Se ldconfig -p dice che la libreria gtk è già installata si può provare ad aggiungere al proprio .profile quanto segue:

Queste informazioni possono far sì che il sistema trovi la libreria in fase di esecuzione.

kar@webline.dk ha scritto:

'Musa:  Image Alchemy supporta sicuramente wpg.  Forse supporta già anche il formato cdr sebbene la versione di cui dispongo io non lo riporti nell'elenco dei formati gestibili (so per certo che c'è un bel po' di formati che non vengono riportati ma che sono supportati).  Provi a dare un'occhiata al Graphics Muse del numero di Agosto 1977 della Linux Gazette, lì potrà trovare un discreto numero di link al sito web della Alchemy. Per quanto riguarda la Linux Gazette, invece, l'indirizzo è http://www.ssc.com/lg. 'Musa:  Va bene.  Cari lettori c'è nessuno che sa dell'esistenza di qualcosa di più economico?  Se c'è inviatela direttamente all'interessato.  Mi fa piacere sapere dell'esistenza di soluzioni commerciali.

Tethys <tethys@ml.com> nel rispondere ad un avviso sulla Musa dello scorso mese, relativo al fatto che NetPBM non supporta la conversione JPEG, ha scritto:

David Maha <cmulator@pacific.net.sg ha scritto: 'Musa:  Non ho familiarità con la piattaforma MS: per il semplice motivo che non la utilizzo. Ad ogni modo sembra ci siano dei driver per Linux relativi a questo tipo di scanner negli archivi Linux di Sunsite. Dia un'occhiata a: ftp://sunsite.unc.edu/pub/Linux/apps/graphics/scanners.

Nel numero di marzo della Musa della Grafica ho passato in rassegna tutte le informazioni di cui disponevo relativamente a scanner per Linux.  Le può consultare partendo dall'indice della Linux Gazette (il periodico online nel quale trova le pagine della mia Musa della Grafica) all'indirizzo: http://www.ssc.com/lg.

Gregory Gardener <GardenerG@code20nl.npt.nuwc.navy.mil ha scritto:

'Musa:  Bella domanda.

Innanzitutto non scelga una piattaforma, scelga una tecnologia: Java e/o VRML. Perché? In questo modo si va ad eliminare l'esigenza da parte dell'utente finale di dover disporre di una particolare piattaforma per poter utilizzare il software che si sarà prodotto. In secondo luogo si avrà un maggior potere di penetrazione, all'interno di ogni organizzazione, indipendentemente dal tipo di piattaforma che questa può aver utilizzato.

Problemi:

  1. Java non è ancora abbastanza standardizzato su tutte le piattaforme
  2. VRML è ancora talmente nuovo da avere tutti i problemi che una nuova tecnologia porta con sé (accettazione, standard, ecc.).
  3. VRML richiede la disponibilità di un browser VRML sulle piattaforme degli utenti finali.
Il primo non sembra costituire un problema, almeno dalla seconda metà del prossimo anno (è una mia ipotesi). A seconda di quella che si prevede dovrà essere la data di uscita del prodotto potrebbe essere meglio partire con Java fin dal primo momento. Si dà il caso che io stesso stia investendo il mio tempo nell'apprendimento di Java. Allo stato attuale utilizzo lo sviluppo mediante GUI per vivere, ma ritengo anche che le mie conoscenze in ambiente X non siano sufficienti sulla distanza. La GUI di Java è la prossima grande occasione per gente come me.

Il terzo è un problema. Ci sono soltanto pochissimi browser VRML in ambiente Linux a tutt'oggi, e non ne conosco in dettaglio le caratteristiche. Liquid Reality è uno di questi - richiede che si abbia l'ambiente runtime di Java installato e funzionante. Il VRML, allo stato attuale, è molto più supportato in ambiente non Linux, ma, molto probabilmente, si tratta di una situazione contingente che verrà superata nel corso del prossimo anno (si tratta, ovviamante, ancora di una mia ipotesi).

Supponiamo, per un momento, che lei decida di adottare queste due tecnologie, solo dopo si pone il problema della scelta della piattaforma *vera e propria*. Io sceglierei Linux. Perché? Perché MS non sembra essere molto convinta del supporto da dare a Java - Linux, invece, l'ha abbracciato fin dall'inizio quasi con gioia. Sto iniziando solo adesso a cimentarmi con il kit di sviluppo Java per cui non sono in grado di dire nulla sull'uso del pacchetto, so solo che il Kit di sviluppo Java (JDK), arrivato alla versione 1.1.3, è stato portato in ambiente Linux. C'è già, in ambiente Linux, anche un kit IDE commerciale per Java, detto Vibe.

Il VRML si presenta come l'HTML e si possono scrivere applicazioni utilizzando vi o EMACS o un qualunque altro text editor si voglia. Al più ci saranno degli editor WYSIWYG per VRML, ma, per il momento, non dovrebbe essere difficile farlo a mano. In effetti, molti dei testi VRML attuali sono scritti assumendo il seguente punto di vista: chi li fa li sta scrivendo a mano.

Alternative: OpenGL/Motif/C. Questo sarebbe il modo in cui lo farei io adesso, in maniera anche abbastanza agevole, in quanto già conosco Motif, C e OpenGL avendo dovuto studiarli approfonditamente da qualche mese a questa parte. Dei tre preferisco OpenGL, anche perché utilizzando Motif/C l'applicazione è meno trasportabile nelle diverse piattaforme (in effetti non è affatto banale far migrare un pacchetto verso MS e Mac). OpenGL, invece, è stato trasportato su diverse piattaforme anche se non dispone di un pacchetto per la gestione delle finestre per cui occorre utilizzarlo con qualche pacchetto nativo della piattaforma che si desidera adottare (Motif/X, MS Windows, ecc.).

Fermo restando quanto detto finora, non sono in grado di dirle se le tecnologie accennate risolvono il suo problema in quanto "un sistema educativo interattivo" può racchiudere in sé tutti i tipi di visualizzazione dati, è pertanto difficile prevedere se Java/VRML si riveleranno utili allo scopo che si è prefisso. Che tipi di immagini dovranno essere visualizzate? Come dovranno essere visualizzate? Le interfacce d'utente (UI) rappresentano un vasto campo di studio, di cui si occupano poche persone a causa del fatto che la scelta delle tecnologie che si vogliono utilizzare richiede molta attenzione. Rimane allora il problema - che tecnologia utilizzare? La risposta - una qualunque, purché con essa ci si trovi a proprio agio, almeno per ora. In ogni caso può essere utile acquisire familiarità con Java e VRML.




Come aggiungere scorrimento di immagini con Javascript alle pagine Web

Nel numero scorso ho affrontato il problema della rilevazione del browser mediante l'uso di JavaScript. Come la maggior parte delle tecnologie Web, JavaScript è nuova e incline a generare problemi, perfino all'interno delle applicazioni per le quali essa è stata sviluppata - il browser Web Navigator della Netscape. Al fine di utilizzare al meglio Javascript con il Browser della Netscape bisogna essere sicuri di sapere quali versioni del browser supportano i diversi costrutti JavaScript. La rilevazione del browser aiuta a superare questo piccolo problema.

In questo numero vado a proporvi un espediente molto comune utilizzato da diverse persone nella realizzazione delle loro pagine Web: lo scorrimento di immagini (rollover). Lo scorrimento consiste nel cambiamento di un'immagine al variare dell'input dell'utente. Ad esempio se si vanno a consultare le mie pagine GIMP (occorre utilizzare Netscape 3.x o successivo per farlo) si vedrà questo scorrimento di immagini nei menu. Allorché si dispone il mouse sul testo corrispondente ad una delle voci del menu, ad es. la Galleria, lo sfondo della scritta si modifica in un blue brillante o magenta. Ciò accade perché il testo non è un ordinario testo HTML ma è un'immagine che, quando si dispone il mouse sull'immagine stessa, viene sostituita da un'altra immagine, quella di colore magenta. Quanto ora descritto è un esempio di scorrimento di immagini.

L'aggiunta di quest'effetto è abbastanza semplice. In primo luogo si deve disporre di due copie dell'immagine (si badi che si sta adottando un approccio molto semplice al problema - allo stato attuale si possono creare versioni multiple dell'immagine da visualizzare a seconda dei diversi tipi di input d'utente). La prima immagine è quella originale ed anche quella che deve essere vista inizialmente o quando non viene applicato alcun input da parte dell'utente. La seconda è l'immagine che deve sostituire la prima quando l'utente sposta il mouse sull'originale o clicca sull'immagine. Queste immagini possono essere create in una grande varietà di modi. Per quanto mi riguarda uso il GIMP poiché mi sembra che sia stato progettato proprio per realizzare al meglio questo tipo di elaborazioni delle immagini.

Una cosa da comprendere è come JavaScript interpreta l'input d'utente, cui ci si riferisce anche come "eventi". C'è un certo numero di eventi diversi che JavaScript può riconoscere, sicuramente non tutti applicabili ad immagini, o utilizzabili per lo scorrimento. Quelli che ci interessano sono:
 

Nome dell'evento Significato versioni JavaScript e Netscape
onclick L'utente clicca su un'immagine. 1.0 (Navigator pre-3.x)
onmouseover L'utente muove il mouse sull'immagine 1.0 (Navigator pre-3.x)
onmouseout L'utente sposta il mouse al di fuori di un link o di una mappa cliccabile. 1.1 (Navigator 3.x)
onmousedown L'utente preme un tasto del mouse e non lo rilascia. 1.2 (Navigator 4.x)
onmouseup L'utente rilascia il pulsante del mouse. 1.2 (Navigator 4.x)
Eventi JavaScript utili per lo scorrimento
Sono tutti, per lo più autoesplicativi e sono associati al modo in cui l'utente utilizza il mouse in relazione all'immagine. Si noti anche che il nome dell'evento non è sensibile alle maiuscole, nel senso che si vedranno spesso esempi in cui gli eventi sono scritti come segue: onMouseOver oppure onClick.

Per ultimo c'è da imparare come JavaScript referenzia le immagini in una pagina Web. L'espediente da usare per gli scorrimenti è quello di aggiornare l'immagine giusta - in qualche caso, infatti, l'immagine da aggiornare può non essere l'immagine sulla quale il mouse viene a trovarsi in un certo momento. Si veda, a titolo di esempio, la mia pagina del sommario, ove provvedo ad aggiornare un'immagine centrale allorché il mouse viene a trovarsi su immagini che circondano l'immagine centrale stessa. Quella pagina non lavora molto bene nell'analisi del tipo di browser che si sta utilizzando per cui non funziona bene con browser che non siano Netscape 3.x, oppure con browser 3.x su piattaforme non Unix. Ebbene, tutto funziona alla perfezione con il browser Netscape per Linux.

JavaScript si riferisce alle immagini come ad oggetti e le tratta alla stessa stregua di ogni altro oggetto. Le immagini in un documento (i documenti sono le pagine HTML) vengono referenziate utilizzando nomi, come
 

document.dog.src
Il termine documento identifica il documento corrente (pagina), il termine dog (cane) si riferisce al tag NAME= assegnato all'immagine riportata sopra, ed il termine src si riferisce al nome dell'immagine stessa, com'è nel nostro caso "dog-1.gif". Faccio notare che, se si dispone di un browser appropriato (sono troppo pigro - per cui non ho previsto l'utilizzo di alcun elemento di codice per l'individuazione del browser utilizzato!) l'immagine riportata sopra cambia allorché si fa passare il mouse sulla foto del cane. Altrettanto accade per il testo nella barra di stato in fondo al documento. Diamo ora un'occhiata al codice che gestisce questo scorrimento.

In primo luogo si guardi alla definizione HTML dell'immagine:

Si ponga attenzione al nome dell'immagine: è NAME="dog". In questo modo JavaScript viene dotato del riferimento all'oggetto che gli occorre per accedere all'immagine corretta. Si può accedere alle immagini anche utilizzando un indice dei documenti immagine, ma si tratta di un metodo abbastanza condizionato dal caso (ne utilizzo uno per le pagine del mio sommario) e piuttosto difficoltoso da utilizzare. Per gli scorrimenti io raccomando l'utilizzo dei tag NAME.

Per quanto riguarda questa parte di codice HTML vanno notate alcune altre cose:

  1. Ci sono dei gestori di eventi in grado di "sentire" quando il mouse entra nella zona dell'immagine (onMouseOver) e quando ne esce (onMouseOut). Tra qualche istante esamineremo i valori che vengono associati a ciascuno dei due.
  2. I gestori degli eventi vengono disposti in un'ancora con un tag HREF. L'HREF punta ad una funzione JavaScript detta "void", che costituisce un metodo molto semplice per non fare nulla. Nel nostro caso vogliamo soltanto che i gestori degli eventi facciano qualcosa e che l'ancora non faccia nulla.
  3. Lo spessore del bordo dell'immagine è stato predisposto a 0 in modo tale che l'immagine non abbia bordo. Se non l'avessimo fatto sarebbe stato aggiunto all'immagine un bordo dotato del colore del link o del link-visitato in quanto l'immagine è contenuta in un tag di tipo "ancora". In questo modo l'immagine non assume l'aspetto di un link. Ciò è positivo in quanto essa non rappresenta un link a niente e nessuno.
Prima di entrare nel merito dei gestori degli eventi diamo un'occhiata al codice JavaScript: Per far funzionare questo esempio basta disporre questa porzione di codice tra i tag <HEAD> </HEAD> della sezione di intestazione della pagina HTML.

I due gestori degli eventi chiamano funzioni JavaScript. La funzione mouseIn() viene chiamata per sostituire l'immagine allorché il mouse entra nell'area dell'immagine stessa. Come si può vedere dal tag HREF il gestore dell'evento associato a questa funzione è l'evento onMouseOver. Questa funzione ha due righe: la prima prende il testo passato come argomento e lo va a porre nella barra di stato nella parte bassa della schermata del browser; la seconda rimpiazza l'immagine cui ci si riferisce come "dog" con la seconda immagine nel vettore SampleImages. Abbastanza semplice, non vi pare?

La seconda funzione, mouseOut(), viene chiamata quando il mouse viene spostato al di fuori dell'area dell'immagine. Anche questa funzione ha solo due righe: la prima pulisce la barra di stato; la seconda prende l'immagine che occupa il primo elemento del vettore SampleImages e la va a sovrapporre a quella che attualmente occupa l'oggetto denominato "dog". In questo caso particolare il primo elemento del vettore SampleImages contiene la stessa immagine (quella originaria) evidenziata nel tag IMG del nostro file HTML sorgente.

Ritengo utile porre l'accento su alcune caratteristiche del codice: ho utilizzato un array per contenere le immagini scelte per lo scorrimento, ma, nel caso di questo esempio avrei potuto utilizzare molto più semplicemente quanto segue:

document.dog.src = "images/dog-1.jpg"
Qualora doveste decidere di utilizzare un vettore assicuratevi di definire la sua dimensione e di allocare la memoria necessaria a contenere gli oggetti che vi inserirete. Nell'esempio riportato ho definito il vettore con
SampleImages = new Array(numitems);
e mi sono poi preoccupato di allocare la memoria necessaria a ciascuno degli elementi del vettore con:
SampleImages[0] = new Image();
Ovviamente tutto ciò poteva essere fatto all'interno di un ciclo, quale può essere un for(). La definizione di questi oggetti mediante la parola chiave "new" fa sì che JavaScript carichi l'immagine ma che non la visualizzi immediatamente. Suggerimento: uno script simile a quello riportato può essere utilizzato per precaricare le immagini di una pagina in modo che quando si andranno a caricare le pagine seguenti le immagini potranno essere estratte dalla cache immediatamente.

L'oggetto immagine ha anche diverse altre caratteristiche, quali lo spessore del bordo (BORDER), l'altezza (HEIGHT) e la larghezza (WIDTH) dell'immagine e l'attribuzione dello spazio verticale al di sopra ed al di sotto dell'immagine stessa (VSPACE) [altrettanto dicasi per lo spazio orizzontale (HSPACE)]. Il non aver specificato i parametri HEIGHT e WIDTH per l'oggetto document.dog nelle varie funzioni ha il seguente significato: ho presupposto che la nuova immagine avesse le stesse dimensioni della vecchia. Qualora si dovessero realizzare applicazioni in cui ciò non accade occorre inserire le dimensioni delle immagini all'interno delle funzioni.

Bene! Penso che quanto detto finora possa essere sufficiente per iniziare. Lo scorrimento di immagini è qualcosa con cui ci si può divertire a giocherellare e che può aiutare a rendere più allegra una pagina Web che altrimenti sarebbe funerea. Come in tutte le cose, però, attenzione: il troppo stroppia.



 
Approfondimenti
 
indent

Appunti sul SIGGRAPH '97

Per quanti non lo sapessero premetto che SIGGRAPH è la conferenza annuale sulla computer grafica sponsorizzata dall'ACM. Per essere più precisi SIGGRAPH sta per Special Interest Group - Graphics (Gruppo d'interesse sulla Grafica) dell'ACM e il convegno rientra nelle manifestazioni organizzate dal gruppo. Negli ultimi anni, però, è accaduto che il convegno è cresciuto al punto da diventare una vera e propria esposizione in cui si danno appuntamento, tutti i maggiori nomi dell'industria degli elaboratori e dello spettacolo per mettere in mostra le loro ultime novità. Quest'anno il convegno si è tenuto a Los Angeles e, per me, ha rappresentato il momento dell'ingresso in questa gabbia di matti.

Devo preannunciare che tutto ciò che dirò non è rivolto in maniera specifica a Linux. Cercherò, per quanto mi è possibile, di riferire a Linux tutto ciò che ho visto o imparato, anche se è bene che dica che al SIGGRAPH Linux non è presente in maniera preponderante. A dimostrazione di quanto asserito, infatti, devo dire che all'infuori di una conferenza a carattere prettamente tecnico e di una coppia di ingegneri che armeggiavano vicino ad alcuni stand, non ho sentito nessuno parlare di Linux. A quanto pare dobbiamo darci un bel po' da fare per cominciare ad uscire allo scoperto.

La mia partecipazione al SIGGRAPH è durata 4 giorni, da Domenica a Mercoledì, sebbene il convegno ne sia durato almeno 6. Ho raggiunto la sede delle conferenze non appena iniziate le ferie (sick, che razza di ferie!) e dopo 4 giorni ero così frastornato che ho deciso che il mio ultimo giorno avrei fatto qualcosa di calmo e tranquillo - per cui me ne sono andato agli Universal Studios. Vi assicuro che SIGGRAPH, per coloro che non ci sono mai stati, costituisce un dispendio continuo di energie sia fisiche che mentali.

Il mio primo giorno l'ho passato tra una fila e l'altra - all'aeroporto, al noleggio di autovetture (Dio mio, che caos) ed ai tavoli di registrazione del convegno. Mi ero pre-registrato per cui ho dovuto soltanto ritirare la mia copia dei materiali del convegno, ciò nonostante ho impiegato circa 45 minuti. Non essendo mai stato ad un convegno di alcun tipo, eccezion fatta per un giro ad Interop nel lontano 1991, sono rimasto un po' sconcertato dalla mancanza di testi per le conferenze. In effetti, come ho potuto sperimentare, le conferenze non sono state delle vere e proprie conferenze, quanto piuttosto delle dimostrazioni dinanzi ad una platea smisuratamente mostruosa. Che stridore con il mio ricordo dell'esperienza all'Interop, molto più personale, grazie alle dimensioni dell'auditorio, molto simile alla scolaresca di una classe.

Sebbene sia arrivato tardi mi sono comunque inserito nel gruppo che seguiva il corso introduttivo su OpenGL, tenuto dai membri dello staff SGI. Si è trattato, per lo più, di una dissertazione sulla sintassi di base di OpenGL. Sono riuscito addirittura a sgattaiolare tra la folla ed a sedere nelle immediate vicinanze di un compagno di lavoro di Bruce Peren della Pixar - un tipo molto simpatico di nome Jim W. (tra gli appunti non ho ritrovato il suo cognome - mi auguro che non me ne voglia). La cosa mi è sembrata alquanto strana, finché non ho scoperto che la Pixar invia quasi tutto il suo personale al SIGGRAPH. Qualche giorno dopo ho visto Larry Gritz ma non ho avuto alcuna possibilità di scambiare due parole con lui; come la maggior parte delle persone presenti al SIGGRAPH aveva una gran fretta di andare in qualche altro posto.

Ho passato il resto della giornata ad andare in giro per la sede del congresso (LA convention center) alla ricerca delle altre conferenze e di eventuali manifestazioni che si sarebbero tenute. In fondo alle scale ho visto anche un centro per la ricerca/offerta di lavoro, nel quale la gente poteva lasciare i suoi curricola e le aziende le proprie offerte di lavoro; in quella sede ho notato che la Xi Graphics aveva un avviso ma che non c'era alcun altro avviso collegato a Linux. Mentre che ritornavo nel mio albergo si sono fatte le 9 di sera - ed ero ancora digiuno. Un avviso per tutti coloro che vorranno partecipare al convegno: portatevi qualche panino! Trovare del cibo può rivelarsi un'impresa difficile e ciò che si riesce a trovare può essere disgustoso (almeno nei pressi del "LA convention center"), mentre vi assicuro che bisogna fare il pieno di energia. Essendo uno sportivo mi ero portato qualche tavoletta energetica (meno male). E così ho imparato un'altra cosa.

Il giorno successivo mi sono recato al corso avanzato di OpenGL, ancora tenuto dallo staff della SGI. Questo si è rivelato molto più interessante, in quanto oltre che di semplice sintassi si è parlato anche di tecniche. Ho ascoltato alcuni buoni interventi sull'uso delle mappe d'ambiente (mappa di un'immagine su una superficie), sulla proiezione di retini e sulla tecnica per la creazione di inquadrature simili a manifesti (billboarding). Quest'ultima tecnica, della quale non ero al corrente, consente di proiettare un'immagine su una superficie piana mentre questa superficie è programmata per essere sempre rivolta verso chi guarda. Volendo avere un termine di paragone, si può dire che è come se si facesse quanto segue: innanzitutto si fa una foto, ad es. di un albero, poi si toglie dalla foto tutto tranne l'albero e si incolla quanto resta a qualcosa di molto simile al sostegno per una giostra/carosello per neonati. Si fa quindi ruotare il sostegno in modo che la foto dell'albero sia sempre rivolta verso chi guarda. Questa tecnica simula un effetto tridimensionale senza avere il sovraccarico dei calcoli dipendenti dal poligono associato ad un albero reale, funziona bene con oggetti distanti anche se perde di efficacia con quelli vicini. L'effetto di billboarding si può ritrovare in una gran varietà di giochi. Un altro effetto proposto in quella sede è consistito nella creazione di un'immagine molto realistica per delle fiamme. È stata utilizzata una funzione rumore insieme a quelle che vengono definite "funzioni di quadratura" per sfuocare alcune parti del rumore. È stata poi aggiunta della turbolenza ed una funzione valore assoluto

per creare delle venature all'interno della fiamma. Va da sé che si può ottenere qualcosa di molto simile utilizzando il GIMP con il filtro solid noise (rumore solido), seguito da qualche effetto di sfuocatura e ondeggiamento e ripulito con una combinazione di effetti di bilanciamento curve/colore e di aumento di nitidezza "sharpening" (per i dettagli).

Quando sono tornato dal convegno sono passato a visitare mia sorella con i suoi piccoli e li ho visti giocherellare con Super Mario Bros sul loro ... Sega? Ad ogni modo, proprio grazie al fatto che ero stato al SIGGGRAPH ho potuto rendermi conto degli effetti di cui avevo sentito parlare nel corso avanzato di OpenGL. È stato illuminante!

Uno dei motivi per cui ho partecipato ai corsi su OpenGL è stato il volermi fare un'idea del come si potessero realizzare applicazioni multimediali in ambiente Linux. Un'alternativa ad un kit multimediale basato su OpenGL potrebbe essere un kit basato su VRML. Ho partecipato al Demo VRML durante il SIGGRAPH lunedì notte ed ho potuto vedere delle applicazioni interessanti basate su VRML 2.0. Se basata su CD-ROM questa tecnica potrebbe rappresentare un ottimo ambiente, valido per tutte le piattaforme, per lo sviluppo di pacchetti multimediali (a scopo didattico/ di spettacolo, ad esempio). L'inconveniente, oggi come oggi, è che i dimostrativi richiedono browser 2.0 compatibili, cosa che dovrebbe essere superata abbondantemente nel corso del prossimo anno, almeno si spera. Secondo CGW (un tizio che è capitato nella mia camera d'albergo - un caso fortunato), Netscape 4.0 ha già incorporato il browser SGI Cosmo Player. Non ho potuto ancora procurarmelo per metterci mano. Poiché sulla mia macchina ho installato il kernel Linux 2.0 posso tentare di procurarmi qualche altro browser VRML tra quelli disponibili. Molto probabilmente ritornerò sull'argomento il prossimo mese.

- Continua nella colonna accanto -
 
indent


Ulteriori Approfondimenti ...  

  • Consigli per il GIMP - effetti metallici e plastici 3D (borders).

  •  

    Martedì sono arrivato mezz'ora prima per poter assistere al Workshop sull'animazione tridimensionale. Ero all'incirca il 20º in una fila di 100, o giù di lì, ma per qualche strano motivo non ho provveduto a prendere un piccolo biglietto blue. Nonostante che la gente all'ingresso mi abbia visto in fila ad aspettare per almeno 30 minuti (prima che altri arrivassero) non sono riuscito ad entrare. Ero sconfortato perché questa conferenza è stata la ragione principale della mia partecipazione al SIGGRAPH. Suggerimento: se si è in fila al SIGGRAPH, occorre guardare attentamente la gente che c'è intorno, ma soprattutto davanti, per vedere se c'è bisogno di qualche modulo, biglietto o una qualunque offerta sacrificale per poter partecipare ad una conferenza.

    Il seminario sul quale ho ripiegato è stato quello su GUI/Multimedialità. In verità non si è parlato molto di multimedialità quanto piuttosto di progettazione di interfacce GUI. Un bel po' di criteri e tecniche di progettazione che per lo più già conoscevo da tempo. Quando si è arrivati finalmente a parlare di multimedialità i relatori hanno lamentato la mancanza di standard ed hanno affermato che la maggior parte delle applicazioni non fa altro che riscoprire le regole delle GUI. Questa era esattamante la mia convinzione prima di partecipare all'incontro, ma mi ha fatto piacere sentirlo ribadire da chi studia queste cose per mestiere.

    Immediatamente dopo sono scappato alla conferenza di Mark Kilgard sui sistemi OpenGL w/Windowing. Un lavoro veramente ben fatto. Brian Paul ha parlato un po' di MesaGL ed un po' di alcuni aspetti della portabilità. Entrambi sono dei tipi molto simpatici, con i quali mi sono fermato un po' a parlare al termine della conferenza. Una cosa detta da Mark che mi ha colpito in maniera particolare è stata l'affermazione che non ci sono pacchetti costruiti specificatamente con OpenGL. C'è una sovrapproduzione di programmini che utilizzano OpenGL e che lo rendono inadatto per la maggioranza delle applicazioni. Per converso, OpenGL è integrato in applicazioni che utilizzano altri pacchetti come Motif, XForm o Tk, grazie a qualche programmino OpenGL-compatibile specifico.

    Più tardi mi sono tuffato per qualche minuto nella conferenza su Java3D. Mi è parsa interessante ma non sono riuscito a cogliere tutti i risvolti della discussione. Sun ha asserito che per Dicembre 1997 era prevista l'uscita di una versione beta di un'implementazione campione della specifica, anche se poi uno dei relatori ha detto che speravano di averla anche prima. Ci si aspettava anche che, poiché la specifica è pubblica e viene sviluppata in maniera aperta, implementazioni campione messe a punto da altri (che non appartengono a Sun) fossero disponibili prima della versione Sun. Ovvero, al più, ci si aspettava che non vi fossero informazioni di alcun tipo su nessuna implementazione specifica. Finora non ho sentito nessun annuncio di alcun Java3D da parte delle mie solite fonti di informazione.

    Mentre parlavo con un paio di addetti allo stand delle offerte di lavoro, per cercare di farmi un'idea della tipologia di società che cerca personale, ho appreso che la maniera migliore per la gente per non perdersi nella marea degli aspiranti presenti allo stand è quella di presentare curricoli basati sugli annunci di lavoro pubblicati dai siti web delle società. Se ci si dovesse recare al SIGGRAPH l'anno prossimo in cerca di lavoro, prima di rivolgersi al banco dove si presentano i curricoli, conviene analizzare attentamente le liste delle offerte di lavoro delle società che partecipano al convegno.

    Il primo giorno di spettacolo vero e proprio è stato per me mercoledì. Mi è sembrata una via di mezzo tra una passeggiata in costume nel parco e una serata in discoteca, soprattutto quando la Intel ha tirato fuori i suoi "ballerini della camera bianca" con MMX. SGI ha presentato un demo fiume di circa mezz'ora sul suo sistema O2, sicuramente carino, ma che non dà la giusta sensazione di ciò che si sta acquistando. Dopo aver parlato con qualcuno dei relatori ed aver preso una copia del demo, infatti, ancora non so esattamente quali applicazioni vengono fornite, in blocco, insieme al pacchetto O2. In ogni caso mi sembra che il prezzo di $4995 (US), quale offerta ai congressisti, non sia poi tanto male; è sicuramente confrontabile con quello di un PC con Windows NT equipaggiato più o meno alla stessa maniera. Stando a quanto ho appurato chiacchierando con uno degli ingegneri dello staff, per gli sviluppatori O2 c'è un CD con software gratuito o parzialmente tale (freeware/shareware) in distribuzione, anche se devo dire che non ne ho visto neanche l'ombra.

    Il demo per O2 della SGI mi ha mostrato proprio ciò che mi aspettavo di vedere nell'ambito della dimostrazione: come si crea un'applicazione multimediale. Dopo il demo, infatti, è stata distribuita una brochure con la quale si spiegava come era stato assemblato il demo stesso. Alcuni punti del lavoro, come la gestione della rete che ha consentito la realizzazione di funzioni di retino real-time per le riprese dal vivo, non sono ancora possibili su macchine Linux con il software attualmente disponibile, ma la maggior parte delle altre cose lo è: OpenGL trasferito in Motif insieme ad altri programmini è stato utilizzato per la realizzazione della GUI mentre OpenGL e VRML sono stati utilizzati per la creazione di videate 3D interattive. OpenGL è disponibile commercialmente, come pure MesaGL, ed altrettanto accade per Motif. Non sono sicuro che VRML sia già disponibile per l'integrazione in applicazioni via un'API, per quanto riguarda le animazioni, però, si potrebbe utilizzare MPEG. Ci sono alcune API MPEG, come ad es. l'API MpegTV. Il pacchetto PlugIn della ImageMagick sembra essere dotato di una libreria MPEG, non so, però, se dispone di un'API accettabile al punto da poter essere utilizzata per applicazioni multimediali commerciali.

    Dopo aver visto il demo SGI e quelli VRML ho cambiato opinione su VRML - è già pronto e utilizzabile. Non lo raccomanderei ancora per applicazioni di rete, ma può andar bene per applicazioni non Internet, su reti private (come i kiosk) o per applicazioni multimediali su CD, per le quali è in grado di fornire delle possibilità uniche.

    La Wacom era presente alla manifestazione e alcuni dello staff non hanno opposto resistenza quando ho iniziato a parlare di Linux (tutto dipende da quanto si riesce ad agire con delicatezza e a non affrontare di petto l'argomento). Per dir la verità hanno divagato un po' non avendo la più pallida idea di quali tavolette grafiche fossero supportate da XFree86. Attualmente hanno un puntatore che è uno schermo piatto a colori - basta disegnare su di esso come su una tavoletta. È veramente carino anche se costa più di $2200 (US).

    Lo staff della Cosmo Software (una nuova sezione della SGI) si è dimostrato altrettanto gentile e disponibile, al punto da dichiarare che sarebbe stato possibile dare a qualcuno i sorgenti del browser al fine di portare in ambiente Linux il Cosmo Player. Questo browser (che consente di visualizzare scenari conformi al VRML 2.0) è gratuito in diverse altre piattaforme. Penso che alla SGI basti che ci sia qualcuno che glielo chieda e che fornisca delle credenziali tali da convincerli che sarà in grado di realizzare una conversione almeno decente. Sfortunatamente non so a chi rivolgermi per parlargliene.

    Attorno allo stand della Apple, sulla destra vicino all'ingresso c'era una folla enorme. Un demo che ho visto girare ha causato un blocco del sistema, ma la maggior parte della gente si è dimostrata abbastanza entusiasta dei prodotti presenti. Non so molto di Mac per cui non mi sono fermato che qualche attimo. Come nel caso di Linux, però, Mac è un cane frustato nel mondo dei Sistemi Operativi e, anche se non sono in grado di farci nulla, posso solo sperare che riesca a sopravvivere.

    La cosa che più mi ha colpito, nel corso di quest'avventura è stata il luogo del congresso (LA). Faceva un caldo insopportabile all'interno, all'esterno, nelle sale conferenza, nell'auto, nell'albergo, insomma dappertutto. Lo stesso centro ha un pessimo aspetto in confronto a tanti altri centri che ho avuto modo di vedere ma, e questa è stata la cosa peggiore, ha pochissimi ristoranti nei pressi del luogo del convegno. Una passeggiata di 6 isolati in Colorado, in generale non è un gran problema, ma la stessa passeggiata nel centro congressi ad agosto ... *sigh*. Per chi non lo avesse capito i pasti hanno rappresentato, per me, qualcosa di angosciante. Mi auguro che ad Orlando l'anno prossimo non ci siano problemi analoghi.
     
     

     
     
    Resources

    I riferimenti che seguono rappresentano esclusivamente il punto di partenza per l'acquisizione di ulteriori informazioni sulla computer grafica e, più in generale, sulla multimedialità, per sistemi Linux. Se disponete di informazioni specifiche su qualche applicazione e me ne mettete al corrente le aggiungerò alle mie pagine o, se lo preferite, potrete contattare qualche altro amministratore di siti web e prendere accordi con lui. Prenderò in considerazione la possibilità di aggiungere qualche altro riferimento di carattere generale qui di seguito, ma informazioni specifiche su applicazioni o siti troveranno sicuramente una migliore collocazione nei riferimenti di caratter generale riportati di seguito piuttosto che qui.
     
    mini-Howto della grafica su Linux
    Programmi utili per la grafica su Unix
    La pagina della Multimedialità per Linux

    Ecco alcune delle Liste di posta elettronica e dei Newsgroup che tengo sotto controllo e da cui traggo la maggior parte delle informazioni presentate in queste pagine:

    Le liste dell'utente Gimp e dello sviluppatore Gimp.
    La lista di discusione su IRTC-L
    comp.graphics.rendering.raytracing
    comp.graphics.rendering.renderman
    comp.graphics.api.opengl
    comp.os.linux.announce

    Sviluppi Futuri

    Per il prossimo mese:
    Ancora non lo so. È tutto in continua evoluzione ma sicuramente mi farò venire in mente qualcosa. Un grazie di cuore a tutti coloro che in passato hanno fornito spunti e suggerimenti. Vi assicuro che tengo conto di tutto ciò che mi suggerite anche se finora non mi è riuscito di accontentare tutti.

    Fatemi sapere di cosa volete che mi occupi!


    Alla Home Page

    Per l'articolo originale: © 1997 Michael J. Hammel - Pubblicato sul n. 23 della Linux Gazette
    Per l'edizione italiana: © 1997 A. Cartelli - Pubblicato sul n. 10 anno I di LGEI a cura del LUGBari