2013-11-08 2 views
2

Похоже, Transform класс в JavaFX содержит 3 координаты (x, y и z).Почему Transform в JavaFX выглядит как 3D?

Что произойдет, если я повернусь из плоскости? Будет ли перспектива?

UPDATE

На самом деле объект исчезает, если повернута из плоскости даже на 1 градус. Зачем?

public class TransformTry extends Application { 

    public static void main(String[] args) { 
     launch(args); 
    } 

    @Override 
    public void start(Stage primaryStage) { 
     primaryStage.setTitle("Drawing Operations Test"); 
     Group root = new Group(); 
     Canvas canvas = new Canvas(300, 250); 
     //canvas.getTransforms().add(new Rotate(1, new Point3D(0, 1, 0))); // square disappears 
     canvas.getTransforms().add(new Rotate(1, new Point3D(0, 0, 1))); // rotates correctly 
     GraphicsContext gc = canvas.getGraphicsContext2D(); 
     gc.strokeRect(-50, -50, 100, 100); 
     root.getChildren().add(canvas); 
     primaryStage.setScene(new Scene(root)); 
     primaryStage.show(); 
    } 


} 

UPDATE 2

Я нашел способ использовать перспективную камеру, но она работает странно: она выглядит всегда сверху в центре окна, так что вне плоскости объекта изменяется на окне изменение размера:

public class ShapeTry01 extends Application { 

    @Override 
    public void start(Stage stage) throws Exception { 



     Shape shape = new Rectangle(100,100,50,50); 
     shape.setStroke(Color.RED); 
     shape.setFill(null); 

     Group group = new Group(); 
     group.getChildren().add(shape); 
     //group.getTransforms().add(new Rotate(10, new Point3D(0, 0, 1))); 
     group.getTransforms().add(new Rotate(10, new Point3D(0, 1, 0))); 

     PerspectiveCamera camera = new PerspectiveCamera(); 
     camera.setFieldOfView(45); 

     Scene scene = new Scene(group); 
     scene.setCamera(camera); 

     stage.setTitle("ShapeTry01"); 
     stage.setScene(scene); 
     stage.show(); 

    } 

    public static void main(String[] args) { 
     launch(args); 

    } 


} 
+0

так что я сделал. теперь ваша очередь: скажите что-то –

ответ

3

JavaFX 2 был запущен с 3D в виду, поэтому много API имеет указанную координату z. Но фактически полезный 3D был добавлен только в JavaFX8 (выйдет в следующем году).

Вы можете посмотреть документацию здесь: http://docs.oracle.com/javafx/8/3d_graphics/jfxpub-3d_graphics.htm и попробовать разработчиков предварительного просмотра: https://jdk8.java.net/download.html

+0

Итак, в настоящее время из плоских преобразований просто молча убивают рисунки? –

+0

, если вы не присоедините Перспективную камеру к своей сцене: http://docs.oracle.com/javafx/2/api/javafx/scene/PerspectiveCamera.html –

+0

можно даже в JavaFX2? Можете ли вы намекнуть мне, где закодировать камеру в примере выше, пожалуйста? –

Смежные вопросы