JavaFx:使用时间轴动画旋转连续模型

时间:2018-03-18 18:29:50

标签: javafx

我有一个包含所有滚动,俯仰和偏航值的csv文件。该文件有大约11000行滚动,俯仰和偏航值。 我正在尝试在读取三个值的每一行后旋转3D模型。我正在使用openCSV读取csv文件并将其存储在ArrayList中。现在使用foreach循环,我使用Point3D和旋转角度使用一些数学表达式计算3D旋转轴点。

动机:使用每组r,p和y值的角度旋转模型。

我的尝试:为每组r,p和y值创建for-each循环。在每个循环中,我正在尝试计算角度并使用时间轴类,尝试在获得角度时为模型设置动画。

当前场景:我能够旋转3D模型,但仅适用于最后一组r,p和y值。它不会为每组值旋转。我不明白我的代码中出了什么问题。

以下代码:

for (Parameters listValues : list) {
            double rollValue = Double.parseDouble(listValues.getRoll());
            double pitchValue = Double.parseDouble(listValues.getPitch());
            double yawValue = Double.parseDouble(listValues.getYaw());

            //lines of code calculating mathematical expression

            //calculating angle of rotation
            double angle = Math.acos((A11 + A22 + A33 - 1d) / 2d);
            if (angle != 0d) {
                double denom = 2d * Math.sin(angle);
                Point3D p = new Point3D((A32 - A23) / denom, (A13 - A31) / denom, (A21 - A12) / denom);
                modelGroup.setRotationAxis(p);
                modelGroup.setRotate(Math.toDegrees(angle));

                //timeline animation for each for-each loop
                Timeline t = new Timeline(new KeyFrame(Duration.millis(5000),
                        new KeyValue(modelGroup.rotateProperty(), modelGroup.getRotate() +  Math.toDegrees(angle))));
                t.play();
            }
        }

0 个答案:

没有答案