MIB

In questa zona vengono raccolte le discussioni che riguardano lo sviluppo di nuovi progetti per ARM e per Re-Volt

Moderatore: Michelangelo

Linkinf22
Messaggi: 1144
Iscritto il: sab 25 ago 2007, 19:07

Re: MIB

Messaggio da Linkinf22 » mer 18 lug 2012, 19:08

Penso che questa sia più o meno l' interfaccia definitiva:
SpoilerMostra
Immagine
A farla somigliare all' organizzazione della GUI di Visual Studio diventava troppo complicato, ho fatto una cosa più simile a 3Ds Max.

Ogni finestra per la visualizzazione del 3D, come potete vedere, ha una toolbar dove andranno messi i pulsanti che cambieranno in base alla modalità selezionata. Questi includono cose tipo "Wireframe", "Aggiungi AI Node", ecc.

Sarà possibile mettere le finestre per la visualizzazione del 3D a dimensione intera in modo da avere uno spazio più ampio dove si vuole lavorare anziché visualizzare le 4 finestre.
Riguardo a questo però vorrei chiedere se le 4 finestre vi sono necessarie (hanno lo stesso compito che hanno in 3Ds Max, cioè quello della visualizzazione davanti-destra-sinistra-prospettiva), perché altrimenti ne faccio una sola in prospettiva e metto 4 pulsanti che fanno roteare la telecamera nelle varie posizioni. Questo mi semplificherebbe molto alcune cose.

Lo spazio che rimane sulla destra invece è dedicato alla modifica delle proprietà degli oggetti selezionati. Per esempio nella modalità "Preview" ci saranno le proprietà tipo "Nome della pista" e gli altri parametri che riguardano la pista in generale. Nella modalità "Lights" ci saranno i parametri per modificare per esempio il colore della luce selezionata e così via.

Aspetto vostri pareri.

EDIT: Lo spazio sulla destra sto pensando di farlo a scomparsa.
Ultima modifica di Linkinf22 il mer 18 lug 2012, 19:12, modificato 2 volte in totale.
Ai creatori di piste ed auto potrebbe interessare il progetto MIB, c'è il topic nella sezione "Sviluppo" del forum.


Avatar utente
Crescviper
Messaggi: 1365
Iscritto il: dom 4 mag 2008, 22:50
Località: Campania,Maiori (SA)
Contatta:

Re: MIB

Messaggio da Crescviper » ven 20 lug 2012, 12:54

Linkin sei fantastico!!! Ci sará utilissimo questo MIB una volta ultimato :D...ti chiedo ancora scusa per non aver visto prima il post...ma non so perchè ricordavo di non avere accesso a questa sezione o.O

Ancora i miei migliori auguri per il progetto...che vedendo la GUI sembra essere davvero fantastico :D
Canale Youtube
https://www.youtube.com/channel/UCxCEkX ... bB7KYW2v0Q

-Dai un calcio alla ragione e fai posto all'impossibile! E' questa la filosofia della brigata Gurren!!!-
[Kamina]


Immagine

[progress 5]Amalfi Coast by Crescviper[/progress]

Linkinf22
Messaggi: 1144
Iscritto il: sab 25 ago 2007, 19:07

Re: MIB

Messaggio da Linkinf22 » ven 20 lug 2012, 14:00

Grazie Cresc.
Crescviper ha scritto:ma non so perchè ricordavo di non avere accesso a questa sezione o.O
Abbiamo deciso di renderla pubblica e devo dire che, nonostante inizialmente ero un po' scettico, è stata la scelta ottimale.
Avevo sospettato infatti che non avevi visto il topic per questo motivo.

Comunque per quel che riguarda la divisione in 4 finistre per la visualizzazione del 3D ho deciso di fare una finestra sola ed i pulsanti che spostano la telecamera nelle 4 posizioni, questo mi toglie molte cose di cui altrimenti mi dovrei occupare.
Ai creatori di piste ed auto potrebbe interessare il progetto MIB, c'è il topic nella sezione "Sviluppo" del forum.


Avatar utente
Crescviper
Messaggi: 1365
Iscritto il: dom 4 mag 2008, 22:50
Località: Campania,Maiori (SA)
Contatta:

Re: MIB

Messaggio da Crescviper » ven 20 lug 2012, 19:54

Mah penso che sia una scelta del tutto ragionevole...alla fine non è un grande impiccio averne una sola ;)
Canale Youtube
https://www.youtube.com/channel/UCxCEkX ... bB7KYW2v0Q

