在JavaOne 2012大会上,甲骨文展示了基于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);
- }
- }
效果如下:
引用来自“妖魔舞”的评论
引用来自“sharpx”的评论
估计一般的电脑都跑不动
引用来自“牜匕卜孑礻”的评论
额……怎么上面代码……编译不通过……
引用来自“sharpx”的评论
估计一般的电脑都跑不动
引用来自“陈沛”的评论
引用来自“忧郁骑士”的评论
什么,java都8了?
引用来自“忧郁骑士”的评论
什么,java都8了?