Three.js材质属性.flatShading

材质属性.flatShading定义材质是否使用平面着色进行渲染,默认值为false。

如果一个网格模型曲面Mesh默认的渲染效果是光滑状态,比如一个圆柱的圆周弧面,你可以把该网格模型Mesh材质的.flatShading属性设置为true,这时候圆柱就会渲染为多棱柱效果。

比如通过圆柱体渲染出来一个正六棱柱效果。

//圆柱几何体圆周方向细分数设置为6
var geometry = new THREE.CylinderGeometry(0.4, 0.4, 1, 6);
// MeshLambertMaterial  
var material = new THREE.MeshPhongMaterial({
  color: 0xffff00,
  flatShading: true,//默认值是false
});
var mesh = new THREE.Mesh(geometry, material);

材质有效性

材质属性.flatShading和几何体的法线属性相关,基础网格材质MeshBasicMaterial不受光照影响,自然没必要设置.flatShading属性。

对于材质MeshPhongMaterialMeshPhysicalMaterialMeshStandardMaterial,属性.flatShading是有效的,对于材质MeshLambertMaterial,属性.flatShading是无效的。