diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index 8a498e99e3..d295b07caf 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -354,15 +354,14 @@ void ModelMeshPartPayload::notifyLocationChanged() { } -void ModelMeshPartPayload::updateTransformForSkinnedMesh(const Transform& transform, const Transform& offsetTransform, const glm::mat4* clusterMatrices, size_t numClusterMatrices) { +void ModelMeshPartPayload::updateTransformForSkinnedMesh(const Transform& transform, const Transform& offsetTransform, const QVector& clusterMatrices) { ModelMeshPartPayload::updateTransform(transform, offsetTransform); - if (numClusterMatrices > 0) { - + if (clusterMatrices.size() > 0) { _worldBound = AABox(); - for (size_t i = 0; i < numClusterMatrices; i++) { + for (auto& clusterMatrix : clusterMatrices) { AABox clusterBound = _localBound; - clusterBound.transform(clusterMatrices[i]); + clusterBound.transform(clusterMatrix); _worldBound += clusterBound; } diff --git a/libraries/render-utils/src/MeshPartPayload.h b/libraries/render-utils/src/MeshPartPayload.h index 08c606271c..41869ec7e3 100644 --- a/libraries/render-utils/src/MeshPartPayload.h +++ b/libraries/render-utils/src/MeshPartPayload.h @@ -79,7 +79,7 @@ public: typedef Payload::DataPointer Pointer; void notifyLocationChanged() override; - void updateTransformForSkinnedMesh(const Transform& transform, const Transform& offsetTransform, const glm::mat4* clusterMatrices, size_t numClusterMatrices); + void updateTransformForSkinnedMesh(const Transform& transform, const Transform& offsetTransform, const QVector& clusterMatrices); // Render Item interface render::ItemKey getKey() const override; diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index a29c090bfc..8d59d5f736 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -151,7 +151,7 @@ void Model::enqueueLocationChange() { modelTransform.setRotation(self->_rotation); Transform modelMeshOffset; - if (self->_geometry && self->_geometry->isLoaded()) { + if (self->isLoaded()) { // includes model offset and unitScale. modelMeshOffset = Transform(self->_rig->getGeometryToRigTransform()); } else { @@ -171,8 +171,7 @@ void Model::enqueueLocationChange() { // update the model transform and bounding box for this render item. const Model::MeshState& state = data._model->_meshStates.at(data._meshIndex); - size_t numClusterMatrices = data._model->getGeometry()->getFBXGeometry().meshes.at(data._meshIndex).clusters.size(); - data.updateTransformForSkinnedMesh(modelTransform, modelMeshOffset, &state.clusterMatrices[0], numClusterMatrices); + data.updateTransformForSkinnedMesh(modelTransform, modelMeshOffset, state.clusterMatrices); }); }