Your question is manifold.
First please realise, that your point cloud contains points, which are passed to you at an arbitrary ordering. At least not an order, that you know of or which you can easily retrieve. Anyway, eventually you’ll end up having a point array, which does have an order, however arbitrary that may be. Meaning: you have point coordinates at position “0” of that array, point coordinates at position “1” of that array, point coordinates at position “2” of that array, and so on. Lets call those array positions “index”, or “indices”.
And you’ll want to have faces defined through those points. These will be triangle faces, because that’s the way three.js is organised. I’ve done that for a small part of your model:
Now you’ll need to tell three.js which points from your point coordinate array form the endpoints of each(!) triangle. You’ll end up with a series of triplets of indices:
Note, these are random numbers which I assigned to each vertex. Although they seem to be ordered, there’s no way you can rely on them being ordered like that.
The definition of triangles might look something like the following. Please note, these are triplets of integer indices into the points array having float coordinate values:
8, 9, 15,
9, 16, 15,
9, 10, 16,
10, 17, 16,
10, 11, 17,
and so on. You’ll get the idea.
Note, that the data model of BufferGeometry has (can have) both a “position” array and an “index” array:
A few things to consider:
All triangles need to be specified using the same winding order [clockwise | counterclockwise]. This determines the direction of the face normal (whether the face is facing you, or is facing away from you).
Depending on the complexity of your point cloud, to manually provide missing index data is a lot of work for just one frame. If you need to repeat that on every new frame, I’d call that approach not viable.
That’s why I advised you to start earlier in your workflow, and try to get the index information exported along with the point coordinates.