English (UK)

Introduzione a Java3D PART 2

Tratto da programmazione.it, scritto da Dario Guadagno

La scena, di default, indipendentemente dalle dimensioni del frame che la contiene, ha larghezza 2, il punto più a sinistra è posto alla coordinata -1 e l’estremo a destra è alla coordinata +1; al centro del frame è posta l’origine e l’asse della profondità è orientato secondo il verso “uscente” dallo schermo. L'asse dell'altezza ha dimensione calcolata in rapporto alla larghezza: ad esempio, se un frame ha altezza doppia rispetto alla larghezza, il punto più alto del frame avrà coordinata 2, e il più basso -2.

È possibile definire delle reazioni ai movimenti del mouse nella scena (specializzazioni della classe MouseBehavior), o alle specifiche interazioni su un oggetto 3D (specializzazioni della classe PickMouseBehavior), ma il meccanismo non è semplicissimo ed è certamente più macchinoso di quanto non accada con la normale gestione ad eventi. D'altra parte, alcune convenzioni adottate da Java 3D sono facilmente utilizzabili e permettono di gestire i movimenti "continui" degli oggetti tridimensionali, come la traslazione o la rotazione:

  • pressione del pulsante sinistro del mouse e trascinamento, per la rotazione di un oggetto, gestita dalla classe PickRotateBehavior.
  • Pressione del pulsante destro del mouse e trascinamento, per lo spostamento di un oggetto lungo l’asse orizzontale o verticale, gestita dalla classe PickTranslateBehavior.
  • Pressione del pulsante sinistro del mouse e, contemporaneamente, del tasto ALT della tastiera (tale combinazione equivale alla pressione del pulsante centrale nei mouse three button) e trascinamento, per avvicinare o allontanare un oggetto (spostamento lungo l’asse della profondità), gestita dalla classe PickZoomBehavior).

Le scelte relative ai componenti tridimensionali di una scena sono dovute anche al fatto che, chiaramente, i cambiamenti a runtime di un ambiente tridimensionali sono ben più “pesanti” di quelli all’interno di applicazioni 2D. Limitare e standardizzare i movimenti e rendere più "statici" gli oggetti alleggerisce il lavoro a runtime del motore 3D.


© 2017 Bruno Tessaro. My life in the web. All right reserved.