Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-06-2008, 14:46   #1
WILEz
Junior Member
 
Iscritto dal: Oct 2006
Messaggi: 21
[C# XNA C++ ..]Collisioni e BoundingSphere

Aiuto..sto impazzendo.
Dovrei impostare la Y di un oggetto in base alla collisione con delle BoundingSphere..
Mi spiego:

Ho il mio terreno che, su ogni vertice ha una BoundingSphere.
Il mio personaggio (che è una navetta..) prosegue fino ad incontrare una salita e dunque, dovrebbe salire.



Ora, se faccio così:
IF (collide con la BoundingSphere[i]) {Y.personaggio = Y. BoundingSphere} funziona, cioè il personaggio sale ma il movimento risulta ovviamente a "scalini" perchè il terreno non ha un vertice ogni pixel e dunque sale di un "tot" in base alla Y della BoundingSphere incontrata. Dovrei calcolare la Y del personaggio in base alla BoundingSphere attualmente in collisione e la BoundingSphere in collisione in precedenza...




Conoscendo le posizioni XYZ di A , di B e di P, rilevando la collisione con le BoundingSphere (cerchi gialli), come posso dire che la Y di P deve essere quella, in base alla distanza di P con A e B?



Anche così:
Codice:
                        if (Posizione_nave1.Y <= bs_vertex[i].Center.Y) {
                            Posizione_nave1.Y+=Velocità;
                        }
                        if (Posizione_nave1.Y >bs_vertex[i].Center.Y)
                        {
                            Posizione_nave1.Y -= Velocità;
                        }
la cosa migliora un po' ma sempre a scalini si muove..

P.S. Si tratta di C#/XNA ma la teoria è la stessa a prescindere dal linguaggio..
WILEz è offline   Rispondi citando il messaggio o parte di esso
Old 01-06-2008, 15:39   #2
_Xel_^^
Senior Member
 
L'Avatar di _Xel_^^
 
Iscritto dal: Dec 2001
Città: Lissone (Brianza rulez!)
Messaggi: 2227
Scusa ma la bouning sphere solitamente è usata per contenere oggetti... secondo me sbagli a voler usare una sfera per ogni vertice del terreno!
A meno che non vuoi fare qualcosa di particolare che allora non ho capito

Comunque dovresti fare una b-sphere per la navetta e rilevare le collisioni tra questa e i poligoni del terreno, magari dividendolo in aree in modo che il test alla fine lo fai tra pochi poligoni escludendo a priori quelli più distanti.

Però se il tuo terreno non è una mesh complessa ma una semplice griglia (come mi pare dall'immagine) ti basta prendere il punto dove si trova la navetta, trovi subito il poligono sottostante, interpoli tra le altezze dei vertici del triangolo in cui si trova e hai subito l'altezza giusta per la navetta che così seguirà fluidamente il terreno e non a scatti

Ciau!
__________________
 New MacBook Air 13" 4GB  // Intel Core 2 Q9300 - ASUS P5Q-EM - 4096MB DDR2 by Corsair - nVidia 9800GT-g - HD 250GB Seagate - HD 500GB WD - HD 320GB WD - SSD Intel X25-M 80GB ...all inside "LC10-E Black" by SilverStone! - PS3, PSTWO e NDSLite

Ultima modifica di _Xel_^^ : 01-06-2008 alle 18:12.
_Xel_^^ è offline   Rispondi citando il messaggio o parte di esso
Old 01-06-2008, 19:10   #3
WILEz
Junior Member
 
Iscritto dal: Oct 2006
Messaggi: 21
Posso anche non usare le Bsphere ma il problema rimane.

Quote:
Però se il tuo terreno non è una mesh complessa ma una semplice griglia (come mi pare dall'immagine) ti basta prendere il punto dove si trova la navetta, trovi subito il poligono sottostante, interpoli tra le altezze dei vertici del triangolo in cui si trova e hai subito l'altezza giusta per la navetta che così seguirà fluidamente il terreno e non a scatti
Non mica capito.. La mesh è una griglia di cui io conosco la posizione dei vertici.. come faccio a "trovare" il poligono sottostante? Posso trovare il vertice sottostante ma il poligono..come? Per "interpoli" intendi dire fare una media delle altezze dei tre vertici? Se è così alla fine scatta lo stesso no? Ogni poligono un punto solo di posizione per la navetta no?
WILEz è offline   Rispondi citando il messaggio o parte di esso
Old 01-06-2008, 20:09   #4
WILEz
Junior Member
 
Iscritto dal: Oct 2006
Messaggi: 21
Ok, ho eliminato le BSphere.. Ora la collisione viene rilevata dalla distanza tra la nevetta e i singoli vertici della griglia.. Il problema resta. Cosa vuol dire interpolare? Non credo che sia la stessa interpolazione che fa il 3DS o Flash che crea il movimento tra due fotogrammi.. C'è attinenza?
__________________

WILEz CREATIONz

Ultima modifica di WILEz : 01-06-2008 alle 21:00.
WILEz è offline   Rispondi citando il messaggio o parte di esso
Old 01-06-2008, 21:05   #5
_Xel_^^
Senior Member
 
L'Avatar di _Xel_^^
 
Iscritto dal: Dec 2001
Città: Lissone (Brianza rulez!)
Messaggi: 2227
Allora... tu sai la dimensione della tua griglia, ad esempio 100x100 vertici memorizzata in una variabile, ad esempio una matrice che contiene le altezze di tutti questi vertici.
Nello spazio questi vertici li posizioni alla distanza che vuoi, ad esempio uno ogni 10 unità e hai quindi una griglia dove ogni 10 unità c'è un vertice. Hai così 99 poligoni per lato.
Se ad esempio metti la navetta alla posizione (235,512) sapendo che ogni vertice dista 10 unità dall'altro hai già le posizioni dei vertici del poligono in cui si trova.
I vertici del poligono avranno quindi le coordinate (230,510) (240,510) (240,520) (230,520). Come vedi la navetta sta in mezzo a queste coordinate!
Se poi dividi per 10 trovi gli indici della matrice dove trovi anche le altezze!

Ora come avrai visto un "poligono quadrato" è formato da due triangoli e puoi trovare facilmente in quale dei due sei capitato.
Fatto questo ti rimangono solo TRE vertici con cui fare i conti di cui conosci tutte le coordinate. Questi sono per forza di cose sullo stesso piano e quello che si vuole ottenere è che la navetta scivoli su questo piano, che è ben differente dal fare la media delle altezze!
In pratica è tutta matematica/geometria analitica e qua lo trovi spiegato molto meglio di come farei io http://www.toymaker.info/Games/html/terrain_follow.html


Ciau!
PS. spero si sia capito qualcosa perchè faccio schifo a spiegare
PPS. come vedi vettori, matrici, piani, interpolazioni, normali, prodotti vettoriali saranno all'ordine del giorno nella grafica 3D cerca di farti qualche base leggendo qualcosa in giro
__________________
 New MacBook Air 13" 4GB  // Intel Core 2 Q9300 - ASUS P5Q-EM - 4096MB DDR2 by Corsair - nVidia 9800GT-g - HD 250GB Seagate - HD 500GB WD - HD 320GB WD - SSD Intel X25-M 80GB ...all inside "LC10-E Black" by SilverStone! - PS3, PSTWO e NDSLite

Ultima modifica di _Xel_^^ : 01-06-2008 alle 21:10.
_Xel_^^ è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2008, 17:21   #6
WILEz
Junior Member
 
Iscritto dal: Oct 2006
Messaggi: 21
Grazie per la risposta, vedrò di smanettare su quanto mi hai detto.
A dire il vero la mia griglia non ha i vertici posizionati in modo così sistematico, si tratta di un file .x che creo con 3dsMax ma alla fine si tratta comunque di una griglia che posso anche creare con poligoni quadrati di dimensioni constanti.
Poi, grazie ad uno script che mi sono scritto appositamente, riesco a salvare le coordinate di tutti i vertici su un file di testo seguendo una formattazione che ho impostato io ( 512_324_432; 432_432_411; ....) così, al caricamento del livello mi carico le posizioni dei vertici in un array, le splitto e ottengo le mie coordinate, xyz di ogni vertice. Le coordinate della navetta le conosco sempre ma dicendogli che "se le coordinate XZ della navetta sono uguali alle XY del vertice, allora la coordinata Y della navetta deve essere uguale alla coordinata Y del vertice", funziona ma scatta.

Ora, da quanto ho capito dovrò calcolare la posizione della navetta non in base hai vertici ma in base al "quadrato" su cui si trova e poi interpolare i vertici di quel "quadratao" per calcolare l'altezza del "pixel" su cui si trova la nave.. credo.
__________________

WILEz CREATIONz
WILEz è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2008, 21:40   #7
_Xel_^^
Senior Member
 
L'Avatar di _Xel_^^
 
Iscritto dal: Dec 2001
Città: Lissone (Brianza rulez!)
Messaggi: 2227
Esatto
Però se la tua mesh del terreno non la generi in modo regolare hai in più il problema di trovare il poligono su cui ti trovi... e qui torna in gioco la b-sphere!
Tieni poi conto che se il terreno è grande non ha senso cercare la collisione tra tutti i poligoni... ci sono vari metodi che consistono nel suddividere il terreno in gruppi di più poligoni per potere fare confronti del tipo: "sono in questa zona del terreno, dentro questa zona sono in quest'altra zona più piccola, ok mi rimangono pochi poligoni vediamo su quale collido".
Questo è anche utile per effettuare frustum-culling per le aree del terreno che non sono visibili.

Se invece vuoi partire da qualcosa di semplice posso consigliarti di generare il terreno da un'immagine a scala di grigi (heightmap)!
esempio: http://www.hypeskeptic.com/mattias/L...es/Islands.jpg
A ogni colore corrisponde un'altezza (che poi potrai moltiplicare per un fattore che vuoi tu per rendere più o meno alto il dislivello), nero = 0 bianco = 255, la disegni come vuoi, la salvi in raw con un programma di fotoritocco e otterrai un file dove ogni byte corrisponde a un vertice quindi con un'immagine di 101x101 pixel potrai costruire un terreno di 100x100 poligoni!
Così trovi anche tanti esempi da caricare in giro e puoi farci cose molto carine

Ciau!
__________________
 New MacBook Air 13" 4GB  // Intel Core 2 Q9300 - ASUS P5Q-EM - 4096MB DDR2 by Corsair - nVidia 9800GT-g - HD 250GB Seagate - HD 500GB WD - HD 320GB WD - SSD Intel X25-M 80GB ...all inside "LC10-E Black" by SilverStone! - PS3, PSTWO e NDSLite
_Xel_^^ è offline   Rispondi citando il messaggio o parte di esso
Old 05-06-2008, 09:18   #8
WILEz
Junior Member
 
Iscritto dal: Oct 2006
Messaggi: 21
Grazie ancora delle risposte, farò altre prove..
Le HeigthMap le ho provate, all'inizio l'idea era quella di mettere sotto al livello una HMap invisibile che rilevasse le collisioni e sopra il livello vero che veniva renderizzato così da sfruttare i dettagli della mesh creata con 3DS e rilevare le collisioni in modo più semplice, ma le differenze tra le HMap e la mesh erano troppe e non mi permettevano di fare cose tipo "sopraelevate"(una strada che passa sopra l'altra con le HMap non si può ovviamente fare)..

Continuo a provare e vediamo che riesco a tirare fuori
Ciao e grazie!
__________________

WILEz CREATIONz
WILEz è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
Il nucleo della cometa interstellare 3I/...
La Russia potrebbe sviluppare un'arma pe...
Manda la RAM Corsair in assistenza, rice...
ASUS ROG G1000 con 'AniMe Holo': saranno...
Un test di longevità ha messo alla prova...
Incat inizia i test dell'incredibile tra...
LG Sound Suite: al CES il sistema audio ...
Avengers Doomsday, il primo trailer &egr...
La crisi delle memorie non farà sconti a...
Il trailer più atteso dell'anno &...
I gamer vogliono i monitor OLED: sopratt...
Samsung alza l’asticella dei televisori ...
Energie rinnovabili 2025: quasi 42% del ...
Le auto elettriche volano in tutta Europ...
Nuovo look per la finestra Esegui su Win...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:30.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v