-Dai un calcio alla ragione e fai posto all'impossibile! E' questa la filosofia della brigata Gurren!!!-
[Kamina]


Immagine

[progress 5]Amalfi Coast by Crescviper[/progress]

Linkinf22
Messaggi: 1144
Iscritto il: sab 25 ago 2007, 19:07

Re: MIB

Messaggio da Linkinf22 » mar 24 lug 2012, 10:50

Sapete, mi sono appena accordo di ricordare le cose teoriche delle DirectX, ma in quanto alla loro programmazione ricordo ben poco :-(

Mi devo fare un super ripassone delle DirectX. Ieri ho cominciato a rileggere il libro, almeno per ricordare le cose di base.
Ai creatori di piste ed auto potrebbe interessare il progetto MIB, c'è il topic nella sezione "Sviluppo" del forum.


Linkinf22
Messaggi: 1144
Iscritto il: sab 25 ago 2007, 19:07

Re: MIB

Messaggio da Linkinf22 » dom 5 ago 2012, 15:39

Spero che TF mi perdoni tutti i doppi post che farò in questo topic, ma credo sia abbastanza inevitabile visto che spesso concluderò io una certa discussione e postarò ogni tanto qualche novità.
Ovviamente se sei contrario, TF, non devi far altro che dirmelo.

Direi che non ho dedicato molto tempo al progetto, visto che in questo periodo sono uscito un po' più spesso del solito, ma in questi ultimi giorni sono andato avanti moltissimo nella lettura del libro sulle DirectX e mi mancano una quarantina di pagine prima di "riaquisire la capacità di disegnare vertici con le DirectX" (anche se questa quarantina di pagine sono quasi tutta roba teorica-matematica, abbastanza barbosa ma MOLTO importante). Appena fatto, credo che comincierò a guardare come revolt memorizza i vertici nei suoi file per cominciare i test per caricarli e visualizzarli.

Il MIB per ora mostra solo la finestra delle proprietà sulla destra, mentre sulla sinistra c'è la finestra per la visualizzazione 3D che l' unica cosa che fa è buttar fuori il colore con cui la scheda video cancella il buffer (che provvisoriamente ho impostato a rosso, ma sicuramente lo cambierò). Quindi di renderizzazione non c'è ancora nulla.

Ho intenzione di fare le varie prove di caricamento e visualizzazione in progetti a parte, quindi di non integrarle subito nel MIB. In questo modo, come per la GUI, posso pasticciare a piacimento con il codice finchè avrò un' idea chiara di come organizzarlo per poi inserire i cambiamenti nel MIB. Inoltre avrò un codice interamente dedicato al rendering, anzichè codice suddiviso tra interfaccia grafica e rendering come è quello del MIB, quindi mi potrò concentrare sul rendering senza avere altre distrazioni.

Magari ogni tanto posterò uno screen per farvi vedere come procede.
Ai creatori di piste ed auto potrebbe interessare il progetto MIB, c'è il topic nella sezione "Sviluppo" del forum.


Avatar utente
Crescviper
Messaggi: 1365
Iscritto il: dom 4 mag 2008, 22:50
Località: Campania,Maiori (SA)
Contatta:

Re: MIB

Messaggio da Crescviper » mar 7 ago 2012, 13:15

Non ti preoccupare Linkin...anche se lo lasci stare per un po di tempo (per noia o per altro) l'importante è che non abbandoni questo grandioso progetto :D ... è davvero notevole l'impegno che stai mettendo (io non riuscirei a leggere 10 pagine di qualsiasi cosa che riguardi l'informatica...perchè mi addormenterei prima hahahahahha )
per questo hai tutta la mia stima fratello ;-)

Come dicono gli Inglesi...keep it up!!! 8-)
Canale Youtube
https://www.youtube.com/channel/UCxCEkX ... bB7KYW2v0Q

-Dai un calcio alla ragione e fai posto all'impossibile! E' questa la filosofia della brigata Gurren!!!-
[Kamina]


Immagine

[progress 5]Amalfi Coast by Crescviper[/progress]

Linkinf22
Messaggi: 1144
Iscritto il: sab 25 ago 2007, 19:07

Re: MIB

Messaggio da Linkinf22 » ven 10 ago 2012, 19:33

Revolt memorizza le informazioni (almeno, quelle nei file .w) in un modo ben impestato, per ora sto cercando di cavar fuori i vertici e gli indici... però man mano mi sto avvicinando.
Ai creatori di piste ed auto potrebbe interessare il progetto MIB, c'è il topic nella sezione "Sviluppo" del forum.


