Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Kowalski <makowalski@nvidia.com>2022-11-08 06:34:26 +0300
committerMichael Kowalski <makowalski@nvidia.com>2022-11-08 06:34:26 +0300
commit4d8c634820f54b13992831ca6cd6430f20a11095 (patch)
tree24df96c9cceed432387cdc87df9ae792f1aad9c9
parent0f7433a4c871b70371423ad3aca203d10fb4f179 (diff)
USD export: access deform verts as custom data.universal-scene-description
Due to a recent Blender API change, MDeformVert entries must be read as custom data.
-rw-r--r--source/blender/io/usd/intern/usd_writer_skinned_mesh.cc14
1 files changed, 7 insertions, 7 deletions
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;