Java 8 更新,帶來 JavaFX 3D 功能 - OSCHINA - 中文開源技術交流...

2021-01-10 開源中國

在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);       }   }  


效果如下: 

相關焦點