Visualizzazione post con etichetta informatica. Mostra tutti i post
Visualizzazione post con etichetta informatica. Mostra tutti i post

domenica 17 marzo 2013

L'inventore e il materiale ubiquo - una piccola fiaba


C'era una volta un giovane inventore. Era molto intelligente, amava veramente inventare e passava quasi tutto il suo tempo rinchiuso nel suo laboratorio, mantenendosi con i risparmi che aveva messo da parte con piccoli lavoretti tempo addietro. Le persone lo consideravano strano e per alcuni era un po' pazzo.
  Erano mesi e mesi che nessuno lo vedeva uscire. Un bel giorno nella grande piazza comparve dal nulla, a mezz'aria, un bassorilievo con su inciso «Ciao mondo!». Cadde, si frantumò e scomparve. Alcuni credettero fosse opera di magia oscura e scapparono terrorizzati, altri non vollero credere ai loro occhi e fecero finta di niente. La notizia si diffuse e giunse anche alle orecchie del solitario inventore che non appena apprese, corse in strada urlando di gioia, esclamando: «Ce l'ho fatta! Ce l'ho fatta! Ho creato il materiale ubiquo!». Ovviamente tutti giustificarono il suo comportamento pensando fosse pazzo. Dopo essersi calmato, l'inventore andò in piazza. Spiegò ai suoi concittadini che aveva inventato un materiale che aveva lo straordinario potere di essere ubiquo, ovvero poteva trovarsi in diversi luoghi contemporaneamente. Creato un oggetto, lo si poteva materializzare contemporaneamente in qualsiasi luogo. Era grazie a questa proprietà che aveva materializzato il bassorilievo. Come al solito molti furono scettici e, anche credendo alla sua invenzione, non comprendevano come questa potesse essere utile, ma presto si dovettero ricredere.
  L'inventore tornò al lavoro e si rinchiuse nel suo laboratorio per mesi e mesi. Quando ne uscì aveva creato un incredibile macchinario con il suo materiale speciale. Molti suoi concittadini trovarono il macchinario molto utile e ne comprarono una copia ubiqua. Poco ci volle perché qualcuno capisse come funzionava il meccanismo di richiamo delle copie ubique, che non richiedeva alcuno sforzo. Le persone iniziarono a rivendere o a regalare copie ubique dei macchinari dell'inventore, le cui vendite, insieme con i guadagni, calarono bruscamente. Aveva speso ormai tutti i risparmi e dovette aumentare le ore di lavoro, nonostante fossero già tantissime, per poter inventare abbastanza velocemente. Smise addirittura di dormire, ma così le sue creazioni non erano più geniali come prima. Era un disastro: di lì a poco sarebbe morto di fame. Iniziò a chiedere l'elemosina e smise di inventare, perdendo la sua più grande fonte di gioia.
  Dopo un po' di tempo le persone incominciarono ad accorgersi della mancanza di nuovi macchinari. Andarono dall'inventore a richiederne altri, ma non lo trovarono. Qualcuno, passando in piazza, si accorse che quel mendicante, al quale aveva appena rifiutato la carità, era in realtà lo scomparso inventore. Gli domandò come mai fosse ridotto così, nonostante la genialità delle sue invenzioni che tutti volevano. Egli spiegò che poiché quasi nessuno lo pagava, lui non guadagnava abbastanza per vivere e inventarne di nuove, aveva provato, ma non gli era fisicamente possibile. Il suo interlocutore fu illuminato e comprese. Il caso voleva che questi fosse un giurista. Per porre rimedio alla situazione e permettergli di inventare ancora, elaborò una legge che consentiva l'utilizzo di macchinari ubiqui solo con un permesso, acquistato presso il loro creatore. Questa legge non bastò a impedire la copia frenetica dei macchinari ubiqui. Il giurista e l'inventore dovettero riunire i concittadini e far loro comprendere che agendo così impedivano a loro stessi di avere nuovi e più utili macchinari. Era meglio pagare per usare ciò che era veramente utile, piuttosto che non pagare per avere molti macchinari di minore utilità. L'inventore descrisse alla piazza i fantastici benefici che si sarebbero potuti ottenere con le sue nuove invenzioni. Il desiderio di tutti di usarle fu più forte di quello di copiare ogni macchinario senza pagarne il permesso. Il popolo fu illuminato e comprese.
  Da quel momento in avanti le persone cominciarono a pagare per avere il permesso di usare i macchinari. Questi divennero sempre più utili e le loro funzioni sempre più disparate. Oltre che per il lavoro l'inventore ne creò alcuni per la salute, la sicurezza e lo svago dei suoi concittadini. Gli acquirenti divennero moltissimi. Fu possibile abbassare i prezzi, aumentando la gioia dell'inventore e il benessere del popolo. Ogni tanto qualcuno usava copie ubique senza il permesso, ma, per fortuna, c'era sempre qualcun altro che lo vedeva e lo aiutava a capire che stava andando contro i propri interessi. L'inventore continuò a inventare. Al suo lavoro venne dato il suo giusto valore. La vita delle persone era migliorata e continuava a migliorare grazie alle nuove invenzioni. Vissero tutti felici e contenti.

