在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
构成,在这种情况下仍保持正常属性?此信息是否仍用于渲染或将其从缓冲区几何体中删除是可能的优化?
答案 0 :(得分:1)
BufferGeometry
法线是矢量法线,着色器为属于该面的顶点(在大多数情况下是三角形)内插每个片段的正常值
当您转换默认计算法线的THREE.BoxGeometry
时,即使在BufferGeometry
转换输出中也会保持设置,因为几何体无法“知道”您是否需要法线或任何法线属性(材料程序决定使用哪些属性)
您可以使用geometry.removeAttribute("normal")