2016-03-07 4 views
0

Je veux faire tourner l'arbre du moteur, mais je n'ai pas réussi à obtenir le comportement désiré.javafx 3d rotation Meshview

motor model

la rotation je reçois est celui-ci.

motor model

c'est le code que je utilise où l'arbre est le MeshView que je veux tourner:

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(); 

    } 

Répondre

1
Rotate rot = new Rotate(1); 
    //rot.axisProperty().set(new Point3D(0, 0, 0)); 
    rot.setPivotX(0); 
    rot.setPivotY(1.4); 
    rot.setPivotZ(0); 

ce a réussi à montrer l'effet que je voulais.