Rendering tests

2 Comments

I collect here some screenshot of my little experiment with deferred rendering:


First rendering with radiosity (Light Propagation Volume by Crytek)

La perry-camera

No Comments

Quest’oggi parliamo della distorsione prospettica nelle camere reali :). Come sicuramente quelle 2/3 persone che leggeranno questo post sapranno, diverso tempo fà ho lavorato in un videogioco di pallavolo, quando questo sport viene trasmesso in tv accade, come in tutti gli altri sport, che venga ri-trasmessa l’ultima azione, come riempitivo di un momento morto o perché particolarmente spettacolare (nella pallavolo il primo caso è il più comune). Nella pallavolo alcune volte il replay fa uso di una telecamera grandangolare piazzata altezza rete… ed ovviamente la trasposizione videoludica non si poteva esimere dall’avere lo stesso effetto distorto e incomprensibile. Dopo un po’ di esperimenti cercando di riprodurre questo effetto, notai che mentre solitamente si proietta la scena 3D su un piano davanti alla telecamera, dove ogni punto è su un piano come se fosse parallelo allo schermo, per ottenere un’effetto distorto dovevo trattare la proiezione come fosse su una sfera, quindi se solitamente abbiamo sx=\frac{x}{z} e sy=\frac{y}{z}  , dove x,y e z sono le coordinate 3d da proiettare e sx e sy i punti proiettati, per la visione a “occhio di pesce” avevo d=\sqrt{x^2+y^2+z^2}  e quindi sx=\frac{x}{d}  e sy=\frac{y}{d}  .

More

MFC & CUDA

No Comments

Io e le MFC abbiamo una lunga storia alle spalle, le ho sempre viste come una cosa che non mi serve, una complicazione in un sistema semplice e bello come quello a messaggi di windows. Alla fine invece bisogna vedere mfc come quello che è: un semplice strato tra i messaggi e un sistema a classi, arcaico, progettato così così, basato su define più che su classi, ma di una potenza senza eguali nella programmazione windows. Basta vedere le librerie codejock o quelle BCGSoft (integrate in visual studio 2008) per vedere cosa si puo’ e cosa fanno con MFC. More

Trovare un medico di famiglia

4 Comments

Ciao a tutti, oggi mi sono alzato con uno scopo nobile in mente, prepararmi per andare a fare la richiesta per un medico di famiglia. Ricordo che quando stavo a Padova ci ho messo circa 4 anni per decidermi, el l’ho fatto solo perché avevo un problema serio ad un ginocchio per farlo. Dopo una velocissima ricerca sono arrivato a questa pagina dell’ASL… 13 indirizzi e nessuna idea di dove siano… Google maps risolverà! con pazienza ho trovato l’indirizzo più vicino. Ora dovrei decidere quale dottore, così vado a questa pagina PDF…  28 pagine di girca 15 indirizzi ognuna, per un totale di circa 400 indirizzi, controllo di quale distretto, vado a controllare rimangono più di 200 dottori!! Ma caspieterina! Vuoi vedere che sono capitato nel distretto più popolato di dottori dei 5?!?! Siccome sono nerd e di controllare 200 indirizzi a mano per trovare il più vicino non ci penso proprio, ho cominciato a guardare l’help delle API di google maps… More

manikin!

5 Comments

manichin 1.1

AGGIORNAMENTO!! migliorato anti-aliasing e aggiunta ombra. ora sì che è figo :)

AGGIORNAMENTO!! seguendo il consiglio del grande Paolo Calloni ho evidenziato il punto del manichino che si posiziona dov’è il mouse così da essere più chiaro l’utilizzo del programma. L’idea iniziale era di colorarlo in verde o giallo ma poi il mio daltonismo ha preso il sopravvento e l’ho fatto magenta :o

Ecco qua il mio ultimo lavoretto! cominciamo con un pò di note sul programma e di seguito il mio solito sproloquio/Post-morten :)

Come anticipato nel post precedente, questo programma serve a posizionare un manichino 3D, i comandi sono:

Premendo e rilasciando il tasto sinistro del mouse senza muoverlo, selezioni un pezzo. Se invece premi e muovi il mouse senza rilasciarlo , il programma ruota il pezzo selezionato verso il mouse, in modo da fare combaciare l’estremità opposta al centro di rotazione col mouse, ad esempio: se selezioni la coscia il ginocchio tenderà ad andare verso il mouse. Se ti avvicini al centro di rotazione il pezzo si girerà verso di te (o lontano da te se premi control). Se invece quando clicchi col mouse premi il tasto control (non dopo che hai premuto perché abbiamo appena visto cosa fa’) orienti il pezzo selezionato, questo mi è venuto un po’ male, il concetto sarebbe che ruoti su un piano perpendicolare al pezzo e la parte che era orientata verso il mouse continua ad esserlo mentro lo muovi.

Col tasto centrale e la rotellina del mouse cambi la vista, il tasto centrale ruoti intorno al manichino, con la rotella ti avvicini/allontani da lui, se invece premi control, il tasto centrale serve a spostare il manichino nella vista, la rotella cambia la focale della camera (con un simpatico effetto ottico dovuto al fatto di cambiare la distanza in base al cambio di focale).

