我有代碼來計算點的法線,但它會創建一個奇怪的工件(線)。 修復算法計算法線
如何解決? 如果使用普通的攪拌機,那麼有沒有文物 代碼(JavaScript的):
for (var i = 0; i < d.polygons.length; i++) {
var ind0 = d.polygons[i][0];
var ind1 = d.polygons[i][1];
var ind2 = d.polygons[i][2];
var v1 = d.vertex[ind0];
var v2 = d.vertex[ind1];
var v3 = d.vertex[ind2];
var vVector1 = self.vec3.minus(v2, v3);
var vVector2 = self.vec3.minus(v1, v3);
var vNormal;
if (values.invertNormals === true) {
vNormal = self.vec3.cross(vVector2, vVector1);
} else {
vNormal = self.vec3.cross(vVector1, vVector2);
}
d.polygonNormals.push(vNormal);
}
for (var k = 0; k < d.polygons.length; k++) {
for (var i = 0; i < 3; i++) {
d.normals[d.polygons[k][i]] = self.vec3.sum(d.normals[d.polygons[k][i]], d.polygonNormals[k]);
};
}
for (var i = 0; i < d.vertex.length; i++) {
d.normals[i] = self.vec3.normalize(d.normals[i]);
}
更一般地說,我會避免極地球體 - 由於小的會聚三角形,它們總是在極點周圍存在狡猾的問題。這與你的問題沒有關係,但isospheres不太容易出現問題。 – solidpixel