From 1ca468ac44d1456ed16fa188e39a7d71179ca3f5 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Sun, 25 Dec 2022 17:31:29 +0100 Subject: [PATCH] fix skeletal position and animations (chest) --- .../gui/rendering/skeletal/baked/BakedSkeletalModel.kt | 2 +- .../gui/rendering/skeletal/instance/SkeletalInstance.kt | 4 ++-- .../skeletal/model/animations/SkeletalAnimation.kt | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/baked/BakedSkeletalModel.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/baked/BakedSkeletalModel.kt index f537b7613..36b39ef04 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/baked/BakedSkeletalModel.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/baked/BakedSkeletalModel.kt @@ -91,7 +91,7 @@ class BakedSkeletalModel( companion object { fun Vec3.fromBlockCoordinates(): Vec3 { - return Vec3(this.x.toBlockCoordinate(), this.y.toBlockCoordinate(), this.z.toBlockCoordinate()) + return Vec3(this.x.toBlockCoordinate(), this.y / BLOCK_RESOLUTION, this.z.toBlockCoordinate()) } inline fun Float.toBlockCoordinate(): Float { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/instance/SkeletalInstance.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/instance/SkeletalInstance.kt index 8f93075f4..20145c271 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/instance/SkeletalInstance.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/instance/SkeletalInstance.kt @@ -74,8 +74,8 @@ class SkeletalInstance( fun updatePosition(position: Vec3, rotation: EntityRotation) { val matrix = Mat4() .translateAssign(position) - .rotateAssign((180.0f - rotation.yaw).toFloat().rad, Vec3(0, 1, 0)) - .translateAssign(Vec3(-0.5, -0.5, -0.5)) // move to bottom center + .rotateAssign((180.0f - rotation.yaw).rad, Vec3(0, 1, 0)) + .translateAssign(Vec3(-0.5, 0.0f, -0.5)) // move to bottom center if (baseTransform != matrix) { baseTransform = matrix diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/model/animations/SkeletalAnimation.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/model/animations/SkeletalAnimation.kt index c3d0efffe..ea9d2fa55 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/model/animations/SkeletalAnimation.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/skeletal/model/animations/SkeletalAnimation.kt @@ -55,9 +55,9 @@ interface SkeletalAnimation { val rotation = get(KeyframeChannels.ROTATION, outliner, tweakedTime) if (rotation != null && rotation != Vec3.EMPTY_INSTANCE) { transform.translateAssign(outliner.origin.fromBlockCoordinates()) - transform.rotateAssign(rotation.x.rad, Vec3(1, 0, 0)) - transform.rotateAssign(rotation.y.rad, Vec3(0, 1, 0)) - transform.rotateAssign(rotation.z.rad, Vec3(0, 0, 1)) + transform.rotateAssign(-rotation.x.rad, Vec3(1, 0, 0)) + transform.rotateAssign(-rotation.y.rad, Vec3(0, 1, 0)) + transform.rotateAssign(-rotation.z.rad, Vec3(0, 0, 1)) transform.translateAssign(-outliner.origin.fromBlockCoordinates()) } val scale = get(KeyframeChannels.SCALE, outliner, tweakedTime)