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 95: Scope.

 

Per limitare l'influenza di una fonte di luce ad oggetti raggruppati 'logicamente' nello Scene Graph - e non in base alla loro posizione fisica, come nel caso dei bound d'influenza - è possibile utilizzare lo Scope.

Con lo Scope è possibile realizzare una illuminazione 'selettiva' degli oggetti presenti nella scena.

A livello implementativo, uno Scope è un oggetto Group: gli oggetti da... influenzare, vengono aggiunti come figli di un gruppo, col metodo addChild.

 

 

Le luci mettono a disposizione metodi quali:

  • insertScope(Group scope, int index);

  • setScope(Group scope, int index).

 

 

Il primo metodo permette di inserire più gruppi Scope (uno alla volta, comunque) nella lista degli Scope di una sorgente luminosa, associando a ciascuno di essi un indice intero; il secondo metodo permette, invece, di rimpiazzare uno Scope precedentemente associato alla luce, con un dato indice all'interno della lista di Scope, con uno nuovo.

 

Occorre molta cura nel progettare lo Scene Graph !

Ad esempio, bisogna evitare di creare più BranchGroup o TransformGroup solo perchè è necessario inserire più luci con scope differenti: si tratta, infatti, di una scelta che porta a configurazioni non efficienti (e se, ad esempio, dovessi ruotare tutti gli oggetti ?).

 

Nel file di esempio PointLightConScope.java, al BranchGroup principale vengono aggiunti due oggetti Group (gli Scope), contenenti delle sfere.

E' presente una fonte luminosa PointLight con BoundingSphere ampia ma con un unico Scope associato.

L'immagine seguente mostra la scena con la luce attiva per entrambi i gruppi Scope e, nel secondo caso, solo per uno dei due.

Le 'istruzioni' per provare le diverse modalità si trovano nel file sorgente dell'esempio.

Java 3D Scope e luci Point Light esempio effetti

 

 
Vai all'inizio della pagina