JavaFX - Cull Face Property



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 −

Cull Faces

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 −

Cull Faces
Advertisements