Linkinf22
Messaggi: 1144
Iscritto il: sab 25 ago 2007, 19:07

Re: MIB

Messaggio da Linkinf22 » sab 11 ago 2012, 12:30

Nei file .W delle piste c'è una informazione chiamata "CubeNum", non so ancora bene a cosa si riferisca ma a quanto pare dentro queste "Cube" ci sono i vertici della pista e il valore di "CubeNum" probabilmente indica quanti di queste "Cube" ci sono nel file.
Sto facendo i test con Toys in the hood 1.
A me ovviamente serve caricare queste "Cube", ma caricando "CubeNum" mi escono valori strani, il più sensato dei quali è 2453.
Aprendo il file con l' editor esadecimale, il valore è decisamente più alto.

Qualcuno riesce a dirmi, magari tramite i vari strumenti usati per creare le piste (creare ed aprire i file .w) qual è il valore di questo "CubeNum" in Toys in the hood 1?
Ai creatori di piste ed auto potrebbe interessare il progetto MIB, c'è il topic nella sezione "Sviluppo" del forum.


Linkinf22
Messaggi: 1144
Iscritto il: sab 25 ago 2007, 19:07

Re: MIB

Messaggio da Linkinf22 » mer 15 ago 2012, 11:50

No ma... qualcuno mi dice che è perfetto:
SpoilerMostra
Immagine
è da tre giorni che sto cercando di capire che cavolo sbaglio, ma sono ancora allo stesso punto |-(

Comunque i programmatori di revolt si sono complicati un casino il lavoro, ci sono cose assurdamente complicate quando si potevano fare in modo molto più semplice.
Ultima modifica di Linkinf22 il mer 15 ago 2012, 11:50, modificato 2 volte in totale.
Ai creatori di piste ed auto potrebbe interessare il progetto MIB, c'è il topic nella sezione "Sviluppo" del forum.


Avatar utente
Crescviper
Messaggi: 1365
Iscritto il: dom 4 mag 2008, 22:50
Località: Campania,Maiori (SA)
Contatta:

Re: MIB

Messaggio da Crescviper » gio 16 ago 2012, 23:11

Oh God ma cos'è? Linkin queste cube e cubenum non ho la minima idea a cosa possano servire (avrei pensato indicassero tipo il numero di facce collisionabili...ma a questo punto non avrebbero dovuto chiamarle poly e polynum?)

Linkin ti consiglio di chiedere suggerimenti anche su re-volt live...può essere che lì qualcuno lo sappia e ti possa dare una mano ;-)
Canale Youtube
https://www.youtube.com/channel/UCxCEkX ... bB7KYW2v0Q

-Dai un calcio alla ragione e fai posto all'impossibile! E' questa la filosofia della brigata Gurren!!!-
[Kamina]


Immagine

[progress 5]Amalfi Coast by Crescviper[/progress]

Linkinf22
Messaggi: 1144
Iscritto il: sab 25 ago 2007, 19:07

Re: MIB

Messaggio da Linkinf22 » ven 17 ago 2012, 12:08

Ho chiesto aiuto l' altro ieri a KDL (che ha creato nVolt, quindi ha già avuto a che fare con roba simile) su Our Revolt Pub. Purtroppo si fa vivo solo all' incirca una volta al giorno sull' ORP quindi per ora mi ha risposto una sola volta (ho appena visto che è online e che sta tra i PM, quindi forse tra poco avrò una seconda risposta - mi basterà guardare ogni tanto lo start di Windows 8 e guardare la Live Tile di "Mail" per saperlo 8-) ).

