Skip to content

Commit

Permalink
Use hands everywhere instead of controller (#588)
Browse files Browse the repository at this point in the history
  • Loading branch information
Erimelowo authored Feb 17, 2023
1 parent 053263c commit 1f25d9c
Show file tree
Hide file tree
Showing 11 changed files with 73 additions and 102 deletions.
6 changes: 2 additions & 4 deletions gui/public/i18n/en-x-owo/translation.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ body_part-RIGHT_HAND = wight pawb
body_part-RIGHT_UPPER_LEG = wight uppew weg
body_part-RIGHT_LOWER_LEG = wight wowwe weg
body_part-RIGHT_FOOT = wight pawb
body_part-RIGHT_CONTROLLER = wight wontwolew
body_part-CHEST = chwest
body_part-WAIST = wyayst
body_part-HIP = hyip
Expand All @@ -41,7 +40,6 @@ body_part-LEFT_HAND = weft pawb
body_part-LEFT_UPPER_LEG = weft uppew weg
body_part-LEFT_LOWER_LEG = weft wowwe weg
body_part-LEFT_FOOT = weft pawb
body_part-LEFT_CONTROLLER = weft wontwolew
## Proportions

Expand All @@ -63,8 +61,8 @@ skeleton_bone-SHOULDERS_DISTANCE = shouwdews disyance
skeleton_bone-SHOULDERS_WIDTH = shouwdews wiwdth
skeleton_bone-UPPER_ARM = uppew awm wength
skeleton_bone-LOWER_ARM = fowewawm disyance
skeleton_bone-CONTROLLER_Y = cyontwowla disance y
skeleton_bone-CONTROLLER_Z = cyontwowla disance z
skeleton_bone-HAND_Y = hawnd disance y
skeleton_bone-HAND_Z = hawnd disance z
skeleton_bone-ELBOW_OFFSET = ewbow awfsewt
## Tracker reset buttons
Expand Down
6 changes: 2 additions & 4 deletions gui/public/i18n/en/translation.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ body_part-RIGHT_HAND = Right hand
body_part-RIGHT_UPPER_LEG = Right thigh
body_part-RIGHT_LOWER_LEG = Right ankle
body_part-RIGHT_FOOT = Right foot
body_part-RIGHT_CONTROLLER = Right controller
body_part-CHEST = Chest
body_part-WAIST = Waist
body_part-HIP = Hip
Expand All @@ -35,7 +34,6 @@ body_part-LEFT_HAND = Left hand
body_part-LEFT_UPPER_LEG = Left thigh
body_part-LEFT_LOWER_LEG = Left ankle
body_part-LEFT_FOOT = Left foot
body_part-LEFT_CONTROLLER = Left controller
## Proportions
skeleton_bone-NONE = None
Expand All @@ -56,8 +54,8 @@ skeleton_bone-SHOULDERS_DISTANCE = Shoulders Distance
skeleton_bone-SHOULDERS_WIDTH = Shoulders Width
skeleton_bone-UPPER_ARM = Upper Arm Length
skeleton_bone-LOWER_ARM = Lower Arm Length
skeleton_bone-CONTROLLER_Y = Controller Distance Y
skeleton_bone-CONTROLLER_Z = Controller Distance Z
skeleton_bone-HAND_Y = Hand Distance Y
skeleton_bone-HAND_Z = Hand Distance Z
skeleton_bone-ELBOW_OFFSET = Elbow Offset
## Tracker reset buttons
Expand Down
6 changes: 2 additions & 4 deletions gui/public/i18n/fr/translation.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ body_part-RIGHT_HAND = Main droite
body_part-RIGHT_UPPER_LEG = Cuisse droite
body_part-RIGHT_LOWER_LEG = Cheville droite
body_part-RIGHT_FOOT = Pied droit
body_part-RIGHT_CONTROLLER = Manette gauche
body_part-CHEST = Poitrine
body_part-WAIST = Taille
body_part-HIP = Hanche
Expand All @@ -41,7 +40,6 @@ body_part-LEFT_HAND = Main gauche
body_part-LEFT_UPPER_LEG = Cuisse gauche
body_part-LEFT_LOWER_LEG = Cheville gauche
body_part-LEFT_FOOT = Pied gauche
body_part-LEFT_CONTROLLER = Manette gauche
## Proportions

Expand All @@ -63,8 +61,8 @@ skeleton_bone-SHOULDERS_DISTANCE = Distance des épaules
skeleton_bone-SHOULDERS_WIDTH = Largeur des épaules
skeleton_bone-UPPER_ARM = Longueur des bras supérieurs
skeleton_bone-LOWER_ARM = Longueur des avant-bras
skeleton_bone-CONTROLLER_Y = Distance Y des manettes
skeleton_bone-CONTROLLER_Z = Distance Z des manettes
skeleton_bone-HAND_Y = Distance Y des mains
skeleton_bone-HAND_Z = Distance Z des mains
skeleton_bone-ELBOW_OFFSET = Écart des coudes
## Tracker reset buttons
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,17 @@ public ObjectNode convert(
}
}
}
if (version < 6) {
// Migrate controllers offsets to hands offsets
ObjectNode skeletonNode = (ObjectNode) modelData.get("skeleton");
if (skeletonNode != null) {
ObjectNode offsetsNode = (ObjectNode) skeletonNode.get("offsets");
if (offsetsNode != null) {
offsetsNode.set("handDistanceY", offsetsNode.get("controllerDistanceY"));
offsetsNode.set("handDistanceZ", offsetsNode.get("controllerDistanceZ"));
}
}
}

