[Bf-blender-cvs] [1ac85c7e7e4] usd-importer-T81257-merge: Refactor USDStageReader::create_reader().

makowalski noreply at git.blender.org
Sat Jun 19 02:00:07 CEST 2021


Commit: 1ac85c7e7e4d625c1bebeb46f323bfd6e63cae6f
Author: makowalski
Date:   Fri Jun 18 14:29:26 2021 -0400
Branches: usd-importer-T81257-merge
https://developer.blender.org/rB1ac85c7e7e4d625c1bebeb46f323bfd6e63cae6f

Refactor USDStageReader::create_reader().

Added USDStageReader::create_reader() and
USDStageReader::create_reader_if_allowed() member
functions, to replace the static implementations of
these functions.  This reduces the number of required
arguments when calling these functions and clarifies
the intent through more descriptive naming.

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

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

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

diff --git a/source/blender/io/usd/intern/usd_capi_import.cc b/source/blender/io/usd/intern/usd_capi_import.cc
index 410935bbc89..a34e6c40369 100644
--- a/source/blender/io/usd/intern/usd_capi_import.cc
+++ b/source/blender/io/usd/intern/usd_capi_import.cc
@@ -500,8 +500,8 @@ CacheReader *CacheReader_open_usd_object(CacheArchiveHandle *handle,
     USD_CacheReader_free(reader);
   }
 
-  // TODO: The handle does not have the proper import params or settings
-  USDPrimReader *usd_reader = USDStageReader::create_reader(archive, prim);
+  /* TODO(makowalski): The handle does not have the proper import params or settings. */
+  USDPrimReader *usd_reader = archive->create_reader(prim);
 
   if (usd_reader == NULL) {
     /* This object is not supported */
diff --git a/source/blender/io/usd/intern/usd_reader_stage.cc b/source/blender/io/usd/intern/usd_reader_stage.cc
index c89606bbdfc..ad495692e33 100644
--- a/source/blender/io/usd/intern/usd_reader_stage.cc
+++ b/source/blender/io/usd/intern/usd_reader_stage.cc
@@ -59,63 +59,59 @@ bool USDStageReader::valid() const
   return stage_;
 }
 
