Wednesday, May 30, 2012

Ladies and Gentlemen....

...the radar is finished!
And is time to summarize the situation about the work in progress.. on following video you'll see the radar behaviour and the latest update i've done to the engine.

Ho finito di implementare il radar e... funziona!
Graficamente non e' un granche', ma come ben sapete ho deciso di lasciare la fase di abbellimento grafico solo al termine (se mai ci sara') dello sviluppo software.. e' inutile perderci ore a fare una bella mesh o per trovare una texture come si deve se comunque la probabilita' di finire il lavoro e' prossima allo zero. Tanto vale concentrarsi sull'engine vero e proprio, e poi, se il destino vorra', pensero' a fare fiorellini e decori.
Ad ogni modo, come anticipato la volta precedente, la realizzazione del radar e' stata fatta utilizzando un secondo "universo", dove ho riscalato di un migliaio di volte la posizione degli oggetti presenti nello spazio, dopo averne convertito la posizione da quella assoluta a quella "rispetto all'astronave".
In sostanza ogni oggetti (pianeti, stazioni, navi ecc..) e' rappresentata da un pallino giallo: il centro della bussola circolare rappresenta la vostra posizione, pertanto in base a dove vedete il pallino giallo siete in grado di capire se l'oggetto vi sta davanti, dietro, sinistra o destra.
Ma siamo in tre dimensioni, ed esiste quindi anche un "alto" e "basso". Percio' al pallino e' attaccata una gambetta, se il pallino e' sopra la gambetta vuol dire che l'oggetto vi sta sopra, viceversa se la gambetta e' sotto, l'oggetto ovviamente si trova in basso. Inoltre piu' lunga e' la gambetta e piu' e' la distanza dell'oggetto dal piano che contiene la vostra astronave.

Eccovi una breve dimostrazione che vi consiglio di vedere a tutto schermo in quanto il radar e' un po' piccolino. Ne ho approfittato anche per fare il punto della situazione, e nel filmato ho cercato di mettere un po' tutte le novita' alle quali ho lavorato ultimamente.


 

Thursday, May 17, 2012

Compass

The little mesh i've used inside the radar as "compass" now works (well: it seems :) )

L'ultima volta vi ho fatto vedere come poter usare una seconda viewport per aggiungere il radar alla strumentazione di bordo.
Con oggi vi faccio vedere il radar che finalmente inizia a funzionare.
Per ora si limita ad indicare la direzione come fosse una bussola (il nord e' indicato dalla punta), il prossimo passo consisterà nel aggiungere i marker per gli altri oggetti nei pressi della nostra posizione.

Consiglio di vedere il video non dico a tutto schermo ma comunque con una buona definizione in quanto la mesh della bussola e' piuttosto piccolina e su youtube tende a notarsi poco.


Wednesday, May 9, 2012

Working on radar

It's time to working on radar.. new approach now: multiple viewport to render it.

Post un po' lungo e tecnico, ma penso sia interessante specie per chi come me si sta avventurando nel mondo del rendering 3D in tempo reale.

Terminata la mappa del settore (per ora va bene cosi'), ho deciso di reintrodurre il vecchio radar che mesi e mesi fa avevo iniziato a sviluppare.
E mi son reso conto che, complice probabilmente l'inesperienza, stavo seguendo una strada del tutto sbagliata e certamente inutilmente complicata.
Ricapitoliamo: correva l'anno 2008 quando tentavo di mettere in piedi un prototipo di radar. Allora la strada che avevo deciso di seguire era: prendo uno sprite ovoidale per dare l'illusione di una circonferenza in prospettiva, che mi rappresenta il piano ove poggia la mia astronave, ed, esattamente come avveniva con Elite/Frontier, tiro delle linee perpendicolari alla circonferenza per rappresentare la posizione degli altri oggetti rispetto alla mia astronave che sta al centro del radar.
Bene. L'idea e' anche giusta (L'ha avuta Braben, mica io ;) ), la realizzazione assolutamente no, per i seguenti motivi:

  1. un ellisse NON E' uguale ad un cerchio messo in prospettiva.
  2. dover calcolarsi per ogni oggetto la posizione relativa all'astronave e la corrispondente proiezione sul cerchio in coordinate bidimensionali e', per omaggiare quei pochissimi (se ce ne sono ancora) stranieri che leggono, "a pain in the ass".
La soluzione alla fine e' sorprendentemente più semplice di quanto pensassi: ho un motore 3D che si occupa di tutti questi impicci? Beh, perché non usarlo anche per il radar?
Quindi:

  • Con Blender mi disegno una specie di "rosa dei venti" che mi rappresenta il mio cerchio visto in precedenza. E' semplice: basta un rettangolino ed un modifier "array" col quale replico e ruoto ciascun segnaposto. Ne ho fatti 24, ma posso metterne quanti ne voglio:


  • Esporto la mesh e la importo su  Ogre3D 
  • Su Ogre3D mi creo un secondo universo, dove anziché mettere astronavi, pianeti e quant'altro, metto solo la "rosa dei venti", ed una serie di segnaposti che occupano la stessa posizione degli oggetti rispetto alla mia astronave, ovviamente scalati. Per avere la posizione relativa esistono già dei metodi "worldToLocal" e "localToWorld" che mi permettono agevolmente di ottenere la posizione 3D di un qualsiasi oggetto quando l'origine e' impostata solidale alla astronave anziché al sole.
  • Da queste posizioni tiro una riga perpendicolare al piano che contiene la rosa dei venti. E' un universo in 3d, l'operazione e' banale, non devo effettuare nessuna proiezione, basta disegnare una linea da (x,y,z) a (x,0,z)
  • Posiziono una telecamera poco dietro la rosa dei venti, un po' in alto, e la faccio puntare ovviamente verso la mesh
  • Dico a Ogre di fare il rendering di tutto cio' in un secondo viewport che con un po' di accortezza vado a posizionare proprio dentro lo spazio dedicato al radar.


Il risultato? Eccolo. Per ora c'e' solo la mesh, ma basta per darvi l'idea di quello che sara' l'effetto finale.


Alla prossima!