summaryrefslogtreecommitdiff
path: root/geometry.py
diff options
context:
space:
mode:
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)