From f5a86666a14a93667be7f21ed64c982240c341d5 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Mon, 28 Mar 2016 09:56:15 -0700 Subject: [PATCH] Model: fix for collision mesh rendering --- libraries/render-utils/src/Model.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index 38b7aa2e89..55aa000ef4 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -135,29 +135,33 @@ void Model::enqueueLocationChange() { modelTransform.setTranslation(_translation); modelTransform.setRotation(_rotation); - Transform offset; + Transform modelMeshOffset; if (_geometry && _geometry->isLoaded()) { - offset = Transform(_rig->getGeometryToRigTransform()); + modelMeshOffset = Transform(_rig->getGeometryToRigTransform()); } else { - offset.postTranslate(_offset); + modelMeshOffset.postTranslate(_offset); } + Transform collisionMeshOffset; + collisionMeshOffset.postTranslate(_offset); + + render::PendingChanges pendingChanges; foreach (auto itemID, _modelMeshRenderItems.keys()) { - pendingChanges.updateItem(itemID, [modelTransform, offset](ModelMeshPartPayload& data) { + pendingChanges.updateItem(itemID, [modelTransform, modelMeshOffset](ModelMeshPartPayload& data) { data._model->updateClusterMatrices(modelTransform.getTranslation(), modelTransform.getRotation()); 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, offset, &state.clusterMatrices[0], numClusterMatrices); + data.updateTransformForSkinnedMesh(modelTransform, modelMeshOffset, &state.clusterMatrices[0], numClusterMatrices); data.notifyLocationChanged(); }); } foreach (auto itemID, _collisionRenderItems.keys()) { - pendingChanges.updateItem(itemID, [modelTransform, offset](MeshPartPayload& data) { - data.updateTransform(modelTransform, offset); + pendingChanges.updateItem(itemID, [modelTransform, collisionMeshOffset](MeshPartPayload& data) { + data.updateTransform(modelTransform, collisionMeshOffset); data.notifyLocationChanged(); }); }