# [name]

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.
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.

## Costruttore

### [name]()

Il cotruttore non prende argomenti.

## Proprietà

### [property:AnimationClip animations]

Array con clip di animazione dell'oggetto.

### [property:Boolean castShadow]

Se l'oggetto viene renderizzato nella mappa delle ombre. Il valore predefinito è `false`.

### [property:Array children]

Array con i children dell'oggetto. Vedi [page:Group] per informazioni su come raggrupare manualmente gli oggetti.

### [property:Material customDepthMaterial]

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`.

### [property:Material customDistanceMaterial]

Lo stesso di [page:.customDepthMaterial customDepthMaterial], ma viene utilizzato con [page:PointLight]. Il valore predefinito è `undefined`.

### [property:Boolean frustumCulled]

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`.

### [property:Integer id]

sola lettura – Numero univoco per questa istanza.

### [property:Boolean isObject3D]

Flag di sola lettura per controllare se un dato oggetto è di tipo [name].

### [property:Layers layers]

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].

### [property:Matrix4 matrix]

La matrice di trasformazione locale.

### [property:Boolean matrixAutoUpdate]

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).

### [property:Matrix4 matrixWorld]

La trasformazione globale dell'oggetto. Se l'Object3D non ha un genitore, è identico al [page:.matrix] della trasformazione locale.

### [property:Boolean matrixWorldAutoUpdate]

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).

### [property:Boolean matrixWorldNeedsUpdate]

Quando viene settato calcola la matrixWorld in quel frame e reimposta questa proprietà a false. Il valore predefinito è `false`.

### [property:Matrix4 modelViewMatrix]

Questo viene passato allo shader e utilizzato per calcolare la posizione dell'oggetto.

### [property:String name]

Nome opzionale dell'oggetto (non è necessario che sia univoco). Il valore predefinito è una stringa vuota.

### [property:Matrix3 normalMatrix]

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.
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).
Dall'altra parte, la parte di traslazione della matrice modelViewMatrix non è rilevante per il calcolo delle normali. Quindi una Matrix3 è sufficiente.

### [property:Function onAfterRender]

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.

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.

### [property:Function onAfterShadow]

An optional callback that is executed immediately after a 3D object is rendered to a shadow map. Questa funzione è chiamata con i seguenti parametri: renderer, scene, camera, shadowCamera, geometry, depthMaterial, group.

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.

### [property:Function onBeforeRender]

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.

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.

### [property:Function onBeforeShadow]

An optional callback that is executed immediately before a 3D object is rendered to a shadow map. Questa funzione è chiamata con i seguenti parametri: renderer, scene, camera, shadowCamera, geometry, depthMaterial, group.

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.

### [property:Object3D parent]

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

### [property:Vector3 position]

Un [page:Vector3] che rappresenta la posizione locale dell'oggetto. Il valore predefinito è `(0, 0, 0)`.

### [property:Quaternion quaternion]

Rotazione locale dell'oggetto come un [page:Quaternion Quaternion].

### [property:Boolean receiveShadow]

Se il materiale riceve ombre. Il valore predefinito è `false`.