martedì 25 settembre 2012

[video] Mind reader technique unveiled - Svelata la techica di un divinatore


Finalmente un divinatore che svela il suo segreto!
Vediamo se riuscite a capirlo prima che lo sveli.

Non vale guardare i tag!!

venerdì 4 febbraio 2011

OpenGL SecondProject - Texture sui modelli!

Vedere una casa tutta bianca e senza luci né ombre è certo un bel passo in avanti, ma ad ogni passo ne deve seguire un altro. Per questo ho dato ai modelli le loro texture. Anzi la loro texture. Sì, perchè un modello tridimensionale per coprirsi di colore può usare o più file o uno solo, equivalente ai "più file" opportunamente ruotati per stare tutti in un'unica immagine, e per ora ho dato ad ogni modello solo una texture.
Sono partito con l'idea di usare tutte le texture, per dare la possibilitá a modelli con texture multiple di entrare nel mondo in construzione, ma sono incappato in un problema: in un 3ds, da quello che vedo grazie alla libreria lib3ds, per ogni mesh sono elencati in array tutti i vertici e tutti i triangoli, ognuno con i 3 indici dei vertici che lo compongono e l'indice del materiale di cui è fatto. Ogni materiale ha 2 texture, e tante altre cose, come normalMaps, ecc. Le informazioni sulla posizione della texture per i vertici cono messe in un bell'array di coppie UV, il che mi fa pensare che vi sia una coppia UV per ogni vertice, peccato che se così fosse potrebbe funzionare solo con una sola texture poichè, in caso di texture multiple, ad un vertice dovrebbero corrispondere diverse coordinate UV a seconda di quale triangolo si sta considerando. Ho cercato un po' online, ma non ho trovato gran che (se qualcuno avesse trovato qualcosa mi farebbe un favore facendomelo sapere :D), così ho deciso di caricare solo la texture del primo materiale che incontro e di usarla per tutto il modello. Che poi pensandoci bene avere una texture sola per un singolo modello dovrebbe aumentare le prestazioni rispetto a dover caricare più texture. Certo si perde il vantaggio di poter riusare texture base per comporre texture più complesse (ad esempio una texture per il cemento usata su diversi modelli di edificio), ma si può ovviare a questo creando asset componibili, ovvero non modellare un edificio intero, ma le sue parti separatamente, il che porta anche il vantaggio del riutilizzo dei modelli oltre che delle texture.

Usando solo la prima texture i modelli con più texture appaiono corretti solo nelle parti originariamente coperte dalla texture usata.

il modello della casa dovrebe avere anche altre texture...

Mentre modelli con una sola texture appaiono corretti al cento percento!

il modell del carretto ha una sola texture, quindi è visualizzato correttamente

Implementando questa nuova caratteristica di base ho anche introdotto un gestore di texture, ceh permette di non caricare più volte una stessa texture. Ho scelto di implementarlo con metodi statici, invece di ricorrere ad una variabile globale, ma si può sempre cambiare.

Per caricare le texture dei modelli nella loro cartella ho incluso la libreria Boost FileSystem, perfettamente portabile, per poter usare la cartella del modello come base per il path della sua texture.

Dovrò poi capire come usare normal-maps, reflection-maps e compagnia bella.
Per qualsiasi cosa commentate!

mercoledì 2 febbraio 2011

OpenGL SecondProject - Texture!

Ieri ho sentito la necessità di conoscere gli FPS dell'applicazione che sta nascendo, così ho aggiunto un semplice contatore di FPS (semplicemente contando il tempo che passa tra un ciclo e l'altro e dividere "1 secondo" per quel tempo, niente medie o cose simili per ora). Unico problema: come visualizzare gli FPS? Stampandoli sullo schermo, sì, ok, ma OpenGL e SDL non ci sanno alcun supporto per la stampa di testo (GLUT ha qualcosa di essenziale, ma lavorando per un gioco non si può usare GLUT :D ), quindi bisogna provvedere da sè o trovare qualche libreria. Qualche libreria c'è, come google vi potrà mostrare, ma questa volta ho preferito fare da solo. Ho ricevuto un grande aiuto dal codice di Lugaru, dal quale ho preso l'idea di usare le liste di OpenGL (praticamente una serie di azioni memorizzata e associata ad un Id, richiamabile a necessità) e una texture per i caratteri (praticamente tutto il necessario :D).
Oh, guarda! "Texture"! Bisogna aggiungere il caricamento delle texture! FreeImage, la conoscete? È una famosa libreria che permette di leggere e scrivere immagini in tantissimi formati rilasciata con due licenze: GNU GPL e FIPL. La seconda è quella che mi interessa: ne permette l'uso a fini commerciali.
Per riuscire a caricare correttamente le immagini ho perso un sacco di tempo. Per memorizzare delle texture con OpenGL serve un array contenente i dati di tutti i pixel, in questo caso texel. Per capire come ottenere il suddetto array ci ho messo un po'; la luce mi è stata portata da questo tutorial. inizialmente ho usato il wrapper a oggetti FreeImagePlus, ma seguendo il tutorial, che non ne fa uso, ho capito come usare la libreria classica e lo ho abbandonato.
Per i primi test ho fatto un'immagine con GIMP e la penna del mio TabletPC alla veloce, quindi alcuni caratteri escono un po' dal loro riquadro e fanno capolino in quello di qualcun altro (vedi lo spazio); inoltre sono a risoluzione molto bassa. Ho scoperto che posso usare l'UbuntuFont e credo che farò una texture con quello, dato che lo trovo fantastico. Ora i due quadrati hanno una texture!

