123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319 |
- <!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>
|