diff --git a/demos/acorn/acorn.asc b/demos/acorn/acorn.asc index 65699df..775fa3d 100755 --- a/demos/acorn/acorn.asc +++ b/demos/acorn/acorn.asc @@ -57505,8 +57505,3 @@ 3.195539 -2.805503 9.74251 80 56 40 0.105032 -0.066927 0.992214 3.195539 -2.6774240000000002 9.74251 80 56 40 0.145090 0.073766 0.986665 3.195539 -2.549348 9.74251 72 48 24 0.223254 0.128481 0.966256 - - - - - \ No newline at end of file diff --git a/demos/acorn/acorn.html b/demos/acorn/acorn.html index 0e16673..6a865f9 100644 --- a/demos/acorn/acorn.html +++ b/demos/acorn/acorn.html @@ -57,6 +57,7 @@
+
Last key Pressed: None
diff --git a/demos/acorn/acorn.js b/demos/acorn/acorn.js index f2e2dc6..7fb723b 100644 --- a/demos/acorn/acorn.js +++ b/demos/acorn/acorn.js @@ -65,11 +65,14 @@ function render() { curCoords[1] = ps.mouseY; } + // transform point cloud ps.translate(0,0,zoomed); ps.rotateY(rot[0]); ps.rotateX(rot[1]); + +ps.translate(-2.4899933996557677,-0.6635081899594929,-3.009662628949344); ps.attenuation( $("#constant").slider("value"), $("#linear").slider("value"), diff --git a/demos/lion/lion.js b/demos/lion/lion.js index 6c6912e..bb8eb78 100644 --- a/demos/lion/lion.js +++ b/demos/lion/lion.js @@ -45,7 +45,8 @@ function render() { ps.rotateY(rot[0]); ps.rotateX(rot[1]); - + ps.translate(281.32617943646534,205.61656736098982,290.55082983174293); + // redraw ps.clear(); ps.render(); diff --git a/demos/mickey/mickey.js b/demos/mickey/mickey.js index cdd9781..3aa1d29 100644 --- a/demos/mickey/mickey.js +++ b/demos/mickey/mickey.js @@ -29,7 +29,7 @@ function mouseReleased(){ } function render() { - +//document.getElementById('debug').innerHTML +="r"; var deltaX = ps.mouseX - curCoords[0]; var deltaY = ps.mouseY - curCoords[1]; diff --git a/psapi.js b/psapi.js index 6c395be..51ad5c1 100644 --- a/psapi.js +++ b/psapi.js @@ -1,3 +1,8 @@ +var allVerts = 0; + var objCenter = [0,0,0]; +var remainder = ""; +var lastPlace = 0; +var again = true; /* Copyright (c) 2010 Seneca College MIT LICENSE @@ -15,7 +20,7 @@ function PointStream(){ var renderCallback; var bk = [1,1,1,1]; - var VBOs; + var VBOs = []; // defaults var attn = [0.01, 0.0, 0.003]; @@ -563,7 +568,7 @@ function PointStream(){ // if VBOs already exist, recreate them if(VBOs) { - VBOs = createVBOs(verts, cols, norms); +// VBOs = createVBOs(verts, cols, norms); if(cols.length > 0){ uniformf(progObj, "light.pos", [0,0,-1]); @@ -587,19 +592,21 @@ function PointStream(){ frames++; xb.frameCount++; var now = new Date(); - + + for(var k = 0; k < VBOs.length; k++){ + if(ctx && VBOs){ - vertexAttribPointer(progObj, "aVertex", 3, VBOs.posBuffer); + vertexAttribPointer(progObj, "aVertex", 3, VBOs[k].posBuffer); - if(VBOs.colBuffer){ - vertexAttribPointer(progObj, "aColor", 3, VBOs.colBuffer); + if(VBOs[k].colBuffer){ + vertexAttribPointer(progObj, "aColor", 3, VBOs[k].colBuffer); } else{ disableVertexAttribPointer(progObj, "aColor"); } - if(VBOs.normBuffer){ - vertexAttribPointer(progObj, "aNormal", 3, VBOs.normBuffer); + if(VBOs[k].normBuffer){ + vertexAttribPointer(progObj, "aNormal", 3, VBOs[k].normBuffer); uniformf(progObj, "light.col", [1,1,1]); uniformf(progObj, "light.pos", [0,0,-1]); uniformi(progObj, "lightCount", 1); @@ -614,7 +621,8 @@ function PointStream(){ uniformMatrix(progObj, "model", false, model); - ctx.drawArrays(ctx.POINTS, 0, VBOs.size/3); + ctx.drawArrays(ctx.POINTS, 0, VBOs[k].size/3); + } } // if more than 1 second has elapsed, recalculate fps @@ -860,27 +868,28 @@ function PointStream(){ } if(AJAX.readyState === XHR_DONE){ + objCenter[0] /= allVerts; + objCenter[1] /= allVerts; + objCenter[2] /= allVerts; + //alert(objCenter); + } + + if(AJAX.responseText && again == true){ + + var code = 9; + var normalsPresent = true; + var colorsPresent = true; - var code = getDataLayout(AJAX.responseText); + var lastNewLineIndex = AJAX.responseText.lastIndexOf("\n"); - var normalsPresent = false; - var colorsPresent = false; + remaining = AJAX.responseText.substring(lastNewLineIndex+1, AJAX.responseText.length); + + var chunk = AJAX.responseText.substring(lastPlace, lastNewLineIndex); - if(code == 1 ){ - code = 6; - normalsPresent = true; - } - else if(code == 2 ){ - code = 6; - colorsPresent = true; - } - if(code == 9){ - normalsPresent = true; - colorsPresent = true; - } + lastPlace = lastNewLineIndex; // trim leading and trailing whitespace - var values = AJAX.responseText; + var values = chunk;//AJAX.responseText; // trim trailing spaces values = values.replace(/\s+$/,""); @@ -889,10 +898,13 @@ function PointStream(){ values = values.replace(/^\s+/,""); values = values.split(/\s+/); - + const numVerts = values.length/code; - - var objCenter = [0,0,0]; + allVerts += numVerts; + + verts = []; + cols = []; + norms = []; // xyz rgb normals for(var i = 0, len = values.length; i < len; i += code){ @@ -925,25 +937,27 @@ function PointStream(){ } // if the user wants to center the point cloud - if(autoCenter){ - objCenter[0] /= numVerts; - objCenter[1] /= numVerts; - objCenter[2] /= numVerts; - } + // if(autoCenter){ + // objCenter[0] /= numVerts; + // objCenter[1] /= numVerts; + // objCenter[2] /= numVerts; + // } // if the user wanted to autocenter the point cloud, // iterate over all the verts and subtract by the // point cloud's current center. - if(autoCenter){ + /* if(autoCenter){ for(var i = 0; i < numVerts; i++){ verts[i*3] -= objCenter[0]; verts[i*3+1] -= objCenter[1]; verts[i*3+2] -= objCenter[2]; } - } + }*/ - VBOs = createVBOs(verts, cols, norms); +// VBOs[0] = createVBOs(verts, cols, norms); + VBOs.push(createVBOs(verts, cols, norms)); +// document.getElementById('debug').innerHTML +="d"; file.status = 4; } }