Javafx 简明教程
JavaFX - Cull Face Property
JavaFX 还为 3D 对象提供了各种属性。这些属性的范围从决定形状的材料:内部和外部、渲染 3D 对象几何、剔除 3D 形状的面。
JavaFX also provides various properties for 3D objects. These properties can range from deciding the material of a shape: interior and exterior, rendering the 3D object geometry and culling faces of the 3D shape.
提供所有这些属性是为了改进 3D 对象的外观和感觉;并检查哪些属性适合应用程序并应用它们。
All these properties are offered in order to improvise the look and feel of a 3D object; and check what is suitable for the application and apply them.
在本章中,让我们详细了解剔除面属性。
In this chapter, let us learn more about the Cull Face Property.
Cull Face Property
通常,剔除是指移除形状中方向不当的部分(在视图区域中不可见)。
In general, culling is the removal of improperly oriented parts of a shape (which are not visible in the view area).
剔除面属性的类型为 CullFace ,它表示 3D 形状的剔除面。你可以使用 setCullFace() 方法设置形状的剔除面,如下所示:
The Cull Face property is of the type CullFace and it represents the Cull Face of a 3D shape. You can set the Cull Face of a shape using the method setCullFace() as shown below −
box.setCullFace(CullFace.NONE);
形状的描边类型可以是:
The stroke type of a shape can be −
-
None − No culling is performed (CullFace.NONE).
-
Front − All the front facing polygons are culled. (CullFace.FRONT).
-
Back − All the back facing polygons are culled. (StrokeType.BACK).
默认情况下,三维图形的剔除面是反面。
By default, the cull face of a 3-Dimensional shape is Back.
Example
以下程序演示了球体的各种剔除面的示例。将此代码保存在名为 SphereCullFace.java 的文件中。
The following program is an example which demonstrates various cull faces of the sphere. Save this code in a file with the name SphereCullFace.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.CullFace;
import javafx.stage.Stage;
import javafx.scene.shape.Sphere;
public class SphereCullFace extends Application {
@Override
public void start(Stage stage) {
//Drawing Sphere1
Sphere sphere1 = new Sphere();
//Setting the radius of the Sphere
sphere1.setRadius(50.0);
//Setting the position of the sphere
sphere1.setTranslateX(100);
sphere1.setTranslateY(150);
//setting the cull face of the sphere to front
sphere1.setCullFace(CullFace.FRONT);
//Drawing Sphere2
Sphere sphere2 = new Sphere();
//Setting the radius of the Sphere
sphere2.setRadius(50.0);
//Setting the position of the sphere
sphere2.setTranslateX(300);
sphere2.setTranslateY(150);
//Setting the cull face of the sphere to back
sphere2.setCullFace(CullFace.BACK);
//Creating a Group object
Group root = new Group(sphere1, sphere2);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Drawing a Sphere");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
使用以下命令从命令提示符处编译并执行已保存的 Java 文件。
Compile and execute the saved Java file from the command prompt using the following commands.
javac --module-path %PATH_TO_FX% --add-modules javafx.controls SphereCullFace.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls SphereCullFace
执行时,以上程序会生成一个 JavaFX 窗口,分别显示两个具有剔除面值 FRONT 和 BACK 的球体,如下所示 -
On executing, the above program generates a JavaFX window displaying two spheres with cull face values FRONT and BACK respectively as follows −
Example
以下程序演示了在盒子上使用 NONE 属性时没有应用剔除面属性的示例。将此代码保存在名为 BoxCullFace.java 的文件中。
The following program is an example which demonstrates when no cull face property is applied using NONE attribute on a box. Save this code in a file with the name BoxCullFace.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.CullFace;
import javafx.stage.Stage;
import javafx.scene.shape.Box;
public class BoxCullFace extends Application {
@Override
public void start(Stage stage) {
//Drawing Box1
Box box1 = new Box();
//Setting the dimensions of the Box
box1.setWidth(100.0);
box1.setHeight(100.0);
box1.setDepth(100.0);
//Setting the position of the box
box1.setTranslateX(100);
box1.setTranslateY(150);
box1.setTranslateZ(0);
//setting the cull face of the box to NONE
box1.setCullFace(CullFace.NONE);
//Creating a Group object
Group root = new Group(box1);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Drawing a Box");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
使用以下命令从命令提示符处编译并执行已保存的 Java 文件。
Compile and execute the saved Java file from the command prompt using the following commands.
javac --module-path %PATH_TO_FX% --add-modules javafx.controls BoxCullFace.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls BoxCullFace
执行时,以上程序会生成一个 JavaFX 窗口,显示一个具有剔除面值 NONE 的盒子,如下所示 -
On executing, the above program generates a JavaFX window displaying a box with cull face values NONE respectively as follows −