JavaFX - MeshViews не видны на экране

Я пытаюсь добавить группу, содержащую несколько MeshView, которые были прочитаны из файла в центр бордюра. Я использую файл FXML для определения макета. Я дал центру AnchorPane fx:id "centerPane" и группу, содержащую MeshViews, fx:id "centerGroup". Я не получаю никаких ошибок, но на экране в центральной панели ничего не появляется. Я делал то же самое, когда впервые начал, где я вручную создал представление сетки, и оно появилось в центральной панели (но затем я использовал метод setCenter объекта borderpane (которому я также присвоил имя fx: id, чтобы Я мог бы получить к нему доступ из кода контроллера. Я включу часть fxml и строки из контроллера ниже, которые непосредственно задействованы. Если бы кто-то мог помочь мне понять, как отобразить сетки, я был бы очень признателен за помощь. Я прочитал большую часть книги по JavaFX и по какой-то причине все еще борюсь с этим Спасибо.

Из файла FXML:

<center>
  <VBox prefHeight="400.0" prefWidth="640.0">
    <children>
      <AnchorPane fx:id="centerPane" maxHeight="-1.0" maxWidth="-1.0" 
           prefHeight="-1.0" prefWidth="-1.0" VBox.vgrow="ALWAYS">
        <children>
              <Group fx:id="centerGroup" />
        </children>
      </AnchorPane>
    </children>
  </VBox>
</center>

Строки из файла контроллера:

@FXML
private AnchorPane centerPane;

@FXML
private Group centerGroup;

(inside of a for loop I add the meshviews from an array list into the group)
for( - ; - ; - ){
  centerGroup.getChildren().add(meshViews[i]);
}

PerspectiveCamera camera = new PerspectiveCamera(false);

PointLight redLight = new PointLight();
redLight.setColor(Color.RED);

PointLight greenLight = new PointLight();
greenLight.setColor(Color.GREEN);

( I have tried all three below.  middle one gave duplicate child error. )
//borderPane.setCenter(centerGroup);
//centerPane.getChildren().addAll(centerGroup, redLight, greenLight);
centerPane.getChildren().addAll(redLight, greenLight);

Я считаю, что этого кода достаточно, чтобы нарисовать картину того, что я пытаюсь исправить. Я приложу изображение графического интерфейса, чтобы показать, что пока код работает, и я вывожу в консоль количество просмотров сетки, считанных из файла, и число правильное, на экране ничего не появляется. Спасибо за вашу помощь.

Изображение, на котором центр графического интерфейса по-прежнему пуст


person user3064141    schedule 29.07.2018    source источник
comment
BorderPane имеет проблемы с дочерними элементами, которые не добавляются через свойства center, left, right, top или bottom. Вряд ли это подходящий макет для 3D-сцены. Кроме того, без знаний о MeshViews просто невозможно определить, отбракованы ли сетки или скрыты ближними/дальними плоскостями отсечения...   -  person fabian    schedule 29.07.2018


Ответы (1)


вам нужно добавить камеру на сцену

yourStage.setCamera(camera);

добавить камеру в свою группу

centerPane.getChildren().add(camera);
person Giovanni Contreras    schedule 02.08.2018