return modelData;
}
Expand Down
2 changes: 1 addition & 1 deletion server/src/main/java/dev/slimevr/config/VRConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@


@JsonVersionedModel(
currentVersion = "5", defaultDeserializeToVersion = "5", toCurrentConverterClass = CurrentVRConfigConverter.class
currentVersion = "6", defaultDeserializeToVersion = "6", toCurrentConverterClass = CurrentVRConfigConverter.class
)
public class VRConfig {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@ public enum BoneType {
RIGHT_FOOT(BodyPart.RIGHT_FOOT),
LEFT_FOOT_TRACKER(BodyPart.LEFT_FOOT),
RIGHT_FOOT_TRACKER(BodyPart.RIGHT_FOOT),
LEFT_CONTROLLER(BodyPart.LEFT_CONTROLLER),
RIGHT_CONTROLLER(BodyPart.RIGHT_CONTROLLER),
LEFT_LOWER_ARM(BodyPart.LEFT_LOWER_ARM),
RIGHT_LOWER_ARM(BodyPart.RIGHT_LOWER_ARM),
LEFT_ELBOW_TRACKER,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -276,14 +276,8 @@ public void computeNodeOffset(BoneType nodeOffset) {
case LEFT_HAND, RIGHT_HAND -> setNodeOffset(
nodeOffset,
0,
-getOffset(SkeletonConfigOffsets.CONTROLLER_Y),
-getOffset(SkeletonConfigOffsets.CONTROLLER_Z)
);
case LEFT_CONTROLLER, RIGHT_CONTROLLER -> setNodeOffset(
nodeOffset,
0,
getOffset(SkeletonConfigOffsets.CONTROLLER_Y),
getOffset(SkeletonConfigOffsets.CONTROLLER_Z)
-getOffset(SkeletonConfigOffsets.HAND_Y),
-getOffset(SkeletonConfigOffsets.HAND_Z)
);
case LEFT_ELBOW_TRACKER, RIGHT_ELBOW_TRACKER -> setNodeOffset(
nodeOffset,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,19 +112,17 @@ public enum SkeletonConfigOffsets {
0.26f,
new BoneType[] { BoneType.LEFT_LOWER_ARM, BoneType.RIGHT_LOWER_ARM }
),
CONTROLLER_Y(
HAND_Y(
18,
"controllerDistanceY",
"handDistanceY",
0.035f,
new BoneType[] { BoneType.LEFT_CONTROLLER, BoneType.RIGHT_CONTROLLER,
BoneType.LEFT_HAND, BoneType.RIGHT_HAND }
new BoneType[] { BoneType.LEFT_HAND, BoneType.RIGHT_HAND }
),
CONTROLLER_Z(
HAND_Z(
19,
"controllerDistanceZ",
"handDistanceZ",
0.13f,
new BoneType[] { BoneType.LEFT_CONTROLLER, BoneType.RIGHT_CONTROLLER,
BoneType.LEFT_HAND, BoneType.RIGHT_HAND }
new BoneType[] { BoneType.LEFT_HAND, BoneType.RIGHT_HAND }
),
ELBOW_OFFSET(
20,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,6 @@ public class HumanSkeleton {
protected Tracker rightUpperLegTracker;
protected Tracker rightLowerLegTracker;
protected Tracker rightFootTracker;
protected Tracker leftControllerTracker;
protected Tracker rightControllerTracker;
protected Tracker leftLowerArmTracker;
protected Tracker rightLowerArmTracker;
protected Tracker leftUpperArmTracker;
Expand Down Expand Up @@ -404,16 +402,6 @@ protected void resetBones() {
)
);
}
if (leftControllerTracker != null && sendAllBones) {
// don't send currently
currentBoneInfo
.add(
new BoneInfo(
BoneType.LEFT_CONTROLLER,
getTailNodeOfBone(BoneType.LEFT_CONTROLLER)
)
);
}

// Right arm
if ((hasRightArmTracker || rightShoulderTracker != null) && sendAllBones) {
Expand Down Expand Up @@ -455,16 +443,6 @@ protected void resetBones() {
)
);
}
if (rightControllerTracker != null && sendAllBones) {
// don't send currently
currentBoneInfo
.add(
new BoneInfo(
BoneType.RIGHT_CONTROLLER,
getTailNodeOfBone(BoneType.RIGHT_CONTROLLER)
)
);
}
}


Expand All @@ -475,16 +453,6 @@ protected void setTrackersFromList(List<? extends Tracker> trackers) {
trackers,
TrackerPosition.HMD
);
this.leftControllerTracker = TrackerUtils
.findNonComputedHumanPoseTrackerForBodyPosition(
trackers,
TrackerPosition.LEFT_CONTROLLER
);
this.rightControllerTracker = TrackerUtils
.findNonComputedHumanPoseTrackerForBodyPosition(
trackers,
TrackerPosition.RIGHT_CONTROLLER
);
this.neckTracker = TrackerUtils
.findNonComputedHumanPoseTrackerForBodyPosition(
trackers,
Expand Down Expand Up @@ -804,8 +772,6 @@ protected void updateLocalTransforms() {
Tracker rightLowerLegTracker = trackerPreUpdate(this.rightLowerLegTracker);
Tracker rightFootTracker = trackerPreUpdate(this.rightFootTracker);

Tracker leftControllerTracker = trackerPreUpdate(this.leftControllerTracker);
Tracker rightControllerTracker = trackerPreUpdate(this.rightControllerTracker);
Tracker leftLowerArmTracker = trackerPreUpdate(this.leftLowerArmTracker);
Tracker rightLowerArmTracker = trackerPreUpdate(this.rightLowerArmTracker);
Tracker leftUpperArmTracker = trackerPreUpdate(this.leftUpperArmTracker);
Expand Down Expand Up @@ -1063,8 +1029,8 @@ protected void updateLocalTransforms() {

// Left arm
if (isTrackingLeftArmFromController()) { // From controller
leftControllerTracker.getPosition(posBuf);
leftControllerTracker.getRotation(rotBuf1);
leftHandTracker.getPosition(posBuf);
leftHandTracker.getRotation(rotBuf1);
leftControllerNode.localTransform.setTranslation(posBuf);
leftControllerNode.localTransform.setRotation(rotBuf1);

Expand Down Expand Up @@ -1117,8 +1083,8 @@ protected void updateLocalTransforms() {

// Right arm
if (isTrackingRightArmFromController()) { // From controller
rightControllerTracker.getPosition(posBuf);
rightControllerTracker.getRotation(rotBuf1);
rightHandTracker.getPosition(posBuf);
rightHandTracker.getRotation(rotBuf1);
rightControllerNode.localTransform.setTranslation(posBuf);
rightControllerNode.localTransform.setRotation(rotBuf1);

Expand Down Expand Up @@ -1398,28 +1364,33 @@ public void updateNodeOffset(BoneType nodeOffset, Vector3f offset) {
rightHipNode.localTransform.setTranslation(offset);
break;
case LEFT_UPPER_LEG:
case RIGHT_UPPER_LEG:
leftKneeNode.localTransform.setTranslation(offset);
break;
case RIGHT_UPPER_LEG:
rightKneeNode.localTransform.setTranslation(offset);
break;
case LEFT_KNEE_TRACKER:
case RIGHT_KNEE_TRACKER:
trackerLeftKneeNode.localTransform.setTranslation(offset);
break;
case RIGHT_KNEE_TRACKER:
trackerRightKneeNode.localTransform.setTranslation(offset);
break;
case LEFT_LOWER_LEG:
case RIGHT_LOWER_LEG:
leftAnkleNode.localTransform.setTranslation(offset);
break;
case RIGHT_LOWER_LEG:
rightAnkleNode.localTransform.setTranslation(offset);
break;
case LEFT_FOOT:
case RIGHT_FOOT:
leftFootNode.localTransform.setTranslation(offset);
break;
case RIGHT_FOOT:
rightFootNode.localTransform.setTranslation(offset);
break;
case LEFT_FOOT_TRACKER:
case RIGHT_FOOT_TRACKER:
trackerLeftFootNode.localTransform.setTranslation(offset);
break;
case RIGHT_FOOT_TRACKER:
trackerRightFootNode.localTransform.setTranslation(offset);
break;
case LEFT_SHOULDER:
Expand Down Expand Up @@ -1451,22 +1422,23 @@ public void updateNodeOffset(BoneType nodeOffset, Vector3f offset) {
}
break;
case LEFT_ELBOW_TRACKER:
case RIGHT_ELBOW_TRACKER:
trackerLeftElbowNode.localTransform.setTranslation(offset);
break;
case RIGHT_ELBOW_TRACKER:
trackerRightElbowNode.localTransform.setTranslation(offset);
break;
case LEFT_HAND:
case RIGHT_HAND:
leftHandNode.localTransform.setTranslation(offset);
rightHandNode.localTransform.setTranslation(offset);
break;
case LEFT_CONTROLLER:
if (isTrackingLeftArmFromController()) {
leftWristNode.localTransform.setTranslation(offset);
leftWristNode.localTransform.setTranslation(offset.negate());
} else {
leftHandNode.localTransform.setTranslation(offset);
}
case RIGHT_CONTROLLER:
break;
case RIGHT_HAND:
if (isTrackingRightArmFromController()) {
rightWristNode.localTransform.setTranslation(offset);
rightWristNode.localTransform.setTranslation(offset.negate());
} else {
rightHandNode.localTransform.setTranslation(offset);
}
break;
default:
Expand All @@ -1483,8 +1455,6 @@ private void computeDependentArmOffsets() {
humanPoseManager.computeNodeOffset(BoneType.RIGHT_UPPER_ARM);
humanPoseManager.computeNodeOffset(BoneType.LEFT_LOWER_ARM);
humanPoseManager.computeNodeOffset(BoneType.RIGHT_LOWER_ARM);
humanPoseManager.computeNodeOffset(BoneType.LEFT_CONTROLLER);
humanPoseManager.computeNodeOffset(BoneType.RIGHT_CONTROLLER);
}

public TransformNode getTailNodeOfBone(BoneType bone) {
Expand Down Expand Up @@ -1552,13 +1522,17 @@ public TransformNode getTailNodeOfBone(BoneType bone) {
return rightWristNode;
}
case LEFT_HAND:
return leftHandNode;
if (isTrackingLeftArmFromController()) {
return leftWristNode;
} else {
return leftHandNode;
}
case RIGHT_HAND:
return rightHandNode;
case LEFT_CONTROLLER:
return leftWristNode;
case RIGHT_CONTROLLER:
return rightWristNode;
if (isTrackingRightArmFromController()) {
return rightWristNode;
} else {
return rightHandNode;
}
}

return null;
Expand Down Expand Up @@ -1646,7 +1620,7 @@ public float getHmdHeight() {
* controller or not.
*/
public boolean isTrackingLeftArmFromController() {
return leftControllerTracker != null && !forceArmsFromHMD;
return leftHandTracker != null && leftHandTracker.hasPosition() && !forceArmsFromHMD;
}

/**
Expand All @@ -1657,7 +1631,7 @@ public boolean isTrackingLeftArmFromController() {
* controller or not.
*/
public boolean isTrackingRightArmFromController() {
return rightControllerTracker != null && !forceArmsFromHMD;
return rightHandTracker != null && rightHandTracker.hasPosition() && !forceArmsFromHMD;
}

protected Tracker[] getTrackersToReset() {
Expand Down
Loading

0 comments on commit 1f25d9c

Please sign in to comment.