From 3defd47c29abdf0d1e00c5a560a77e7887eb16ac Mon Sep 17 00:00:00 2001 From: Erimel Date: Tue, 4 Jul 2023 13:24:50 -0400 Subject: [PATCH] Improve Autobone upperChest and fix VMC upperChest (#754) --- server/src/main/java/dev/slimevr/autobone/AutoBone.kt | 1 + .../java/dev/slimevr/autobone/errors/BodyProportionError.kt | 4 ++-- server/src/main/java/dev/slimevr/osc/UnityArmature.kt | 2 ++ .../main/java/dev/slimevr/tracking/processor/BoneType.java | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/server/src/main/java/dev/slimevr/autobone/AutoBone.kt b/server/src/main/java/dev/slimevr/autobone/AutoBone.kt index 29e717bb19..ae55a81331 100644 --- a/server/src/main/java/dev/slimevr/autobone/AutoBone.kt +++ b/server/src/main/java/dev/slimevr/autobone/AutoBone.kt @@ -44,6 +44,7 @@ class AutoBone(server: VRServer) { val heightOffsets = FastList( arrayOf( BoneType.NECK, + BoneType.UPPER_CHEST, BoneType.CHEST, BoneType.WAIST, BoneType.HIP, diff --git a/server/src/main/java/dev/slimevr/autobone/errors/BodyProportionError.kt b/server/src/main/java/dev/slimevr/autobone/errors/BodyProportionError.kt index f82ac513ce..923393cc78 100644 --- a/server/src/main/java/dev/slimevr/autobone/errors/BodyProportionError.kt +++ b/server/src/main/java/dev/slimevr/autobone/errors/BodyProportionError.kt @@ -69,14 +69,14 @@ class BodyProportionError : IAutoBoneError { RangeProportionLimiter( 0.0945f, { config: HumanPoseManager -> config.getOffset(SkeletonConfigOffsets.UPPER_CHEST) }, - 0.02f + 0.01f ), // Chest // Experimental: 0.0945 RangeProportionLimiter( 0.0945f, { config: HumanPoseManager -> config.getOffset(SkeletonConfigOffsets.CHEST) }, - 0.02f + 0.01f ), // Waist // Experimental: 0.118 diff --git a/server/src/main/java/dev/slimevr/osc/UnityArmature.kt b/server/src/main/java/dev/slimevr/osc/UnityArmature.kt index 5d2dc9ca47..8c8564bd1f 100644 --- a/server/src/main/java/dev/slimevr/osc/UnityArmature.kt +++ b/server/src/main/java/dev/slimevr/osc/UnityArmature.kt @@ -74,6 +74,8 @@ class UnityArmature(localRot: Boolean) { } fun updateNodes() { + // Set the upper chest node's rotation to the chest's + upperChestNode.localTransform.rotation = chestNode.localTransform.rotation // Update the root node hipNode.update() } diff --git a/server/src/main/java/dev/slimevr/tracking/processor/BoneType.java b/server/src/main/java/dev/slimevr/tracking/processor/BoneType.java index 01fd323622..8b43039159 100644 --- a/server/src/main/java/dev/slimevr/tracking/processor/BoneType.java +++ b/server/src/main/java/dev/slimevr/tracking/processor/BoneType.java @@ -11,7 +11,7 @@ public enum BoneType { HEAD(BodyPart.HEAD), HEAD_TRACKER(), NECK(BodyPart.NECK), - UPPER_CHEST(BodyPart.CHEST), + UPPER_CHEST(BodyPart.UPPER_CHEST), CHEST_TRACKER, CHEST(BodyPart.CHEST), WAIST(BodyPart.WAIST),