三.缓冲区几何体 - 顶点法线和面法线



THREE.BufferGeometry的文档中写道:

普通(商品大小: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组成的,在这种情况下仍然具有正常属性?此信息是否仍用于渲染,或者从缓冲区几何中删除它们是否是一种可能的优化?

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

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

您可以使用geometry.removeAttribute("normal")移除法线

最新更新