-USDPrimReader *USDStageReader::create_reader(const pxr::UsdPrim &prim,
-                                             const USDImportParams &params,
-                                             const ImportSettings &settings)
+USDPrimReader *USDStageReader::create_reader_if_allowed(const pxr::UsdPrim &prim)
 {
   USDPrimReader *reader = nullptr;
 
-  if (params.import_cameras && prim.IsA<pxr::UsdGeomCamera>()) {
-    reader = new USDCameraReader(prim, params, settings);
+  if (params_.import_cameras && prim.IsA<pxr::UsdGeomCamera>()) {
+    reader = new USDCameraReader(prim, params_, settings_);
   }
-  else if (params.import_curves && prim.IsA<pxr::UsdGeomBasisCurves>()) {
-    reader = new USDCurvesReader(prim, params, settings);
+  else if (params_.import_curves && prim.IsA<pxr::UsdGeomBasisCurves>()) {
+    reader = new USDCurvesReader(prim, params_, settings_);
   }
-  else if (params.import_curves && prim.IsA<pxr::UsdGeomNurbsCurves>()) {
-    reader = new USDNurbsReader(prim, params, settings);
+  else if (params_.import_curves && prim.IsA<pxr::UsdGeomNurbsCurves>()) {
+    reader = new USDNurbsReader(prim, params_, settings_);
   }
-  else if (params.import_meshes && prim.IsA<pxr::UsdGeomMesh>()) {
-    reader = new USDMeshReader(prim, params, settings);
+  else if (params_.import_meshes && prim.IsA<pxr::UsdGeomMesh>()) {
+    reader = new USDMeshReader(prim, params_, settings_);
   }
-  else if (params.import_lights && prim.IsA<pxr::UsdLuxLight>()) {
-    reader = new USDLightReader(prim, params, settings);
+  else if (params_.import_lights && prim.IsA<pxr::UsdLuxLight>()) {
+    reader = new USDLightReader(prim, params_, settings_);
   }
-  else if (params.import_volumes && prim.IsA<pxr::UsdVolVolume>()) {
-    reader = new USDVolumeReader(prim, params, settings);
+  else if (params_.import_volumes && prim.IsA<pxr::UsdVolVolume>()) {
+    reader = new USDVolumeReader(prim, params_, settings_);
   }
   else if (prim.IsA<pxr::UsdGeomImageable>()) {
-    reader = new USDXformReader(prim, params, settings);
+    reader = new USDXformReader(prim, params_, settings_);
   }
 
   return reader;
 }
 
-// TODO(makowalski): The handle does not have the proper import params or settings
-USDPrimReader *USDStageReader::create_reader(const USDStageReader *archive,
-                                             const pxr::UsdPrim &prim)
+USDPrimReader *USDStageReader::create_reader(const pxr::UsdPrim &prim)
 {
   USDPrimReader *reader = nullptr;
 
   if (prim.IsA<pxr::UsdGeomCamera>()) {
-    reader = new USDCameraReader(prim, archive->params(), archive->settings());
+    reader = new USDCameraReader(prim, params_, settings_);
   }
   else if (prim.IsA<pxr::UsdGeomBasisCurves>()) {
-    reader = new USDCurvesReader(prim, archive->params(), archive->settings());
+    reader = new USDCurvesReader(prim, params_, settings_);
   }
   else if (prim.IsA<pxr::UsdGeomNurbsCurves>()) {
-    reader = new USDNurbsReader(prim, archive->params(), archive->settings());
+    reader = new USDNurbsReader(prim, params_, settings_);
   }
   else if (prim.IsA<pxr::UsdGeomMesh>()) {
-    reader = new USDMeshReader(prim, archive->params(), archive->settings());
+    reader = new USDMeshReader(prim, params_, settings_);
   }
   else if (prim.IsA<pxr::UsdLuxLight>()) {
-    reader = new USDLightReader(prim, archive->params(), archive->settings());
+    reader = new USDLightReader(prim, params_, settings_);
   }
   else if (prim.IsA<pxr::UsdVolVolume>()) {
-    reader = new USDVolumeReader(prim, archive->params(), archive->settings());
+    reader = new USDVolumeReader(prim, params_, settings_);
   }
   else if (prim.IsA<pxr::UsdGeomImageable>()) {
-    reader = new USDXformReader(prim, archive->params(), archive->settings());
+    reader = new USDXformReader(prim, params_, settings_);
   }
   return reader;
 }
@@ -258,7 +254,7 @@ USDPrimReader *USDStageReader::collect_readers(Main *bmain, const pxr::UsdPrim &
     }
   }
 
-  USDPrimReader *reader = USDStageReader::create_reader(prim, params_, settings_);
+  USDPrimReader *reader = create_reader_if_allowed(prim);
 
   if (!reader) {
     return nullptr;
diff --git a/source/blender/io/usd/intern/usd_reader_stage.h b/source/blender/io/usd/intern/usd_reader_stage.h
index 7cd30ef0af9..214ea8b4af9 100644
--- a/source/blender/io/usd/intern/usd_reader_stage.h
+++ b/source/blender/io/usd/intern/usd_reader_stage.h
@@ -49,14 +49,9 @@ class USDStageReader {
   USDStageReader(const char *filename);
   ~USDStageReader();
 
-  static USDPrimReader *create_reader(const pxr::UsdPrim &prim,
-                                      const USDImportParams &params,
-                                      const ImportSettings &settings);
-
-  // This version of create_reader() does not filter by primitive type.  I.e.,
-  // it will convert any prim to a reader, if possible, regardless of the
-  // primitive types specified by the user in the import options.
-  static USDPrimReader *create_reader(const USDStageReader *archive, const pxr::UsdPrim &prim);
+  USDPrimReader *create_reader_if_allowed(const pxr::UsdPrim &prim);
+
+  USDPrimReader *create_reader(const pxr::UsdPrim &prim);
 
   void collect_readers(struct Main *bmain,
                        const USDImportParams &params,



More information about the Bf-blender-cvs mailing list