Corrected all bugs

This commit is contained in:
Thomas FORGIONE 2015-06-19 11:24:37 +02:00
parent f808aebe4f
commit 567fa552d8
2 changed files with 131 additions and 120 deletions

View File

@ -334,151 +334,159 @@ geo.MeshStreamer.prototype.nextElements = function(_camera) {
var data = []; var data = [];
// Sort faces // Sort faces
this.orderedFaces.sort(this.faceComparator(camera));
var mightBeCompletetlyFinished = true; var mightBeCompletetlyFinished = true;
for (var faceIndex = 0; faceIndex < this.orderedFaces.length; faceIndex++) { for (var meshIndex = 0; meshIndex < this.meshes.length; meshIndex++) {
var currentFace = this.orderedFaces[faceIndex]; var currentMesh = this.meshes[meshIndex];
var currentMesh = this.meshes[currentFace.meshIndex];
if (currentFace.sent) { if (currentMesh.isFinished()) {
continue; continue;
} else { } else {
mightBeCompletetlyFinished = false; mightBeCompletetlyFinished = false;
} }
var vertex1 = this.vertices[currentFace.a]; for (var faceIndex = 0; faceIndex < currentMesh.faces.length; faceIndex++) {
var vertex2 = this.vertices[currentFace.b];
var vertex3 = this.vertices[currentFace.c];
if (camera !== null) { var currentFace = currentMesh.faces[faceIndex];
var v1 = { if (currentFace.sent) {
x: vertex1.x - camera.position.x,
y: vertex1.y - camera.position.y,
z: vertex1.z - camera.position.z
};
var v2 = {
x: vertex2.x - camera.position.x,
y: vertex2.y - camera.position.y,
z: vertex2.z - camera.position.z
};
var v3 = {
x: vertex3.x - camera.position.x,
y: vertex3.y - camera.position.y,
z: vertex3.z - camera.position.z
};
if (
direction.x * v1.x + direction.y * v1.y + direction.z * v1.z < 0 &&
direction.x * v2.x + direction.y * v2.y + direction.z * v2.z < 0 &&
direction.x * v3.x + direction.y * v3.y + direction.z * v3.z < 0
) {
continue; continue;
} }
} var vertex1 = this.vertices[currentFace.a];
var vertex2 = this.vertices[currentFace.b];
var vertex3 = this.vertices[currentFace.c];
if (!vertex1.sent) { if (camera !== null) {
var v1 = {
x: vertex1.x - camera.position.x,
y: vertex1.y - camera.position.y,
z: vertex1.z - camera.position.z
};
var v2 = {
x: vertex2.x - camera.position.x,
y: vertex2.y - camera.position.y,
z: vertex2.z - camera.position.z
};
var v3 = {
x: vertex3.x - camera.position.x,
y: vertex3.y - camera.position.y,
z: vertex3.z - camera.position.z
};
if (
direction.x * v1.x + direction.y * v1.y + direction.z * v1.z < 0 &&
direction.x * v2.x + direction.y * v2.y + direction.z * v2.z < 0 &&
direction.x * v3.x + direction.y * v3.y + direction.z * v3.z < 0
) {
continue;
}
}
if (!vertex1.sent) {
data.push(vertex1.toList());
vertex1.sent = true;
sent++;
}
if (!vertex2.sent) {
data.push(vertex2.toList());
vertex2.sent = true;
sent++;
}
if (!vertex3.sent) {
data.push(vertex3.toList());
vertex3.sent = true;
sent++;
}
var normal1 = this.normals[currentFace.aNormal];
var normal2 = this.normals[currentFace.bNormal];
var normal3 = this.normals[currentFace.cNormal];
if (normal1 !== undefined && !normal1.sent) {
data.push(normal1.toList());
normal1.sent = true;
sent++;
}
if (normal2 !== undefined && !normal2.sent) {
data.push(normal2.toList());
normal2.sent = true;
sent++;
}
if (normal3 !== undefined && !normal3.sent) {
data.push(normal3.toList());
normal3.sent = true;
sent++;
}
var tex1 = this.texCoords[currentFace.aTexture];
var tex2 = this.texCoords[currentFace.bTexture];
var tex3 = this.texCoords[currentFace.cTexture];
if (tex1 !== undefined && !tex1.sent) {
data.push(tex1.toList());
tex1.sent = true;
sent++;
}
if (tex2 !== undefined && !tex2.sent) {
data.push(tex2.toList());
tex2.sent = true;
sent++;
}
if (tex3 !== undefined && !tex3.sent) {
data.push(tex3.toList());
tex3.sent = true;
sent++;
}
data.push(currentFace.toList());
currentFace.sent = true;
currentMesh.faceIndex++;
data.push(vertex1.toList());
vertex1.sent = true;
sent++; sent++;
} if (sent > 500) {
if (!vertex2.sent) { return {data: data, finished: false};
data.push(vertex2.toList());
vertex2.sent = true;
sent++;
}
if (!vertex3.sent) {
data.push(vertex3.toList());
vertex3.sent = true;
sent++;
}
var normal1 = this.normals[currentFace.aNormal];
var normal2 = this.normals[currentFace.bNormal];
var normal3 = this.normals[currentFace.cNormal];
if (normal1 !== undefined && !normal1.sent) {
data.push(normal1.toList());
normal1.sent = true;
sent++;
}
if (normal2 !== undefined && !normal2.sent) {
data.push(normal2.toList());
normal2.sent = true;
sent++;
}
if (normal3 !== undefined && !normal3.sent) {
data.push(normal3.toList());
normal3.sent = true;
sent++;
}
var tex1 = this.texCoords[currentFace.aTexture];
var tex2 = this.texCoords[currentFace.bTexture];
var tex3 = this.texCoords[currentFace.cTexture];
if (tex1 !== undefined && !tex1.sent) {
data.push(tex1.toList());
tex1.sent = true;
sent++;
}
if (tex2 !== undefined && !tex2.sent) {
data.push(tex2.toList());
tex2.sent = true;
sent++;
}
if (tex3 !== undefined && !tex3.sent) {
data.push(tex3.toList());
tex3.sent = true;
sent++;
}
data.push(currentFace.toList());
currentFace.sent = true;
currentMesh.faceIndex++;
sent++;
if (sent > 500) {
return {data: data, finished: false};
}
} }
} }

View File

@ -111,6 +111,9 @@ ProgressiveLoaderGeometry.prototype.load = function() {
} }
ProgressiveLoaderGeometry.prototype.getCamera = function() { ProgressiveLoaderGeometry.prototype.getCamera = function() {
if (this.camera === null)
return null;
return [this.camera.position.x, this.camera.position.y, this.camera.position.z, return [this.camera.position.x, this.camera.position.y, this.camera.position.z,
this.camera.target.x, this.camera.target.y, this.camera.target.z]; this.camera.target.x, this.camera.target.y, this.camera.target.z];
} }