展开全部
Java 8以上版本, 可以32313133353236313431303231363533e4b893e5b19e31333365656636尝试JavaFX 3D 来实现
效果图
下面是模仿的Oracal 的Demo写的一个3D代码import javafx.application.Application;
import javafx.application.ConditionalFeature;
import javafx.application.Platform;
import javafx.geometry.Point3D;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.PerspectiveCamera;
import javafx.scene.Scene;
import javafx.scene.SceneAntialiasing;
import javafx.scene.SubScene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Slider;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.scene.paint.PhongMaterial;
import javafx.scene.shape.Cylinder;
import javafx.stage.Stage;
public class A07_SubScene extends Application{
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
if(!Platform.isSupported(ConditionalFeature.SCENE3D)) {
Alert alert=new Alert(AlertType.ERROR,"不支持JavaFX SCENE3D!~");
alert.showAndWait();
Platform.exit();
}
Group root=new Group();
Scene scene = new Scene(root,500,500,Color.ALICEBLUE);
HBox hbox=new HBox();
hbox.setLayoutX(60);
hbox.setLayoutY(70);
//创建圆柱体
Cylinder cl=new Cylinder(90,180);
PhongMaterial phongMaterial = new PhongMaterial(Color.color(1.0, 0.7, 0.8));
cl.setMaterial(phongMaterial);
SubScene sub=getSub(cl);
hbox.getChildren().add(sub);
Slider slider=new Slider(0, 360, 0);
slider.setLayoutX(170);
slider.setLayoutY(360);
cl.rotateProperty().bind(slider.valueProperty());
root.getChildren().addAll(hbox,slider);
primaryStage.setScene(scene);
primaryStage.setTitle("SubScene");
primaryStage.show();
}
private SubScene getSub(Node node) {
Group root=new Group();
node.setRotationAxis(new Point3D(2, 1, 0));
node.setTranslateX(180);
node.setTranslateY(150);
root.getChildren().add(node);
SubScene sub=new SubScene(root, 360, 400, true, SceneAntialiasing.BALANCED);
sub.setCamera(new PerspectiveCamera());
return sub;
}
}