Fixes animation time sampling when source data contains duplicate keyframes

empirephoenix-patch-1
Nehon 7 years ago
parent f47f865d1d
commit c971a4758f
  1. 7
      jme3-plugins/src/gltf/java/com/jme3/scene/plugins/gltf/TrackData.java

@ -36,8 +36,15 @@ public class TrackData {
List<KeyFrame> keyFrames = new ArrayList<>(); List<KeyFrame> keyFrames = new ArrayList<>();
TimeData timeData = timeArrays.get(0); TimeData timeData = timeArrays.get(0);
Type type = timeData.type; Type type = timeData.type;
float lastTime = -1f;
for (int i = 0; i < timeData.times.length; i++) { for (int i = 0; i < timeData.times.length; i++) {
float time = timeData.times[i]; float time = timeData.times[i];
//avoid some double keyframes that can have bad effects on interpolation
if (Float.floatToIntBits(time) == Float.floatToIntBits(lastTime)) {
lastTime = time;
continue;
}
lastTime = time;
KeyFrame keyFrame = new KeyFrame(); KeyFrame keyFrame = new KeyFrame();
keyFrame.time = time; keyFrame.time = time;
setKeyFrameTransforms(type, keyFrame, timeData.times); setKeyFrameTransforms(type, keyFrame, timeData.times);

Loading…
Cancel
Save