Skip to content

Commit 6620530

Browse files
committed
fix: rotation keyframe
1 parent ac77559 commit 6620530

2 files changed

Lines changed: 5 additions & 5 deletions

File tree

api/src/main/java/kr/toxicity/model/api/bone/RenderedBone.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,7 @@ public void defaultPosition(@NotNull Supplier<Vector3f> movement) {
434434
}
435435

436436
private float frame() {
437-
return keyFrame != null ? keyFrame.time() * 100F : parent != null ? parent.frame() : 0F;
437+
return keyFrame != null ? keyFrame.time() * 20F * Tracker.MINECRAFT_TICK_MULTIPLIER : parent != null ? parent.frame() : 0F;
438438
}
439439

440440
private @NotNull BoneMovement defaultFrame() {

api/src/main/java/kr/toxicity/model/api/util/VectorUtil.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ private static void point(@NotNull FloatCollection target, List<VectorPoint> poi
4646
return sum(position, rotation, scale, set);
4747
}
4848

49-
public static @NotNull List<AnimationPoint> sum(@NotNull List<VectorPoint> position, @NotNull List<VectorPoint> rotation, @NotNull List<VectorPoint> scale, FloatCollection points) {
49+
public static @NotNull List<AnimationPoint> sum(@NotNull List<VectorPoint> position, @NotNull List<VectorPoint> rotation, @NotNull List<VectorPoint> scale, @NotNull FloatCollection points) {
5050
var list = new ArrayList<AnimationPoint>();
5151
var pp = putPoint(position, points);
5252
var rp = putPoint(rotation, points);
@@ -95,9 +95,9 @@ public static void insertRotationFrame(@NotNull FloatSet frames, @NotNull List<V
9595
for (int i = 0; i < vectorPoints.size() - 1; i++) {
9696
var before = vectorPoints.get(i);
9797
var after = vectorPoints.get(i + 1);
98-
var angle = (float) Math.ceil(Math.toDegrees(MathUtil.toQuaternion(after.vector())
99-
.mul(MathUtil.toQuaternion(before.vector()).invert())
100-
.angle()) / 45F);
98+
var sub = after.vector().sub(before.vector(), new Vector3f()).absolute();
99+
var max = Math.max(sub.x, Math.max(sub.y, sub.z)) / 30F;
100+
var angle = (float) Math.ceil(max);
101101
if (angle > 1) {
102102
for (float t = 1; t < angle; t++) {
103103
frames.add(linear(before.time(), after.time(), t / angle));

0 commit comments

Comments
 (0)