Check2xsf and Jmol
Jmol is a particularly nice program for being written in Java, and hence very portable, and also remarkably fast. Its development is currently (Feb 2007) very active, with useful new features being added rapidly. It is still poor at crystals, but, as of about version 10.2, it can do isosurfaces. At the time of writing, Jmol version 11 is still considered beta software, however, its error messages are much superior to 10.2's, and it has additional functionality as well.
Although Jmol claims to do everything that rasmol does, they parse pdb files differently. This sometimes results in Jmol being unable to work out any of the atom types in a pdb file which rasmol can read correctly.
Jmol likes 3D data to be in .cube files, which also contain the atomic positions. Simply reading a .cube file using the File menu reads only the atomic data. To produce an isosurface, one must open the script window from the file menu, and type a whole command:
isosurface rho 0.5 "ethene.cube"
The label, "rho", can be almost anything, except certain keywords. Beware that "charge" is a prohibited keyword here.
One has a choice of opaque isosurfaces, meshes, and translucency. The latter is implemented by using alternate pixels of surface colour and whatever lies behind, and is an interesting test of one's monitor.
isosurface rho nofill meshor
isosurface rho fill nomesh color isosurface translucent
Jmol can plot multiple isosurfaces simultaneously, either different values from the same dataset, or from different datasets. Thus to plot psi with phase one can try
$ check2xsf --cube -b=6 ethene.check ethene.b=6.cubeand then in Jmol
isosurface pos 0.3 "ethene.b=6.cube" isosurface neg -0.3 "ethene.b=6.cube"yielding:
Unlike with XCrysDen, one can go further, showing the pi and sigma bonds simultaneously:
isosurface sigma 0.5 "ethene.b=1.cube" color atoms translucent
Again unlike XCrysDen, one can specify arbitrary cut planes. However, the syntax is nasty if your molecule is planar and the co-ordinate origin is nowhere near the centre of the molecule. So a very simple example, for which version 11 of Jmol is required:
isosurface delete isosurface plane (atomno=1)(atomno=2)(atomno=3) color "ethene.cube"
Finally, an example showing two isosurfaces from the same data set. Note that the color command acts on the last selected isosurface, not all isosurfaces.
isosurface high 1.6 "ethene.cube" color isosurface green isosurface low 0.5 "ethene.cube" color isosurface translucent
(A slightly odd artifact has appeared where the inner isosurface intersects the carbon atoms)
Finally, if printing from Jmol, remember to set the background to white. This can be achieved by right-clicking on the canvas, and selecting Color, Background, White. For most usage (i.e. LaTeX), exporting to png and using bmp2eps is probably the best way of getting images out of Jmol. Using JPEG is unlikely to be satisfactory, unless you like fuzzy edges around your atoms. Note that versions of Jmol prior to 11 fail to compress their png output, so do not leave the resulting huge files lying around.