Quello grande ha una texture rettangolare (scelta rettangolare per vedere come si comportava): una foto che ho fatto ad un concerto degli Ulver.

quadrato grande: foto dal concerto degli Ulver - the rest is silence

Quello piccolo porta su di sé la texture del font.

quadrato piccolo: texture del font

Ho aggiunto il test sullo Z-buffer e sull'alpha per poter "non-vedere" correttamente gli oggetti coperti da altri e per avere la trasparenza con la texture del font. Una delle cose che ho aggiunto ha portato un bug, che è lo stesso che ho in Minecraft, e per questo credo potrebbe essere causato dalla mia scheda grafica: da certi poligoni partono triangoli con un vertice al punto di fuga. Credo accada solo con poligoni senza texture. Vedrò di indagare.

bug dei triangoli al punto di fuga

Ho fatto anche qualche ricerca sulle proporzioni del campo visivo umano, per avere una visione il più possibile completa e realistica, e ho scoperto che abbiano all'incirca un'apertura orizzontale di 160º e verticale di 120º, il che vuol dire 4/3. Sconvolgente eh? E i 16/9? non dovrebbero essere le proporzioni che più si avvicinano a quelle della nostra visuale? Beh, tutti quei gradi comprendono tutto quello che vediamo, ma se consideriamo la zona ad alta risoluzione ecco che i 4/3 scompaiono e compare una zona ellissoidale, più simile ai 16/9, anche se la zona con massima risoluzione è in realtà di circa 2º (º-º poco, no?). Pero ora le immagini che vedete sono 640*480(4/3) e con un FOV orizzontale di 120º. Avrò tempo per riflettere su questi aspetti.
Non ho postato codice, ma se avete dubbi o curiosità, anche non relative al codice, non esitate a commentare e chiedere!

venerdì 10 dicembre 2010

MIT Minority Reporter - Dopo il guanto, Kinect

Sì, ancora Kinect e ancora MIT. Giá avevano fatto il controllo alla Minority Report con un guanto di gomma ( MIT - motion-sensing (altro che Minority Report) ), che costava una webcam e pochi centesimi, ora che c'è il Kinect... viene spontaneo, no? :)
Certo con questa soluzione bisogna comprarsi il Kinect, il guanto è molto più poetico, ma forse il dermatologo non è d'accordo.

Ecco il video, e per chi volesse provarlo, su Downoad|Blog.it c'è il link al sorgente :)




Grazie a Tom's Hardware e a Download|Blog.it

lunedì 6 dicembre 2010

Kinect volante

Ultimamente stanno impazzando notizie di aplicazioni del Kinect grazie ai driver OpenSource. Qui vediamo un'applicazione del Kinect volante che naviga nello spazio e si ferma di fronte a ostacoli.

La Microsoft ha regalato al mondo un fantastico dispositivo. (regalato in cambio di tante tante vendite :) )
Grazie. Prego.

giovedì 3 giugno 2010

Swedish Game Awards - Non nominati

Ho scorso un po' la lista dei giochi iscritti ed ecco quelli che hanno attirato la mia attenzione e che magari sarebbero dovuti essere stati nominati.

PANTHEON


Nessun video, peccato. La grafica ricorda moltissimo Torchlight, il genere pure.


Sunlight


Un progetto scolastico di 10 settimane: °.°". Che bella cosa. Sembra essere fatto veramente bene, la grafica ha un bello stile.


Solve it


Sembra carina l'idea.


Mystling


Peccato che non ci sia una versione giocabile (e neanche un video), o almeno così mi è sembrato, perchè mi sarebbe piaciuto provarlo.

Nomine degli Swedish Game Awards

Sono uscite le nomine degli SGA 10, un'interessante competizione per game developers che ha sede in Svezia. Vi propongo i giochi i cui video mi hanno colpito di più:


Continuity





Sightlence





Drawesome





Sanctum

giovedì 29 ottobre 2009

GirlsSanremese.com

Finalmente girlssanremese.com e' online!!! Dopo giorni e giorni, ore e ore di duro lavoro della nostra Sonia possiamo vedere qualcosa!! Che soddisfazione! Andate numerosi ad ammirare il prodotto di tali sforzi!
Io ho dato il mio importantiiiissimo sostegno morale con aria da esperto ^^

giovedì 27 agosto 2009

Fairytale Fight di Playlogic

Attenzione!! Se hai meno di 18 anni non guardare questo video

venerdì 24 luglio 2009

Religione informatica

Ma quando Gesù disse "beati gli ultimi che saranno i primi",
intendeva dire che la vita è uno stack?
Related Posts Plugin for WordPress, Blogger...