javafx 3d Meshview旋转
javafx 3d Meshview rotation
我想旋转电机的轴,但未能获得所需的行为。
我得到的旋转是这个。
这是我正在使用的代码,其中 shaft 是我要旋转的 MeshView:
Model3D motor = new Model3D("motor.obj");
Map<String, MeshView> meshMapMotor = motor.getMapMeshes();
Pane gpMotor = new Pane();
for (Map.Entry<String, MeshView> entry : meshMapMotor.entrySet()) {
String key = entry.getKey();
MeshView value = entry.getValue();
Rotate rot = new Rotate(180);
rot.axisProperty().set(Rotate.Y_AXIS);
value.getTransforms().add(rot);
gpMotor.getChildren().add(value);
System.out.println("name: " + key);
if (key.equals("default (3)")) {
shaft = value;
}
}
gpMotor.setTranslateZ(7);
Rotate rot = new Rotate(1);
rot.axisProperty().set(new Point3D(0, 0, 1));
shaft.getTransforms().add(rot);
if (shaft != null) {
KeyFrame shaftFrame = new KeyFrame(Duration.millis(100), new KeyValue(rot.angleProperty(), 360));
motorRunning = new Timeline(shaftFrame);
motorRunning.setCycleCount(Timeline.INDEFINITE);
motorRunning.play();
}
Rotate rot = new Rotate(1);
//rot.axisProperty().set(new Point3D(0, 0, 0));
rot.setPivotX(0);
rot.setPivotY(1.4);
rot.setPivotZ(0);
达到了我想要的效果
我想旋转电机的轴,但未能获得所需的行为。
我得到的旋转是这个。
这是我正在使用的代码,其中 shaft 是我要旋转的 MeshView:
Model3D motor = new Model3D("motor.obj");
Map<String, MeshView> meshMapMotor = motor.getMapMeshes();
Pane gpMotor = new Pane();
for (Map.Entry<String, MeshView> entry : meshMapMotor.entrySet()) {
String key = entry.getKey();
MeshView value = entry.getValue();
Rotate rot = new Rotate(180);
rot.axisProperty().set(Rotate.Y_AXIS);
value.getTransforms().add(rot);
gpMotor.getChildren().add(value);
System.out.println("name: " + key);
if (key.equals("default (3)")) {
shaft = value;
}
}
gpMotor.setTranslateZ(7);
Rotate rot = new Rotate(1);
rot.axisProperty().set(new Point3D(0, 0, 1));
shaft.getTransforms().add(rot);
if (shaft != null) {
KeyFrame shaftFrame = new KeyFrame(Duration.millis(100), new KeyValue(rot.angleProperty(), 360));
motorRunning = new Timeline(shaftFrame);
motorRunning.setCycleCount(Timeline.INDEFINITE);
motorRunning.play();
}
Rotate rot = new Rotate(1);
//rot.axisProperty().set(new Point3D(0, 0, 0));
rot.setPivotX(0);
rot.setPivotY(1.4);
rot.setPivotZ(0);
达到了我想要的效果