
Hi Charlie, I've put the Linux Chimera 1.2199 headers on the source download page. I'll put the Mac headers up and email you when I figure out where they are. The BILD graphics works by creating a VRML model. It creates a VRML string and then uses Chimera's VRML rendering. Creating the string and parsing it could take some time for a large set of triangles. That is done in Python -- see the chimera/share/Bld2VRML directory in your Chimera distribution for exactly what translations are done. My impression is that our VRML rendering speed is also very slow and memory inefficient, but this may be based on VRML scenes with spheres and cylinders where you cannot control the subdivision level. For fast triangulated surface rendering I would suggest using the Chimera _surface.Surface_Model class. This is the model type that is used for volume contour surfaces and multiscale model surfaces. It just renders sets of triangles. It is fairly well optimized for rendering speed and memory use but does not support triangle strips or fans. There is some documentation in the Chimera Programmer's Reference Guide: http://www.cgl.ucsf.edu/chimera/docs/ProgrammersGuide/Reference/surface.html I include an example making such a model below. It can also be useful to look at the C++ header from the Chimera source code chimera/contrib/_surface/surfmodel.h to see all the attributes of Surface_Model objects. The PDB file reader is implemented in C++ and I believe there is no Python interface to read from a string. The C++ code can read from a C++ stream (which could be a string stream), but there does not appear to be a Python interface. I'd suggest requesting this feature in an email to chimera-bugs@cgl.ucsf.edu (also used for new feature requests). Tom ------ Example Python program to create a surface model in Chimera. # ----------------------------------------------------------------------------- # vertices is a list of (x,y,z) vertex positions. # triangles is a list of (i0,i1,i2) vertex index triples defining triangles. # The order of the vertex indices in the triangles array is used to # determining lighting normals. # def show_geometry(vertices, triangles, rgba): # _surface requires float32 and int32 arrays import Numeric varray = Numeric.array(vertices, Numeric.Float32) tarray = Numeric.array(triangles, Numeric.Int32) import _surface sm = _surface.Surface_Model() g = sm.add_group(varray, tarray, rgba) g.set_display_style(g.Mesh) # Mesh or Solid (default) g.set_normal_orientation(g.Righthanded) # Outward normal Righthanded (default) or Lefthanded # See contrib/_surface/surfmodel.h for more attributes import chimera chimera.openModels.add([sm]) return sm # ----------------------------------------------------------------------------- # Tetrahedron exampl;e. # vertices = ((0,0,0), (1,0,0), (0,1,0), (0,0,1)) triangles = ((0,2,1), (0,1,3), (0,3,2), (1,2,3)) rgba = (.7,.7,.7,1) show_geometry(vertices, triangles, rgba)