📜  p5.js | normalMaterial()函数

📅  最后修改于: 2022-05-13 01:56:23.448000             🧑  作者: Mango

p5.js | normalMaterial()函数

p5.js 中的normalMaterial()函数用于为对象创建普通材质。普通材质不受任何光线的影响,也不反射任何光线。面向 x 轴的表面变为红色,面向 y 轴的表面变为绿色,面向 z 轴的表面变为蓝色。它通常用作调试的占位符材料。

句法:

normalMaterial()

参数:此函数不接受任何参数。

下面的示例说明了 p5.js 中的normalMaterial()函数

示例 1:此示例显示普通材质不受光线影响。

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);
}

输出:
normalMat-comparison

示例 2:此示例显示了普通材质不同轴的颜色。

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);
}

输出:
正常垫颜色运动

在线编辑器: https://editor.p5js.org/

环境设置: https://www.geeksforgeeks.org/p5-js-soundfile-object-installation-and-methods/

参考: https://p5js.org/reference/#/p5/normalMaterial