diff --git a/blender_asset_tracer/trace/expanders.py b/blender_asset_tracer/trace/expanders.py index 540be0f..f90d46a 100644 --- a/blender_asset_tracer/trace/expanders.py +++ b/blender_asset_tracer/trace/expanders.py @@ -123,10 +123,24 @@ def _expand_curve(block: blendfile.BlendFileBlock): @dna_code('GR') def _expand_group(block: blendfile.BlendFileBlock): + log.debug('Block: %s', block) + objects = block.get_pointer((b'gobject', b'first')) for item in iterators.listbase(objects): yield item.get_pointer(b'ob') + # Recurse through child collections. + try: + children = block.get_pointer((b'children', b'first')) + except KeyError: + # 'children' was introduced in Blender 2.8 collections + pass + else: + for child in iterators.listbase(children): + subcoll = child.get_pointer(b'collection') + log.debug('recursing into child collection %s', subcoll.id_name) + yield from _expand_group(subcoll) + @dna_code('LA') def _expand_lamp(block: blendfile.BlendFileBlock): diff --git a/blender_asset_tracer/trace/result.py b/blender_asset_tracer/trace/result.py index 8924411..b22a527 100644 --- a/blender_asset_tracer/trace/result.py +++ b/blender_asset_tracer/trace/result.py @@ -153,6 +153,10 @@ class BlockUsage: self._abspath = as_path.resolve() except FileNotFoundError: self._abspath = as_path + log.info('Resolving %s rel to %s → %s', + self.asset_path, self.block.bfile.filepath, self._abspath) + else: + log.info('Reusing abspath %s', self._abspath) return self._abspath abspath = property(__fspath__)