parents, skeleton, break fix

This commit is contained in:
raveenajain 2019-04-17 21:14:44 +01:00
parent 104ed758b9
commit 2fab5a0945

View file

@ -807,7 +807,7 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::URL& url) {
sortedNodes[i] = nextNode; sortedNodes[i] = nextNode;
sortedNodes[j] = currentNode; sortedNodes[j] = currentNode;
i++; i++;
break; currentNode = sortedNodes[i];
} }
j++; j++;
} }
@ -831,9 +831,9 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::URL& url) {
for (int nodeIndex : sortedNodes) { for (int nodeIndex : sortedNodes) {
auto& node = _file.nodes[nodeIndex]; auto& node = _file.nodes[nodeIndex];
joint.parentIndex = -1; joint.parentIndex = parents[nodeIndex];
if (!_file.scenes[_file.scene].nodes.contains(nodeIndex)) { if (joint.parentIndex != -1) {
joint.parentIndex = originalToNewNodeIndexMap[parents[nodeIndex]]; joint.parentIndex = originalToNewNodeIndexMap[joint.parentIndex];
} }
joint.transform = node.transforms.first(); joint.transform = node.transforms.first();
joint.translation = extractTranslation(joint.transform); joint.translation = extractTranslation(joint.transform);
@ -848,10 +848,10 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::URL& url) {
// Build skeleton // Build skeleton
hfmModel.hasSkeletonJoints = false;
std::vector<glm::mat4> jointInverseBindTransforms; std::vector<glm::mat4> jointInverseBindTransforms;
jointInverseBindTransforms.resize(numNodes); jointInverseBindTransforms.resize(numNodes);
if (!_file.skins.isEmpty()) { hfmModel.hasSkeletonJoints = !_file.skins.isEmpty();
if (hfmModel.hasSkeletonJoints) {
hfmModel.hasSkeletonJoints = true; hfmModel.hasSkeletonJoints = true;
std::vector<std::vector<float>> inverseBindValues; std::vector<std::vector<float>> inverseBindValues;
getSkinInverseBindMatrices(inverseBindValues); getSkinInverseBindMatrices(inverseBindValues);
@ -929,7 +929,7 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::URL& url) {
} }
} }
HFMCluster root; HFMCluster root;
root.jointIndex = sortedNodes[0]; root.jointIndex = 0;
root.inverseBindMatrix = jointInverseBindTransforms[root.jointIndex]; root.inverseBindMatrix = jointInverseBindTransforms[root.jointIndex];
root.inverseBindTransform = Transform(root.inverseBindMatrix); root.inverseBindTransform = Transform(root.inverseBindMatrix);
mesh.clusters.append(root); mesh.clusters.append(root);