Rendering dell'oggetto 3d su una superficie 2d (sistema incorporato)


9

sto lavorando su un sistema embedded di un tipo, e in un po 'di tempo libero vorrei testare le sue capacità di disegno.

Il sistema in questione è il microcontrollore ARM Cortex M3 collegato alla scheda EasyMX Stellaris. E ho un piccolo schermo TFT 320x240 :)

Ora, ho un po 'di tempo libero ogni giorno e voglio creare un cubo rotante. Micro C PRO per ARM non ha funzionalità di disegno 3D, il che significa che deve essere eseguito nel software.

Dal libro Introduzione alla programmazione di giochi 3D con DirectX 10 conosco l'algebra matriciale per le trasformazioni, ma è bello quando hai DirectX per sistemare la fotocamera.

Immagino che potrei far ruotare un oggetto 2d, ma come potrei andare con uno 3D?

Eventuali idee ed esempi sono i benvenuti. Anche se preferirei consigli. Mi piacerebbe capirlo


@Marin Che cosa hai fatto finora? Sto cercando di ottenere lo stesso. Contattami gentilmente skype: andreahmed
Ahmed Saleh,

Risposte:


7

Ti rendi conto che una telecamera directX è solo un paio di trasformazioni di matrici? Hai una trasformazione della matrice ModelView, Projection, quindi Viewport in ciascun vertice in quell'ordine per cambiare le coordinate 3d in coordinate 2d.

Maggiori dettagli sulla trasformazione lungo la pipeline standard (credo che DirectX e OpenGL funzionino entrambi allo stesso modo).

Quindi rasterizzi i triangoli in base alle posizioni 2d (risultanti dalle tue trasformazioni) dell'ormai 2d array di vertici che hai. Questo può complicarsi rapidamente, ma usando il test PIT e colorare completamente qualsiasi pixel che si scontra dovrebbe essere abbastanza semplice ed efficace nel tuo caso.

L'altro modo per farlo e il modo più semplice è creare un ray tracciante. Basta dis-proiettare il raggio usando la matrice di trasformazione che si desidera applicare al proprio oggetto.

Non gioco da un po 'di roba di basso livello da un po' di tempo, quindi potrei non ricordare, ma entrambe le strade non dovrebbero essere troppo difficili. Comprendi come funziona la pipeline hardware e implementala nel software o scrivi un ray tracer.

Btw questo è dove ho imparato quello che so sulla pipeline di grafica.


Qualsiasi riferimento programmabile della pipeline per OpenGL sarebbe utile anche perché tutte le trasformazioni sono ora codificate manualmente.
edA-qa mort-ora-y

@ Tuono classico. Informazioni sulla fotocamera: sì, me ne rendo conto. Ma non so come trasferire tutto ciò a questo sistema. Pensavo che ci fosse forse una sorta di equazione per farlo. Evitando così i calcoli della matrice. Forse non ho scritto domande molto bene. Informazioni sulla pipeline: sono uguali. Grazie!
Martin Berger,

3

Nei giorni in cui l'hardware 3D non era disponibile, dovevamo costruire i nostri motori 3D e rasterizzatori poligonali. 3DICA è un ottimo tutorial che spiega tutte le basi di un motore 3D software. Per me le immagini non verranno visualizzate in Firefox, ma in Internet Explorer funzionano bene.

I capitoli 2.1 e 3.1 dovrebbero essere sufficienti per soddisfare le tue esigenze, ma leggere l'intero tutorial dovrebbe insegnarti molto.


Wow. Bella roba. Penso che l'unica cosa che non conosco da quella pagina sia parte delle spline. Non ho tempo di approfondire questo aspetto. Per adesso. Grazie per quel messaggio.
Martin Berger,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.