JavaFX 3D形状 Shape3D

JavaFX 使我们能够创建三维形状。javafx.scene.shape包中定义了一些类,它提供了处理 3D 形状的所有方法。这些类是 Box、Cylinder 和 Sphere。类一个Shape3D包的javafx.scene.shape是基类中的JavaFX的所有的3D形状类。

1 什么是3D形状?

三维形状可以定义为要在 XYZ 坐标系上绘制的实体几何对象。3D 形状与 2D 形状的不同之处在于,3D 形状总是需要具有额外的坐标值Z才能在坐标系上绘制。

3D 形状的示例是圆柱体、球体、长方体、立方体、棱锥体等。但是,JavaFX 提供了用于创建球体、圆柱体和长方体的类。

2 JavaFX 中的 3D 形状类型

在 JavaFX 中,3D 形状可以分为两种不同的类型:

2.1. 预定义的 3D 形状

JavaFX 提供了一些预定义的 3D 形状类,它们是 Cylinder、Sphere 和 Box。我们只需要实例化这些类即可在屏幕上创建这些形状。这些类包含创建适当形状所需的各种属性和方法。

2.2. 用户定义的 3D 形状

JavaFX 提供了类javafx.scene.shape.TriangleMesh,它扩展了抽象类javafx.scene.shape.Mesh。这个类方便用户定义自己的点、纹理坐标和面作为类的属性

3 在 JavaFX 中创建 3D 形状的步骤

正如我们之前提到的,JavaFX 中的不同 3D 形状有不同的类。我们只需要实例化这些类即可创建适当的 3D 形状。使用以下步骤在 JavaFX 中创建 3D 形状。

1、实例化我们要创建的各自的3D形状类,例如

Box box = new Box();  

2、设置类的属性。例如

box.setHeight(100.0);  
box.setDepth(50.0);  
box.setWidth(70.0); 

3、为场景设置相机。虽然不需要设置相机来创建 3D 效果,但它为相机视图提供了一定的位置。这可以按如下方式完成。

PerspectiveCamera camera = new PerspectiveCamera();   
camera.setTranslateX(100.0);  
camera.setTranslateY(50.0);  
camera.setTranslateZ(-90);  
scene.setCamera(camera)  

4、将框添加到场景图并为场景和舞台设置适当的属性。

Group root = new Group();   
root.getChildren().add(box);   
Scene scene = new Scene(root,500,400);  
primaryStage.setScene(scene);  
primaryStage.setTitle("Box Example");  
primaryStage.show();  

下表描述了包javafx.scene.shape提供的 3D 形状类。

形状 描述
Box(盒子) 一般来说,一个盒子可以被定义为一个所有面都是矩形的三维形状。Box 的三个维度是高度、宽度和深度。在 JavaFX 中,类javafx.scene.shape.Box 代表Box。
Cylinder(圆柱体) 圆柱体可以定义为具有两个平行圆形基础的三维立体,通过曲面连接。它有两个主要属性,即半径和高度。在 JavaFX 中,类javafx.scene.shape.Cylinder表示圆柱体。
Sphere(球体) 球体可以定义为完美的圆形实体 3D 对象。在 JavaFX 中,Sphere 由类javafx.scene.shape.Sphere表示。

热门文章

优秀文章