Showing the changes to libraries/render-utils/src/Model.cpp (1 of 10 files). Show all
Unified · Split
| @@ -249,24 +249,10 @@ void Model::updateRenderItems() { · 248 unmodified lines | ||
| 249 | 249 | } |
| 250 | 250 | |
| 251 | 251 | Transform renderTransform = modelTransform; |
| 252 | − | |
| 253 | − /*if (useDualQuaternionSkinning) { | |
| 254 | − if (meshState.clusterDualQuaternions.size() == 1 || meshState.clusterDualQuaternions.size() == 2) { | |
| 255 | − const auto& dq = meshState.clusterDualQuaternions[0]; | |
| 256 | − Transform transform(dq.getRotation(), | |
| 257 | − dq.getScale(), | |
| 258 | − dq.getTranslation()); | |
| 259 | − renderTransform = modelTransform.worldTransform(Transform(transform)); | |
| 260 | − } | |
| 261 | − } else { | |
| 262 | − if (meshState.clusterMatrices.size() == 1 || meshState.clusterMatrices.size() == 2) { | |
| 263 | − renderTransform = modelTransform.worldTransform(Transform(meshState.clusterMatrices[0])); | |
| 264 | − } | |
| 265 | − }*/ | |
| 266 | 252 | if (meshState.clusterMatrices.size() <= 1) { |
| 267 | 253 | renderTransform = modelTransform.worldTransform(shapeState._rootFromJointTransform); |
| 268 | 254 | } |
| 269 | − data.updateTransformForSkinnedMesh(renderTransform, modelTransform); | |
| 255 | + data.updateTransform(renderTransform); | |
| 270 | 256 | |
| 271 | 257 | data.setCauterized(cauterized); |
| 272 | 258 | data.updateKey(renderItemKeyGlobalFlags); |
| @@ -305,7 +291,7 @@ void Model::updateShapeStatesFromRig() { · 32 unmodified lines | ||
| 305 | 291 | _shapeStates.resize(shapes.size()); |
| 306 | 292 | for (int s = 0; s < shapes.size(); ++s) { |
| 307 | 293 | uint32_t jointId = shapes[s].transform; |
| 308 | − if (jointId < _rig.getJointStateCount()) { | |
| 294 | + if (jointId < (uint32_t) _rig.getJointStateCount()) { | |
| 309 | 295 | _shapeStates[s]._rootFromJointTransform = _rig.getJointTransform(shapes[s].transform); |
| 310 | 296 | } |
| 311 | 297 | } |
| @@ -329,14 +315,24 @@ bool Model::updateGeometry() { · 17 unmodified lines | ||
| 329 | 315 | updateShapeStatesFromRig(); |
| 330 | 316 | |
| 331 | 317 | const HFMModel& hfmModel = getHFMModel(); |
| 332 | − int i = 0; | |
| 333 | − foreach (const HFMMesh& mesh, hfmModel.meshes) { | |
| 318 | + const auto& hfmDynamicTransforms = hfmModel.dynamicTransforms; | |
| 319 | + /* int i = 0; | |
| 320 | + for (const auto& mesh: hfmModel.meshes) { | |
| 334 | 321 | MeshState state; |
| 335 | 322 | state.clusterDualQuaternions.resize(mesh.clusters.size()); |
| 336 | 323 | state.clusterMatrices.resize(mesh.clusters.size()); |
| 337 | 324 | _meshStates.push_back(state); |
| 338 | 325 | i++; |
| 339 | 326 | } |
| 327 | + */ | |
| 328 | + for (int i = 0; i < hfmDynamicTransforms.size(); i++) { | |
| 329 | + const auto& dynT = hfmDynamicTransforms[i]; | |
| 330 | + MeshState state; | |
| 331 | + state.clusterDualQuaternions.resize(dynT.clusters.size()); | |
| 332 | + state.clusterMatrices.resize(dynT.clusters.size()); | |
| 333 | + _meshStates.push_back(state); | |
| 334 | + } | |
| 335 | + | |
| 340 | 336 | needFullUpdate = true; |
| 341 | 337 | emit rigReady(); |
| 342 | 338 | } |
| @@ -1510,7 +1506,7 @@ void Model::createRenderItemSet() { · 1167 unmodified lines | ||
| 1510 | 1506 | // Create the render payloads |
| 1511 | 1507 | int numParts = (int)mesh->getNumParts(); |
| 1512 | 1508 | for (int partIndex = 0; partIndex < numParts; partIndex++) { |
| 1513 | − _modelMeshRenderItems << std::make_shared<ModelMeshPartPayload>(shared_from_this(), i, partIndex, shapeID, transform, offset); | |
| 1509 | + _modelMeshRenderItems << std::make_shared<ModelMeshPartPayload>(shared_from_this(), i, partIndex, shapeID, transform); | |
| 1514 | 1510 | auto material = getNetworkModel()->getShapeMaterial(shapeID); |
| 1515 | 1511 | _modelMeshMaterialNames.push_back(material ? material->getName() : ""); |
| 1516 | 1512 | _modelMeshRenderItemShapes.emplace_back(ShapeInfo{ (int)i }); |