From Points Cloud to Surface..

Hi all,
i’m in trouble about writing and application in opengl c++. I have an array of coordinate x,y,z which rappresent a human face,with very high density points. Now i want to draw the surface rappresented by these points.
I tried with opengl NURBS but got some problem with knot vector, and before start deep inside this problem, i want to ask you if there is
some algo easy to implement ( i no need “ultra real time even faster
algo”). I read something about triangulation, cause i think i no need
nurbs due to denstity of points that is very high (i’m quite able to
see the face in points version).

Thx in advice.

I’m by no means an expert but I believe this falls under the general heading of “surface reconstruction”. Hugues Hoppe, for example, has produced a vast body of research in this area.

If it’s just an unordered list of random points, look up building convex hulls,
although that would give you a solid volume instead of a surface.

It’s a non-trivial problem. Haven’t ever tried to do this myself, but I think you are on the right track thinking about triangulation, (a type of surface reconstruction). Since you have a dense mesh, it might work to make triangles from each point with the two points closest to it. I expect that you’d have to go in and fix things up with a modeler afterward. Convex hulls would probably not work for you. Imagine stretching a very tight, nylon, stocking over someone’s face. That’s what the convex hull of a face would look like. There would be no eye sockets or indentations in the surface at all. You’d lose most of the detail in the shape of the face.

Rightly said, This problem is not straight. Also triangulation is a wild option as for any two points, it is difficult to decide the
the third point that may be the actual triangle of the surface.

But you can at least go for Delauny Traingulation. It will give you some surface representation. Once you form Delauny Triangulation then it is easy to compute normal and hence get the surface well lighted.