 # Implicit surfaces and normals

No OpenGL specific question, but anyways…

Anyone knows how to obtain a normalvector for any given point on an implicit surface? Trying to create a metaball engine, but can’t get the normals to work. Since I can create the polygons needed to draw the object(s), I can calculate the facenormal. But I need vertexnormals. I know I can calculate the vertexnormals out of the facenormals, but then I have to know the adjacent faces, which I don’t (because of the way the engine currently works). I can loop through all faces, and find all adjacent faces, but I really doubt this is doable in realtime.

hehe, I had the same problem 2 weeks ago, thx to Relic, I manage to do it.
Here is how to do it : the normal vector is the gradient, ie the vector of the partial derivate.
If I(x, y, z) is the scalar field, then, the normal in [x, y, z] a corner of a cell of your grid is :
X=I(x+1,y,z)-I(x-1,y,z)
Y=I(x,y+1,z)-I(x,y-1,z)
Z=…
then normalize it

To compute the nomal in a point, you have to interpolate using the normal in the corners.
Tell me if u don’t understand.
If u want, I’ve made a librarie to render IsoSurface.It looks great [This message has been edited by nikopol0 (edited 08-05-2000).]