Orario: 09-07-2010, 3:34 Benvenuto ospite! (Log inRegistrati)


Rispondi 
Rilevare le dimensioni di una texture2D generata dal draw di un modello su schermo...
Autore Messaggio
WILEz
Senior Member
****

Messaggi: 253
Registrato: Nov 2008
Offline Offline
Messaggio: #1
Rilevare le dimensioni di una texture2D generata dal draw di un modello su schermo...
E' possibile rilevare la grandezza 2D che occupa un modello renderizzato su schermo? Cioè, il modello ha delle dimensioni su schermo, in coordinate 2D, in pratica è un'immagine che avrà delle dimensioni width e height. Come posso rilevare le sue effettive dimensioni in pixel? Devo per forza adeguarmi con un rendertoTexture?

---> My XNA TUTORIAL<--- --->My GRAPHIC GALLERY <---
(Questo messaggio è stato modificato l'ultima volta il: 03-24-2010 15:31 da WILEz.)
03-19-2010 7:54
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Eclipse
Tonari no Totoro
*******

Messaggi: 3,963
Registrato: Sep 2004
Offline Offline
Messaggio: #2
RE: Rilevare le dimensioni di una texture2D generata dal draw di un modello su schermo...
i modelli 3d non sono textures, vengono rasterizzati direttamente dalla scheda grafica sul backbuffer, riguardo la tua domanda dipende cosa ti serve, se ti serve qualcosa di perfetto al pixel allora devi usare un render to texture, se invece di serve una sorta di bounding box 2d allora basta che trasformi le coordinate del modello da 3d a 2d.

XNA ha una funzione che fa la conversione in automatico per te, Viewport.Project

Vector3 vec = graphicsService.GraphicsDevice.Viewport.Project(model.Position, Projection ,View, model.world);

da qui vec.x e y saranno le tue coordinate, espresse tra 0 e 1, per avere le coordinate a schermo ti basta moltiplicarle per la risoluzione che stai usando.

Giuseppe Navarria
http://moonloop.vg
(Questo messaggio è stato modificato l'ultima volta il: 03-19-2010 16:29 da Eclipse.)
03-19-2010 16:27
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
WILEz
Senior Member
****

Messaggi: 253
Registrato: Nov 2008
Offline Offline
Messaggio: #3
RE: Rilevare le dimensioni di una texture2D generata dal draw di un modello su schermo...
(03-19-2010 16:27)Eclipse ha scritto:  i modelli 3d non sono textures, vengono rasterizzati direttamente dalla scheda grafica sul backbuffer, riguardo la tua domanda dipende cosa ti serve, se ti serve qualcosa di perfetto al pixel allora devi usare un render to texture, se invece di serve una sorta di bounding box 2d allora basta che trasformi le coordinate del modello da 3d a 2d.

XNA ha una funzione che fa la conversione in automatico per te, Viewport.Project

Vector3 vec = graphicsService.GraphicsDevice.Viewport.Project(model.Position, Projection ,View, model.world);

da qui vec.x e y saranno le tue coordinate, espresse tra 0 e 1, per avere le coordinate a schermo ti basta moltiplicarle per la risoluzione che stai usando.

Mi serve per creare gli angoli (sprites a forma di L) intorno ad un oggetto nello spazio come accade tipicamente su un simulatore spaziale...

[Immagine: try2.jpg]

Come da foto, per le coordinate dell'oggetto su schermo non ci sono problemi, però riesco a trovare solo il centro, cioè il punto d'origine Vector3 del modello sullo schermo. Ora io vorrei trovare le dimensioni che occupa su schermo che si ridimensiona a seconda della distanza, cioè, vorrei stampare su schermo quattro sprite agli angoli del modello...
Potrei fare dei magheggi con la scala o con i BBox ma speravo ci fosse un modo più preciso...

---> My XNA TUTORIAL<--- --->My GRAPHIC GALLERY <---
(Questo messaggio è stato modificato l'ultima volta il: 03-20-2010 16:48 da WILEz.)
03-20-2010 16:39
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Eclipse
Tonari no Totoro
*******

Messaggi: 3,963
Registrato: Sep 2004
Offline Offline
Messaggio: #4
RE: Rilevare le dimensioni di una texture2D generata dal draw di un modello su schermo...
il modo più preciso ci sta ma è lento, ti conviene semplicemente scalare gli angoli 2d in base alla distanza, è preciso anche quello se trovi il rapporto giusto

Giuseppe Navarria
http://moonloop.vg
03-20-2010 17:18
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
WILEz
Senior Member
****

Messaggi: 253
Registrato: Nov 2008
Offline Offline
Messaggio: #5
RE: Rilevare le dimensioni di una texture2D generata dal draw di un modello su schermo...
Vabbè, mi inventerò qualche cosa, credo che userò il raggio della Bsphere che contiene il modello...

---> My XNA TUTORIAL<--- --->My GRAPHIC GALLERY <---
03-20-2010 20:15
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Eclipse
Tonari no Totoro
*******

Messaggi: 3,963
Registrato: Sep 2004
Offline Offline
Messaggio: #6
RE: Rilevare le dimensioni di una texture2D generata dal draw di un modello su schermo...
puoi trasformare in 3d i seguenti punti
x-raggio, y+raggio
x+raggio, y+raggio
x-raggio, y-raggio
x+raggio, y-raggio

dove x,y è il centro del modello, in questo modo ottieni 4 vertici di un ipotetico quadrato che contiene il modello.

Occhio che questo quadrato iscrive il cerchio che a sua volta iscrive il modello, se vuoi qualcosa di più preciso fai così:

offset=raggio*sin(PI/4);

e usa offset invece di raggio nella roba di prima, in questo modo ottieni il quadrato iscritto nel cerchio che è una approssimazione migliore

Giuseppe Navarria
http://moonloop.vg
(Questo messaggio è stato modificato l'ultima volta il: 03-20-2010 22:44 da Eclipse.)
03-20-2010 22:41
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
WILEz
Senior Member
****

Messaggi: 253
Registrato: Nov 2008
Offline Offline
Messaggio: #7
RE: Rilevare le dimensioni di una texture2D generata dal draw di un modello su schermo...
Ho risolto con la scala, devo perfezionarlo, anche se è tutt'altro che preciso l'effetto mi piace di più Smile

Video ancora in processo...

---> My XNA TUTORIAL<--- --->My GRAPHIC GALLERY <---
(Questo messaggio è stato modificato l'ultima volta il: 03-22-2010 21:30 da WILEz.)
03-22-2010 20:41
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
MaTX
C++ noob
*****

Messaggi: 923
Registrato: Nov 2009
Offline Offline
Messaggio: #8
RE: Rilevare le dimensioni di una texture2D generata dal draw di un modello su schermo...
Non si vede più ._.

Mattia "MaTX" Traverso
Due poveri developer
03-22-2010 20:50
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
WILEz
Senior Member
****

Messaggi: 253
Registrato: Nov 2008
Offline Offline
Messaggio: #9
RE: Rilevare le dimensioni di una texture2D generata dal draw di un modello su schermo...
(03-22-2010 20:50)MaTX ha scritto:  Non si vede più ._.


Video inutile perché l'effetto su youtube si vede praticamente niente:


---> My XNA TUTORIAL<--- --->My GRAPHIC GALLERY <---
(Questo messaggio è stato modificato l'ultima volta il: 03-22-2010 22:19 da WILEz.)
03-22-2010 21:04
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Xaldyz
Esoterico
*****

Messaggi: 956
Registrato: Apr 2010
Offline Offline
Messaggio: #10
RE: Rilevare le dimensioni di una texture2D generata dal draw di un modello su schermo...
io dico che è figo e che stai facendo proprio un bel lavoro ZiziZizi
04-04-2010 23:24
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Rispondi 


Vai al forum: