summaryrefslogtreecommitdiff
path: root/geometry.py
diff options
context:
space:
mode:
authorAnthony LaTorre <tlatorre9@gmail.com>2011-08-11 15:09:16 -0400
committerAnthony LaTorre <tlatorre9@gmail.com>2011-08-11 15:09:16 -0400
commit9d68f8ea2b6a64e83195f16aa066caac5eeb8fae (patch)
tree828d3544c4783e25be3f5931a952b14342fc19aa /geometry.py
parent23b4bedf43f2ff120c1178c3445e39b8735030f3 (diff)
downloadchroma-9d68f8ea2b6a64e83195f16aa066caac5eeb8fae.tar.gz
chroma-9d68f8ea2b6a64e83195f16aa066caac5eeb8fae.tar.bz2
chroma-9d68f8ea2b6a64e83195f16aa066caac5eeb8fae.zip
add consume() to itertoolset. checksum the number of bits shifted in each iteration of the bounding volume hierarchy construction. only cache the bounding volume hierarchy information.
Diffstat (limited to 'geometry.py')
-rw-r--r--geometry.py36
1 files changed, 12 insertions, 24 deletions
diff --git a/geometry.py b/geometry.py
index 579e01d..81bc82d 100644
--- a/geometry.py
+++ b/geometry.py
@@ -257,28 +257,9 @@ class Geometry(object):
pass
checksum = md5(str(bits))
-
+ checksum.update(str(shift))
checksum.update(self.mesh.vertices)
checksum.update(self.mesh.triangles)
- checksum.update(self.colors)
- checksum.update(self.solid_id)
- checksum.update(self.material1_index)
- checksum.update(self.material2_index)
- checksum.update(self.surface_index)
-
- for material in self.unique_materials:
- checksum.update(material.refractive_index)
- checksum.update(material.absorption_length)
- checksum.update(material.scattering_length)
-
- for surface in self.unique_surfaces:
- if surface is not None:
- checksum.update(surface.detect)
- checksum.update(surface.absorb)
- checksum.update(surface.reflect_diffuse)
- checksum.update(surface.reflect_specular)
- else:
- checksum.update(str(None))
cache_dir = os.path.expanduser('~/.chroma')
cache_file = checksum.hexdigest()
@@ -291,9 +272,16 @@ class Geometry(object):
else:
print 'loading cache.'
data = pickle.load(f)
- self.mesh.triangles = self.mesh.triangles[data['reorder']]
- del data['reorder']
- for key, value in data.items():
+
+ reorder = data.pop('reorder')
+ self.mesh.triangles = self.mesh.triangles[reorder]
+ self.material1_index = self.material1_index[reorder]
+ self.material2_index = self.material2_index[reorder]
+ self.surface_index = self.surface_index[reorder]
+ self.colors = self.colors[reorder]
+ self.solid_id = self.solid_id[reorder]
+
+ for key, value in data.iteritems():
setattr(self, key, value)
f.close()
return
@@ -362,7 +350,7 @@ class Geometry(object):
f = open(cache_path, 'wb')
data = {}
- for key in ['material1_index', 'material2_index', 'surface_index', 'colors', 'solid_id', 'lower_bounds', 'upper_bounds', 'node_map', 'node_map_end', 'layers', 'first_node']:
+ for key in ['lower_bounds', 'upper_bounds', 'node_map', 'node_map_end', 'layers', 'first_node']:
data[key] = getattr(self, key)
data['reorder'] = reorder
pickle.dump(data, f, -1)