ポイントの法線を計算するコードがありますが、奇妙なアーティファクト(線)が作成されています。 法線を計算するアルゴリズムを修正しました
どのように修正するのですか?
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