[Bf-blender-cvs] [555a31dbca9] usd-importer-T81257-merge: USD Import: schema initialization and validation.

makowalski noreply at git.blender.org
Fri Mar 12 09:30:36 CET 2021


Commit: 555a31dbca9a63c6e7bf6de492d09a5ea1ba6be5
Author: makowalski
Date:   Fri Mar 12 03:23:20 2021 -0500
Branches: usd-importer-T81257-merge
https://developer.blender.org/rB555a31dbca9a63c6e7bf6de492d09a5ea1ba6be5

USD Import: schema initialization and validation.

Now initializing schemas in the constuctor initialization
lists of reader classes.  Checking schemas to validate
readers. Additional, minor cleanup.

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

M	source/blender/io/usd/intern/usd_reader_curve.cc
M	source/blender/io/usd/intern/usd_reader_curve.h
M	source/blender/io/usd/intern/usd_reader_geom.h
M	source/blender/io/usd/intern/usd_reader_instance.cc
M	source/blender/io/usd/intern/usd_reader_instance.h
M	source/blender/io/usd/intern/usd_reader_light.h
M	source/blender/io/usd/intern/usd_reader_mesh.cc
M	source/blender/io/usd/intern/usd_reader_mesh.h
M	source/blender/io/usd/intern/usd_reader_nurbs.h
M	source/blender/io/usd/intern/usd_reader_prim.cc
M	source/blender/io/usd/intern/usd_reader_prim.h
M	source/blender/io/usd/intern/usd_reader_volume.cc
M	source/blender/io/usd/intern/usd_reader_volume.h
M	source/blender/io/usd/intern/usd_reader_xform.h

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

