[Bf-blender-cvs] [4d8c634820f] universal-scene-description: USD export: access deform verts as custom data.

Michael Kowalski noreply at git.blender.org
Tue Nov 8 04:35:25 CET 2022


Commit: 4d8c634820f54b13992831ca6cd6430f20a11095
Author: Michael Kowalski
Date:   Mon Nov 7 22:34:26 2022 -0500
Branches: universal-scene-description
https://developer.blender.org/rB4d8c634820f54b13992831ca6cd6430f20a11095

USD export: access deform verts as custom data.

Due to a recent Blender API change, MDeformVert entries
must be read as custom data.

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

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

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

diff --git a/source/blender/io/usd/intern/usd_writer_skinned_mesh.cc b/source/blender/io/usd/intern/usd_writer_skinned_mesh.cc
index 320cd41b1ae..9f691e765d8 100644
--- a/source/blender/io/usd/intern/usd_writer_skinned_mesh.cc
+++ b/source/blender/io/usd/intern/usd_writer_skinned_mesh.cc
@@ -194,7 +194,7 @@ void USDSkinnedMeshWriter::write_weights(const Object *ob,
                                          const pxr::UsdSkelBindingAPI &skel_api,
                                          const std::vector<std::string> &bone_names) const
 {
-  if (!(skel_api && ob && mesh && mesh->dvert && mesh->totvert > 0)) {
+  if (!(skel_api && ob && mesh && mesh->totvert > 0)) {
     return;
   }
 
@@ -223,16 +223,17 @@ void USDSkinnedMeshWriter::write_weights(const Object *ob,
     return;
   }
 
+  const Span<MDeformVert> dverts = mesh->deform_verts();
+
   int max_totweight = 1;
-  for (int i = 0; i < mesh->totvert; ++i) {
-    MDeformVert &vert = mesh->dvert[i];
+  for (const int i : dverts.index_range()) {
+    const MDeformVert &vert = dverts[i];
     if (vert.totweight > max_totweight) {
       max_totweight = vert.totweight;
     }
   }
 
   const int ELEM_SIZE = max_totweight;
-
   int num_points = mesh->totvert;
 
   pxr::VtArray<int> joint_indices(num_points * ELEM_SIZE, 0);
@@ -244,9 +245,8 @@ void USDSkinnedMeshWriter::write_weights(const Object *ob,
   /* Record number of out of bounds vert group indices, for error reporting. */
   int num_out_of_bounds = 0;
 
-  for (int i = 0; i < mesh->totvert; ++i) {
-
-    MDeformVert &vert = mesh->dvert[i];
+  for (const int i : dverts.index_range()) {
+    const MDeformVert &vert = dverts[i];
 
     /* Sum of the weights, for normalizing. */
     float sum_weights = 0.0f;



More information about the Bf-blender-cvs mailing list