参考:
https://blog.csdn.net/maosijunzi/article/details/43021019
https://blog.csdn.net/wingfourever/article/details/12443181
在javaFX场景空间坐标中,Camera默认的投影平面是 Z = 0,Camera的坐标系统如下:
X轴指向右边
Y轴指向下边
Z轴指向里边
PerspectiveCamera(boolean fixedEyeAtCameraZero)
是javaFX8新添加的,通过一个参数fixedEyeAtCameraZero来指定你是否能控制这个相机的位置,被这个相机渲染的东西就
会呈现在3D场景中。
import javafx.application.Application;
import javafx.scene.PerspectiveCamera;
import javafx.scene.Scene;
import javafx.scene.SubScene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.Pane;
import javafx.scene.transform.Rotate;
import javafx.scene.transform.Scale;
import javafx.stage.Stage;
/**
* 倾斜视角
*/
public class CameraTest extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
Image image = new Image("http://tile.openstreetmap.org/1/1/0.png");
SubScene subScene1 = new SubScene(new Pane(new ImageView(image)), image.getWidth(), image.getHeight());
Pane pane1 = new Pane(subScene1);
SubScene subScene2 = new SubScene(new Pane(new ImageView(image)), image.getWidth(), image.getHeight());
PerspectiveCamera camera = new PerspectiveCamera();
camera.getTransforms().addAll(new Rotate(45, Rotate.X_AXIS), new Scale(0.85, 0.85));
subScene2.setCamera(camera);
Pane pane2 = new Pane(subScene2);
pane2.setTranslateX(subScene2.getWidth());
Pane root = new Pane(pane1, pane2);
primaryStage.setScene(new Scene(root, subScene2.getWidth() * 2, subScene2.getHeight()));
primaryStage.show();
}
}