diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/animations/Ipo.java b/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/animations/Ipo.java index f08a14770..f388b703f 100644 --- a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/animations/Ipo.java +++ b/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/animations/Ipo.java @@ -70,7 +70,7 @@ public class Ipo { * the frame for which the value is calculated * @return calculated ipo value */ - public float calculateValue(int frame) { + public double calculateValue(int frame) { return this.calculateValue(frame, 0); } @@ -85,7 +85,7 @@ public class Ipo { * the index of the curve * @return calculated ipo value */ - public float calculateValue(int frame, int curveIndex) { + public double calculateValue(int frame, int curveIndex) { return bezierCurves[curveIndex].evaluate(frame, BezierCurve.Y_VALUE); } @@ -170,7 +170,7 @@ public class Ipo { for (int j = 0; j < bezierCurves.length; ++j) { double value = bezierCurves[j].evaluate(frame, BezierCurve.Y_VALUE); switch (bezierCurves[j].getType()) { - // LOCATION + // LOCATION case AC_LOC_X: translation[0] = (float) value; break; @@ -282,12 +282,12 @@ public class Ipo { } @Override - public float calculateValue(int frame) { + public double calculateValue(int frame) { return constValue; } @Override - public float calculateValue(int frame, int curveIndex) { + public double calculateValue(int frame, int curveIndex) { return constValue; } diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/Constraint.java b/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/Constraint.java index 99f5ac4b1..ec220ebdc 100644 --- a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/Constraint.java +++ b/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/constraints/Constraint.java @@ -123,7 +123,7 @@ public abstract class Constraint { */ public void apply(int frame) { Transform targetTransform = targetOMA != null ? constraintHelper.getTransform(targetOMA, subtargetName, targetSpace) : null; - constraintDefinition.bake(ownerSpace, targetSpace, targetTransform, ipo.calculateValue(frame)); + constraintDefinition.bake(ownerSpace, targetSpace, targetTransform, (float)ipo.calculateValue(frame)); } @Override diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/curves/BezierCurve.java b/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/curves/BezierCurve.java index 3034e1789..b905faee8 100644 --- a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/curves/BezierCurve.java +++ b/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/curves/BezierCurve.java @@ -24,9 +24,9 @@ public class BezierCurve { /** The dimension of the curve. */ private int dimension; /** A table of the bezier points. */ - private float[][][] bezierPoints; + private double[][][] bezierPoints; /** Array that stores a radius for each bezier triple. */ - private float[] radiuses; + private double[] radiuses; @SuppressWarnings("unchecked") public BezierCurve(final int type, final List bezTriples, final int dimension) { @@ -38,8 +38,8 @@ public class BezierCurve { // first index of the bezierPoints table has the length of triples amount // the second index points to a table od three points of a bezier triple (handle, point, handle) // the third index specifies the coordinates of the specific point in a bezier triple - bezierPoints = new float[bezTriples.size()][3][dimension]; - radiuses = new float[bezTriples.size()]; + bezierPoints = new double[bezTriples.size()][3][dimension]; + radiuses = new double[bezTriples.size()]; int i = 0, j, k; for (Structure bezTriple : bezTriples) { DynamicArray vec = (DynamicArray) bezTriple.getFieldValue("vec"); @@ -62,13 +62,13 @@ public class BezierCurve { * Z_VALUE - the Z factor of the result * @return the value of the curve */ - public float evaluate(int frame, int valuePart) { + public double evaluate(int frame, int valuePart) { for (int i = 0; i < bezierPoints.length - 1; ++i) { if (frame >= bezierPoints[i][1][0] && frame <= bezierPoints[i + 1][1][0]) { - float t = (frame - bezierPoints[i][1][0]) / (bezierPoints[i + 1][1][0] - bezierPoints[i][1][0]); - float oneMinusT = 1.0f - t; - float oneMinusT2 = oneMinusT * oneMinusT; - float t2 = t * t; + double t = (frame - bezierPoints[i][1][0]) / (bezierPoints[i + 1][1][0] - bezierPoints[i][1][0]); + double oneMinusT = 1.0f - t; + double oneMinusT2 = oneMinusT * oneMinusT; + double t2 = t * t; return bezierPoints[i][1][valuePart] * oneMinusT2 * oneMinusT + 3.0f * bezierPoints[i][2][valuePart] * t * oneMinusT2 + 3.0f * bezierPoints[i + 1][0][valuePart] * t2 * oneMinusT + bezierPoints[i + 1][1][valuePart] * t2 * t; } } @@ -103,7 +103,7 @@ public class BezierCurve { * index of the bezier triple * @return radius of the required bezier triple */ - public float getRadius(int bezierTripleIndex) { + public double getRadius(int bezierTripleIndex) { return radiuses[bezierTripleIndex]; } @@ -114,9 +114,9 @@ public class BezierCurve { public List getControlPoints() { List controlPoints = new ArrayList(bezierPoints.length * 3); for (int i = 0; i < bezierPoints.length; ++i) { - controlPoints.add(new Vector3f(bezierPoints[i][0][0], bezierPoints[i][0][1], bezierPoints[i][0][2])); - controlPoints.add(new Vector3f(bezierPoints[i][1][0], bezierPoints[i][1][1], bezierPoints[i][1][2])); - controlPoints.add(new Vector3f(bezierPoints[i][2][0], bezierPoints[i][2][1], bezierPoints[i][2][2])); + controlPoints.add(new Vector3f((float)bezierPoints[i][0][0], (float)bezierPoints[i][0][1], (float)bezierPoints[i][0][2])); + controlPoints.add(new Vector3f((float)bezierPoints[i][1][0], (float)bezierPoints[i][1][1], (float)bezierPoints[i][1][2])); + controlPoints.add(new Vector3f((float)bezierPoints[i][2][0], (float)bezierPoints[i][2][1], (float)bezierPoints[i][2][2])); } return controlPoints; } @@ -137,7 +137,7 @@ public class BezierCurve { * @return text representation of the triple */ private String toStringBezTriple(int tripleIndex) { - if (this.dimension == 2) { + if (dimension == 2) { return "[(" + bezierPoints[tripleIndex][0][0] + ", " + bezierPoints[tripleIndex][0][1] + ") (" + bezierPoints[tripleIndex][1][0] + ", " + bezierPoints[tripleIndex][1][1] + ") (" + bezierPoints[tripleIndex][2][0] + ", " + bezierPoints[tripleIndex][2][1] + ")]"; } else { return "[(" + bezierPoints[tripleIndex][0][0] + ", " + bezierPoints[tripleIndex][0][1] + ", " + bezierPoints[tripleIndex][0][2] + ") (" + bezierPoints[tripleIndex][1][0] + ", " + bezierPoints[tripleIndex][1][1] + ", " + bezierPoints[tripleIndex][1][2] + ") (" + bezierPoints[tripleIndex][2][0] + ", " + bezierPoints[tripleIndex][2][1] + ", " + bezierPoints[tripleIndex][2][2] + ")]"; diff --git a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/curves/CurvesHelper.java b/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/curves/CurvesHelper.java index 3e889368f..1be2c5b5a 100644 --- a/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/curves/CurvesHelper.java +++ b/jme3-blender/src/main/java/com/jme3/scene/plugins/blender/curves/CurvesHelper.java @@ -289,7 +289,7 @@ public class CurvesHelper extends AbstractBlenderHelper { int triplesCount = controlPoints.size() / 3; List taperControlPoints = new ArrayList(triplesCount); for (int i = 0; i < triplesCount; ++i) { - taperControlPoints.add(new Vector3f(controlPoints.get(i * 3 + 1).x, bezierCurve.getRadius(i), 0)); + taperControlPoints.add(new Vector3f(controlPoints.get(i * 3 + 1).x, (float)bezierCurve.getRadius(i), 0)); } taperObject = new Spline(SplineType.Linear, taperControlPoints, 0, false); }