You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
319 lines
13 KiB
319 lines
13 KiB
<!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>
|
|
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.
|
|
</p>
|
|
<p>
|
|
Per leggere e modificare dati negli attributi della BufferGeometry, vedi la documentazione di [page:BufferAttribute].
|
|
</p>
|
|
|
|
<h2>Codice di Esempio</h2>
|
|
<code>
|
|
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 );
|
|
</code>
|
|
|
|
<h2>Esempi</h2>
|
|
<p>
|
|
[example:webgl_buffergeometry Mesh with non-indexed faces]<br />
|
|
[example:webgl_buffergeometry_indexed Mesh with indexed faces]<br />
|
|
[example:webgl_buffergeometry_lines Lines]<br />
|
|
[example:webgl_buffergeometry_lines_indexed Indexed Lines]<br />
|
|
[example:webgl_buffergeometry_custom_attributes_particles Particles]<br />
|
|
[example:webgl_buffergeometry_rawshader Raw Shaders]
|
|
</p>
|
|
|
|
<h2>Costruttore</h2>
|
|
|
|
|
|
<h3>[name]()</h3>
|
|
<div>
|
|
Crea un nuovo [name]. Inoltre imposta alcune proprietà al valore predefinito.
|
|
</div>
|
|
|
|
|
|
<h2>Proprietà</h2>
|
|
|
|
<h3>[property:Object attributes]</h3>
|
|
<p>
|
|
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.
|
|
</p>
|
|
|
|
<h3>[property:Box3 boundingBox]</h3>
|
|
<p>
|
|
Bounding box per la bufferGeometry, che può essere calcolato con
|
|
[page:.computeBoundingBox](). Il valore predefinito è `null`.
|
|
</p>
|
|
|
|
<h3>[property:Sphere boundingSphere]</h3>
|
|
<p>
|
|
Bounding sphere per la bufferGeometry, che può essere calcolato con
|
|
[page:.computeBoundingSphere](). Il valore predefinito è `null`.
|
|
</p>
|
|
|
|
<h3>[property:Object drawRange]</h3>
|
|
<p>
|
|
Determina la parte della geometria da visualizzare. Non dovrebbe essere impostato
|
|
direttamente, usa invece [page:.setDrawRange]. Il valore predefinito è
|
|
<code>
|
|
{ start: 0, count: Infinity }
|
|
</code>
|
|
Per la BufferGeometry non indicizzata, count è il numero di vertici da visualizzare.
|
|
Per la BufferGeometry indicizzata, count è il numero di indici da visualizzare.
|
|
</p>
|
|
|
|
<h3>[property:Array groups]</h3>
|
|
<p>
|
|
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.<br /><br />
|
|
|
|
Ogni gruppo è un oggetto della forma:
|
|
<code>{ start: Integer, count: Integer, materialIndex: Integer }</code>
|
|
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.<br /><br />
|
|
|
|
Usa [page:.addGroup] per aggiungere gruppi, piuttosto che modificare questo array direttamente.<br /><br />
|
|
|
|
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.
|
|
</p>
|
|
|
|
|
|
<!-- Note: groups used to be called drawCalls
|
|
|
|
<h3>[property:Array drawcalls]</h3>
|
|
<p>
|
|
For geometries that use indexed triangles, this Array can be used to split the object
|
|
into multiple WebGL draw calls. Each draw call will draw some subset of the vertices
|
|
in this geometry using the configured [page:Material shader]. This may be necessary if,
|
|
for instance, you have more than 65535 vertices in your object.
|
|
</p> -->
|
|
|
|
|
|
<h3>[property:Integer id]</h3>
|
|
<p>Numero univoco per questa istanza della bufferGeometry.</p>
|
|
|
|
<h3>[property:BufferAttribute index]</h3>
|
|
<p>
|
|
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`.
|
|
</p>
|
|
|
|
<h3>[property:Boolean isBufferGeometry]</h3>
|
|
<p>
|
|
Flag di sola lettura per verificare se un dato oggetto è di tipo [name].
|
|
</p>
|
|
|
|
<h3>[property:Object morphAttributes]</h3>
|
|
<p>
|
|
Hashmap di BufferAttribute contenente i dettagli dei target morph delle geometrie.<br />
|
|
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].
|
|
</p>
|
|
|
|
<h3>[property:Boolean morphTargetsRelative]</h3>
|
|
<p>
|
|
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`.
|
|
</p>
|
|
|
|
<h3>[property:String name]</h3>
|
|
<p>
|
|
Nome opzionale per questa istanza di bufferGeometry. Il valore predefinito è una stringa vuota.
|
|
</p>
|
|
|
|
<h3>[property:Object userData]</h3>
|
|
<p>
|
|
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.
|
|
</p>
|
|
|
|
<h3>[property:String uuid]</h3>
|
|
<p>
|
|
[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] di questa istanza.
|
|
Viene assegnato automaticamente e non deve essere modificato.
|
|
</p>
|
|
|
|
<h2>Metodi</h2>
|
|
|
|
<p>[page:EventDispatcher EventDispatcher] i metodi sono disponibili in questa classe.</p>
|
|
|
|
<h3>[method:undefined addGroup]( [param:Integer start], [param:Integer count], [param:Integer materialIndex] )</h3>
|
|
<p>
|
|
Aggiunge un gruppo a questa geometria; vedi la proprietà [page:BufferGeometry.groups groups]
|
|
per maggiori dettagli.
|
|
</p>
|
|
|
|
<h3>[method:this applyMatrix4]( [param:Matrix4 matrix] )</h3>
|
|
<p>Applica la matrice di trasformazione alla geometria.</p>
|
|
|
|
<h3>[method:this applyQuaternion]( [param:Quaternion quaternion] )</h3>
|
|
<p>Applica la rotazione rappresentata dal quaternione alla geometria.</p>
|
|
|
|
<h3>[method:this center] ()</h3>
|
|
<p>Centra la geometria basandosi sul bounding box.</p>
|
|
|
|
<h3>[method:undefined clearGroups]( )</h3>
|
|
<p>Cancella tutti i gruppi.</p>
|
|
|
|
<h3>[method:BufferGeometry clone]()</h3>
|
|
<p>Crea un clone di questa BufferGeometry.</p>
|
|
|
|
<h3>[method:undefined computeBoundingBox]()</h3>
|
|
<p>
|
|
Calcola il bounding box della geometria, aggiornando l'attributo [page:.boundingBox]. <br />
|
|
I Bounding box non sono calcolati per impostazione predefinita. Devono essere calcolati esplicitamente,
|
|
altrimenti sono `null`.
|
|
</p>
|
|
|
|
<h3>[method:undefined computeBoundingSphere]()</h3>
|
|
<p>
|
|
Calcola il bounding sphere della geometria, aggiornando l'attributo [page:.boundingSphere]. <br />
|
|
I Bounding sphere non sono calcolati per impostazione predefinita. Devono essere calcolati esplicitamente,
|
|
altrimenti sono `null`.
|
|
</p>
|
|
|
|
<h3>[method:undefined computeTangents]()</h3>
|
|
<p>
|
|
Calcola e aggiunge un attributo tangent a questa geometria.<br />
|
|
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].
|
|
</p>
|
|
|
|
<h3>[method:undefined computeVertexNormals]()</h3>
|
|
<p>Calcola la normale dei vertici calcolando la media delle normali delle facce.</p>
|
|
|
|
<h3>[method:this copy]( [param:BufferGeometry bufferGeometry] )</h3>
|
|
<p>Copia un'altra BufferGeometry in questa BufferGeometry.</p>
|
|
|
|
<h3>[method:BufferAttribute deleteAttribute]( [param:String name] )</h3>
|
|
<p>Cancella l'[page:BufferAttribute attributo] con il nome specificato.</p>
|
|
|
|
<h3>[method:undefined dispose]()</h3>
|
|
<p>
|
|
Elimina l'oggetto dalla memoria.<br />
|
|
È necessario chiamarlo quando si desidera rimuovere BufferGeometry mentre l'applicazione è in esecuzione.
|
|
</p>
|
|
|
|
<h3>[method:BufferAttribute getAttribute]( [param:String name] )</h3>
|
|
<p>Restituisce l'[page:BufferAttribute attributo] con il nome specificato.</p>
|
|
|
|
<h3>[method:BufferAttribute getIndex] ()</h3>
|
|
<p>Restituisce il buffer di [page:.index].</p>
|
|
|
|
<h3>[method:Boolean hasAttribute]( [param:String name] )</h3>
|
|
<p>Restituisce `true` se l'attributo con il nome specificato esiste.</p>
|
|
|
|
<h3>[method:this lookAt] ( [param:Vector3 vector] )</h3>
|
|
<p>
|
|
vector - Un vettore world da guardare.<br /><br />
|
|
|
|
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.
|
|
</p>
|
|
|
|
<h3>[method:undefined normalizeNormals]()</h3>
|
|
<p>
|
|
Ogni vettore normale, in una geometria, deve avere magnitudine 1.
|
|
Ciò correggerà l'illuminazione sulle superfici geometriche.
|
|
</p>
|
|
|
|
<h3>[method:this rotateX] ( [param:Float radians] )</h3>
|
|
<p>
|
|
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.
|
|
</p>
|
|
|
|
<h3>[method:this rotateY] ( [param:Float radians] )</h3>
|
|
<p>
|
|
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.
|
|
</p>
|
|
|
|
<h3>[method:this rotateZ] ( [param:Float radians] )</h3>
|
|
<p>
|
|
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.
|
|
</p>
|
|
|
|
<h3>[method:this scale] ( [param:Float x], [param:Float y], [param:Float z] )</h3>
|
|
<p>
|
|
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.
|
|
</p>
|
|
|
|
<h3>[method:this setAttribute]( [param:String name], [param:BufferAttribute attribute] )</h3>
|
|
<p>
|
|
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.
|
|
</p>
|
|
|
|
<h3>[method:undefined setDrawRange] ( [param:Integer start], [param:Integer count] )</h3>
|
|
<p>
|
|
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.
|
|
</p>
|
|
|
|
<h3>[method:this setFromPoints] ( [param:Array points] )</h3>
|
|
<p>Imposta gli attributi per questa BufferGeometry da un array di punti.</p>
|
|
|
|
<h3>[method:this setIndex] ( [param:BufferAttribute index] )</h3>
|
|
<p>Imposta il buffer [page:.index].</p>
|
|
|
|
<h3>[method:Object toJSON]()</h3>
|
|
<p>Converte la buffer geometry al formato three.js [link:https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 JSON Object/Scene].</p>
|
|
|
|
<h3>[method:BufferGeometry toNonIndexed]()</h3>
|
|
<p>Restituisce una versione non indicizzata di una BufferGeometry indicizzata.</p>
|
|
|
|
<h3>[method:this translate] ( [param:Float x], [param:Float y], [param:Float z] )</h3>
|
|
<p>
|
|
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.
|
|
</p>
|
|
|
|
<h2>Source</h2>
|
|
|
|
<p>
|
|
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
|
|
</p>
|
|
</body>
|
|
</html>
|
|
|