THREE.BufferGeometry - 顶点法线和面法线

时间:2016-02-04 15:20:54

标签: three.js vertex normals buffer-geometry face

THREE.BufferGeometry的文档中写道:

  

正常(itemSize:3)
  存储此几何中每个顶点的面或顶点法线向量的x,y和z分量。由.fromGeometry()设置。

此变量何时保持顶点法线和法线?

是否像使用THREE.MeshMaterial一样简单,法线被解释为面法线,而当使用THREE.LineMaterial时,法线被用作顶点法线?或者它更复杂。

我也明白THREE.FlatShading可用于渲染具有平面阴影的网格(面法线直指向外)。

geometry = new THREE.BoxGeometry( 1000, 1000, 1000 );

material = new THREE.MeshPhongMaterial({ 
    color: 0xff0000, 
    shading: THREE.FlatShading
});

mesh = new THREE.Mesh( geometry, material );

我会说法医不再需要了。为什么我的缓冲区几何形状由例如THREE.BoxGeometry构成,在这种情况下仍保持正常属性?此信息是否仍用于渲染或将其从缓冲区几何体中删除是可能的优化?

1 个答案:

答案 0 :(得分:1)

BufferGeometry法线是矢量法线,着色器为属于该面的顶点(在大多数情况下是三角形)内插每个片段的正常值

当您转换默认计算法线的THREE.BoxGeometry时,即使在BufferGeometry转换输出中也会保持设置,因为几何体无法“知道”您是否需要法线或任何法线属性(材料程序决定使用哪些属性)

您可以使用geometry.removeAttribute("normal")

删除法线