【发布时间】:2016-02-04 15:20:53
【问题描述】:
在THREE.BufferGeometry 的文档中写道:
正常(itemSize:3)
存储此几何中每个顶点的面或顶点法线向量的 x、y 和 z 分量。由 .fromGeometry() 设置。
这个变量什么时候保存vertex法线,什么时候face法线?
是否像使用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 制成仍然具有正常属性?此信息是否仍用于渲染,或者将它们从缓冲区几何图形中删除是否是一种可能的优化?
【问题讨论】:
-
缓冲区几何没有“面法线”,只有顶点法线,三角形面上的点法线由 gpu 从其顶点插值...不知道您不想要它们,您可以在之后删除它们或创建自己的 BoxGeometry 如果您的着色器不使用它们(尝试观察控制台以获取警告或阅读着色器代码),自动删除它们会出现问题,因为您可以使用另一个对象中的几何图形与其他材料等
-
@DerteTrdelnik 你能把它作为答案发布吗?然后我可以关闭问题。
标签: three.js vertex normals buffer-geometry face