diff options
| -rw-r--r-- | chroma/bvh/bvh.py | 14 | ||||
| -rw-r--r-- | chroma/bvh/grid.py | 4 | ||||
| -rw-r--r-- | chroma/bvh/simple.py | 2 | 
3 files changed, 12 insertions, 8 deletions
| diff --git a/chroma/bvh/bvh.py b/chroma/bvh/bvh.py index e8c128b..1c26088 100644 --- a/chroma/bvh/bvh.py +++ b/chroma/bvh/bvh.py @@ -196,8 +196,12 @@ class BVH(object):          '''Returns the number of nodes in this BVH'''          return len(self.nodes) -def node_area(nodes): -    '''Returns the area of a list of nodes in fixed point units.''' +def node_areas(nodes): +    '''Returns the areas of each node in an array of nodes in fixed point units. + +       ``nodes``: ndarray(dtype=uint4) +          array of packed BVH nodes +    '''      unpacked = unpack_nodes(nodes)      delta = np.empty(shape=len(nodes),                        dtype=[('x', float), ('y', float), ('z', float)]) @@ -207,7 +211,7 @@ def node_area(nodes):      half_area = delta['x']*delta['y'] + delta['y']*delta['z'] \          + delta['z']*delta['x'] -    return 2.0 * half_area.sum() +    return 2.0 * half_area  class BVHLayerSlice(object):      '''A single layer in a bounding volume hierarchy represented as a slice @@ -232,9 +236,9 @@ class BVHLayerSlice(object):      def area_fixed(self):          '''Return the surface area of all the nodes in this layer in          fixed point units.''' -        return node_area(self.nodes) +        return node_areas(self.nodes).sum()      def area(self):          '''Return the surface area of all the nodes in this layer in world          units.''' -        return self.area_fixed() * self.world_coords.world_scale**2 +        return self.area_fixed().sum() * self.world_coords.world_scale**2 diff --git a/chroma/bvh/grid.py b/chroma/bvh/grid.py index 0b36a2f..5392976 100644 --- a/chroma/bvh/grid.py +++ b/chroma/bvh/grid.py @@ -1,4 +1,4 @@ -from chroma.bvh.bvh import BVH, node_area +from chroma.bvh.bvh import BVH, node_areas  from chroma.gpu.bvh import create_leaf_nodes  def make_recursive_grid_bvh(mesh, bits=11): @@ -23,6 +23,6 @@ def make_recursive_grid_bvh(mesh, bits=11):      morton_codes[argsort] -    print node_area(leaf_nodes) * world_coords.world_scale**2 +    print node_areas(leaf_nodes).sum() * world_coords.world_scale**2 diff --git a/chroma/bvh/simple.py b/chroma/bvh/simple.py index 6ce45e7..f87f6d8 100644 --- a/chroma/bvh/simple.py +++ b/chroma/bvh/simple.py @@ -1,4 +1,4 @@ -from chroma.bvh.bvh import BVH, node_area +from chroma.bvh.bvh import BVH  from chroma.gpu.bvh import create_leaf_nodes, merge_nodes, concatenate_layers  def make_simple_bvh(mesh, degree): | 
