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 | Transform renderTransform = modelTransform; | 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 | if (meshState.clusterMatrices.size() <= 1) { | 252 | if (meshState.clusterMatrices.size() <= 1) { |
| 267 | renderTransform = modelTransform.worldTransform(shapeState._rootFromJointTransform); | 253 | renderTransform = modelTransform.worldTransform(shapeState._rootFromJointTransform); |
| 268 | } | 254 | } |
| 269 | data.updateTransformForSkinnedMesh(renderTransform, modelTransform); | 255 | data.updateTransform(renderTransform); |
| 270 | 256 | ||
| 271 | data.setCauterized(cauterized); | 257 | data.setCauterized(cauterized); |
| 272 | data.updateKey(renderItemKeyGlobalFlags); | 258 | data.updateKey(renderItemKeyGlobalFlags); |
| @@ -305,7 +291,7 @@ void Model::updateShapeStatesFromRig() { · 32 unmodified lines | |||
| 305 | _shapeStates.resize(shapes.size()); | 291 | _shapeStates.resize(shapes.size()); |
| 306 | for (int s = 0; s < shapes.size(); ++s) { | 292 | for (int s = 0; s < shapes.size(); ++s) { |
| 307 | uint32_t jointId = shapes[s].transform; | 293 | uint32_t jointId = shapes[s].transform; |
| 308 | if (jointId < _rig.getJointStateCount()) { | 294 | if (jointId < (uint32_t) _rig.getJointStateCount()) { |
| 309 | _shapeStates[s]._rootFromJointTransform = _rig.getJointTransform(shapes[s].transform); | 295 | _shapeStates[s]._rootFromJointTransform = _rig.getJointTransform(shapes[s].transform); |
| 310 | } | 296 | } |
| 311 | } | 297 | } |
| @@ -329,14 +315,24 @@ bool Model::updateGeometry() { · 17 unmodified lines | |||
| 329 | updateShapeStatesFromRig(); | 315 | updateShapeStatesFromRig(); |
| 330 | 316 | ||
| 331 | const HFMModel& hfmModel = getHFMModel(); | 317 | const HFMModel& hfmModel = getHFMModel(); |
| 332 | int i = 0; | 318 | const auto& hfmDynamicTransforms = hfmModel.dynamicTransforms; |
| 333 | foreach (const HFMMesh& mesh, hfmModel.meshes) { | 319 | /* int i = 0; |
| 320 | for (const auto& mesh: hfmModel.meshes) { | ||
| 334 | MeshState state; | 321 | MeshState state; |
| 335 | state.clusterDualQuaternions.resize(mesh.clusters.size()); | 322 | state.clusterDualQuaternions.resize(mesh.clusters.size()); |
| 336 | state.clusterMatrices.resize(mesh.clusters.size()); | 323 | state.clusterMatrices.resize(mesh.clusters.size()); |
| 337 | _meshStates.push_back(state); | 324 | _meshStates.push_back(state); |
| 338 | i++; | 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 | needFullUpdate = true; | 336 | needFullUpdate = true; |
| 341 | emit rigReady(); | 337 | emit rigReady(); |
| 342 | } | 338 | } |
| @@ -1510,7 +1506,7 @@ void Model::createRenderItemSet() { · 1167 unmodified lines | |||
| 1510 | // Create the render payloads | 1506 | // Create the render payloads |
| 1511 | int numParts = (int)mesh->getNumParts(); | 1507 | int numParts = (int)mesh->getNumParts(); |
| 1512 | for (int partIndex = 0; partIndex < numParts; partIndex++) { | 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 | auto material = getNetworkModel()->getShapeMaterial(shapeID); | 1510 | auto material = getNetworkModel()->getShapeMaterial(shapeID); |
| 1515 | _modelMeshMaterialNames.push_back(material ? material->getName() : ""); | 1511 | _modelMeshMaterialNames.push_back(material ? material->getName() : ""); |
| 1516 | _modelMeshRenderItemShapes.emplace_back(ShapeInfo{ (int)i }); | 1512 | _modelMeshRenderItemShapes.emplace_back(ShapeInfo{ (int)i }); |