我是一名计算机图形学初学者(已经学习了 1 个学期的 CG 基础知识)。
关于在 THREE.js 中使用 ImmediateRenderObject 进行着色(平坦和平滑)的一个问题:
为什么在平面和平滑阴影中共面三角形的阴影不同?正如您在下图中看到的那样,三角形具有正确的面法线(即,完全相同,垂直于三角形所在的平面,它们是下图中的蓝色)。顶点法线看起来也是正确的(即,除了位于非常边界的顶点的顶点法线(下图中的红色法线)之外,也垂直于平面)。
我有一个菱形几何体(作为 ImmediateRenderObject),我从中减去底部的 CubeGeometry(使用 THREE.CSG)。
在 CSG 操作之前和之后,共面三角形得到不同的阴影,虽然面法线似乎完全正确(顶点法线在钻石的锐边似乎并不完全正确,但这不应该影响共面部分顶部和不同的侧面)。
一些想法为什么会发生这种情况以及我可以做些什么来获得正确的阴影?我真的很感激任何帮助!
提前致谢!:)
以下是图片:
带有平面阴影的完整钻石:http: //i.stack.imgur.com/kWt6J.png
切工钻石顶部平底纹:http: //i.stack.imgur.com/0OJZv.png