summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bin/chroma-bvh6
-rw-r--r--chroma/bvh/bvh.py7
2 files changed, 9 insertions, 4 deletions
diff --git a/bin/chroma-bvh b/bin/chroma-bvh
index ed3b500..d058441 100644
--- a/bin/chroma-bvh
+++ b/bin/chroma-bvh
@@ -54,7 +54,7 @@ def node_swap(cache, args):
context = create_cuda_context()
for opt_layer_index in opt_range:
- original_parent_area = bvh.get_layer(opt_layer_index-1).area()
+ original_parent_area = bvh.get_layer(opt_layer_index-1).area_fixed()
print 'Optimizing layer %d through node swaps' % opt_layer_index
opt_layer = bvh.get_layer(opt_layer_index)
@@ -66,7 +66,7 @@ def node_swap(cache, args):
bvh.nodes = new_nodes
print 'Original parent area (layer %d): %e' % (opt_layer_index, original_parent_area)
- print 'New parent area (layer %d): %e' % (opt_layer_index, bvh.get_layer(opt_layer_index-1).area())
+ print 'New parent area (layer %d): %e' % (opt_layer_index, bvh.get_layer(opt_layer_index-1).area_fixed())
print 'Saving new BVH...'
context.pop()
@@ -133,7 +133,7 @@ def print_stat(geo_name, bvh_name, mesh_hash, bvh):
node_str = 'node, '
else:
node_str = 'nodes,'
- area = layer.area()
+ area = layer.area_fixed()
areas.append(area)
print ' % 3d) % 10s %s area = % 9e' % \
(i, len(layer), node_str, area)
diff --git a/chroma/bvh/bvh.py b/chroma/bvh/bvh.py
index f530b09..f2ef7df 100644
--- a/chroma/bvh/bvh.py
+++ b/chroma/bvh/bvh.py
@@ -229,7 +229,12 @@ class BVHLayerSlice(object):
'''Return number of nodes in this layer'''
return len(self.nodes)
+ def area_fixed(self):
+ '''Return the surface area of all the nodes in this layer in
+ fixed point units.'''
+ node_area(self.nodes)
+
def area(self):
'''Return the surface area of all the nodes in this layer in world
units.'''
- return node_area(self.nodes) * self.world_coords.world_scale**2
+ return self.area_fixed() * self.world_coords.world_scale**2