Per ora mi ha detto che lui non ha mai incontrato una roba simile e mi ha detto che forse è un problema di lettura delle informazioni.
Tramite W_Console ho verificato che le informazioni le carico giuste (purtroppo con W_Console non si può vedere i valori dei vertex e dei poly; ma la quantità di Cubes, Poly e Vertex si possono vedere e sono caricate giuste dal mio programma.
Inoltre KDL mi ha passato il sorgente di nVolt ed il codice per il caricamento è quasi identico al mio (a parte il fatto che carica molte più informazioni che io per ora sto tralasciando, tipo le coordinate delle texture e quelle robe li).

Io gli ho passato la parte del sorgente che riguarda caricamento e disegno del mio programma, lui però nVolt lo ha realizzato con VB.Net e un motore grafico per il .Net, quindi credo non sappia molto di C++ e DirectX... spero sappia comunque trovare l' errore e mi sappia dire la soluzione, perché io non so più dove mettere le mani per risolvere il problema :-(
Ai creatori di piste ed auto potrebbe interessare il progetto MIB, c'è il topic nella sezione "Sviluppo" del forum.


Linkinf22
Messaggi: 1144
Iscritto il: sab 25 ago 2007, 19:07

Re: MIB

Messaggio da Linkinf22 » sab 18 ago 2012, 11:37

Ci sono novità, una buona ed una cattiva.

Quella cattiva è che ancora non sono riuscito a risolvere del tutto il problema.
Quella buona è che ho provato a disegnare la scena senza gli indici, ma solo con i vertici. Il risultato è questo (i buchi sono appunto perché la scena non viene disegnata con gli indici):
La pista è Toys in the hood 1
SpoilerMostra
Immagine
SpoilerMostra
Immagine
SpoilerMostra
Immagine
Quindi ho constatato che il problema sta negli indici, ma ancora non sono riuscito a capire qual è l' errore che commetto :-(
Ultima modifica di Linkinf22 il sab 18 ago 2012, 11:39, modificato 2 volte in totale.
Ai creatori di piste ed auto potrebbe interessare il progetto MIB, c'è il topic nella sezione "Sviluppo" del forum.


Linkinf22
Messaggi: 1144
Iscritto il: sab 25 ago 2007, 19:07

Re: MIB

Messaggio da Linkinf22 » sab 18 ago 2012, 15:42

Signori... ancora una buona notizia e una cattiva.

La cattiva notizia è che sono un totale i****a.

La buona notizia è che sono riuscito a risolvere il problema.

Cavolo, ho perso 5 giorni per una cosa stra stupida! Semplicemente avevo fatto un copia-incolla da un progetto precedente, il quale per i valori degli indici utilizzava dei valori a 32 bit. Revolt invece utilizza valori a 16 bit per gli indici. Quando si imposta il buffer degli indici, viene chiesto anche come è formato un singolo valore di un singolo indice (tra cui quanti bit), ecco, indovinate un po'... io dal copia-incolla avevo lasciato 32 bit anziché cambiarlo in 16 bit :rabbia:

Non posto screen perché per ora mancano ancora le luci e quindi come colore di output faccio uscire sempre il bianco... il risultato è una massa tutta bianca da cui non si distingue quasi nulla (ovviamente ci sono alcune cose che fanno percepire Toys in the hood 1, ma il resto è quasi tutto massa bianca).

Ovviamente anche sull' illuminazione ricordo poco, perciò devo rileggermi il capitolo inerente, che fortunatamente è lungo all' incirca solo 23 pagine.
Con l' illuminazione si vedrà tutto in scala di grigi, ciò permetterà di cominciare a distinguere gli oggetti.

Una cosa che mi preoccupa però, per quando mi occuperò della colorazione, è il fatto che i programmatori di Revolt hanno messo i colori negli indici anziché nei vertici... ma negli shader si passano i vertici non gli indici... ma i programmatori di Revolt sono stati li apposta a pensare a come complicare le cose? |-(
Ai creatori di piste ed auto potrebbe interessare il progetto MIB, c'è il topic nella sezione "Sviluppo" del forum.


Linkinf22
Messaggi: 1144
Iscritto il: sab 25 ago 2007, 19:07

Re: MIB

Messaggio da Linkinf22 » dom 19 ago 2012, 13:58

Bene bene, oggi ho fatto una modifica che ha decisamente aumentato le prestazioni del programma.

Vi racconto un po':

Revolt organizza i file .W in Cubes, ognuna di queste contiene indici e vertici. Questo viene fatto per aumentare gli FPS: in base alla posizione della camera Revolt testa se una certa Cube viene vista, in caso positivo allora la renderizza mentre in caso contrario non la renderizza.
Da quel che ho capito (ma non so se è proprio così), Revolt memorizza ognuno di questi Cube e fa una specie di "contenitore" di tutti i vertici che devono essere renderizzati (credo anche delle varie auto e vari oggetti). A quel punto ne fa due soli buffer (uno di vertici ed uno di indici) e renderizza il tutto in una volta.

Questo metodo non è il metodo che voglio utilizzare io, in quanto per modificare la pista si ha spesso una visione globale di essa, inoltre io non ho da trattare i vertici delle varie auto.
La cosa che non ho capito però è perché le piste di Revolt abbiano anche Cubes da poche facce (spesso anche da solo una o due facce). Il metodo del risparmio di FPS è ok nel caso non hai da renderizzare una intera parte del circuito, ma evitare di renderizzare anche solo una faccia forse è più uno spreco di CPU per un guadagno di GPU inutile (ma probabilmente i programmatori di revolt hanno fatto queste considerazioni in base all' hardware di quei tempi).

Toys in the hood 1 ha infatti 2453 Cubes, quando se ne potrebbero fare tipo solo circa 7 che dividono la pista in "sezioni", che è quello che voglio fare io con il MIB, cioè far fare Cubes molto più grandi, considerando che l' hardware di oggi non ha grossi problemi e che praticamente la maggior parte delle piste custom, se non erro, ha una Cube unica che comprende l' intera pista. Ovviamente chi crea la pista con il MIB sarà libero di mettere quante Cube vuole.

Comunque, come ho ottenuto un grande aumento di prestazioni?
Prima della modifica avevo realizzato un metodo abbastanza simile a quello di Revolt: caricavo i vertici e gli indici dividendoli nelle varie Cube. Poi però creavo i buffer dei vertici e degli indici per ogni Cube, questo significa 2453*2= 4906 buffer. I vertici e gli indici vengono quindi immessi nella memoria video, ma nella memoria RAM devono comunque esserci informazioni per poterli utilizzare. Moltiplicando la quantità di memoria RAM occupata dalle informazioni dei buffer per la quantità di buffer creati (4906, nel caso di Toys in the hood 1), arrivavo a sprecare un sacco di RAM.
Con Toys in the hood 1 il mio programma arrivava ad occupare quasi 300 MB di RAM (quando senza creare i buffer ne occupa circa 55 MB).
Già questo spreco di RAM non mi stava simpatico.
Altro problema era legato al fatto che ad ogni caricamento di una Cube doveva allocare la memoria per i due buffer, fino ad arrivare ai circa 300 MB di Toys in the hood 1... questo faceva rallentare il caricamento, arrivando anche a più di 10 secondi per caricare Toys in the hood 1 nel caso del mio computer. Altra cosa che mi faceva irritare.
Ma forse il problema più grosso era il fatto che per disegnare l' intera pista c'era da renderizzare ogni Cube una ad una. Questo significa ripetere per 2453 volte l' operazione "imposta vertex buffer-imposta index buffer-disegna". Calando gli FPS fino ad ancora meno di quelli che potete vedere nelle immagini che ho postato precedentemente, in quanto in confronto alle immagini precedenti vengono renderizzate tutte le facce). Quindi avevo una media di FPS di circa 190 FPS. Considerando chi ha computer con hardware meno prestanti del mio, questo sarebbe stato problematico, soprattutto con l' aggiunta di luci, colori e texture.

Queste tre cose decisamente, oltre ad irritarmi, mi preoccupavano perché avevo paura che solo chi ha hardware con buone prestazioni si possa permettere di usare il MIB.
Perciò anziché suddividere i vertici, gli indici ed i buffer per ogni Cube, ho mantenuto la suddivisione dei vertici e degli indici (che tanto occuperebbero la stessa quantità di memoria), per poi riunirli (occupando quindi il doppio della RAM, in quanto vengono copiati, ma non sono loro ad occupare molta RAM) e creare un solo vertex buffer ed un solo index buffer (e poi cancellare i vari vertici e indici duplicati appositamente per questa operazione).
Questo ha implicato l' aggiunta del ricalcolo dei vari indici in base ai vertici "riuniti in un unico gruppo", il quale inizialmente non aveva funzionato per un piccolo errore che poi ho trovato facilmente e risolto.
Grande vantaggio è il fatto che l' operazione "imposta vertex buffer-imposta index buffer-disegna" viene eseguita una sola volta per ogni volta che si deve disegnare la pista, anziché per la quantità di Cubes che ci sono nella pista.

Ora, con questa modifica (ovviamente allo stato attuale, perché poi con l' aggiunta delle altre cose - colori, texture, luci, oggetti vari - le prestazioni caleranno):
1) La pista viene caricata e visualizzata in circa poco più di un secondo.
2) La memoria RAM occupata ora è di poco più di 55 MB
3) Con l' hardware che ha, il mio PC fa in media 2800 FPS, arrivando a volte anche a superare i 3000.

Penso che la prossima notizia (e probabilmente il prossimo screen) arriverà quando aggiungerò l' illuminazione e quindi le piste saranno visibili, anziché essere delle masse di un colore unico.
Ultima modifica di Linkinf22 il dom 19 ago 2012, 14:01, modificato 1 volta in totale.
Ai creatori di piste ed auto potrebbe interessare il progetto MIB, c'è il topic nella sezione "Sviluppo" del forum.


Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 17 ospiti