📜  JavaFX 3D shape

📅  最后修改于: 2020-10-14 05:29:26             🧑  作者: Mango

JavaFX 3D形状

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

什么是3D形状?

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

3D形状的示例包括圆柱体,球体,盒子,立方体,金字塔等。但是,JavaFX提供了一些类来创建球体,圆柱体和盒子。

JavaFX中3D形状的类型

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

1.预定义的3D形状

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

2.用户定义的3D形状

JavaFX提供了javafx.scene.shape.TriangleMesh类,该类扩展了抽象类javafx.scene.shape.Mesh。该类有助于用户定义自己的点,纹理坐标和面作为该类的属性。

在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形状类。

SN Shape Description
1 Box In general, a box can be defined as a three dimensional shape having all the faces in the rectangular shape. The three dimensions of Box are height, width and depth. In JavaFX, the classjavafx.scene.shape.Boxrepresents Box.
2 Cylinder A Cylinder can be defined as a three dimensional solid having two parallel circular basisconnected by a curved surface. It has the two main properties as radius and height. In JavaFX, the class javafx.scene.shape.Cylinder represents cylinder.
3 Sphere A sphere can be defined as a perfectly round solid 3D object. In JavaFX, the Sphere is represented by the class javafx.scene.shape.Sphere.