Oppure

Loading
07/11/10 10:31
Linkinf22
Salve!
Da pochi mesi mi sono messo a studiare le managed directx.
Prima delle managed directx avevo provato XNA, ho avuto circa 5 mesi di esperienza con XNA, dopodichè ho deciso di passare alle managed Directx: che è più simile alle directx (in futuro spero di passare totalmente a quelle, ma ancora di c++ non ho molte conoscenze) ed in confronto ad XNA mi trovo anche meglio.

Sto cominciando ora a fare un progettino completo con il 3D, ma siccome finora non ho ancora avuto a che fare con le collisioni, mi trovo perso.
In XNA c' è la comodità delle BoundingSphere, mentre nelle managed Directx no.
Ho trovato la funzione Geometry.ComputeBoundingSphere, che restituisce un valore float ed ha come parametro out il "centro della sfera".

Non ho la minima idea di come sfruttare questi due valori che restituisce.
Qualcuno ha già avuto qualche esperienza simile e ha qualche suggerimento da darmi?

Grazie in anticipo.
Ultima modifica effettuata da Linkinf22 07/11/10 10:33
aaa
07/11/10 12:48
Il Totem
Beh, testare la collisione tra due sfere è molto semplice. Se la distanza dei centri è minore della somma dei raggi, allora si intersecano.
Testarla invece tra una sfera e un bounding box è più rognoso. Se assumiamo che il bounding box sia axis-aligned (e se non lo è lo puoi rendere tale ruotando la sfera attorno ad esso in modo opportuno), puoi fare così: ricavi l'equazione del segmento che unisce il centro del bounding box al centro della sfera, quindi lo intersechi con la sfera e ottieni un altro punto P che appartiene alla superficie della sfera (ed è il punto in assoluto più vicino al parallelepipedo). Se P è compreso nel volume del solido, allora sfera e parallelepipedo si intersecano.

"La dimostrazione è lasciata come semplice esercizio al lettore."
aaa
08/11/10 8:49
Thejuster
ti conviene usare un motore fisico,
perché prima o poi incontrerai altri problemi che vanno oltre alla semplice collisione di 2 oggetti.

fare delle prove e testare il boundigsphere o il boundigbox e sempre utile
ma avere a disposizione un motore fisico come bepu o nvidia psyX e molto meglio
mire.forumfree.it/ - Mire Engine
C# UI Designer
08/11/10 16:09
Linkinf22
Per il physX credo di non avere abbastanza conoscenza del c++
Cercherò di arrangiarmi fin dove posso, quando avrò abbastanza conoscenze sul c++ mi piacerebbe farci un pensierino al physx.

Penso che il suggerimento di Il Totem mi possa essere utile, appena avrò tempo ci proverò.

Già che ci sono, conoscete un modo per nascondere il cursore quando si trova sopra la finestra?

Ho provato con l' evento MouseEnter e metterci Cursor.Hide(); ma non funziona, il cursore resta visibile.
aaa