The normalMaterial() function in p5.js is used to create a normal material for an object. A normal material is not affected by any light and also does not reflect any light. The surface facing the x-axis becomes red, the surface facing the y-axis becomes green and the surface facing the z-axis becomes blue. It is usually used as a placeholder material for debugging.
Syntax:
normalMaterial()
Parameters: This function does not accept any parameters.
Below example illustrates the normalMaterial() function in p5.js:
Example 1: This example shows that the normal material is not affected by light.
let newFont; let hasLight = true ; function preload() { newFont = loadFont( 'fonts/Montserrat.otf' ); } function setup() { createCanvas(600, 300, WEBGL); textFont(newFont, 16); lightCheckbox = createCheckbox( 'Enable Light' , true ); lightCheckbox.position(30, 250); lightCheckbox.changed(() => hasLight = !hasLight); } function draw() { background( 'white' ); fill( 'black' ); text( "Use the mouse to rotate/move the scene" , -285, -125); noStroke(); orbitControl(); // Enable lights when the checkbox is checked if (hasLight) directionalLight(color( 'red' ), height / 2, width / 2, -250); // Draw the sphere which uses ambient material ambientMaterial(255); translate(-100, 0, 0); sphere(80); translate(100, 0, 0); // Draw sphere which uses normal material normalMaterial(); translate(100, 0, 0); sphere(80); translate(-100, 0, 0); } |
Output:
Example 2: This example shows the colors for the different axes of the normal material.
let newFont; let hasNormalMaterial = true ; function preload() { newFont = loadFont( 'fonts/Montserrat.otf' ); } function setup() { createCanvas(600, 300, WEBGL); textFont(newFont, 16); } function draw() { background( 'white' ); fill( 'black' ); text( "Use the mouse to rotate/move the scene" , -285, -125); // text("Select directional light color", -285, -100); shininess(10); noStroke(); orbitControl(); // Use the normal material normalMaterial(); // Create the box rotateX(60) rotateY(120) rotateZ(60) box(100); } |
Output:
Online editor: https://editor.p5js.org/
Environment Setup: https://www.geeksforgeeks.org/p5-js-soundfile-object-installation-and-methods/
Reference: https://p5js.org/reference/#/p5/normalMaterial