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 93: L'attenuazione delle luci.

 

Può sembrare strano, ma è così: la classe Light e le sue sottoclassi, in Java3D, non mettono a disposizione un metodo per regolare la 'potenza' luminosa delle... luci (per non parlare delle 'luci negative', presenti in alcuni ambienti di modellazione e resa 3D, che non esistono affatto in J3D, almeno in maniera nativa).

 

E' possibile, ovviamente, 'sporcare' una luce agendo sulle componenti RGB, 'scalando' il valore delle stesse (ad esempio, il bianco diventerà grigio, e così via), ma questa non è una operazione sulla luminosità in senso stretto !

 

 

Due classi, figlie di Light, mettono a disposizione un metodo che può essere utilizzato per agire sulla potenza luminosa della sorgente: la classe PointLight e la classe SpotLight (che eredita il metodo da PointLight); tale metodo si trova qui, e non in Light, perchè le altre due figlie di Light, DirectionalLight e AmbientLight, per definizione non sono soggette ad attenuazione.

 

I metodi che ci riguardano sono quindi:

  • getAttenuation(Point3f attenuation);

  • setAttenuation(Point3f attenuation);

  • setAttenuation(float constant, float linear, float quadratic); .

 

 

Questi metodi permettono di recuperare (get) impostare (set) tre valori, che Java utilizzerà per definire un fattore di attenuazione.

 

Tali valori sono:

 

  • attenuazione costante;

  • attenuazione lineare;

  • attenuazione quadratica.

 

La potenza luminosa verrà quindi regolata in base alla distanza dalla sorgente e al valore dell'attenuazione.

Di default, il valore di attenuazione costante è 1, mentre gli altri due valori sono 0.

Quello dell'attenuazione è quindi un buon metodo per agire, almeno un pò, sulle luci, per regolare la loro potenza.

 

Va detto infine che, per agire in tempo reale sulla componente d'attenuazione, è necessario impostare, per le luci da modificare, le seguenti capability:

  • ALLOW ATTENUATION WRITE ;

  • ALLOW ATTENUATION READ .

 

 
Vai all'inizio della pagina