2017-07-25 3 views
1

Je suis en train de créer une application avec JavaFX avec mon IDE et Java FX Scene Builder.Configuration d'une caméra dans JavaFX pour les objets d'un panneau

L'objet "Scène" est défini dans la classe qui étend Application. À l'intérieur d'un des panneaux imbriqués de cette classe, je charge un autre fichier .fxml.

Cet autre fichier .fxml, qui est associé à une classe Java, contient une forme que je souhaite afficher.

Si j'ajoute l'appareil photo à l'objet Scène, l'appareil photo s'applique à tous les panneaux, menus et autres éléments de l'interface graphique. Je veux seulement que la caméra s'applique au panneau intérieur qui contient la forme, mais quand je regarde la documentation, la caméra est toujours ajoutée à une scène.

ce code est dans la classe d'application et ma première tentative d'ajout d'une caméra, qui, comme je l'ai expliqué, donne des résultats étranges que l'appareil applique à tout l'intérieur de la fenêtre de l'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(); 
     } 
    } 

Répondre

1

Utilisez un SubScene pour contenir votre forme 3D.

La classe SubScene est le conteneur pour le contenu d'un graphe de scène. SubScene fournit une séparation des différentes parties d'une scène, chacune pouvant être restituée avec une caméra différente, un tampon de profondeur ou un anti-alias de scène. Un SubScene est intégré dans la scène principale ou dans une autre sous-scène.

Vous pouvez set a camera sur la sous-scène distincte de toute caméra appliquée sur la scène racine.

Un exemple d'utilisation de Subscene est fourni dans la réponse à: