Improved progressive sphere

This commit is contained in:
Thomas FORGIONE
2015-06-10 11:24:59 +02:00
parent 7993c02109
commit 73371aa42f
2 changed files with 81 additions and 43 deletions

View File

@@ -8,25 +8,33 @@ var ProgressiveLoader = function(res, scene) {
var mesh = new THREE.Mesh(geometry, material);
mesh.up = new THREE.Vector3(0,0,1);
var added = false;
var finished = false;
var socket = io();
socket.emit('request', res);
socket.on('ok', function() {
socket.emit('next');
});
socket.on('vertex', function(arr) {
// console.log('v(', arr[0], ')', arr[1], arr[2], arr[3]);
mesh.geometry.vertices[arr[0]] = new THREE.Vector3(arr[1], arr[2], arr[3]);
mesh.geometry.verticesNeedUpdate = true;
socket.emit('next');
});
socket.on('face', function(arr) {
// console.log('f', arr[0], arr[1], arr[2]);
mesh.geometry.faces.push(new THREE.Face3(arr[0], arr[1], arr[2]));
if (arr[0] >= mesh.geometry.vertices.length
|| arr[1] >= mesh.geometry.vertices.length
|| arr[2] >= mesh.geometry.vertices.length) {
// if (arr[0] >= mesh.geometry.vertices.length
// || arr[1] >= mesh.geometry.vertices.length
// || arr[2] >= mesh.geometry.vertices.length) {
console.log("Error");
}
// console.log("Error");
// }
if (arr[3])
mesh.geometry.faces.push(new THREE.Face3(arr[0], arr[2], arr[3]));
@@ -38,18 +46,21 @@ var ProgressiveLoader = function(res, scene) {
// Compute the normal
mesh.geometry.computeFaceNormals();
mesh.geometry.verticesNeedUpdate = true;
mesh.geometry.groupsNeedUpdate = true;
mesh.geometry.elementsNeedUpdate = true;
mesh.geometry.normalsNeedUpdate = true;
if (mesh.faceNumber && mesh.faceNumber === mesh.geometry.faces.length) {
if (finished) {
console.log("Finished");
} else {
socket.emit('next');
}
mesh.geometry.computeFaceNormals();
});
socket.on('finished', function(arg) {
finished = true;
mesh.faceNumber = arg;
//mesh.geometry.computeFaceNormals();
mesh.geometry.verticesNeedUpdate = true;
@@ -64,5 +75,9 @@ var ProgressiveLoader = function(res, scene) {
// scene.add(mesh);
});
socket.on('none', function() {
socket.emit('next');
});
return mesh;
}