From: Miguel <mi...@jm...> - 2006-05-26 18:20:05
|
> I can't figure out what is wrong with the isosurface specular display. > > Please look at > > http://www.stolaf.edu/people/hansonr/jmol/test/proto/new.htm?scriptno=3D= 3 > > Why the specular problem there on the lower right? I think if we could > solve > this problem, isosurfaces would look a whole lot better. > > All suggestions welcome. It is a difficult problem that is somewhat hard to explain. The question relates to how shading is calculated. There are three main types: - flat shading - Gouraud shading - Phong shading Flat shading simply uses the triangle surface normal to apply the shading= . That is, the entire triangle has the same color. That makes the tessellation very obvious. I may be mistaken, but I think that there may be an option to the 'isosurface' command that allows you to render with flat shading. Gouraud and Phong shading involve calculating the normal at each vertex. This is done by averaging the normals of all of the triangles that touch the vertex. How they are averaged can be important. If I recall correctly= , Jml currently uses a simple average. Another algorithm that might be better would weight the faces that meet at a vertex so that faces with a lot of surface area have more impact on the vertex normal. Now that you have the vertex normals, you need to figure out how you are going to interpolate across the face of the triangle. Gouraud shading essentially does a linear interpolation of the pixels between the vertices. This is what most graphics cards do because it is fast and relatively simple. This is basically what the Jmol g3d package does. It takes the RGB values= at the 3 corners and linearly interpolates between those RGB values. This= allows relatively smooth transitions of color as well as lighting. Phong shading actually interpolates the normals at each point of the surface. This gives much better results because the specular hiliting is calculated at each point using the normal at that point. Since the specular lighting function is so non-linear you get better results. The problem with Phong shading is that it is very expensive. Basically, you need to do vector transformations for each pixel. I may be out of date, but I suspect that Phong shading is only available on very high end= graphics hardware. If results are unacceptably, it is generally less computationally expensive to increase the number of sample points and stick with Gouraud shading. Miguel |