JavaFX 3D-Grafikprobleme bei unterschiedlichem Scaling

EmilErlenmeyer

Neues Mitglied
Hallo zusammen,
ich erstelle gerade eine JavaFX application zur Darstellung von Molekülen und habe das Problem, dass die 3D-Grafik der Camera bei sich überschneidenen Spheres in Abhängigkeit des Scalings der world-Koordinaten einmal ein gutes und einmal ein schlechtes Bild ergibt.
Ich benutze folgende JavaFX version: javafx.runtime.version: 8.0.161-b12
Ich habe den Problemfall auf folgenden Java-Code reduziert:

Java:
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.PerspectiveCamera;
import javafx.scene.Scene;
import javafx.scene.SceneAntialiasing;
import javafx.scene.paint.Color;
import javafx.scene.paint.PhongMaterial;
import javafx.stage.Stage;
import javafx.scene.shape.Sphere;
import javafx.scene.transform.Rotate;
import javafx.scene.transform.Translate;

public class Test extends Application {
    @Override
    public void start(Stage stage) {
        
// Scaling factor
//    double sc = 6000.0;
    double sc =    1.0;

// Sphere 1
    Sphere sphere1 = new Sphere (0.4*sc);
    sphere1.setTranslateX ( 0.20*sc);
    sphere1.setTranslateY ( 0.30*sc);
    sphere1.setTranslateZ (-0.50*sc);
    sphere1.setMaterial   (new PhongMaterial(Color.RED));
    
// Sphere 2
    Sphere sphere2 = new Sphere (1.0*sc);
    sphere2.setTranslateX ( 0.80*sc);
    sphere2.setTranslateY ( 0.15*sc);
    sphere2.setTranslateZ ( 0.00*sc);
    sphere2.setMaterial   (new PhongMaterial(Color.BLUE));
    
// Group
    Group root = new Group (sphere1, sphere2);
    
// Camera
    final PerspectiveCamera camera = new PerspectiveCamera (true);
    camera.setTranslateZ (-6.0*sc);
    camera.setNearClip   (     0.1);
    camera.setFarClip    (100000.0);
    
// Scene
    Scene scene = new Scene (root, 800.0, 600.0, true, SceneAntialiasing.BALANCED);
    scene.setCamera (camera);
    
// Stage
    stage.setScene(scene);
    stage.show();
    
    }
    public static void main(String args[]){
    launch(args);
    }
}

Als Ergebnis sehe ich bei sc = 1.0 eine gute Grafik und bei sc = 6000.0 eine absolut miese Darstellung des Kugelausschnitts:
12387

Kann man das verbessern?
Ich danke schon mal für die Hilfe.
EmilErlenmeyer
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben