# How get faces( triangle ) data from buffergeometry

Hey guys,
How can I get faces data ( a,b,c vectors ) to generate Triangle from buffergeometry loaded via GLTF ? I tried with Index data but just got wrong results Buffer geometries can be indexed or non-indexed. In the first case, you get the triangle indices (a,b,c) like so:

``````const index = geometry.getIndex();

for ( let i = 0; i < index.count; i += 3 ) {

const a = index.getX( i );
const b = index.getX( i + 1 );
const c = index.getX( i + 2 );

}
``````

If the geometry is non-indexed, use the `position` attribute which holds the actual vertices.

``````const position = geometry.getAttribute( 'position' );

for ( let i = 0; i < position.count; i += 3 ) {

const a = i;
const b = i + 1;
const c = i + 2;

}
``````

The face indices can now be used to retrieve the actual vertex data from the buffer attributes.

6 Likes

hmm, Thank you, but as I read in the Doc :

### .getX ( index : Integer ) : Number

Returns the x component of the vector at the given index.

### .getY ( index : Integer ) : Number

Returns the y component of the vector at the given index.

### .getZ ( index : Integer ) : Number

Returns the z component of the vector at the given index.

so “a” is a Number of x component or no, it’s the “a” Vector of a face/triangle ?
`const a = index.getX( i );`

The methods are just intended to make the access to buffer data easier so you don’t have to worry about item size or interleaved data.

The `Number` definition just means the type of the return value is a `Number`.