Direi che questo è tutto, con F1 cambi la visione dell’help a schermo, con F2 attivi/disattivi le collisioni, anche se sono un po’ sperimentali quelle. In teoria dovrebbe essere possibile definire un altro modello da usare al posto del manichino creato da me, usando un’altro file XML di configurazione, ma è talmente complicato che prefirisco non descriverlo qui, forse scrivero’ qualcosa durante le feste, in caso aggiornerò post e zip.

More

Outline

1 Comment

Ieri mattina mi sono alzato con tanta voglia di fare… fortunatamente poi è andata scremando…

Quello che volevo fare era un prototipo di posizionamento manichino, un pezzo del programma di paint che ho in mente, in cui renderizzato un manichino (tipo quelli di legno per artisti) e poi col mouse selezioni gli arti e li orienti come più ti piace. L’idea sarebbe questa: click semplice cambi selezione, ruotando tra tutte le possibili in quel punto, click e trascina decidi la direzione dell’attuale arto, e rotellina ruoti più o menol’arto verso la camera. A parole sembra bello, ed è per questo che volevo fare un prototipo.

Come al solito mi sono perso in altre cose, ad esempio ho cominciato col cercare disegni del manichino, una volta trovate vista frontale e laterale, ho cominciato a modellare, dopo un po’ che modellavo mi sono reso conto per l’ennesima volta che modellare non mi piace, mi diverto di più a scriptare i modelli :) . Quindi ho cercato un manichino già fatto, una volta trovato, ho visto che avrei dovuto perdere un sacco di tempo a sistemarlo, quindi mi sono messo a fare altro :D .

More

Colors!

2 Comments

Qualche giorno fà un’ex collega oltre che caro amico mi ha passato il link ad un programma per DS, colors! Questo programma mi ha fatto ricordare a quando stavo creando il mio programmino di paint, sempre ispirato da questo amico, inutile dire che come quasi tutti i miei progetti non professionali è stato abbandonato quando l’interfaccia ha smesso di piacermi…

Allora era un pò così: c’era l’area principale di disegno, e questo è stato il primo errore: in un programma figo, come a me piacerebbe creare, l’area di disegno deve essere infinita, poi ai lati c’erano delle schede con linguetta espandibili, ed anche questa si è rilevata una pessima idea, troppo distanti, troppo difficili da raggiungere. Alla fine c’era la selezione colore che mi piaceva, un sistema HLS con cerchio molto standard dove ho speso non poco tempo, e quella del pannello anche se quella è venuta poco dopo in un paint 3D stile MudBox che ovviamente ho avvandonato subito. comunque la selezione era tramite 2 cerchi, uno interno dove il colore era sempre steso uniformemente ed uno esterno a delimitare la fine della sfumatura, più uno slide laterale a scegliere l’opacità del tutto. considerando che poi questa interfaccia appariva nel cursore dove esso era veniva abbastanza bene.

More

Una mia skylight

No Comments

Tempo fà stavo guardando i vari esempi dell’SDK nVidia, senza cercare niente in particolare, così tanto per passare il tempo. E sono rimasto colpito da un’esempio riguardante l’ambient occlusion. A prima vista non sembra un grande esempio, intanto per avere risultati decenti ci mette molto più del tempo richiesto dal rendering real-time (diciamo 2 sec) e poi il risultato mi sembrea sempre un pò sbagliato…

Questo esempio propone di utilizzare le Shadowmap per calcolare l’ambient occlusion, renderizzando tante volte la scena con le ombre proiettate in diverse direzioni, e poi fa la media dei vari rendering. More

Sul radiosity real-time

1 Comment

Sono un pò di giorni che penso a questo problema della computer grafica moderna, ho guardato un pò in giro e oltre ENLIGHTEN non sono presenti sul mercato soluzioni simpatiche, molte alternative sono illustrate in questa pagine qua, che però essendo mantenuta da  Stepan Hrbekè un pò di parte, infatti non nomina ENLIGHTEN probabilmente perché è nettamente superiore al suo. Da notare poi come la sua tecnica sia “Realtime radiosity” mentre le  altre sono chiamate col loro vero nome :). Vediamole un pò:

C’è “Instant Radiosity” una tecnica molto simpatica la quale crea una serie di sorgenti luminose secondarie per simulare la luce riflessa, se poi si crea un sistema stabile che crea ombre per tutte le luci si riescono ad avere risultati davvero notevoli, certo che fare l’ombra di… mettiamo 300 punti luci è un pò fuori dal realtime, il problema è che anche essere illuminati da 300 luci quasi tutte direzionate (le luci in di riflesso non illuminano in modo uniforme in tutte le direzioni) e di cui una possibilmente con ombra si vede che il metodo non è proprio istantaneo…

More

Il mio nuovo sito!

No Comments

ecco fatto! Finalmente ho deciso di aggiornare il mio sito… dopo vari e ripetuti inviti da parte da chi mi conosce. :)

Ho visto un collega usare WordPress e mi è sembrato molto bello e facile da usare, visto che non sono un programmatore web ho deciso di usare questo sistema facile per creare un sito bello, moderno e di facile aggiornamento.

Inserirò subito 3 pagine sui miei programmi preferiti: Polycubes, Luce e Aeroplanino e scriverò di tanto in tanto idee ed esperienze sulla grafica 3D e la programmazione.

Buona lettura!!