ROBOTICA

video
immagini
papers
progettati
costruiti
toolbox
vrml
simulatori

links

 

Papers
meccanica
sistemi
documents

Capitolo 17° Modificare il livello di dettaglio del mondo : il nodo LOD Capitolo 19°

Quando abbiamo degli oggetti molto complessi formati da migliaia di poligoni potremmo avere qualche rallentamento in fase di rendering. Lo stesso accade quando vogliamo ricoprire molte superfici con delle textures. E’ anche vero però che tutto questo livello di dettaglio non sempre risulta essere necessario. In particolare, vorremmo avere il massimo dettaglio quando siamo vicini ad un oggetto ; quando invece siamo in lontananza, non siamo in grado di apprezzare tutte le particolarità dell’oggetto.

Per tenere conto di questo fatto possiamo introdurre il nodo LOD (Level Of Detail). Con il nodo LOD possiamo specificare dei ranges di distanza nei quali il nostro oggetto viene renderizzato in maniera diversa.

Consideriamo il seguente esempio.

#VRML V2.0 utf8
# semplice esempio di utilizzo del nodo LOD 
LOD {
 range [ 7 ]
 level [
    Shape {
      appearance Appearance {
	material Material { emissiveColor 0 0 1 }
	  texture ImageTexture { url "marble.jpg" }
	}
	geometry Sphere { radius 2 }
    }
    Shape {
      appearance Appearance {
	material Material { emissiveColor 0 0 1}
      }
      geometry Sphere { radius 2 }
    }
  ]
}

esempio di utilizzo del nodo LOD

L’esempio qui riportato funziona in maniera corretta in Cosmo Player, mentre non sortisce alcun effetto in Live3d (dove si disegnano entrambi i nodi Shape contenuti nel nodo LOD). La ragione al momento non mi è nota (provvederò a modificare la versione in linea di questo testo non appena avrò altre informazioni).

In ogni caso, il risultato di questo breve sorgente vrml (almeno in Cosmo Player) è quello di avere una sfera con texture quando l’utente è a distanza inferiore ai 7 metri, mentre ho una sfera senza texture quando la distanza dell’utente è superiore ai 7 metri. Si possono definire più livelli di dettaglio ; basta indicare diversi livelli all’interno del field range. I vari nodi da utilizzare per i livelli sono contenuti nel campo level. Il primo nodo indicato è quello che si riferisce al primo livello, quello cioè dove l’osservatore è più vicino all’oggetto.