Numero 3 di Michael J. Hammel traduzione di Antonio Cartelli


Benvenuti dalla Musa della grafica
Per una migliore visualizzazione predisponete il vostro browser alla lunghezza della riga sottostante.

Scelta dei Temi 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] [Riflessioni] [Risorse]
indent Questo spazio è dedicato all'uso, alla creazione, alla distribuzione ed alla discussione di pacchetti per la Computer Grafica su Sistemi Linux.
      Anche se con molto ritardo sono finalmente riuscito ad apprendere le caratteristiche del Pacchetto di Presentazione Immagini "Luna Blue" (Blue Moon Rendering Tools -- BMRT). Penso sia naturale che uno trasferisca direttamente ai suoi lettori ciò che ha appreso per cui, a partire da questo mese, ho deciso di realizzare una serie di tre articoli sul BMRT e sugli ombreggiatori RenderMan®. Devo rigraziare in modo particolare Paul Sargent, che ha fornito il codice degli esempi e che è stato una vera e propria fucina di idee, e Larry Gritz, l'autore di BMRT, che mi ha fornito l'assistenza tecnica ed un supporto di tipo più generale ed ampio su tutti i temi. In questa prima parte viene presentata un'introduzione al pacchetto software e sono illustrati alcuni esempi relativamente semplici sul come utilizzarlo.
      Sebbene la trilogia degli articoli sul BRMT rappresenti di per sé un progetto ambizioso non ho ritenuto opportuno dedicare tre interi numeri della Musa solo ed sclusivamente al BRMT. Nel numero di questo mese mi occuperò anche dei temi seguenti:
  • Una rassegna sulla Programmazione OpenGL per sistemi X Window di Mark Kilgard.
  • Informazioni sulla possibilità di installare scanner in ambiente Linux.
che verranno affrontati in dettaglio insieme, ovviamente, agli usuali temi oggetto di Approfondimento. Tutto ciò dovrebbe essere sufficiente a consentirvi di arrivare, senza problemi, fino al mese prossimo.
      In un primo momento avevo pensato di occuparmi, sempre in questo numero, anche dello stupendo pacchetto HF-lab di John Beale, poi, però ho deciso che forse era meglio attendere il mese prossimo. Mi è capitato infatti, ultimamente, di imbattermi in alcune informazioni particolari su POV-Ray e mi è parso che queste notizie andassero particolarmente d'accordo con la rassegna su HF-lab. Aspettatevele per il mese prossimo.
      Ahimé! Ho perso un aggiornamento sul sistema andato in tilt: nella mia piccola rete domestica ho utilizzato un computer Dell 386 a 16MHz come unità di backup (salvataggio). Lo avevo appena predisposto ma non avevo ancora implementato il servizio di backup quando il mio sistema principale ha tirato le cuoia. Dopo aver fatto ripartire il sistema principale ho deciso di installare alcuni drive extra che ritenevo utili. Ho, innanzitutto, cercato di fare un backup dello stesso sistema principale, attraverso la rete, utilizzando una versione del drive di stream-tape che avevo installato precedentemente sul sistema principale e poi ricopiato sul nuovo server. Questo aggeggio sembrava funzionare anche se, per qualche strano motivo, l'unità a nastro non voleva sapere di vedere alcune directory del sistema destinazione. Ho pensato che ciò potesse dipendere dall'incompatibilità con il sistema operativo installato sul 386 ed ho ritenuto opportuno aggiornare quest'ultimo con Linux Pro (che è poi quanto ho installato sul sistema principale). Non l'avessi mai fatto: il server ha smesso di funzionare. La ragione di tutto sembra essere stato un secondo HD IDE che ho aggiunto alla macchina per poter disporre di una maggiore quantità memoria di massa. Ci ho sbattuto la testa per una settimana, poi non ne ho potuto più ed ho ordinato un minitower con una motherboard con su un Cyrix 166. La nuova mainboard con il 166 andranno nel sistema principale, mentre la vecchia e gloriosa scheda con il 486 troveranno posto nel minitower. Ovviamente, ho tolto di mezzo il 386 che troverà il suo meritato posto accanto al Wyse286 con il suo bravo HD da 20 Mbyte, ormai abbandonato da tempo.
      Non ho mai aspirato a diventare un amministratore di sistema ma vorrei poter utilizzare i miei sistemi. - Sigh - Se non altro con Linux ho un maggior controllo di ciò che uso.
      Ad un mese dal giorno dell'apocalisse non ho ancora un sistema di backup affidabile in esecuzione. Penso che ci sia da guadagnare un bel po' se ci si mette a realizzare dei sistemi di backup per Linux che gli utenti possano trovare facili da utilizzare. Ve lo garantisco.

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

