Una rappresentazione della geometria di mesh, di linee o di punti. Include posizioni di vertici, indici della faccia, normali, colori, coordinate UV, e attributi personalizzati all'interno dei buffer, riducendo il costo del passaggio di tutti questi dati alla GPU.
Per leggere e modificare dati negli attributi della BufferGeometry, vedi la documentazione di [page:BufferAttribute].
const geometry = new THREE.BufferGeometry();
// crea una semplice figura quadrata. Duplichiamo i vertici top left e bottom right
// perché ogni vertice ha bisogno di apparire una volta per triangolo.
const vertices = new Float32Array( [
-1.0, -1.0, 1.0,
1.0, -1.0, 1.0,
1.0, 1.0, 1.0,
1.0, 1.0, 1.0,
-1.0, 1.0, 1.0,
-1.0, -1.0, 1.0
] );
// itemSize = 3 perché ci osno 3 valori (componenti) per vertice
geometry.setAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) );
const material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );
const mesh = new THREE.Mesh( geometry, material );
[example:webgl_buffergeometry Mesh with non-indexed faces]
[example:webgl_buffergeometry_indexed Mesh with indexed faces]
[example:webgl_buffergeometry_lines Lines]
[example:webgl_buffergeometry_lines_indexed Indexed Lines]
[example:webgl_buffergeometry_custom_attributes_particles Particles]
[example:webgl_buffergeometry_rawshader Raw Shaders]
Questo hashmap ha come id il nome dell'attributo da impostare e come valore il [page:BufferAttribute buffer] su cui impostarlo. Piuttosto che accedere a questa proprietà direttamente, usa [page:.setAttribute] e [page:.getAttribute] per accedere agli attributi della geometria.
Bounding box per la bufferGeometry, che può essere calcolato con [page:.computeBoundingBox](). Il valore predefinito è `null`.
Bounding sphere per la bufferGeometry, che può essere calcolato con [page:.computeBoundingSphere](). Il valore predefinito è `null`.
Determina la parte della geometria da visualizzare. Non dovrebbe essere impostato
direttamente, usa invece [page:.setDrawRange]. Il valore predefinito è
{ start: 0, count: Infinity }
Per la BufferGeometry non indicizzata, count è il numero di vertici da visualizzare.
Per la BufferGeometry indicizzata, count è il numero di indici da visualizzare.
Divide la geometria in gruppi, ognuno dei quali verrà renderizzato in una chimata draw WebGL separata.
Ci permette che un array di materiali venga usato con una geometria.
Ogni gruppo è un oggetto della forma:
{ start: Integer, count: Integer, materialIndex: Integer }
dove start specifica il primo elemento nella chiamata draw - il primo vertice per la geometria non
indicizzata, altrimenti il primo indice del triangolo. Count specifica quanti vertici (o indici) sono
inclusi, e materialIndex specifica l'indice dell'array del materiale da utilizzare.
Usa [page:.addGroup] per aggiungere gruppi, piuttosto che modificare questo array direttamente.
Ogni vertice e indice deve appartenere esattamente ad un gruppo - i gruppi non devono condividere vertici o
indici, e non devono lasciare vertici o indici inutilizzati.
Numero univoco per questa istanza della bufferGeometry.
Consente di riutilizzare i vertici su più triangoli; viene chiamato "indexed triangles". Ogni triangolo è associato con gli indici di tre vertici. Questo attributo quindi memorizza l'indice di ogni vertice per ogni faccia del triangolo. Se questo attributo non è impostato, il [page:WebGLRenderer renderer] assume che ogni 3 posizioni contigue rappresentano un singolo triangolo. Il valore predefinito è `null`.
Flag di sola lettura per verificare se un dato oggetto è di tipo [name].
Hashmap di BufferAttribute contenente i dettagli dei target morph delle geometrie.
Nota: Una volta che la geometria è stata renderizzata, i dati dell'attributo morph non possono essere modificati.
Dovrai chiamare [page:.dispose](), e creare una nuova istanza della [name].
Usato per controllare il comportamento del target morph: quando è impostato a true, i dati del target morph vengono trattati come offset relativi, anziché come posizioni/normali assoluti. L'impostazione predefinita è `false`.
Nome opzionale per questa istanza di bufferGeometry. Il valore predefinito è una stringa vuota.
Un oggetto che può essere utilizzato per memorizzare i dati relativi alla BufferGeometry. Non dovrebbe contenere i riferimenti alle funzioni poiché queste non verranno clonate.
[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] di questa istanza. Viene assegnato automaticamente e non deve essere modificato.
[page:EventDispatcher EventDispatcher] i metodi sono disponibili in questa classe.
Aggiunge un gruppo a questa geometria; vedi la proprietà [page:BufferGeometry.groups groups] per maggiori dettagli.
Applica la matrice di trasformazione alla geometria.
Applica la rotazione rappresentata dal quaternione alla geometria.
Centra la geometria basandosi sul bounding box.
Cancella tutti i gruppi.
Crea un clone di questa BufferGeometry.
Calcola il bounding box della geometria, aggiornando l'attributo [page:.boundingBox].
I Bounding box non sono calcolati per impostazione predefinita. Devono essere calcolati esplicitamente,
altrimenti sono `null`.
Calcola il bounding sphere della geometria, aggiornando l'attributo [page:.boundingSphere].
I Bounding sphere non sono calcolati per impostazione predefinita. Devono essere calcolati esplicitamente,
altrimenti sono `null`.
Calcola e aggiunge un attributo tangent a questa geometria.
Il calcolo è supportato solo per geometrie indicizzate e se la posizione, la normale e gli attributi uv sono definiti.
Quando si usa una mappa normale dello spazio tangente, meglio usare l'algoritmo MikkTSpace fornito da [page:BufferGeometryUtils.computeMikkTSpaceTangents].
Calcola la normale dei vertici calcolando la media delle normali delle facce.
Copia un'altra BufferGeometry in questa BufferGeometry.
Cancella l'[page:BufferAttribute attributo] con il nome specificato.
Elimina l'oggetto dalla memoria.
È necessario chiamarlo quando si desidera rimuovere BufferGeometry mentre l'applicazione è in esecuzione.
Restituisce l'[page:BufferAttribute attributo] con il nome specificato.
Restituisce il buffer di [page:.index].
Restituisce `true` se l'attributo con il nome specificato esiste.
vector - Un vettore world da guardare.
Ruota la geometria in modo che sia rivolta verso un punto dello spazio. In genere, questa operazione viene
eseguita una sola volta e non durante un ciclo.
Usare [page:Object3D.lookAt] per l'uso tipico della mesh in tempo reale.
Ogni vettore normale, in una geometria, deve avere magnitudine 1. Ciò correggerà l'illuminazione sulle superfici geometriche.
Ruota la geometria attorno all'asse X. In genere, questa operazione viene eseguita una sola volta e non durante un ciclo. Usare [page:Object3D.rotation] per la tipica rotazione della mesh in tempo reale.
Ruota la geometria attorno all'asse Y. In genere, questa operazione viene eseguita una sola volta e non durante un ciclo. Usare [page:Object3D.rotation] per la tipica rotazione della mesh in tempo reale.
Ruota la geometria attorno all'asse Z. In genere, questa operazione viene eseguita una sola volta e non durante un ciclo. Usare [page:Object3D.rotation] per la tipica rotazione della mesh in tempo reale.
Scala i dati della geometria. In genere, questa operazione viene eseguita una sola volta e non durante un ciclo. Usare [page:Object3D.scale] per il tipico ridimensionamento della mesh in tempo reale.
Imposta un attributo per questa geometria. Utilizzare questo metodo piuttosto che la proprietà attributes, perché viene mantenuta una hashmap interna di .attributes per accelerare l'iterazione sugli attributi.
Imposta la proprietà [page:.drawRange]. Per BufferGeometry non indicizzate, count è il numero di vertici da visualizzare. Per BufferGeometry indicizzate, count è il numero di indici da visualizzare.
Imposta gli attributi per questa BufferGeometry da un array di punti.
Imposta il buffer [page:.index].
Converte la buffer geometry al formato three.js [link:https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 JSON Object/Scene].
Restituisce una versione non indicizzata di una BufferGeometry indicizzata.
Trasla la geometria. In genere, questa operazione viene eseguita una sola volta e non durante un ciclo. Usare [page:Object3D.position] per la tipica traslazione della mesh in tempo reale.
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]