<!DOCTYPE html>
<html lang="it">
	<head>
		<meta charset="utf-8" />
		<base href="../../../" />
		<script src="page.js"></script>
		<link type="text/css" rel="stylesheet" href="page.css" />
	</head>
	<body>
		<h1>[name]</h1>

		<p class="desc">
      Questa è la classe base di molti oggetti in three.js e fornisce un insieme di proprietà e metodi 
      per manipolare gli oggetti 3D nello spazio.<br /><br />

      Si noti che questa classe può essere utilizzata per raggruppare gli oggetti tramite il metodo
      [page:.add]( object ) il quale aggiunge l'oggetto come figlio, tuttavia è meglio usare [page:Group] per questo.
		</p>


		<h2>Costruttore</h2>


		<h3>[name]()</h3>
		<p>
      Il cotruttore non prende argomenti.
		</p>


		<h2>Proprietà</h2>

		<h3>[property:AnimationClip animations]</h3>
		<p>Array con clip di animazione dell'oggetto.</p>

		<h3>[property:Boolean castShadow]</h3>
		<p>Se l'oggetto viene renderizzato nella mappa delle ombre. Il valore predefinito è `false`.</p>

		<h3>[property:Array children]</h3>
		<p>Array con i children dell'oggetto. Vedi [page:Group] per informazioni su come raggrupare manualmente gli oggetti.</p>

		<h3>[property:Material customDepthMaterial]</h3>
		<p>
      Materiale depth personalizzato da utilizzare durante il rendering della mappa di depth. Può essere utilizzato solo nel contesto delle mesh.
      Quando si proietta un'ombra con [page:DirectionalLight] o [page:SpotLight], se si modificano le posizioni dei vertici nello shader dei vertici
      è necessario specificare un customDepthMaterial per le shadow corrette. Il valore predefinito è `undefined`.
		</p>

		<h3>[property:Material customDistanceMaterial]</h3>
		<p>
      Lo stesso di [page:.customDepthMaterial customDepthMaterial], ma viene utilizzato con [page:PointLight].
      Il valore predefinito è `undefined`.
		</p>

		<h3>[property:Boolean frustumCulled]</h3>
		<p>
      Quando questo è impostato, controlla ogni fotogramma, se l'oggetto è nel frustrum della telecamera prima renderizzare l'oggetto.
      Se è impostato a `false` l'oggetto viene renderizzato ad ogni fotogramma anche se non si trova nel frustrum della telecamera. 
      Il valore predefinito è `true`.
		</p>

		<h3>[property:Integer id]</h3>
		<p>sola lettura – Numero univoco per questa istanza.</p>

		<h3>[property:Boolean isObject3D]</h3>
		<p>
      Flag di sola lettura per controllare se un dato oggetto è di tipo [name].
		</p>

		<h3>[property:Layers layers]</h3>
		<p>
      Il layer di appartenenza dell'oggetto. L'oggetto è visibile solo se ha al più un layer in comune
      con la [page:Camera telecamera] utilizzata. Questa proprietà può anche essere utilizata per filtrare
      gli oggetti non voluti nell'intersezione di test del reycasting quando si usa il [page:Raycaster].
		</p>

		<h3>[property:Matrix4 matrix]</h3>
		<p>La matrice di trasformazione locale.</p>

		<h3>[property:Boolean matrixAutoUpdate]</h3>
		<p>
      Quando viene settato calcola la matrice di posizione, (rotazione o quaternione) e 
      ridimensiona ogni fotogramma ed inoltre ricalcola la  proprietà matrixWorld. L'impostazione predefinita è [page:Object3D.DEFAULT_MATRIX_AUTO_UPDATE] (true).
		</p>

		<h3>[property:Matrix4 matrixWorld]</h3>
		<p>
      La trasformazione globale dell'oggetto. Se l'Object3D non ha un genitore, è identico al [page:.matrix] della trasformazione locale.
		</p>

		<h3>[property:Boolean matrixWorldAutoUpdate]</h3>
		<p>
      Se impostato, il renderer controlla ogni frame se l'oggetto e i suo figli necessitano di aggiornare la matrice.
      Quando non lo è, devi mantenere tu stesso tutte le matrici nell'oggetto e i suoi figli.
	  Default is [page:Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE] (true).
		</p>

		<h3>[property:Boolean matrixWorldNeedsUpdate]</h3>
		<p>
      Quando viene settato calcola la matrixWorld in quel frame e reimposta questa proprietà a false. Il valore
      predefinito è `false`.
		</p>

		<h3>[property:Matrix4 modelViewMatrix]</h3>
		<p>Questo viene passato allo shader e utilizzato per calcolare la posizione dell'oggetto.</p>

		<h3>[property:String name]</h3>
		<p>Nome opzionale dell'oggetto (non è necessario che sia univoco). Il valore predefinito è una stringa vuota.</p>

		<h3>[property:Matrix3 normalMatrix]</h3>
		<p>
      Questo viene passato allo shader e utilizzato per calcolare l'illuminazione per l'oggetto.
      È la trasposizione dell'inverso della sottomatrice 3x3 in alto a sinistra di modelViewMatrix di questo oggetto.<br /><br />

      Il motivo di questa matrice speciale è che il semplice utilizzo della matrice modelViewMatrix potrebbe causare una lunghezza non unitaria delle normali 
      (in caso di scalatura) o una direzione non perpendicolare (in caso di scalatura non uniforme).<br /><br />

      Dall'altra parte, la parte di traslazione della matrice modelViewMatrix non è rilevante per il calcolo delle normali. Quindi una Matrix3 è sufficiente. 
		</p>

		<h3>[property:Function onAfterRender]</h3>
		<p>
      Una callback opzionale che viene eseguita immediatamente dopo che un oggetto 3D è stato renderizzato.
      Questa funzione è chiamata con i seguenti parametri: renderer, scene, camera, geometry, material, group.
		</p>
		<p>
      Si noti che questa funzione di callback viene eseguita per oggi 3D `renderizzabili` (renderable). Ovvero oggetti 3D che definiscono
      il loro aspetto visivo con geometrie e materiali come istanze di [page:Mesh], [page:Line], [page:Points] o [page:Sprite].
      Invece, le istanze di [page:Object3D], [page:Group] o [page:Bone] non sono renderizzabili e quindi questa callback non viene eseguita su questi oggetti.
		</p>

		<h3>[property:Function onBeforeRender]</h3>
		<p>
      Una callback opzionale che viene eseguita immediatamente prima che un oggetto 3D è stato renderizzato.
      Questa funzione è chiamata con i seguenti parametri: renderer, scene, camera, geometry, material, group.
		</p>
		<p>
      Si noti che questa funzione di callback viene eseguita per oggi 3D `renderizzabili` (renderable). Ovvero oggetti 3D che definiscono
      il loro aspetto visivo con geometrie e materiali come istanze di [page:Mesh], [page:Line], [page:Points] o [page:Sprite].
      Invece, le istanze di [page:Object3D], [page:Group] o [page:Bone] non sono renderizzabili e quindi questa callback non viene eseguita su questi oggetti.
		</p>

		<h3>[property:Object3D parent]</h3>
		<p>Genitore dell'oggetto nel [link:https://en.wikipedia.org/wiki/Scene_graph grafo della scena]. Un oggetto può avere più
      di un genitore.</p>

		<h3>[property:Vector3 position]</h3>
		<p>Un [page:Vector3] che rappresenta la posizione locale dell'oggetto. Il valore predefinito è `(0, 0, 0)`.</p>

		<h3>[property:Quaternion quaternion]</h3>
		<p>Rotazione locale dell'oggetto come un [page:Quaternion Quaternion].</p>

		<h3>[property:Boolean receiveShadow]</h3>
		<p>Se il materiale riceve ombre. Il valore predefinito è `false`.</p>

		<h3>[property:Number renderOrder]</h3>
		<p>
      Questo valore consente di sovrascrivere l'ordine di rendering predefinito degli oggetti del [link:https://en.wikipedia.org/wiki/Scene_graph grafico di scena]
      sebbene gli oggetti opachi e trasparenti rimangano ordinati in modo indipendente. Quando questa proprietà viene impostata per un'istanza di [page:Group Group],
      tutti gli oggetti discendenti saranno ordinati e renderizzati insieme.
      L'ordinamento è dal più piccolo al più grande renderOrder. Il valore predefinito è `0`.
		</p>

		<h3>[property:Euler rotation]</h3>
		<p>
      La rotazione locale dell'oggetto (vedi [link:https://en.wikipedia.org/wiki/Euler_angles gli angoli di Eulero]), in radianti.
		</p>

		<h3>[property:Vector3 scale]</h3>
		<p>
      La scala locale dell'oggetto. Il valore predefinito è [page:Vector3]( 1, 1, 1 ).
		</p>

		<h3>[property:Vector3 up]</h3>
		<p>
      Questa proprietà viene utilizzata dal metodo [page:.lookAt lookAt], per esempio, per determinare l'orientamento del risultato.<br />
      L'impostazione predefinita è [page:Object3D.DEFAULT_UP] - che è, `( 0, 1, 0 )`.
		</p>

		<h3>[property:Object userData]</h3>
		<p>
      Un oggetto che può essere utilizzato per memorizzare i dati personalizzati di un Object3D.
      Non dovrebbe contenere riferimenti a funzioni poiché queste non verranno clonate.
		</p>

		<h3>[property:String uuid]</h3>
		<p>
		[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] dell'istanza dell'oggetto.
    Viene assegnato automaticamente, non dovrebbe essere modificato.
		</p>

		<h3>[property:Boolean visible]</h3>
		<p>L'oggetto viene visualizzato se `true`. Il valore predefinito è `true`.</p>




		<h2>Proprietà Statiche</h2>
		<p>
      Le proprietà statiche e i metodi sono definiti per classe piuttosto che per istanza della classe.
      Questo significa che modificando [page:Object3D.DEFAULT_UP] o [page:Object3D.DEFAULT_MATRIX_AUTO_UPDATE]
      verranno modificati i valori di [page:.up up] e [page:.matrixAutoUpdate matrixAutoUpdate] per `ogni`
      istanza di Object3D (o classi derivate) creata dopo che la modifica è stata fatta 
      (gli Object3D già creati non saranno interessati).
		</p>

		<h3>[property:Vector3 DEFAULT_UP]</h3>
		<p>
      La direzione predefinita di [page:.up up] per gli oggetti, utilizzata anche come posizione predefinita per [page:DirectionalLight],
			[page:HemisphereLight] e [page:Spotlight] (che crea luci che brillano dall'alto verso il basso).<br />
      Impostare su ( 0, 1, 0 ) per impostazione predefinita.
		</p>

		<h3>[property:Boolean DEFAULT_MATRIX_AUTO_UPDATE]</h3>
		<p>
      L'impostazione predefinita per [page:.matrixAutoUpdate matrixAutoUpdate] per Object3D appena creati.<br />
		</p>

		<h3>[property:Boolean DEFAULT_MATRIX_WORLD_AUTO_UPDATE]</h3>
		<p>
			L'impostazione predefinita per[page:.matrixWorldAutoUpdate matrixWorldAutoUpdate] per Object3D appena creati.<br />
		</p>

		<h2>Metodi</h2>

		<p>I metodi [page:EventDispatcher EventDispatcher] sono disponibili in questa classe.</p>

		<h3>[method:this add]( [param:Object3D object], ... )</h3>
		<p>
      Aggiunge l'`object` come figlio di questo oggetto. È possibile aggiungere un numero arbitrario di oggetti. 
      Qualsiasi genitore corrente su un oggetto passato qui verrà rimosso, poiché un oggetto può avere al più un genitore.<br /><br />

      Vedi [page:Group] per avere informazioni per raggruppare manualmente gli oggetti.
		</p>

		<h3>[method:undefined applyMatrix4]( [param:Matrix4 matrix] )</h3>
		<p>Applica la matrice di trasformazione all'oggetto e aggiorna la posizione, la rotazione e la scala dell'oggetto.</p>

		<h3>[method:this applyQuaternion]( [param:Quaternion quaternion] )</h3>
		<p>Applica la rotazione rappresentata dal quaternione dell'oggetto.</p>

		<h3>[method:this attach]( [param:Object3D object] )</h3>
		<p>
      Aggiunge l'`object` come figlio di questo oggetto, mantenendo la trasformazione world dell'oggetto.<br/><br/>
      Nota: Questo metodo non supporta i grafici della scena con nodi con scalatura non uniforme.
		</p>

		<h3>[method:Object3D clone]( [param:Boolean recursive] )</h3>
		<p>
		  recursive -- se true, anche i discendenti dell'oggetto vengono clonati. Il valore predefinito è true.<br /><br />

      Restituisce un clone di questo oggetto e opzionalmente tutti i discendenti.
		</p>

		<h3>[method:this copy]( [param:Object3D object], [param:Boolean recursive] )</h3>
		<p>
		  recursive -- se true, anche i discendenti dell'oggetto vengono copiati. Il valore predefinito è true.<br /><br />

      Copia l'oggetto passato in questo oggetto.

      Nota: Gli event listener e le callback definite dall'utente ([page:.onAfterRender] e [page:.onBeforeRender]) non vengono copiate.
		</p>

		<h3>[method:Object3D getObjectById]( [param:Integer id] )</h3>
		<p>
		  id -- Numero univoco dell'istanza dell'oggetto<br /><br />

      Cerca in un oggetto e nei suoi figli, partendo dall'oggetto stesso, e restituisce il primo con l'id corrispondente.<br />
      Si noti che gli id sono assegnati in ordine cronologico: 1, 2, 3, ..., incrementando di uno per ogni nuovo oggetto.
		</p>

		<h3>[method:Object3D getObjectByName]( [param:String name] )</h3>
		<p>
		  name -- Stringa da abbinare alla proprietà Object3D.name dei figli. <br /><br />

      Cerca in un oggetto e nei suoi figli, partendo dall'oggetto stesso, e restituisce il primo con il nome corrispondente.<br />
      Si noti che per molti oggetti il nome è una stringa vuota da impostazione predefinita. Dovrai impostarlo manualmente per
      utilizzare questo metodo.
		</p>

		<h3>[method:Object3D getObjectByProperty]( [param:String name], [param:Any value] )</h3>
		<p>
		  name -- il nome della proprietà da cercare. <br />
		  value -- il valore della proprietà data. <br /><br />

      Cerca in un oggetto e nei suoi figli, partendo dall'oggetto stesso, e restituisce il primo con la proprietà che corrisponde al valore passato.
		</p>

		<h3>[method:Object3D getObjectsByProperty]( [param:String name], [param:Any value] )</h3>
		<p>
		  name -- il nome della proprietà da cercare. <br />
		  value -- il valore della proprietà data. <br /><br />

      Cerca in un oggetto e nei suoi figli, partendo dall'oggetto stesso, e restituisce tutti gli oggetti con la proprietà che corrisponde al valore passato.
		</p>

		<h3>[method:Vector3 getWorldPosition]( [param:Vector3 target] )</h3>
		<p>
		  [page:Vector3 target] — il risultato verrà copiato in questo Vector3. <br /><br />

      Restituisce un vettore che rappresenta la posizione dell'oggetto nello spazio world.
		</p>

		<h3>[method:Quaternion getWorldQuaternion]( [param:Quaternion target] )</h3>
		<p>
  		[page:Quaternion target] — il risultato sarà copiato in questo Quaternione. <br /><br />

      Restituisce un quaternione che rappreseta la rotazione dell'oggetto nello spazio world.
		</p>

		<h3>[method:Vector3 getWorldScale]( [param:Vector3 target] )</h3>
		<p>
		  [page:Vector3 target] — il risultato sarà copiato in questo Vector3. <br /><br />

      Restituisce un vettore dei fattori di scala applicati all'oggetto per ciascun asse nello spazio world.
		</p>

		<h3>[method:Vector3 getWorldDirection]( [param:Vector3 target] )</h3>
		<p>
		  [page:Vector3 target] — il risultato sarà copiato in questo Vector3. <br /><br />

      Restituisce un vettore che rappresenta la direzione dell'asse z positivo dell'oggetto nello spazio world.
		</p>


		<h3>[method:Vector3 localToWorld]( [param:Vector3 vector] )</h3>
		<p>
		  vector - Un vettore che rappresenta la posizione nello spazio locale di questo oggetto.<br /><br />

      Converte il vettore dallo spazio locale dell'oggetto allo spazio world.
		</p>

		<h3>[method:undefined lookAt]( [param:Vector3 vector] )<br />
		[method:undefined lookAt]( [param:Float x], [param:Float y], [param:Float z] )</h3>
		<p>
		  vector - Un vettore che rappresenta la posizione nello spazio world.<br /><br />
      Facoltativamente, le componenti [page:.x x], [page:.y y] e [page:.z z] della posizione nello spazio world.<br /><br />

      Ruota l'oggetto in modo che sia rivolto verso un punto nello spazio world.<br /><br />

      Questo metodo non supporta oggetti con genitore/i con scalabilità non uniforme.
		</p>

		<h3>[method:undefined raycast]( [param:Raycaster raycaster], [param:Array intersects] )</h3>
		<p>
      Metodo astratto (vuoto) per ottenere le intersezioni tra un raggio casted e questo oggetto.
      Sottoclassi come [page:Mesh], [page:Line], e [page:Points] implementano questo metodo per 
      utilizzare il raycasting.
		</p>

		<h3>[method:this remove]( [param:Object3D object], ... )</h3>
		<p>
      Rimuove `object` come figlio di questo oggetto. Può essere rimosso un numero arbitrario di oggetti.
		</p>

		<h3>[method:this removeFromParent]()</h3>
		<p>
      Rimuove questo oggetto dal suo attuale genitore.
		</p>

		<h3>[method:this clear]()</h3>
		<p>
      Rimuove tutti i figli dall'oggetto.
		</p>

		<h3>[method:this rotateOnAxis]( [param:Vector3 axis], [param:Float angle] )</h3>
		<p>
		  axis -- Un vettore normalizzato nello spazio dell'oggetto.<br />
		  angle -- L'angolo in radianti.<br /><br />

      Ruota un oggetto lungo l'asse nello spazio dell'oggetto. Si presume che l'asse sia normalizzato.
		</p>

		<h3>[method:this rotateOnWorldAxis]( [param:Vector3 axis], [param:Float angle] )</h3>
		<p>
		  axis -- Un vettore normalizzato nello spazio world. <br />
		  angle -- L'angolo in radianti.<br /><br />

		  Ruota un oggetto lungo l'asse nello spazio world. Si presume che l'asse sia normalizzato.
      Presuppone che nessun genitore sia ruotato.
		</p>

		<h3>[method:this rotateX]( [param:Float rad] )</h3>
		<p>
		  rad - l'angolo di rotazione in radianti.<br /><br />

      Ruota l'oggetto attorno all'asse x nello spazio locale.
		</p>

		<h3>[method:this rotateY]( [param:Float rad] )</h3>
		<p>
		  rad - l'angolo di rotazione in radianti.<br /><br />

      Ruota l'oggetto attorno all'asse y nello spazio locale.
		</p>

		<h3>[method:this rotateZ]( [param:Float rad] )</h3>
		<p>
		  rad - l'angolo di rotazione in radianti.<br /><br />

      Ruota l'oggetto attorno all'asse z nello spazio locale.
		</p>

		<h3>[method:undefined setRotationFromAxisAngle]( [param:Vector3 axis], [param:Float angle] )</h3>
		<p>
			axis -- Un vettore normalizzato nello spazio dell'oggetto.<br />
			angle -- l'angolo in radianti<br /><br />

			Chiama [page:Quaternion.setFromAxisAngle setFromAxisAngle]( [page:Float axis], [page:Float angle] )
			sul [page:.quaternion quaternione].
		</p>

		<h3>[method:undefined setRotationFromEuler]( [param:Euler euler] )</h3>
		<p>
			euler -- L'angolo di Eulero che specifica la quantità di rotazione.<br />

			Chiama [page:Quaternion.setRotationFromEuler setRotationFromEuler]( [page:Euler euler] )
			sul [page:.quaternion quaternione].
		</p>

		<h3>[method:undefined setRotationFromMatrix]( [param:Matrix4 m] )</h3>
		<p>
			m -- ruota il quaternione della componente rotazione della matrice.<br />

			Chiama [page:Quaternion.setFromRotationMatrix setFromRotationMatrix]( [page:Matrix4 m] )
			sul [page:.quaternion quaternione].<br /><br />

      Si noti che questo presuppone che il 3x3 superiore di m è una matrice di rotazione pura (cioè non ridimnsionata).
		</p>

		<h3>[method:undefined setRotationFromQuaternion]( [param:Quaternion q] )</h3>
		<p>
			q -- Quaternione normalizzato.<br /><br />

      Copia il quaternione passato nel [page:.quaternion quaternione].
		</p>

		<h3>[method:Object toJSON]( [param:Object meta] )</h3>
		<p>
		  meta -- oggetto contentene metadati come i materiali, le texture o le immagini per l'oggetto.<br />
      Converte l'oggetto al formato three.js [link:https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 JSON Object/Scene].
		</p>

		<h3>[method:this translateOnAxis]( [param:Vector3 axis], [param:Float distance] )</h3>
		<p>
		  axis -- Un vettore normalizzato nello spazio dell'oggetto.<br />
		  distance -- La distanza da traslare.<br /><br />

      Trasla un oggetto in base alla distanza lungo un asse nello spazio dell'oggetto. Questo asse si presuppone sia normalizzato.
		</p>

		<h3>[method:this translateX]( [param:Float distance] )</h3>
		<p>Trasla l'oggetto lungo l'asse x nello spazio dell'ogetto per unità di `distance`.</p>

		<h3>[method:this translateY]( [param:Float distance] )</h3>
		<p>Trasla l'oggetto lungo l'asse y nello spazio dell'ogetto per unità di `distance`.</p>

		<h3>[method:this translateZ]( [param:Float distance] )</h3>
		<p>Trasla l'oggetto lungo l'asse z nello spazio dell'ogetto per unità di `distance`.</p>

		<h3>[method:undefined traverse]( [param:Function callback] )</h3>
		<p>
		  callback - Una funzione con primo argomento un oggetto Object3D.<br /><br />

      Esegue la callback su questo oggetto e tutti i discendenti.<br/>
      Nota: È sconsigliato modificare il grafico della scena all'interno della callback.
		</p>

		<h3>[method:undefined traverseVisible]( [param:Function callback] )</h3>
		<p>
		  callback -  Una funzione con primo argomento un oggetto Object3D.<br /><br />

      Simile a traverse, ma la callback viene eseguita solo su oggetti visibili.
      I discendenti di oggetti invisibili non vengono attraversati.<br/>
      Nota: È sconsigliato modificare il grafico della scena all'interno della callback.
		</p>

		<h3>[method:undefined traverseAncestors]( [param:Function callback] )</h3>
		<p>
		  callback -  Una funzione con primo argomento un oggetto Object3D..<br /><br />

      Esegue la callback su tutti i predecessori.<br/>
      Nota: È sconsigliato modificare il grafico della scena all'interno della callback.
		</p>

		<h3>[method:undefined updateMatrix]()</h3>
		<p>Aggiorna la trasformazione locale.</p>

		<h3>[method:undefined updateMatrixWorld]( [param:Boolean force] )</h3>
		<p>Aggiorna la trasformazione globale di un oggetto e i suoi discendenti.</p>

		<h3>[method:undefined updateWorldMatrix]( [param:Boolean updateParents], [param:Boolean updateChildren] )</h3>
		<p>
      updateParents - aggiorna ricorsivamente la trasformazione globale dei predecessori.<br />
      updateChildren - aggiorna ricorsivamente la trasformazione globale dei discendenti.<br /><br />

      Aggiorna la trasformazione globale dell'oggetto.
		</p>

		<h3>[method:Vector3 worldToLocal]( [param:Vector3 vector] )</h3>
		<p>
		  vector - Un vettore che rappresenta una posizione nello spazio world.<br /><br />

      Converte il vettore dallo spazio world allo spazio locale di questo oggetto.
		</p>

		<h2>Source</h2>

		<p>
			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
		</p>
	</body>
</html>