NOTA! Questo sito utilizza i cookie e tecnologie simili.

Se non si modificano le impostazioni del browser, l'utente accetta. Per saperne di piu'

Approvo

Capitolo 144: Le collisioni in Java3D.

 

Il sistema delle collisioni in Java3D si basa sui Behavior e sui bound.

La collisione viene rilevata da un Behavior associato alla scena che prende in input, al costruttore, almeno un parametro (l'oggetto da ‘tenere d'occhio', o un bound che lo rappresenta).

 

 

Il Behavior si attiverà, quindi, in base ad uno dei criteri di wakeup legati alle collisioni, che sono:

  • WakeupOnCollisionEntry;

  • WakeupOnCollisionMovement;

  • WakeupOnCollisionExit; .

 

Un semplice esempio di rilevamento delle collisioni mediante un Behavior creato ad hoc è visibile in ‘EsempioCollisioni'.

In questo caso, tenendo premuto il tasto destro del mouse sul cubo in alto e spostandolo (picking) fino a farlo collidere col cubo posizionato nell'origine, verranno mostrate a video delle notifiche della collisione tra i due oggetti.

 

Ci si potrebbe aspettare di vedere gli oggetti ‘fermarsi', nei loro movimenti, quando entrano in collisione con altri oggetti: ciò non avverrà.

Il sistema delle collisioni di Java3D, infatti, non si occupa di gestire le collisioni, ma solo di rilevarle.

Sta al programmatore gestire tali eventi, definendo quale azione intraprendere.

Le soluzioni, a questo punto, possono essere molteplici; ad esempio, si può far uso di bound che ‘anticipino' il movimento che si vuol far fare agli oggetti (per verificare la presenza di collisioni ed evitare, eventualmente, di muovere l'oggetto), oppure si può decidere di discretizzare lo spostamento e di eseguire dei ‘micro spostamenti' dell'oggetto fintantochè lo stesso non si trova a collidere con un altro oggetto, ecc....

 

Fortunatamente, la rete Internet abbonda di possibili soluzioni e, comunque, nulla vieta agli sviluppatori di cercarne di proprie.

 

 

 
Vai all'inizio della pagina