Ich versuche, eine isometrische Ansicht eines Gitters zu bekommen. Das Raster ist nur ein Teil der Hauptszene, also habe ich eine Subszene erstellt und möchte eine Kamera hinzufügen. Ich möchte in der Lage sein, die Kamera ein- und auszuzoomen und sie zu schwenken, um den Blickwinkel während all dieser Vorgänge zu erhalten.Wie man eine Kamera in einem Subscene einrichtet und transformiert?
Hier ist, was ich ohne die Kamera:
public class MyApp extends Application {
@Override
public void start(Stage stage) throws Exception {
Button actionButton = new Button("Placeholder\t\t\t\t\t\t\t\t\t\t\t\t");
HBox hbox = new HBox(actionButton);
BorderPane mainPane = new BorderPane(new MyView(), null, null, hbox, null);
Scene scene = new Scene(mainPane);
stage.setScene(scene);
stage.show();
}
private class MyView extends Group {
MyView() {
super();
GridPane grid = new GridPane();
for (int i = 0; i < 64; i++) {
Rectangle tile = new Rectangle(30, 30, Color.GREEN);
BorderPane pane = new BorderPane(tile);
pane.setBorder(new Border(new BorderStroke(null, BorderStrokeStyle.SOLID,
null, null, null)));
grid.add(pane, i/8, i % 8);
}
Group root = new Group();
root.getChildren().add(grid);
SubScene scene = new SubScene(root, 300, 300, true, SceneAntialiasing.BALANCED);
scene.setFill(Color.DARKCYAN); // just to see the area
getChildren().add(scene);
}
}
public static void main(String[] args) throws Exception {
launch(args);
}
}
Nun füge ich die Kamera wie dies im MyView Konstruktor:
Camera camera = new PerspectiveCamera(true);
scene.setCamera(camera);
und das Gitter verschwindet.
Ich habe noch nicht einmal jede Transformation noch (ich würde camera.getTransforms().addAll(new Rotate(-15, Rotate.Y_AXIS));
tun). Was mache ich falsch?
auch, wie kann ich der Subszene sagen, um den verfügbaren Platz zu nehmen? Ich möchte keine bestimmte Größe angeben müssen, da das Programm auf allen Arten von Bildschirmen ausgeführt werden kann.