From 0eaaa89c9a5b1fef436edb4d81abc74f660baf5a Mon Sep 17 00:00:00 2001 From: Andrzej Kapolka Date: Fri, 8 Nov 2013 15:38:20 -0800 Subject: [PATCH] Read the palm direction from the FST, use that to determine Leap rotations. --- interface/src/avatar/SkeletonModel.cpp | 2 +- interface/src/renderer/FBXReader.cpp | 2 ++ interface/src/renderer/FBXReader.h | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/interface/src/avatar/SkeletonModel.cpp b/interface/src/avatar/SkeletonModel.cpp index e1dde68824..f3603e011c 100644 --- a/interface/src/avatar/SkeletonModel.cpp +++ b/interface/src/avatar/SkeletonModel.cpp @@ -141,7 +141,7 @@ void SkeletonModel::applyPalmData(int jointIndex, const QVector& fingerJoin float sign = (jointIndex == geometry.rightHandJointIndex) ? 1.0f : -1.0f; glm::quat palmRotation; getJointRotation(jointIndex, palmRotation, true); - palmRotation = rotationBetween(palmRotation * IDENTITY_UP, -palm.getNormal()) * palmRotation; + palmRotation = rotationBetween(palmRotation * geometry.palmDirection, palm.getNormal()) * palmRotation; // sort the finger indices by raw x, get the average direction QVector fingerIndices; diff --git a/interface/src/renderer/FBXReader.cpp b/interface/src/renderer/FBXReader.cpp index 894ff24204..042692c3e1 100644 --- a/interface/src/renderer/FBXReader.cpp +++ b/interface/src/renderer/FBXReader.cpp @@ -1327,6 +1327,8 @@ FBXGeometry extractFBXGeometry(const FBXNode& node, const QVariantHash& mapping) geometry.meshes.append(extracted.mesh); } + geometry.palmDirection = parseVec3(mapping.value("palmDirection", "0, -1, 0").toString()); + // process attachments QVariantHash attachments = mapping.value("attach").toHash(); for (QVariantHash::const_iterator it = attachments.constBegin(); it != attachments.constEnd(); it++) { diff --git a/interface/src/renderer/FBXReader.h b/interface/src/renderer/FBXReader.h index a806d1006b..eb454f7566 100644 --- a/interface/src/renderer/FBXReader.h +++ b/interface/src/renderer/FBXReader.h @@ -145,6 +145,8 @@ public: QVector leftFingertipJointIndices; QVector rightFingertipJointIndices; + glm::vec3 palmDirection; + glm::vec3 neckPivot; QVector attachments;