Monday, January 7, 2008

Spazio




Oggi ho verificato che:





  1. La gestione del mouse è abbastanza semplice, nell'ottenere le coordinate x,y del puntatore, quello che invece è più problematico è la selezione di una stella. L'idea mia era di convertire le coordinate della stella da 3D a 2D, e confrontarle con quelle del mouse: se sono sufficientemente vicine, ed il tasto del mouse è premuto, allora la stella è stata selezionata. Il problema è che se una stella è decisamente vicina alla telecamera, apparirà molto grande, e in questo caso cosa vuol dire "sufficientemente vicina"? In teoria potrebbe essere grande quanto tutto lo schermo, e per assurdo clickando su un qualsiasi punto dovrei poterla selezionare. Credo si debba passare per directx e considerare lo sprite per quel che e': una coppia di triangoli, usando perciò la corrispondente tecnica per la selezione, che devo ancora studiarmi bene. Per il momento quindi lascio stare.
  2. La gestione di un'interfaccia utente la posso fare usando gli sprites. Insomma occorrono tutta una serie di bottoni per poter interagire con la mappa. Col mouse ruoto e seleziono, e al limite eseguo lo zoom, ma comunque occorreranno pulsanti per cercare un sistema, centrare la mappa, abilitare/disabilitare la stampa dei nomi dei sistemi ecc.. Ho fatto un paio di test ed i risultati sono incoraggianti: son riuscito a mixare 2D e 3D, definendo posizione degli sprites e profondita' dei medesimi (gli sprites sono davanti al 3D o dietro?).
Ho perciò deciso di passare finalmente alla "real thing", ovvero alla rappresentazione dello spazio. Che è un pò il cuore di tutto il gioco. Qui interviene finalmente il 3D solido, con tutte le sue implicazioni: textures, luci, shaders..
Per ora ho iniziato col rappresentare un pianetino, molto banale e senza dettagli, giusto per testare gli shaders che simulano la luce diffusa (nello spazio non c'è luce ambientale), e il risultato è quello che vedete illustrato.
Non è nulla di che, ma è finalmente la prima cosa "solida" che faccio apparire, meritava un post :)

1 comment:

Anonymous said...

Per selezionare le stelle ti consiglio di guardare qualche esempio di ray casting. In pratica ad ogni click viene proiettato un raggio immaginario verso un certo punto, e sei così in grado di determinare le coordinate dell'oggetto che interrompe il raggio