”;
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.
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).
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
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); } }
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
Output
On executing, the above program generates a JavaFX window displaying two spheres with cull face values FRONT and BACK respectively as follows −
Example
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); } }
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
Output
On executing, the above program generates a JavaFX window displaying a box with cull face values NONE respectively as follows −
”;