diff --git a/source/blender/io/usd/intern/usd_reader_curve.cc b/source/blender/io/usd/intern/usd_reader_curve.cc
index 1bc8568d64d..7746245ecfd 100644
--- a/source/blender/io/usd/intern/usd_reader_curve.cc
+++ b/source/blender/io/usd/intern/usd_reader_curve.cc
@@ -203,9 +203,9 @@ Mesh *USDCurvesReader::read_mesh(struct Mesh *existing_mesh,
                                  float vel_scale,
                                  const char **err_str)
 {
-  // TODO(makowalski): here and elsewhere, move curve_prim_ initialization to
-  // the constructor.
-  pxr::UsdGeomCurves curve_prim_(prim_);
+  if (!curve_prim_) {
+    return existing_mesh;
+  }
 
   pxr::UsdAttribute widthsAttr = curve_prim_.GetWidthsAttr();
   pxr::UsdAttribute vertexAttr = curve_prim_.GetCurveVertexCountsAttr();
diff --git a/source/blender/io/usd/intern/usd_reader_curve.h b/source/blender/io/usd/intern/usd_reader_curve.h
index 98939fb6f8b..eb74b167504 100644
--- a/source/blender/io/usd/intern/usd_reader_curve.h
+++ b/source/blender/io/usd/intern/usd_reader_curve.h
@@ -30,13 +30,18 @@ class USDCurvesReader : public USDGeomReader {
   Curve *curve_;
 
  public:
-  USDCurvesReader(const pxr::UsdPrim &object,
+  USDCurvesReader(const pxr::UsdPrim &prim,
                   const USDImportParams &import_params,
                   const ImportSettings &settings)
-      : USDGeomReader(object, import_params, settings)
+      : USDGeomReader(prim, import_params, settings), curve_prim_(prim), curve_(nullptr)
   {
   }
 
+  bool valid() const override
+  {
+    return static_cast<bool>(curve_prim_);
+  }
+
   void create_object(Main *bmain, double motionSampleTime) override;
   void read_object_data(Main *bmain, double motionSampleTime) override;
 
diff --git a/source/blender/io/usd/intern/usd_reader_geom.h b/source/blender/io/usd/intern/usd_reader_geom.h
index f0f06b5dc34..5398c5ee247 100644
--- a/source/blender/io/usd/intern/usd_reader_geom.h
+++ b/source/blender/io/usd/intern/usd_reader_geom.h
@@ -25,10 +25,10 @@ namespace blender::io::usd {
 class USDGeomReader : public USDXformReader {
 
  public:
-  USDGeomReader(const pxr::UsdPrim &object,
+  USDGeomReader(const pxr::UsdPrim &prim,
                 const USDImportParams &import_params,
                 const ImportSettings &settings)
-      : USDXformReader(object, import_params, settings)
+      : USDXformReader(prim, import_params, settings)
   {
   }
 
diff --git a/source/blender/io/usd/intern/usd_reader_instance.cc b/source/blender/io/usd/intern/usd_reader_instance.cc
index 0ccae738440..6c67c0a403b 100644
--- a/source/blender/io/usd/intern/usd_reader_instance.cc
+++ b/source/blender/io/usd/intern/usd_reader_instance.cc
@@ -26,10 +26,10 @@
 
 namespace blender::io::usd {
 
-USDInstanceReader::USDInstanceReader(const pxr::UsdPrim &object,
+USDInstanceReader::USDInstanceReader(const pxr::UsdPrim &prim,
                                      const USDImportParams &import_params,
                                      const ImportSettings &settings)
-    : USDXformReader(object, import_params, settings)
+    : USDXformReader(prim, import_params, settings)
 {
 }
 
diff --git a/source/blender/io/usd/intern/usd_reader_instance.h b/source/blender/io/usd/intern/usd_reader_instance.h
index 56154a685af..efc1c69a7dd 100644
--- a/source/blender/io/usd/intern/usd_reader_instance.h
+++ b/source/blender/io/usd/intern/usd_reader_instance.h
@@ -31,7 +31,7 @@ namespace blender::io::usd {
 class USDInstanceReader : public USDXformReader {
 
  public:
-  USDInstanceReader(const pxr::UsdPrim &object,
+  USDInstanceReader(const pxr::UsdPrim &prim,
                     const USDImportParams &import_params,
                     const ImportSettings &settings);
 
diff --git a/source/blender/io/usd/intern/usd_reader_light.h b/source/blender/io/usd/intern/usd_reader_light.h
index 3aaf4bbc60c..f922f20a8e0 100644
--- a/source/blender/io/usd/intern/usd_reader_light.h
+++ b/source/blender/io/usd/intern/usd_reader_light.h
@@ -23,10 +23,10 @@ namespace blender::io::usd {
 class USDLightReader : public USDXformReader {
 
  public:
-  USDLightReader(const pxr::UsdPrim &object,
+  USDLightReader(const pxr::UsdPrim &prim,
                  const USDImportParams &import_params,
                  const ImportSettings &settings)
-      : USDXformReader(object, import_params, settings)
+      : USDXformReader(prim, import_params, settings)
   {
   }
 
diff --git a/source/blender/io/usd/intern/usd_reader_mesh.cc b/source/blender/io/usd/intern/usd_reader_mesh.cc
index d2d2651afd4..09a7dc160cf 100644
--- a/source/blender/io/usd/intern/usd_reader_mesh.cc
+++ b/source/blender/io/usd/intern/usd_reader_mesh.cc
@@ -185,10 +185,11 @@ static void *add_customdata_cb(Mesh *mesh, const char *name, int data_type)
 
 namespace blender::io::usd {
 
-USDMeshReader::USDMeshReader(const pxr::UsdPrim &object,
+USDMeshReader::USDMeshReader(const pxr::UsdPrim &prim,
                              const USDImportParams &import_params,
                              const ImportSettings &settings)
-    : USDGeomReader(object, import_params, settings),
+    : USDGeomReader(prim, import_params, settings),
+      mesh_prim_(prim),
       is_left_handed_(false),
       last_num_positions_(-1),
       has_uvs_(false),
@@ -224,8 +225,9 @@ void USDMeshReader::read_object_data(Main *bmain, double motionSampleTime)
 
   readFaceSetsSample(bmain, mesh, motionSampleTime);
 
-  if (mesh_prim_.GetPointsAttr().ValueMightBeTimeVarying())
+  if (mesh_prim_.GetPointsAttr().ValueMightBeTimeVarying()) {
     is_time_varying_ = true;
+  }
 
   if (is_time_varying_) {
     add_cache_modifier();
@@ -245,7 +247,7 @@ void USDMeshReader::read_object_data(Main *bmain, double motionSampleTime)
 
 bool USDMeshReader::valid() const
 {
-  return mesh_prim_.GetPrim().IsValid();
+  return static_cast<bool>(mesh_prim_);
 }
 
 bool USDMeshReader::topology_changed(Mesh *existing_mesh, double motionSampleTime)
@@ -734,8 +736,6 @@ Mesh *USDMeshReader::read_mesh(Mesh *existing_mesh,
                                float vel_scale,
                                const char **err_str)
 {
-  mesh_prim_ = pxr::UsdGeomMesh(prim_);
-
   if (!mesh_prim_) {
     return existing_mesh;
   }
diff --git a/source/blender/io/usd/intern/usd_reader_mesh.h b/source/blender/io/usd/intern/usd_reader_mesh.h
index 751032d55af..36ab6693d5c 100644
--- a/source/blender/io/usd/intern/usd_reader_mesh.h
+++ b/source/blender/io/usd/intern/usd_reader_mesh.h
@@ -48,7 +48,7 @@ class USDMeshReader : public USDGeomReader {
   bool is_initial_load_;
 
  public:
-  USDMeshReader(const pxr::UsdPrim &object,
+  USDMeshReader(const pxr::UsdPrim &prim,
                 const USDImportParams &import_params,
                 const ImportSettings &settings);
 
diff --git a/source/blender/io/usd/intern/usd_reader_nurbs.h b/source/blender/io/usd/intern/usd_reader_nurbs.h
index b25419d925f..5b06ff52dde 100644
--- a/source/blender/io/usd/intern/usd_reader_nurbs.h
+++ b/source/blender/io/usd/intern/usd_reader_nurbs.h
@@ -30,13 +30,18 @@ class USDNurbsReader : public USDGeomReader {
   Curve *curve_;
 
  public:
-  USDNurbsReader(const pxr::UsdPrim &object,
+  USDNurbsReader(const pxr::UsdPrim &prim,
                  const USDImportParams &import_params,
                  const ImportSettings &settings)
-      : USDGeomReader(object, import_params, settings)
+      : USDGeomReader(prim, import_params, settings), curve_prim_(prim), curve_(nullptr)
   {
   }
 
+  bool valid() const override
+  {
+    return static_cast<bool>(curve_prim_);
+  }
+
   void create_object(Main *bmain, double motionSampleTime) override;
   void read_object_data(Main *bmain, double motionSampleTime) override;
 
diff --git a/source/blender/io/usd/intern/usd_reader_prim.cc b/source/blender/io/usd/intern/usd_reader_prim.cc
index 81bdfbc280a..87bc69f764b 100644
--- a/source/blender/io/usd/intern/usd_reader_prim.cc
+++ b/source/blender/io/usd/intern/usd_reader_prim.cc
@@ -38,13 +38,13 @@ extern "C" {
 
 namespace blender::io::usd {
 
-USDPrimReader::USDPrimReader(const pxr::UsdPrim &object,
+USDPrimReader::USDPrimReader(const pxr::UsdPrim &prim,
                              const USDImportParams &import_params,
                              const ImportSettings &settings)
-    : name_(object.GetName().GetString()),
-      prim_path_(object.GetPrimPath().GetString()),
+    : name_(prim.GetName().GetString()),
+      prim_path_(prim.GetPrimPath().GetString()),
       object_(nullptr),
-      prim_(object),
+      prim_(prim),
       import_params_(import_params),
       parent_reader_(nullptr),
       settings_(&settings),
diff --git a/source/blender/io/usd/intern/usd_reader_prim.h b/source/blender/io/usd/intern/usd_reader_prim.h
index 82ddf1f3c8f..74feaa575ee 100644
--- a/source/blender/io/usd/intern/usd_reader_prim.h
+++ b/source/blender/io/usd/intern/usd_reader_prim.h
@@ -91,7 +91,7 @@ class USDPrimReader {
   int refcount_;
 
  public:
-  USDPrimReader(const pxr::UsdPrim &object,
+  USDPrimReader(const pxr::UsdPrim &prim,
                 const USDImportParams &import_params,
                 const ImportSettings &settings);
   virtual ~USDPrimReader();
diff --git a/source/blender/io/usd/intern/usd_reader_volume.cc b/source/blender/io/usd/intern/usd_reader_volume.cc
index 6d0d43340e4..5c41404d9d4 100644
--- a/source/blender/io/usd/intern/usd_reader_volume.cc
+++ b/source/blender/io/usd/intern/usd_reader_volume.cc
@@ -67,8 +67,6 @@ void USDVolumeReader::create_object(Main *bmain, double motionSampleTime)
 
 void USDVolumeReader::read_object_data(Main *bmain, double motionSampleTime)
 {
-  volume_ = pxr::UsdVolVolume(prim_);
-
   if (!volume_) {
     return;
   }
diff --git a/source/blender/io/usd/intern/usd_reader_volume.h b/source/blender/io/usd/intern/usd_reader_volume.h
index 1b877014f8f..b12cf66e04c 100644
--- a/source/blender/io/usd/intern/usd_reader_volume.h
+++ b/source/blender/io/usd/intern/usd_reader_volume.h
@@ -27,13 +27,18 @@ class USDVolumeReader : public USDXformReader {
   pxr::UsdVolVolume volume_;
 
  public:
-  USDVolumeReader(const pxr::UsdPrim &object,
+  USDVolumeReader(const pxr::UsdPrim &prim,
                   const USDImportParams &import_params,
                   const ImportSetti

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list