我尝试将子场景的背景设置为图像,但当我这样做时,会发生以下情况:
这是密码:
public void start(Stage stage) throws Exception {
PerspectiveCamera camera = new PerspectiveCamera(true);
Group model = new Group(new Box(200, 10, 10));
Group course = new Group(model);
BorderPane borderPane = new BorderPane();
Pane pane1 = new Pane(course);
SubScene subScene1 = new SubScene(pane1, 1000, 720);
Group homeCameraXform = new Group();
model.getChildren().add(homeCameraXform);
homeCameraXform.getChildren().add(camera);
subScene1.setCamera(camera);
camera.setNearClip(.1);
camera.setFarClip(10000);
camera.setTranslateZ(-1000);
Xform s = new Xform();
s.getChildren().add(camera);
subScene1.setOnMouseDragged(e -> s.rx.setAngle(s.rx.getAngle()+ 10));
borderPane.setLeft(subScene1);
subScene1.setFill(new ImagePattern(new Image("file.jpg")));
Scene scene = new Scene(borderPane, 1280,720, true);
stage.setScene(scene);
stage.show();
}
对于一个有深度缓冲区的普通场景,我只需要做scene.setFill(new ImagePattern(new Image("file")))
。当我尝试setFill(Color.RED)
而不是setFill(new ImagePattern(new Image("")))
时,它按预期工作。我还需要做什么来使用ImagePattern设置填充?
1条答案
按热度按时间rm5edbpk1#
使用天空穹顶作为3D背景
这是一个天空穹顶:
一个3d网格,通常用于实时渲染。它的法线指向内部,以便从内部看到它的纹理。
这是一个单独的javafx应用程序,有两个文件可以测试。(你可能注意到是skydome在旋转,而不是摄像头。在这个例子中摄像头的运动没有实现)
Java应用程序
skidome.fxml文件
空间.jpg
结果