GIFWizard (ovvero Il GIF Incantato)

      Se volete ridurre le dimensioni delle vostre immagini GIF ma non avete idea di come farlo, vi segnalo un servizio gratuito online che vi consiglio di provare. Il GIF Wizard - (http://www.raspberryhill.com/gifwizard.html) è in grado di operare sia su immagini già in rete (basta fornire l'URL dell'immagine) che su immagini sul vostro Hard Disk.       Annotazione: Per amor del cielo non chiedetemi nulla di questo servizio - non l'ho mai utilizzato e se fornisco qui l'informazione è solo perché penso che possa essere utile a qualche lettore.
indent indent

Tnpic - indicizzatore GIF/JPEG

      Il Tnpic, di Russell Marks (che non ha ancora alcun accesso e-mail), è un indicizzatore GIF/JPEG che, in generale, viene fornito insieme a zgv (almeno fin dalla versione 2.3). L'indice viene prodotto sotto forma di file JPEG. Tnpic è disponibile, via FTP, utilizzando il percorso indicato all'indirizzo seguente: sunsite.unc.edu/pub/Linux/apps/graphics/tnpic-2.4.tar.gz

indent

Ra-vec

      Il Ra-Vec di Rob Aspin è una nuova applicazione gratuita (freeware) per Linux, SGi e Sun, che converte file Bitmap XWindow nei quali siano rappresentati disegni bidimensionali, quali quelli di ingegneri ed architetti, in un formato vettoriale che può essere letto da AC3D (vedere al riguardo il numero di Marzo 1997). Mediante l'utilizzo di Ra-vec si possono agilmente progettare prototipi di complessi modelli o ambienti tridimensionali, riducendo notevolmente il tempo di sviluppo di applicazioni.

Per scaricare una copia gratuita del software basta far riferimento all'indirizzo: http://www.comp.lancs.ac.uk/computing/users/aspinr/ra-vec.html.

indent

VARKON per Linux

      VARKON è un pacchetto di sviluppo di alto livello della Microform AB, SVEZIA, per CAD ed applicazioni per la modellizzazione di oggetti. Esso include un linguaggio di modellizzazione molto potente chiamato MBS ed un ambiente interattivo per la modellizzazione e lo sviluppo tradizionale di applicazioni MBS.

Parole chiave sono:
2D, 3D, modelli Reticolari, modelli Superficiali, Database orientati agli oggetti strutturati o parametrici, facilità di integrazione con altri sistemi, disponibilità di vendita del prodotto sulla maggior parte delle piattaforme ad un prezzo bassissimo. All'indirizzo del Sito Web - http://www.microform.se - si potranno trovare

  • Una notevole quantità di informazioni tecniche su VARKON
  • I riferimenti necessari a scaricare l'ultima versione di Linux-VARKON (versione 1.14E)
  • Tutti i riferimenti utili a scaricare l'intera documentazione in formato testo o MS-Word
  • Ciò che occorre per scaricare applicazioni dimostrative con il relativo codice MBS sorgente, la documentazione, ecc.

Chi lo volesse può anche scaricare una versione dimostrativa per Windows 95, del sistema di sviluppo (versione limitata ma completamente libera).

indent

Risorse QuickCam

      C'è qualcuno interessato a fare qualche lavoretto con la QuickCam Connectix, la macchina fotografica piccolina e rotondetta che è divenuta molto popolare tra gli utenti Windows e Mac? Russ Nelson (si è proprio lui, quello famoso per il Packet Drive, ovviamente per tutti coloro che ricordano questo software) mantiene continuamente aggiornata una pagina con tutte le risorse utili alla gestione della QuickCam all'indirizzo http://www.crynwr.com/qcpc. Vi si possono trovare collegamenti a drivers ed applicazioni per molti sistemi operativi, incluso Linux ed altri sistemi Unix like per PC.
      La Connectix tiene sempre aggiornata anche una pagina per gli sviluppatori. Vi si possono trovare moltissime informazioni, mentre per converso, si richiede che ci si registri nel loro programma dedicato agli sviluppatori, senza alcun costo (ovviamente). L'indirizzo di riferimento è http://www.connectix.com/connect/developer.html
      Se state cercando un driver per Linux per la Color QuickCam, provate il Progetto SANE, un progetto per lo sviluppo di un'interfaccia generica utilizzabile con diversi tipi di unità, quali molti scanner e la QuickCam. Questo pacchetto contiene anche il software di interfaccia al driver per la Color QuickCam.

Per coloro che vivono negli USA e che si meravigliano del costo di questi aggeggi, suggerisco di contattare CompUSA che vende la Color QuickCam a circa $249.

indent
indent

Lo sapevate?

Ci sono molti siti ove trovare informazioni su OpenGL nella Rete. Quella che segue è solo una breve lista: Ci sono anche alcuni siti con informazioni su RenderMan:
  • L'emporio RenderMan - (http://pete.cs.caltech.edu/RMR/index.html)
    Un archivio con tutto ciò che riguarda RenderMan.
  • RManNotes - (http://www.cgrg.ohio-state.edu/~smay/RManNotes/index.html)
    Informazioni di carattere generale sul come scrivere ombreggiatori mediante il linguaggio delle ombre di RenderMan ed utilizzando i due visualizzatori di immagini RenderMan più facilmente accessibili.

Domande e Risposte

D: La mappa di spostamento (displacement mapping) è la stessa cosa che una reazione-diffusione?

R: No. La reazione-diffusione simula la miscelazione di elementi chimici, che, almeno in teoria, sembra avere a che fare con certi retini campione di tipo animale, come la pelle di leopardo.

La funzione a bolle (bump mapping) modifica il normale aspetto di un oggetto per simulare bozzi e bernoccoli, ma senza spostare, di fatto, i punti della superficie.

L'applicazione di spostamento fa ciò che l'applicazione a bolle simula soltanto - essa, di fatto, distorce i punti della superficie dell'oggetto cui viene applicata. Ciò consente di evitare gli artefatti che si ottengono dall'approssimazione operata dall'applicazione a bolle (come si ha anche nella realizzazione di profili irregolari). In pratica si può pensare ad essa come ad un campo innalzato al di sopra di una superficie arbitraria.

D: Che cos'è un tracciatore stocastico di raggi, e ce sono di disponibili liberamente?

R: "Campionamento stocastico" o "distribuzione di tracciatura di raggi" (al giorno d'oggi non si usa più l'appellativo distribuita) si riferisce alla disposizione di campioni ad intervalli irregolari, piuttosto che in maniera regolare ed equispaziata. Non ha nulla a che vedere con il numero di raggi per pixel -- 1 campione per pixel può essere facilmente spostato, mentre 100 campioni per pixel possono invece essere disposti in maniera regolare ed equispaziata. C'è da dire inoltre che non dipende dal modo in cui si tracciano raggi - PRMan usa il campionamento stocastico ma, contemporaneamente, utilizza un metodo di scansione per linee.

Da un punto di vista più tecnico, il campionamento stocastico trasforma l'energia di segnali di alta frequenza oltre il limite di Nyquist in rumore, piuttosto che lasciare quell'alias di energia sotto forma di basse frequenze. Si tratta, in sostanza, di poter scambiare un artefatto per un altro, ma per una strana coincidenza, il nostro sistema visivo sembra essere meno sensibile al rumore di quanto non lo sia all'alias.

BMRT è un tracciatore di raggi stocastico. Sembra, da voci di corridoio, che anche POV-Ray lo sia (ma non c'è alcuna comunicazione ufficiale al riguardo che lo confermi o lo neghi). Altri includono in questa categoria (non tutti sono tracciatori di raggi): PRMan, Mental Ray ed Alias.

Un ringraziamento a parte va a Larry Gritz per tutte queste definizioni.

D: Che cos'è la tassellazione?

A: Mark Kilgard scrive nel suo OpenGL Programming for the X Window System (La programmazione OpenGL per il Sistema XWindow), quanto segue:

Nella computer grafica la tassellazione è il processo con il quale una superficie geometrica complessa viene scomposta e quindi trasformata in semplici poligoni convessi.
L'uso di poligoni convessi consente di raggiungere le migliori prestazioni in OpenGL.
indent
indent
indent

Riflessioni

     
indent
OpenGL Programming for the X Windows System
(Programmazione OpenGL per sistemi X Window)
Mark Kilgard
Addison-Wesley Developers Press

      C'è un numero sempre crescente di Interfacce di Programmazione per Applicazioni (API) in ambiente Linux che consentono agli sviluppatori di software di creare programmi in grado di visualizzare elementi grafici tridimensionali. Alcuni di questi sono progettati per consentire ai programmi di generare file di output che possono essere utilizzati da motori di rappresentazione (rendering engines) per visualizzare immagini 3D su display o scriverle su file. La libreria statica libribout.a del pacchetto BMRT è un esempio tipico di interfaccia del tipo appena descritto. Uno sviluppatore software, con tale libreria, può scrivere un programma in grado di generare in uscita un file di formato RIB che può essere utilizzato da un visualizzatore compatibile con RenderMan®. Esistono poi altri pacchetti progettati per la visualizzazione 3D interattiva. uno di questi è OpenGL. OpenGL è pertanto, se non il nonno, il Dio Padre di tutti i pacchetti di sviluppo per visualizzazione tridimensionale interattiva.
      OpenGL è un'API che è stata progettata dalla Silicon Graphics ed è ora gestita dalla Commissione per la Revisione dell'Architettura OpenGL. Nella Guida alla Programmazione OpenGL viene definita come segue:

Il sistema grafico OpenGL è un'interfaccia software per hardware orientato alla grafica. (GL sta per Libreria Grafica). Tale libreria consente di creare programmi interattivi che possono produrre immagini a colori di oggetti tridimensionali in movimento.
L'interfaccia è costituita da un sistema di gestione indipendente, basato su un finestre (window system), per hardware di tipo grafico. Per poter utilizzare OpenGL con un particolare sistema di finestre occorre ricorrere ad un'API supplementare. Una tale API supplementare consente ad OpenGL di creare i suoi contesti grafici e le finestre nelle quali OpenGL realizzerà le sue rappresentazioni.
      Linux utilizza come sistema di finestre il sistema X Window, come d'altronde la maggior parte, anche se non tutti, i sistemi Unix like. Per utilizzare OpenGL con X Window chi sviluppa software deve acquisire familiarità con GLX, l'estensione X per OpenGL, e con uno o più pacchetti quali X Toolkit (Xt) o qualcosa di molto simile a Motif (Xm). Il che, di per sé, non è cosa da poco. Già il solo imparare ad usare Xm può diventare un lavoro a tempo pieno (lo so, per esperienza personale, essendo esattamente ciò che sto facendo). Fortunatamente Mark Kilgard ci ha dato un testo completo che ci consentirà di integrare OpenGL con l'ambiente X: OpenGL Programming for the X Windows System.
      Il testo comprende, tra l'altro, 6 capitoli molto ricchi e curati, un capitolo dedicato ad un'applicazione di esempio ed una gran varietà di utilissime appendici. I primi due capitoli introducono il lettore all'OpenGL ed alle due librerie che in generale l'accompagnano: GLU, la libreria di programmi di utilità GL utilizzata per effettuare operazioni indipendenti dal tipo di hardware utilizzato come la tassellazione per poligoni, e GLX. L'introduzione si può considerare molto buona se si eccettua la spiegazione sull'uso di GLU. Tutte le funzioni OpenGL hanno per prefisso "gl" eccettuate le funzioni GLU che hanno per prefisso "glu". Sono riuscito a farmi una ragione per tale scelta ma penso che possa costituire fonte di confusione il dover ricordare che OpenGL ha due insiemi di funzioni con differenti prefissi (come se il sistema X Window non ne creasse già abbastanza di per sé).

- Continua all'inizio della colonna accanto -
indent indent indent
indent
indent
indent
      Il terzo capitolo fornisce un'esauriente spiegazione del come utilizzare OpenGL con Motif. Il prerequisito è rappresentato dall'esigenza di dover combinare OpenGL (routines gl e glu) con l'estensione X per OpenGL (GLX) e con un insieme di strumenti aggiuntivi a scelta (Xm con Xt per gestire il tutto). Il che sembra essere un bel po' di lavoro. Per non parlare poi del fatto che scrivere applicazioni OpenGL, con chiamate a routines X immerse nel file sorgente, fa scomparire quella portabilità che uno sviluppatore poteva avere inizialmente col solo OpenGL. Sarebbe utile oltre che carino avere la possibilità di rimuovere le chiamate a routines X avendo così un'applicazione OpenGL realmente portabile.
      Ebbene, neanche a dirlo, questa possibiltà esiste. Mark introduce la libreria GLUT nel capitolo 4, questa riesce a mascherare allo sviluppatore gran parte (non tutto) delle chiamate all'API specifica del sistema window. Questo pacchetto, sebbene non specificatamente destinato ad applicazioni che presentino in maniera massiccia tutte le caratteristiche OpenGL, fornisce un ottimo esempio di applicazione che riesce a gestire le API del sistema a finestre per conto dello sviluppatore consentendogli al tempo stesso di scrivere un unico file di codice sorgente, trasportabile sotto ogni piattaforma. Il pacchetto stesso può essere implementato in ambiente X Window, Windows NT ed ogni altro ambiente a finestre. Tutto ciò di cui ha bisogno lo sviluppatore di applicazioni è l'accesso al pacchetto.
      Il capitolo 4 fornisce un'introduzione alle più importanti caratteristiche di base del GLUT. Copre infatti argomenti che vanno dalla gestione delle finestre, alle chiamate di routines, alla rappresentazione di stili di caratteri. Il capitolo 5 approfondisce significativamente diversi temi. Nelle sue 90 e più pagine troviamo infatti temi quali illuminazione, applicazione di retini, utilizzo di immagini e rappresentazioni bitmap, curve e supefici. Penso che questo sarà il capitolo cui farà riferimento più spesso la maggior parte dei lettori una volta che avrà acquisito dimestichezza con un primo esempio di programma OpenGL che utilizzi GLUT. Il capitolo 6 copre argomenti avanzati quali l'estensione di input per X window, Overlays e analisi delle prestazioni.
      Ci sono tre appendici, la più interessante delle quali è la "Descrizione funzionale dell'API GLUT". Questa è, per gran parte, organizzata parte come un manuale di riferimento anche se il suo formato non prevede una funzione per pagina. Ciò rende un po' difficoltoso trovare immediatamente ciò che si sta cercando perché in una pagina può capitare di trovare più di una funzione. Al di là di questo, però, rappresenta un esempio di analisi esaustiva dell'API GLUT. C'è perfino un glossario subito dopo le appendici.
      Mark include poi nel testo, fin dall'inizio, una gran quantità di codice di esempio. Ovviamente esso è integralmente scaricabile dalla Rete. Il codice è agevole da seguire ed il testo che lo accompagna è scritto bene. Sebbene Mark non perda molto tempo a spiegare come programmare nel sistema X window (la cui conoscenza è da considerarsi un prerequisito per questo testo) copre il maniera approfondita il tema sul dell'integrazione di OpenGL con l'ambiente X. Dopo aver fornito qualche spiegazione sul come tutto ciò possa funzionare fornisce informazioni molto dettagliate sul come rimuovere le chiamate specifiche del sistema a finestre utilizzando GLUT.
      In conclusione posso asserire che OpenGL Programming for the X Windows System è proprio un testo ben scritto, con spiegazioni esaurienti e dettagliate che consentono agli sviluppatori di software di integrare OpenGL con le loro applicazioni X Window.

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
Utilità grafiche in ambiente Unix
La pagina multimediale di Linux

Ecco alcune delle Mail list e dei Newsgroup che tengo continuamente sotto controllo e dalle quali traggo molte delle informazioni che compaiono su queste pagine:

L'utente Gimp e la mail list dello sviluppatore GIMP.
La lista di discussione su IRTC-L
comp.graphics.rendering.raytracing
comp.graphics.rendering.renderman
comp.os.linux.announce

Sviluppi Futuri

Il prossimo mese:
Fatemi sapere quali temi vorreste vedere affrontati!


all'Indice

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