Di RobyDx (del 25/07/2007 @ 16:43:42, in DirectX9, linkato 1849 volte)
Una delle funzioni che non può mancare in un programma CAD è la possibilità di spostare un oggetto con il mouse. La cosa è tutt'altro che semplice perchè richiede numerosi conti e soprattutto un buon sistema di collisioni. DirectX ci viene incontro offrendoci una istruzione chiamata IntersectMesh che ci permette di ottenere facilmente il rayCollision, ossia la collisione di una semiretta con una mesh in modo da ottenere qualsiasi dato sull'impatto. La cosa può risultare peraltro utile per calcolare le collisioni di spari (che sono essenzialmente immediati ed in linea retta) ed in definitiva in molte situazioni di calcolo di collisioni. Ad esempio possiamo verificare se una linea che va da noi ad un nemico è interposta da un muro e quindi regolarci di conseguenza....
Di VinceDX (del 26/07/2007 @ 09:41:24, in News, linkato 1454 volte)
Un saluto a tutti. Come in molti avete notato, ultimamente ci sono stati problemi con il forum che risiede su altervista. C'era un problema di spam (maledetto spam!!!) che ora è stato risolto. Il Forum è quindi tornato attivo, e potete raggiungerlo come sempre dal link che trovate in alto a destra.
Tuttavia, ci sono importanti novità. Io e Roby abbiamo deciso che è ora di rinnovarci, quindi nei prossimi giorni passeremo ad un nuovo forum, che integra nuove funzionalità che miglioreranno la vita sia a noi ma soprattutto... a voi! Rimanete sintonizzati su queste pagine, perchè i prossimi giorni si preannunciano eccitanti!
L'attuale forum su altervista, rimarrà cmq attivo, per avere a portata di mano le discussioni che sono già state aperte. Per quelle nuove, consiglio a tutti di utilizzare il forum che verrà. Vi faremo sapere quando sarà attivo.
Già che ci siamo, sappiate anche che da ieri sono in vacanza... no no, non la vacanza che pensate voi. Intendo dire che ho finito con gli esami all'università, quindi ora sono libero. Sfrutterò questa momentanea spensieratezza per inserire articoli nuovi. Alcuni sono già stati inseriti, ed altri ne arriveranno.
Ne approfitto inoltre per augurare a tutti voi buone vacanze! E ricordatevi, questo è il periodo migliore per imparare ad usare le DirectX. Quindi, dateci dentro!
Di RobyDx (del 27/07/2007 @ 14:52:22, in DirectX9, linkato 1433 volte)
Il mipmapping è una sistema di gestione delle texture basato sull'utilizzo di numerose texture per uno stesso oggetto ma che differiscono tra loro solo per la dimensione. Se ci avviciniamo ad un oggetto infatti possiamo notare che una texture di dimensioni non sufficienti appare priva di definizione e quindi poco gradevole. Contemporaneamente però texture troppo definite per oggetti distanti sono solo un grande spreco di risorse. La soluzione è quindi creare numerose copie della texture in questione cambiandole a secondo della distanza. Questa soluzione fu usata manualmente già nei primi giochi 3D: directX è in grado di gestire tutto ciò tramite il MipMapping generando automaticamente una texture contenente tutte le mappe....
Di RobyDx (del 27/07/2007 @ 15:09:56, in DirectX9, linkato 1555 volte)
Come per lo stencil buffer anche lo ZBuffer presenta caratteristiche impostabili per ottimizzare e migliorare il calcolo delle profondità in DirectX. Le possibilità offerte da semplici manipolazioni possono risolvere infatti numerosi problemi offrendo ad esempio la possibilità di modificare la sensazione di profondità di una scena....
Di RobyDx (del 27/07/2007 @ 15:21:43, in DirectX9, linkato 1874 volte)
Il termine CAD, Computer Aided Design tradotto in italiano come Progettazione Assistita al Calcolatore è la disciplicana che prevede il disegno grazie all'utilizzo del computer. Il termine trova il suo pieno significato nel disegno tridimensionale e quindi nella rappresentazioni di oggetti ed ambienti virtuali. I videogames derivano dal CAD da cui però non ereditano tutte le possibilità in quanto a differenza dei programmi di grafica come 3DStudioMax i primi devono lavorare in real time ad alta velocità. Una delle caratteristiche usate in CAD e disponibile ormai anche su molte schede video sono le High Order Primitive, ossia delle curve geometriche. Tra queste rientrano molte curve che a volte sono state nominate senza spiegare cosa siano. Curve di Hermite, le BSpline, le ormai "leggendarie" curve di Bezier o le NURBS. Queste particolari curve altro non sono che curve dotate di grandi flessibilità che possono essere tracciate tramite pochissime informazioni e che possiedono numerose proprietà....
Di RobyDx (del 27/07/2007 @ 15:33:05, in DirectX9, linkato 1638 volte)
Lo swap chain è il sistema creato da DirectX per gestire il rendering su più oggetti separati (più form o più pictureBox). Non molto utile per la maggior parte dei giochi lo swap chain è fondamentale per numerosissime applicazioni. Un editor grafico 3D ha ad esempio bisogno di gestire su più aree diverse inquadrature di una stessa scena o potrebbe servire realizzare un programma su più finestre separate. Cosa fate in questo caso? Ci sono solo 2 soluzioni:
1) creazione di più device (appesantimento eccessivo del programma);
2) utilizzo dei swapChain.
Ogni oggetto swapChain è una specie di miniDevice in grado di mantenere al suo interno un backBuffer e di direzionale un rendering verso un oggetto stabilito da noi. Inoltre ogni swap sarà indipendente per caratteristiche ma potrà utilizzare tutte le risorse messe a disposizione....
Di RobyDx (del 27/07/2007 @ 15:41:50, in DirectX9, linkato 2991 volte)
La possibilità per directX di renderizzare una scena su una texture anzichè direttamente nello schermo è senza dubbio la caratteristica più importante per la realizzazione dei moderni effetti grafici, specie se in Vertex e Pixel shader. Lo stile che si adopera è chiamato multi pass: la scena viene renderizzata su una texture e questa poi viene elaborata ed infine presentata sullo schermo. Il motivo di ciò sta nel fatto che molti effetti sono notevolmente complessi e richiedono quindi il passaggio per varie fasi.
Ad esempio riportato nel sito è il depth of field. Questo richiede 3 passaggi:
1)rendering normale su una texture
2)rendering del cosiddetto depth space cui il colore della scena è la distanza dal punto di messa a fuoco con colore in scala di grigio
3)sfocatura finale in cui finalmente sullo schermo viene renderizzata la prima texture a pieno schermo sfocata tramite i dati contenuti nella seconda.
Essendo impossibile sfocare i poligoni è necessario trasformare la scena in una texture renderizzandola alla fine come un rettangolo che copra l'intero schermo.
Questo è solo un semplice esempio. Molti giochi, come ad esempio Half Life 2, richiedono decine di rendering separati che vengono dal modello iniziale generano luci, rilievi e riflessioni che vengono poi assemblati per ottenere il risultato finale....
Di RobyDx (del 27/07/2007 @ 15:52:41, in DirectX9, linkato 1533 volte)
I vertex buffer sono utilizzati come sappiamo per contenere i dati sui vertici di un modello. Questi possono essere inclusi in una mesh o utilizzati separatamente e passati al device. Riuscire a creare da zero un vertexbuffer può risultare fondamentale in moltissime situazioni, specie se si deve creare un oggetto da zero o lo si deve caricare da un formato diverso dal formatoX....
Di RobyDx (del 27/07/2007 @ 16:01:19, in DirectX9, linkato 2577 volte)
La struttura più utilizzata da tutti per il rendering è la mesh, ma pochissime persone sanno esattamente come è strutturata una mesh e come crearla in assenza di fileX. Una mesh è per definizione un oggetto 3D, una figura composta da un insieme di triangoli, eventualmente raggrupati in insiemi che si differenziano per materiale (texture e colori)....
Di RobyDx (del 29/07/2007 @ 08:33:01, in DirectX9, linkato 1910 volte)
Nonostante la potenza dell'hardware aumenti di anno in anno sembra non sia mai sufficiente il numero di poligoni da renderizzare. Infatti anche se le moderne schede video promettono di gestire centinaia di milioni di poligoni al secondo, in realtà questo numero scende drasticamente senza oppurtune ottimizzazioni. Il problema si manifesta soprattutto quando occorre mandare a schermo tantissimi oggetti separatamente.
Una scena molto complessa viene di solito renderizzata con pochi passaggi cercando di raggruppare i poligoni in modo da fare meno rendering possibili. In genere il motore grafico raggruppa tutti gli elementi con le stesse caratteristiche, li fonde insieme ed effettua il draw di molti vertici contemporaneamente (tecnica di batching). Al contrario non è possibile renderizzare insieme poligoni dinamici perchè la posizione dei vertici cambia continuamente e di conseguenza o si modificano i vertici nel vertexbuffer per ogni frame o si fa il draw separatamente per ognuno. Entrambe le soluzioni uccidono il frame rate. Un simile problema era già stato riscontrato per i point sprite, i sistemi particellari. Occorreva renderizzare tante immagini, ad esempio delle scintille, e non si poteva fare il draw per centinaia o migliaia di sprite. DirectX introdusse quindi un sistema che permettesse di gestire tanti sprite semplicemente come un array di punti ottimizzando moltissimo le prestazioni.
Il geometry instancing è qualcosa di simile ma applicato a modelli interamente 3D. Attraverso il device è possibile caricare un modello 3D e moltiplicarlo sullo schermo dando ad ognuna di queste copie caratteristiche specifiche di posizione, colore o qualsiasi altra cosa vogliate; il tutto accellerato dall'hardware.
Unica nota dolente è che solo le schede video con tecnologia shader 3.0 implementano tale caratteristica e sarà quindi necessario aspettare ancora un pò prima di vedere tale tecnologia sfruttata appieno....