Java 8 更新,带来 JavaFX 3D 功能
jopen 12年前
在 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); } }
效果如下:
Via fxexperience
来自: www.iteye.com