我在玩WEBGL技术时遇到了一个问题,我的立方体的顶点法向量出现了问题。
我用了一个从互联网上得到的立方体网格来检查我的代码,它运行得很好。
问题是互联网上的立方体有24个顶点(每个面4个*6个面),这对于我来说太多了。
我的立方体 | 互联网上的立方体(我的代码从第200行开始)
我发现一个立方体只需要8个顶点和12个索引。
但是当我渲染我的立方体时,屏幕上会出现奇怪的形状(因为法向量的原因?):
![enter image description here](https://istack.dev59.com/FjeIO.webp)
这是互联网上的立方体,几乎处于与我的立方体相同的旋转位置:
![enter image description here](https://istack.dev59.com/Ydrje.webp)
这是我的立方体:
var cube = {
"vertices" : [
-0.5 , 0.5 , 0.5, // 0
0.5 , 0.5 , 0.5, // 1
-0.5 ,-0.5 , 0.5, // 2
0.5 ,-0.5 , 0.5, // 3
-0.5 , 0.5 , -0.5, // 4
0.5 , 0.5 , -0.5, // 5
-0.5 ,-0.5 , -0.5, // 6
0.5 ,-0.5 , -0.5 // 7
],
"normals" : [
0.57 , 0.57 , -0.57 ,
0.57 , -0.57 , -0.57 ,
-0.57 , -0.57 , -0.57 ,
-0.57 , 0.57 , -0.57 ,
0.57 , 0.57 , 0.57 ,
0.57 , -0.57 , 0.57 ,
-0.57 , -0.57 , 0.57 ,
-0.57 , 0.57 , 0.57
],
"indices" : [
0 , 2 , 3 ,
0 , 3 , 1 ,
0 , 4 , 5 ,
0 , 5 , 1 ,
0 , 4 , 6 ,
0 , 6 , 2 ,
2 , 6 , 7 ,
2 , 7 , 3 ,
1 , 5 , 7 ,
1 , 7 , 3 ,
4 , 6 , 7 ,
4 , 7 , 5
]
}
我的问题是:
是否有可能为一个由8个顶点组成的立方体创建正确的法线?如果不行,那么有什么替代方案?