### [property:Number renderOrder]

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`.

### [property:Euler rotation]

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

### [property:Vector3 scale]

La scala locale dell'oggetto. Il valore predefinito è [page:Vector3]( 1, 1, 1 ).

### [property:Vector3 up]

Questa proprietà viene utilizzata dal metodo [page:.lookAt lookAt], per esempio, per determinare l'orientamento del risultato.
L'impostazione predefinita è [page:Object3D.DEFAULT_UP] - che è, `( 0, 1, 0 )`.

### [property:Object userData]

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.

### [property:String uuid]

[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] dell'istanza dell'oggetto. Viene assegnato automaticamente, non dovrebbe essere modificato.

### [property:Boolean visible]

L'oggetto viene visualizzato se `true`. Il valore predefinito è `true`.

## Proprietà Statiche

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).

### [property:Vector3 DEFAULT_UP]

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).
Impostare su ( 0, 1, 0 ) per impostazione predefinita.

### [property:Boolean DEFAULT_MATRIX_AUTO_UPDATE]

L'impostazione predefinita per [page:.matrixAutoUpdate matrixAutoUpdate] per Object3D appena creati.

### [property:Boolean DEFAULT_MATRIX_WORLD_AUTO_UPDATE]

L'impostazione predefinita per[page:.matrixWorldAutoUpdate matrixWorldAutoUpdate] per Object3D appena creati.

## Metodi

I metodi [page:EventDispatcher EventDispatcher] sono disponibili in questa classe.

### [method:this add]( [param:Object3D object], ... )

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.
Vedi [page:Group] per avere informazioni per raggruppare manualmente gli oggetti.

### [method:undefined applyMatrix4]( [param:Matrix4 matrix] )

Applica la matrice di trasformazione all'oggetto e aggiorna la posizione, la rotazione e la scala dell'oggetto.

### [method:this applyQuaternion]( [param:Quaternion quaternion] )

Applica la rotazione rappresentata dal quaternione dell'oggetto.

### [method:this attach]( [param:Object3D object] )

Aggiunge l'`object` come figlio di questo oggetto, mantenendo la trasformazione world dell'oggetto.
Nota: Questo metodo non supporta i grafici della scena con nodi con scalatura non uniforme.

### [method:Object3D clone]( [param:Boolean recursive] )

recursive -- se true, anche i discendenti dell'oggetto vengono clonati. Il valore predefinito è true.
Restituisce un clone di questo oggetto e opzionalmente tutti i discendenti.

### [method:this copy]( [param:Object3D object], [param:Boolean recursive] )

recursive -- se true, anche i discendenti dell'oggetto vengono copiati. Il valore predefinito è true.
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.

### [method:Object3D getObjectById]( [param:Integer id] )

id -- Numero univoco dell'istanza dell'oggetto
Cerca in un oggetto e nei suoi figli, partendo dall'oggetto stesso, e restituisce il primo con l'id corrispondente.
Si noti che gli id sono assegnati in ordine cronologico: 1, 2, 3, ..., incrementando di uno per ogni nuovo oggetto.

### [method:Object3D getObjectByName]( [param:String name] )

name -- Stringa da abbinare alla proprietà Object3D.name dei figli.
Cerca in un oggetto e nei suoi figli, partendo dall'oggetto stesso, e restituisce il primo con il nome corrispondente.
Si noti che per molti oggetti il nome è una stringa vuota da impostazione predefinita. Dovrai impostarlo manualmente per utilizzare questo metodo.

### [method:Object3D getObjectByProperty]( [param:String name], [param:Any value] )

name -- il nome della proprietà da cercare.
value -- il valore della proprietà data.
Cerca in un oggetto e nei suoi figli, partendo dall'oggetto stesso, e restituisce il primo con la proprietà che corrisponde al valore passato.

### [method:Object3D getObjectsByProperty]( [param:String name], [param:Any value], [param:Array optionalTarget] )

name -- il nome della proprietà da cercare.
value -- il valore della proprietà data.
optionalTarget -- (opzionale) array dove impostare il risultato. Altrimenti viene istanziato un nuovo Array. Se impostato, è necessario cancellare questo array prima di ogni chiamata (ad esempio, array.length = 0;).
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.

### [method:Vector3 getWorldPosition]( [param:Vector3 target] )

[page:Vector3 target] — il risultato verrà copiato in questo Vector3.
Restituisce un vettore che rappresenta la posizione dell'oggetto nello spazio world.

### [method:Quaternion getWorldQuaternion]( [param:Quaternion target] )

[page:Quaternion target] — il risultato sarà copiato in questo Quaternione.
Restituisce un quaternione che rappreseta la rotazione dell'oggetto nello spazio world.

### [method:Vector3 getWorldScale]( [param:Vector3 target] )

[page:Vector3 target] — il risultato sarà copiato in questo Vector3.
Restituisce un vettore dei fattori di scala applicati all'oggetto per ciascun asse nello spazio world.

### [method:Vector3 getWorldDirection]( [param:Vector3 target] )

[page:Vector3 target] — il risultato sarà copiato in questo Vector3.
Restituisce un vettore che rappresenta la direzione dell'asse z positivo dell'oggetto nello spazio world.

### [method:Vector3 localToWorld]( [param:Vector3 vector] )

vector - Un vettore che rappresenta la posizione nello spazio locale di questo oggetto.
Converte il vettore dallo spazio locale dell'oggetto allo spazio world.

### [method:undefined lookAt]( [param:Vector3 vector] )
[method:undefined lookAt]( [param:Float x], [param:Float y], [param:Float z] )

vector - Un vettore che rappresenta la posizione nello spazio world.
Facoltativamente, le componenti [page:.x x], [page:.y y] e [page:.z z] della posizione nello spazio world.
Ruota l'oggetto in modo che sia rivolto verso un punto nello spazio world.
Questo metodo non supporta oggetti con genitore/i con scalabilità non uniforme.

### [method:undefined raycast]( [param:Raycaster raycaster], [param:Array intersects] )

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.

### [method:this remove]( [param:Object3D object], ... )

Rimuove `object` come figlio di questo oggetto. Può essere rimosso un numero arbitrario di oggetti.

### [method:this removeFromParent]()

Rimuove questo oggetto dal suo attuale genitore.

### [method:this clear]()

Rimuove tutti i figli dall'oggetto.

### [method:this rotateOnAxis]( [param:Vector3 axis], [param:Float angle] )

axis -- Un vettore normalizzato nello spazio dell'oggetto.
angle -- L'angolo in radianti.
Ruota un oggetto lungo l'asse nello spazio dell'oggetto. Si presume che l'asse sia normalizzato.

### [method:this rotateOnWorldAxis]( [param:Vector3 axis], [param:Float angle] )

axis -- Un vettore normalizzato nello spazio world.
angle -- L'angolo in radianti.
Ruota un oggetto lungo l'asse nello spazio world. Si presume che l'asse sia normalizzato. Presuppone che nessun genitore sia ruotato.

### [method:this rotateX]( [param:Float rad] )

rad - l'angolo di rotazione in radianti.
Ruota l'oggetto attorno all'asse x nello spazio locale.

### [method:this rotateY]( [param:Float rad] )

rad - l'angolo di rotazione in radianti.
Ruota l'oggetto attorno all'asse y nello spazio locale.

### [method:this rotateZ]( [param:Float rad] )

rad - l'angolo di rotazione in radianti.
Ruota l'oggetto attorno all'asse z nello spazio locale.

### [method:undefined setRotationFromAxisAngle]( [param:Vector3 axis], [param:Float angle] )

axis -- Un vettore normalizzato nello spazio dell'oggetto.
angle -- l'angolo in radianti
Chiama [page:Quaternion.setFromAxisAngle setFromAxisAngle]( [page:Float axis], [page:Float angle] ) sul [page:.quaternion quaternione].

### [method:undefined setRotationFromEuler]( [param:Euler euler] )

euler -- L'angolo di Eulero che specifica la quantità di rotazione.
Chiama [page:Quaternion.setRotationFromEuler setRotationFromEuler]( [page:Euler euler] ) sul [page:.quaternion quaternione].

### [method:undefined setRotationFromMatrix]( [param:Matrix4 m] )

m -- ruota il quaternione della componente rotazione della matrice.
Chiama [page:Quaternion.setFromRotationMatrix setFromRotationMatrix]( [page:Matrix4 m] ) sul [page:.quaternion quaternione].
Si noti che questo presuppone che il 3x3 superiore di m è una matrice di rotazione pura (cioè non ridimnsionata).

### [method:undefined setRotationFromQuaternion]( [param:Quaternion q] )

q -- Quaternione normalizzato.
Copia il quaternione passato nel [page:.quaternion quaternione].

### [method:Object toJSON]( [param:Object meta] )

meta -- oggetto contentene metadati come i materiali, le texture o le immagini per l'oggetto.
Converte l'oggetto al formato three.js [link:https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 JSON Object/Scene].

### [method:this translateOnAxis]( [param:Vector3 axis], [param:Float distance] )

axis -- Un vettore normalizzato nello spazio dell'oggetto.
distance -- La distanza da traslare.
Trasla un oggetto in base alla distanza lungo un asse nello spazio dell'oggetto. Questo asse si presuppone sia normalizzato.

### [method:this translateX]( [param:Float distance] )

Trasla l'oggetto lungo l'asse x nello spazio dell'ogetto per unità di `distance`.

### [method:this translateY]( [param:Float distance] )

Trasla l'oggetto lungo l'asse y nello spazio dell'ogetto per unità di `distance`.

### [method:this translateZ]( [param:Float distance] )

Trasla l'oggetto lungo l'asse z nello spazio dell'ogetto per unità di `distance`.

### [method:undefined traverse]( [param:Function callback] )

callback - Una funzione con primo argomento un oggetto Object3D.
Esegue la callback su questo oggetto e tutti i discendenti.
Nota: È sconsigliato modificare il grafico della scena all'interno della callback.

### [method:undefined traverseVisible]( [param:Function callback] )

callback - Una funzione con primo argomento un oggetto Object3D.
Simile a traverse, ma la callback viene eseguita solo su oggetti visibili. I discendenti di oggetti invisibili non vengono attraversati.
Nota: È sconsigliato modificare il grafico della scena all'interno della callback.

### [method:undefined traverseAncestors]( [param:Function callback] )

callback - Una funzione con primo argomento un oggetto Object3D..
Esegue la callback su tutti i predecessori.
Nota: È sconsigliato modificare il grafico della scena all'interno della callback.

### [method:undefined updateMatrix]()

Aggiorna la trasformazione locale.

### [method:undefined updateMatrixWorld]( [param:Boolean force] )

Aggiorna la trasformazione globale di un oggetto e i suoi discendenti.

### [method:undefined updateWorldMatrix]( [param:Boolean updateParents], [param:Boolean updateChildren] )

updateParents - aggiorna ricorsivamente la trasformazione globale dei predecessori.
updateChildren - aggiorna ricorsivamente la trasformazione globale dei discendenti.
Aggiorna la trasformazione globale dell'oggetto.

### [method:Vector3 worldToLocal]( [param:Vector3 vector] )

vector - Un vettore che rappresenta una posizione nello spazio world.
Converte il vettore dallo spazio world allo spazio locale di questo oggetto.

## Source

[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]