Ich bin auf der Suche nach einer Möglichkeit, ein transparentes Objekt in JavaFX 3D zu rendern. So weit nichts. Ich habe das Problem https://bugs.openjdk.java.net/browse/JDK-8090548 gefunden. Gibt es einen Workaround oder kann ich das nicht nutzen? Brauche ich etwas außer JavaFX (wie Java3D), wenn ich ein transparentes Objekt brauche?JavaFX 3D Transparenz
Antwort
Da JDK8u60 b14 Transparenz in 3D-Formen aktiviert ist.
Dies ist ein Schnelltest mit ihm getan:
Ein Zylinder mit diffuser Farbe Color.web("#ffff0080")
, hinzugefügt wird auf eine Box und zwei Kugeln.
group.getChildren().addAll(sphere1, sphere2, box, cylinder);
Es gibt keine Tiefe Sortieralgorithmus obwohl, was bedeutet, dass, um wie 3D-Formen hinzugefügt werden, um die Szene zählt. Wir müssen die Reihenfolge ändern, Transparenz in der Box zu ermöglichen:
group.getChildren().addAll(sphere1, sphere2, cylinder, box);
aktualisiert
Diese Antwort ist veraltet, da die Java 8u60b14 wie Transparenz in diesem Build JavaFX hinzugefügt wurde.
Als Problem, das Sie in Ihrer Frage Notizen verknüpfen, Transparenz in JavaFX 3D für Java 8. Es ist für Java 9.
implementiert werden kann nicht unterstützt Es gibt eine Problemumgehung ein Benutzer in den Kommentaren erwähnt der Issue Tracker, der einen Hack auf den nativen Code für die JavaFX OpenGL Pipeline beinhaltet. Wenn Sie verzweifelt nach dieser Funktionalität suchen, können Sie diesen Hack ausprobieren. Wenn das für Sie nicht geeignet ist, müssen Sie eine andere Technologie wählen.
Hier ist eine Teillösung. Um die Transparenz zu einer Kugel mit dem Bild der Erde Textur hinzufügen, um es abgebildet, setzen sowohl ein diffuseMap und ein diffuseColor:
private void makeEarth() {
PhongMaterial earthMaterial = new PhongMaterial();
Image earthImage = new Image("file:imgs/earth.jpg");
earthMaterial.setDiffuseMap(earthImage);
earthMaterial.setDiffuseColor(new Color(1,1,1,0.6)); // Note alpha of 0.6
earthMaterial.diffuseMapProperty();
earth=createSphere(0,0,0,300,earthMaterial);
earthMaterial.setSpecularColor(Color.INDIANRED);
earth.setRotationAxis(Rotate.Y_AXIS);
world.getChildren().add(earth);
}
Dies funktioniert nur das Hintergrundbild der Szene zu ermöglichen (durch scene.setFill(starFieldImagePattern);
) durch zu zeigen. Es funktioniert noch nicht, damit andere Formen durchscheinen können.
Offensichtlich ist der Grund dafür, dass die diffuse Farbe mit der diffuseMap-Farbe multipliziert wird, wenn die Farbe der Pixel berechnet wird. Siehe https://docs.oracle.com/javase/8/javafx/api/javafx/scene/paint/PhongMaterial.html.
Interessanter Trick Don, danke für das Teilen. – Birdasaur
- 1. JavaFX 3D-Tiefenrendering falsch
- 2. 3D-Oberfläche JavaFX
- 3. JavaFX 8 3D Szenen Schnittpunkt
- 4. Importieren von animierten 3D-Modellen in JavaFX
- 5. Schatten von 3D-Objekten in Javafx
- 6. Einfaches Beispiel der Transparenz funktioniert nicht in Java 3D
- 7. Wie wird die Transparenz in Matplotlibs 3D-Scatter-Diagramm deaktiviert?
- 8. Three.js Transparenz/Disparation
- 9. JavaFX 3D: Zylinder zu definierten Start- und Endpunkten transformieren
- 10. Wie erstellt man ein 3D/Surface-Diagramm mit JavaFX?
- 11. Javafx: Wie kann ich eine Animation mit 3D-Pfad erstellen?
- 12. Wie ändere ich die Größe eines JavaFX 3D SubScene?
- 13. Wie überlagern Sie GUI über 3D-Szene in JavaFX?
- 14. NSBeispiel + Transparenz?
- 15. UINavigationController Transparenz?
- 16. Transparenz von ModelVisual3D mit DiffuseMaterial
- 17. Was ist besser, CSS-Transparenz oder PNG-Transparenz?
- 18. wie Transparenz in vte.Terminal
- 19. ggplot() Linien Transparenz
- 20. Panel Transparenz Firefox Addon
- 21. DirectX 11 Transparenz Problem
- 22. Transparenz aus der Interstektion
- 23. Gimp-Transparenz funktioniert nicht
- 24. Titelleiste Transparenz entfernt Unschärfe
- 25. ImageList Transparenz auf Listenansichten?
- 26. presentViewConroller * ohne * Transparenz
- 27. Android Google Maps Transparenz
- 28. Transparenz mit Polygon-Befehl
- 29. ASP.NET Chart Control Transparenz
- 30. Iphone Tastatur Transparenz
Vielen Dank. Es sieht so aus, als wäre die Verwendung von Java 3D (anstelle von JavaFX 3D) die einfachere Lösung, um Transparenz zu schaffen. – CJDood