Я пытаюсь получить изометрический вид сетки. Сетка - это только часть основной сцены, поэтому я создал подсети, и я хочу добавить к ней камеру. Я хочу, чтобы иметь возможность приближать и выключать камеру и панорамировать ее вокруг сохранения угла обзора во время всей этой операции.Как настроить и преобразовать камеру в SubScene?
Вот что у меня есть без камеры:
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);
}
}
Теперь добавьте камеру, как это в конструкторе MyView:
Camera camera = new PerspectiveCamera(true);
scene.setCamera(camera);
и сетка исчезает.
Я даже не делать каких-либо преобразований пока (я бы camera.getTransforms().addAll(new Rotate(-15, Rotate.Y_AXIS));
). Что я делаю не так?
также, как я могу сказать, что подсеть займет какое-то пространство? Я не хочу указывать конкретный размер, потому что программа может работать на всех экранах.