code: def md5(self):
          
          # start with transforms hash
          hashes = [self.graph.md5()]
          for g in self.geometry.values():
              if hasattr(g, 'md5'):
                  hashes.append(g.md5())
              elif hasattr(g, 'tostring'):
                  hashes.append(str(hash(g.tostring())))
              else:
                  # try to just straight up hash
                  # this may raise errors
                  hashes.append(str(hash(g)))
  
          md5 = util.md5_object(''.join(hashes))
  
          return md5
docs: MD5 of scene which will change when meshes or
          transforms are changed
  
          Returns
          --------
          hashed: str, MD5 hash of scene