[Bf-blender-cvs] [bb2acc0a235] usd-importer-T81257-merge: USDStageReader::prune_by_visibility() refactor.

makowalski noreply at git.blender.org
Tue Jun 22 04:13:35 CEST 2021


Commit: bb2acc0a2350b714c7b1b8927d8af95943b81b8b
Author: makowalski
Date:   Mon Jun 21 13:11:10 2021 -0400
Branches: usd-importer-T81257-merge
https://developer.blender.org/rBbb2acc0a2350b714c7b1b8927d8af95943b81b8b

USDStageReader::prune_by_visibility() refactor.

Per suggestion by Sybren in his review, flipped the samanitcs
for prune_by_visibility() to return true=include and false=exclude.
Also simplified the conditional logic to reduce nesting.

===================================================================

M	source/blender/io/usd/intern/usd_reader_stage.cc

===================================================================

diff --git a/source/blender/io/usd/intern/usd_reader_stage.cc b/source/blender/io/usd/intern/usd_reader_stage.cc
index 532d38a5860..272002498e1 100644
--- a/source/blender/io/usd/intern/usd_reader_stage.cc
+++ b/source/blender/io/usd/intern/usd_reader_stage.cc
@@ -112,25 +112,34 @@ USDPrimReader *USDStageReader::create_reader(const pxr::UsdPrim &prim)
   return nullptr;
 }
 
-/* Returns true if the given prim should be excluded from the
- * traversal because it's invisible. */
+/* Returns true if the given prim should be included in the
+ * traversal based on the import options and the prim's visibility
+ * attribute.  Note that the prim will be trivially included
+ * if it has no visibility attribute or if the visibility
+ * is inherited. */
 bool USDStageReader::prune_by_visibility(const pxr::UsdGeomImageable &imageable) const
 {
-  if (!(imageable && params_.import_visible_only)) {
-    return false;
+  if (!params_.import_visible_only) {
+    /* Invisible prims are allowed. */
+    return true;
   }
 
-  if (pxr::UsdAttribute visibility_attr = imageable.GetVisibilityAttr()) {
-    // Prune if the prim has a non-animating visibility attribute and is
-    // invisible.
-    if (!visibility_attr.ValueMightBeTimeVarying()) {
-      pxr::TfToken visibility;
-      visibility_attr.Get(&visibility);
-      return visibility == pxr::UsdGeomTokens->invisible;
-    }
+  pxr::UsdAttribute visibility_attr = imageable.GetVisibilityAttr();
+
+  if (!visibility_attr) {
+    /* No visibility attribute, so allow. */
+    return true;
   }
 
-  return false;
+  /* Include if the prim has an animating visibility attribute or is not invisible. */
+
+  if (visibility_attr.ValueMightBeTimeVarying()) {
+    return true;
+  }
+
+  pxr::TfToken visibility;
+  visibility_attr.Get(&visibility);
+  return visibility != pxr::UsdGeomTokens->invisible;
 }
 
 /* Returns true if the given prim should be excluded from the
@@ -213,7 +222,7 @@ USDPrimReader *USDStageReader::collect_readers(Main *bmain, const pxr::UsdPrim &
       return nullptr;
     }
 
-    if (prune_by_visibility(imageable)) {
+    if (!prune_by_visibility(imageable)) {
       return nullptr;
     }
   }



More information about the Bf-blender-cvs mailing list