Esta semana Oracle ha liberado una versión Early Access de JavaFX 3D. En estos momentos esta versión sólo corre sobre Windows, pero están trabajando en soporte para OpenGL, lo que permitirá que corra en otras plataformas. Aquí tenéis un video demo que ha publicado Oracle para demostrar las capacidades de JavaFX 3D:
Y aquí tenéis un ejemplo de código fuente, junto con su resultado al ejecutarlo:
public class Shapes3DViewer extends Application { @Override public void start(Stage stage) { PhongMaterial material = new PhongMaterial(); material.setDiffuseColor(Color.LIGHTGRAY); material.setSpecularColor(Color.rgb(30, 30, 30)); Shape3D[] meshView = new Shape3D[] { new Box(200, 200, 200), new Sphere(100), new Cylinder(100, 200), }; for (int i=0; i!=3; ++i) { meshView[i].setMaterial(material); meshView[i].setTranslateX((i + 1) * 220); meshView[i].setTranslateY(500); meshView[i].setTranslateZ(20); meshView[i].setDrawMode(DrawMode.FILL); meshView[i].setCullFace(CullFace.BACK); }; PointLight pointLight = new PointLight(Color.ANTIQUEWHITE); pointLight.setTranslateX(800); pointLight.setTranslateY(-100); pointLight.setTranslateZ(-1000); Group root = new Group(meshView); root.getChildren().add(pointLight); Scene scene = new Scene(root, 800, 800, true); scene.setFill(Color.rgb(10, 10, 40)); scene.setCamera(new PerspectiveCamera(false)); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } }
Y aquí tenéis el resultado: