Fixed the overlapping triangle but not detected

This commit is contained in:
Thomas FORGIONE 2015-09-28 16:35:04 +02:00
parent 77c3d36134
commit 86b3b1733b
1 changed files with 22 additions and 9 deletions

View File

@ -370,12 +370,15 @@ geo.MeshStreamer.prototype.nextElements = function(_camera, force) {
if (!force) { if (!force) {
var display = false;
var outcodes = [];
var exitToContinue = false; var exitToContinue = false;
threeVertices = [vertex1, vertex2, vertex3]; threeVertices = [vertex1, vertex2, vertex3];
for (i = 0; i < threeVertices.length; i++) { for (i = 0; i < threeVertices.length; i++) {
var vertex = threeVertices[i]; var vertex = threeVertices[i];
var currentOutcode = "";
for (var j = 0; j < planes.length; j++) { for (var j = 0; j < planes.length; j++) {
@ -387,22 +390,32 @@ geo.MeshStreamer.prototype.nextElements = function(_camera, force) {
plane.normal.z * vertex.z + plane.normal.z * vertex.z +
plane.constant; plane.constant;
if (distance < 0) // if (distance < 0) {
{ // exitToContinue = true;
exitToContinue = true; // break;
break; // }
}
currentOutcode += distance > 0 ? '0' : '1';
} }
if (exitToContinue) outcodes.push(parseInt(currentOutcode,2));
break;
} }
if (exitToContinue) // http://vterrain.org/LOD/culling.html
// I have no idea what i'm doing
// http://i.kinja-img.com/gawker-media/image/upload/japbcvpavbzau9dbuaxf.jpg
// But it seems to work
if ( (outcodes[0] | outcodes[1]) === 0 && (outcodes[1] | outcodes[2]) === 0 ) {
// all points in
} else if ( (outcodes[0] === outcodes[1]) && (outcodes[0] === outcodes[2]) ) {
// all points out
continue; continue;
}
else {
// part of the triangle is inside the viewing volume
}
} }
if (!this.vertices[currentFace.a]) { if (!this.vertices[currentFace.a]) {