Неожиданный самолет в java FX 3D view

Я хочу показать трехмерную сетку после ее генерации в потоке Java FX, но в конечном виде я вижу и эту, и эту неожиданную плоскость, которая прерывает правильную форму / сетку.

Как мне найти проблему? Во-первых, я создал тестовое приложение Java FX, в котором я хотел показать сгенерированный меш. Он работал правильно, как вы можете видеть здесь:

хорошо

и код для этого примерно так:

public class Main extends Application {

@Override
public void start(Stage arg0) throws Exception {
    Group meshGroup = new Group();

    TriangleMesh detectedMesh = new TriangleMesh();

    detectedMesh.getTexCoords().addAll(0, 0);

    // ... adding points and faces to the mesh from double[][] data

    MeshView mv = new MeshView(detectedMesh);

    // ... some MeshView settings

    meshGroup.getChildren().addAll(mv);

    StackPane root = new StackPane();
    root.getChildren().add(meshGroup);
    Scene scene = new Scene(root, 800, 600, true, SceneAntialiasing.BALANCED);
    scene.setCamera(new PerspectiveCamera());

    Stage primaryStage = new Stage();
    primaryStage.setScene(scene);
    primaryStage.show();
}
}

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

плохой

Код для этого почти такой же, но на этот раз это не независимое приложение, а окно создано другим потоком Java FX. Важно, что в обоих случаях я использовал одни и те же данные double[][].

public class ChartGenerator {

double[][] data;

public ChartGenerator(double[][] data) {
    this.data = data;
}

public void show() {
    Group meshGroup = new Group();

    TriangleMesh detectedMesh = new TriangleMesh();

    detectedMesh.getTexCoords().addAll(0, 0);

    // ... adding points and faces to the mesh from double[][] data

    MeshView mv = new MeshView(detectedMesh);

    // ... some MeshView settings

    meshGroup.getChildren().addAll(mv);

    StackPane root = new StackPane();
    root.getChildren().add(meshGroup);
    Scene scene = new Scene(root, 800, 600, true, SceneAntialiasing.BALANCED);
    scene.setCamera(new PerspectiveCamera());

    Stage primaryStage = new Stage();
    primaryStage.setScene(scene);
    primaryStage.show();
}
}

Буду благодарен за любые идеи или предложения.

0 ответов

Другие вопросы по тегам