优化Bmp2Model动画实现

This commit is contained in:
Light_Quanta 2025-01-26 09:34:18 +08:00
parent f0d409e1a5
commit 8a887022b0
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959

View file

@ -50,137 +50,57 @@ public class Bmp2Model extends GeoModel<Bmp2Entity> {
CoreGeoBone trackR = getAnimationProcessor().getBone("trackR" + i); CoreGeoBone trackR = getAnimationProcessor().getBone("trackR" + i);
CoreGeoBone trackRRot = getAnimationProcessor().getBone("trackRRot" + i); CoreGeoBone trackRRot = getAnimationProcessor().getBone("trackRRot" + i);
float t = animatable.getEntityData().get(TRACK_L) + 2 * i; float t1 = animatable.getEntityData().get(TRACK_L) + 2 * i % 100;
setTrackPos(trackL, trackLRot, t1);
if (t >= 100) { float t2 = animatable.getEntityData().get(TRACK_R) + 2 * i % 100;
t -= 100; setTrackPos(trackR, trackRRot, t2);
} }
}
if (t < 37.5) { private static void setTrackPos(CoreGeoBone track, CoreGeoBone trackRot, float t) {
trackL.setPosY(0); if (track == null || trackRot == null) return;
trackL.setPosZ(3 * t);
trackLRot.setRotX(0);
}
if (t >= 37.5 && t < 39.5) { if (t < 37.5) {
trackL.setPosY(-(t - 37.5f) * 3 * 0.7071f); track.setPosY(0);
trackL.setPosZ(3 * 37.5f + (t - 37.5f) * 3 * 0.7071f); track.setPosZ(3 * t);
trackLRot.setRotX(45 * Mth.DEG_TO_RAD); trackRot.setRotX(0);
} } else if (t < 39.5) {
track.setPosY(-(t - 37.5f) * 3 * 0.7071f);
if (t >= 39.5 && t < 41.5) { track.setPosZ(3 * 37.5f + (t - 37.5f) * 3 * 0.7071f);
trackL.setPosY(-5.3f - (t - 39.5f) * 3); trackRot.setRotX(45 * Mth.DEG_TO_RAD);
trackL.setPosZ(116); } else if (t < 41.5) {
trackLRot.setRotX(90 * Mth.DEG_TO_RAD); track.setPosY(-5.3f - (t - 39.5f) * 3);
} track.setPosZ(116);
trackRot.setRotX(90 * Mth.DEG_TO_RAD);
if (t >= 41.5 && t < 43) { } else if (t < 43) {
trackL.setPosY(-11.6f - (t - 41.5f) * 3 * 0.7071f); track.setPosY(-11.6f - (t - 41.5f) * 3 * 0.7071f);
trackL.setPosZ(115 - (t - 41.5f) * 3 * 0.7071f); track.setPosZ(115 - (t - 41.5f) * 3 * 0.7071f);
trackLRot.setRotX(135 * Mth.DEG_TO_RAD); trackRot.setRotX(135 * Mth.DEG_TO_RAD);
} } else if (t < 49.5) {
track.setPosY(-15.6f - (t - 43f) * 3 * 0.45f);
if (t >= 43 && t < 49.5) { track.setPosZ(109.5f - (t - 43f) * 3 * 0.75f);
trackL.setPosY(-15.6f - (t - 43f) * 3 * 0.45f); trackRot.setRotX(150 * Mth.DEG_TO_RAD);
trackL.setPosZ(109.5f - (t - 43f) * 3 * 0.75f); } else if (t < 76.5) {
trackLRot.setRotX(150 * Mth.DEG_TO_RAD); track.setPosY(-23.5f);
} track.setPosZ(95f - (t - 49.5f) * 3);
trackRot.setRotX(180 * Mth.DEG_TO_RAD);
if (t >= 49.5 && t < 76.5) { } else if (t < 83.5) {
trackL.setPosY(-23.5f); track.setPosY(-23.5f + (t - 76.5f) * 3 * 0.45f);
trackL.setPosZ(95f - (t - 49.5f) * 3); track.setPosZ(13.5f - (t - 76.5f) * 3 * 0.75f);
trackLRot.setRotX(180 * Mth.DEG_TO_RAD); trackRot.setRotX(210 * Mth.DEG_TO_RAD);
} } else if (t < 85.5) {
track.setPosY(-12.7f + (t - 83.5f) * 3 * 0.7071f);
if (t >= 76.5 && t < 83.5) { track.setPosZ(-3.5f - (t - 83.5f) * 3 * 0.7071f);
trackL.setPosY(-23.5f + (t - 76.5f) * 3 * 0.45f); trackRot.setRotX(225 * Mth.DEG_TO_RAD);
trackL.setPosZ(13.5f - (t - 76.5f) * 3 * 0.75f); } else if (t < 87) {
trackLRot.setRotX(210 * Mth.DEG_TO_RAD); track.setPosY(-9.2f + (t - 85.5f) * 3);
} track.setPosZ(-6.9f);
trackRot.setRotX(270 * Mth.DEG_TO_RAD);
if (t >= 83.5 && t < 85.5) { } else if (t < 89) {
trackL.setPosY(-12.7f + (t - 83.5f) * 3 * 0.7071f); track.setPosY(-4.3f + (t - 87f) * 3 * 0.7071f);
trackL.setPosZ(-3.5f - (t - 83.5f) * 3 * 0.7071f); track.setPosZ(-6.9f + (t - 87f) * 3 * 0.7071f);
trackLRot.setRotX(225 * Mth.DEG_TO_RAD); trackRot.setRotX(315 * Mth.DEG_TO_RAD);
}
if (t >= 85.5 && t < 87) {
trackL.setPosY(-9.2f + (t - 85.5f) * 3);
trackL.setPosZ(-6.9f);
trackLRot.setRotX(270 * Mth.DEG_TO_RAD);
}
if (t >= 87 && t < 89) {
trackL.setPosY(-4.3f + (t - 87f) * 3 * 0.7071f);
trackL.setPosZ(-6.9f + (t - 87f) * 3 * 0.7071f);
trackLRot.setRotX(315 * Mth.DEG_TO_RAD);
}
float t2 = animatable.getEntityData().get(TRACK_R) + 2 * i;
if (t2 >= 100) {
t2 -= 100;
}
if (t2 < 37.5) {
trackR.setPosY(0);
trackR.setPosZ(3 * t2);
trackRRot.setRotX(0);
}
if (t2>= 37.5 && t2< 39.5) {
trackR.setPosY(-(t2- 37.5f) * 3 * 0.7071f);
trackR.setPosZ(3 * 37.5f + (t2- 37.5f) * 3 * 0.7071f);
trackRRot.setRotX(45 * Mth.DEG_TO_RAD);
}
if (t2>= 39.5 && t2< 41.5) {
trackR.setPosY(-5.3f - (t2- 39.5f) * 3);
trackR.setPosZ(116);
trackRRot.setRotX(90 * Mth.DEG_TO_RAD);
}
if (t2>= 41.5 && t2< 43) {
trackR.setPosY(-11.6f - (t2- 41.5f) * 3 * 0.7071f);
trackR.setPosZ(115 - (t2- 41.5f) * 3 * 0.7071f);
trackRRot.setRotX(135 * Mth.DEG_TO_RAD);
}
if (t2>= 43 && t2< 49.5) {
trackR.setPosY(-15.6f - (t2- 43f) * 3 * 0.45f);
trackR.setPosZ(109.5f - (t2- 43f) * 3 * 0.75f);
trackRRot.setRotX(150 * Mth.DEG_TO_RAD);
}
if (t2>= 49.5 && t2< 76.5) {
trackR.setPosY(-23.5f);
trackR.setPosZ(95f - (t2- 49.5f) * 3);
trackRRot.setRotX(180 * Mth.DEG_TO_RAD);
}
if (t2>= 76.5 && t2< 83.5) {
trackR.setPosY(-23.5f + (t2- 76.5f) * 3 * 0.45f);
trackR.setPosZ(13.5f - (t2- 76.5f) * 3 * 0.75f);
trackRRot.setRotX(210 * Mth.DEG_TO_RAD);
}
if (t2>= 83.5 && t2< 85.5) {
trackR.setPosY(-12.7f + (t2- 83.5f) * 3 * 0.7071f);
trackR.setPosZ(-3.5f - (t2- 83.5f) * 3 * 0.7071f);
trackRRot.setRotX(225 * Mth.DEG_TO_RAD);
}
if (t2>= 85.5 && t2< 87) {
trackR.setPosY(-9.2f + (t2- 85.5f) * 3);
trackR.setPosZ(-6.9f);
trackRRot.setRotX(270 * Mth.DEG_TO_RAD);
}
if (t2>= 87 && t2< 89) {
trackR.setPosY(-4.3f + (t2- 87f) * 3 * 0.7071f);
trackR.setPosZ(-6.9f + (t2- 87f) * 3 * 0.7071f);
trackRRot.setRotX(315 * Mth.DEG_TO_RAD);
}
} }
} }
} }