Неожиданный самолет в 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();
}
}
Буду благодарен за любые идеи или предложения.