在JavaFX中为面板中的对象设置摄像头

时间:2017-07-25 21:44:42

标签: java javafx 3d javafx-8

我正在使用我的IDE和Java FX Scene Builder使用JavaFX构建应用程序。

“Scene”对象在扩展Application的类中定义。在这个类的嵌套面板中,我加载另一个.fxml文件。

这个与Java类配对的.fxml文件包含一些我想要显示的形状。

如果我将相机添加到Scene对象,则相机将应用于GUI中的所有面板,菜单和其余元素。我只想将相机应用到包含形状的内部面板,但是当我查找文档时,相机总是被添加到场景中。

这是Application类中的代码,也是我第一次尝试添加摄像头,正如我之前解释的那样,由于摄像头适用于应用程序窗口内的所有内容,因此会产生奇怪的结果:

   public void initRootLayout() {
      try {
         // Load root layout from fxml file.
         FXMLLoader loader = new FXMLLoader();
         loader.setLocation(MainApp.class.getResource("view/RootLayout.fxml"));
         rootLayout = (BorderPane) loader.load();

         // Show the scene containing the root layout.
         Scene scene = new Scene(rootLayout);
         addCameraAndLights(scene, null);
         primaryStage.setScene(scene);
         primaryStage.show();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }

1 个答案:

答案 0 :(得分:1)

使用SubScene包含3D形状。

  

SubScene类是场景图中内容的容器。 SubScene提供场景不同部分的分离,每个部分都可以使用不同的摄像机,深度缓冲区或场景抗锯齿进行渲染。 SubScene嵌入到主场景或另一个子场景中。

您可以将子场景中的set a camera与根场景中应用的任何相机分开。

在以下答案中提供了SubScene使用的示例: