Java 8 更新,带来 JavaFX 3D 功能

jopen 11年前

        在 JavaOne 2012 大会上,甲骨文展示了基于 JavaFX 3D 的集装箱终端监控项目(演示视频),让人眼前一亮。 

Java 8 更新,带来 JavaFX 3D 功能


Java 8 更新,带来 JavaFX 3D 功能


该项目使用 JavaFX 最新版本的早期原型构建,并增加了对于 3D mesh、3D 摄像机和 3D 灯光的支持。现在 JavaFX 8 公共版本中已经提供了这些技术的官方支持。 

        JavaFX 8 捆绑在 Java 8 中,你可以下载最新的 Java 8 EA b77 版本来体验。目前仅支持 Windows 平台,甲骨文表示,针对其他平台的 OpenGL 版本正在开发中。 

        下载地址:http://jdk8.java.net/download.html 

        关于 JavaFX 中最新的 3D 特性可参阅:wikis.oracle.com – OpenJDK – 3D Features 

        下面是一个简单的例子:

 import javafx.application.Application;    import javafx.scene.*;    import javafx.scene.paint.Color;    import javafx.scene.paint.PhongMaterial;    import javafx.scene.shape.*;    import javafx.stage.Stage;         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);        }    }  

        效果如下: 

Java 8 更新,带来 JavaFX 3D 功能


        Via fxexperience

来自: www.iteye.com