`

Java FX即将支持3D了!!

 
阅读更多

虽然工作在进行Android开发,但是在项目业余的时间里,我都在进行Unity3d的学习。也制作了一个联机的坦克对战游戏。而在晚上有时间的时候,也只是在Mac mini上学习IOS的开发,所以没怎么写博客。

JavaFX,之前还是对它很感兴趣,不过后来发现JavaFX还是只适合开发小游戏,对于大一点的游戏来说,效率不够。所以有一段时间没有研究JavaFX了。

不过JavaFX也有一个好消息,在JDK 8中,JavaFX即将支持3D了。包括3d mesh,Camera和灯光等。

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

下面是一个小示例:

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


不过目前,只支持Windows平台,可以在其他平台使用的OpenGL的版本正在开发中。

有兴趣的可以下载JDK 8尝试一下效果。



补充一个网址 计划在JDK 8中添加的JavaFX 3D的相关内容:

https://wikis.oracle.com/display/OpenJDK/3D+Features


可以看到包括摄像机,3D几何元素,灯光,材质,3D拾取和3D模型加载等内容。



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics