diff --git a/js/importer.js b/js/importer.js index 5f9f503625428f6f9dfdafb8b4c3c522fc745f08..15b7d9168c2257788e65f8ef8f8cfcefaf48cdbc 100755 --- a/js/importer.js +++ b/js/importer.js @@ -203,7 +203,7 @@ function initImporter(globals){ } } } - globals.model.buildModel(foldData, faces, json.vertices_coords, json.edges_vertices, allCreaseParams); + globals.model.buildModel(foldData, allCreaseParams); } return { diff --git a/js/model.js b/js/model.js index db922907cee0a6b4774da5585cdd7ae513ba1b15..170193d20194d33f06dac895b6ec9d6b67ff99cc 100755 --- a/js/model.js +++ b/js/model.js @@ -61,9 +61,9 @@ function initModel(globals){ var edges = []; var creases = []; var vertices = [];//indexed vertices array - var fold; + var fold, creaseParams; - var nextNodes, nextEdges, nextCreases, nextFaces, nextFold;//todo only nextFold, nextCreases? + var nextCreaseParams, nextFold;//todo only nextFold, nextCreases? var inited = false; @@ -139,7 +139,7 @@ function initModel(globals){ function getPositionsArray(){ return positions; } - + function getColorsArray(){ return colors; } @@ -181,45 +181,23 @@ function initModel(globals){ - function buildModel(fold, _faces, _vertices, _allEdges, allCreaseParams){ + function buildModel(fold, creaseParams){ - if (_vertices.length == 0) { + if (fold.vertices_coords.length == 0) { console.warn("no vertices"); return; } - if (_faces.length == 0) { + if (fold.faces_vertices.length == 0) { console.warn("no faces"); return; } - if (_allEdges.length == 0) { + if (fold.edges_vertices.length == 0) { console.warn("no edges"); return; } nextFold = fold; - - nextNodes = []; - for (var i=0;i<_vertices.length;i++){ - nextNodes.push(new Node(_vertices[i].clone(), nextNodes.length)); - } - // _nodes[_faces[0][0]].setFixed(true); - // _nodes[_faces[0][1]].setFixed(true); - // _nodes[_faces[0][2]].setFixed(true); - - nextEdges = []; - for (var i=0;i<_allEdges.length;i++) { - nextEdges.push(new Beam([nextNodes[_allEdges[i][0]], nextNodes[_allEdges[i][1]]])); - } - - nextCreases = []; - for (var i=0;i<allCreaseParams.length;i++) {//allCreaseParams.length - var creaseParams = allCreaseParams[i];//face1Ind, vert1Ind, face2Ind, ver2Ind, edgeInd, angle - var type = creaseParams[5]!=0 ? 1:0; - //edge, face1Index, face2Index, targetTheta, type, node1, node2, index - nextCreases.push(new Crease(nextEdges[creaseParams[4]], creaseParams[0], creaseParams[2], creaseParams[5], type, nextNodes[creaseParams[1]], nextNodes[creaseParams[3]], nextCreases.length)); - } - - nextFaces = _faces; + nextCreaseParams = creaseParams; globals.needsSync = true; globals.simNeedsSync = true; @@ -246,12 +224,37 @@ function initModel(globals){ creases[i].destroy(); } - //todo make nodes, edges, faces, here - nodes = nextNodes; - edges = nextEdges; - faces = nextFaces; - creases = nextCreases; fold = nextFold; + nodes = []; + edges = []; + faces = fold.faces_vertices; + creases = []; + creaseParams = nextCreaseParams; + var _edges = fold.edges_vertices; + + var _vertices = []; + for (var i=0;i<fold.vertices_coords.length;i++){ + var vertex = fold.vertices_coords[i]; + _vertices.push(new THREE.Vector3(vertex[0], vertex[1], vertex[2])); + } + + for (var i=0;i<_vertices.length;i++){ + nodes.push(new Node(_vertices[i].clone(), nodes.length)); + } + // _nodes[_faces[0][0]].setFixed(true); + // _nodes[_faces[0][1]].setFixed(true); + // _nodes[_faces[0][2]].setFixed(true); + + for (var i=0;i<_edges.length;i++) { + edges.push(new Beam([nodes[_edges[i][0]], nodes[_edges[i][1]]])); + } + + for (var i=0;i<creaseParams.length;i++) {//allCreaseParams.length + var _creaseParams = creaseParams[i];//face1Ind, vert1Ind, face2Ind, ver2Ind, edgeInd, angle + var type = _creaseParams[5]!=0 ? 1:0; + //edge, face1Index, face2Index, targetTheta, type, node1, node2, index + creases.push(new Crease(edges[_creaseParams[4]], _creaseParams[0], _creaseParams[2], _creaseParams[5], type, nodes[_creaseParams[1]], nodes[_creaseParams[3]], creases.length)); + } vertices = []; for (var i=0;i<nodes.length;i++){ diff --git a/js/pattern.js b/js/pattern.js index 0bac8cbc5207be727e42df5c39603e1afa2e3301..5ad56e745a272a94ec47f7de28b291bd798104ef 100755 --- a/js/pattern.js +++ b/js/pattern.js @@ -442,9 +442,10 @@ function initPattern(globals){ // var foldData = triangulatePolys(foldData); - vertices = []; + vertices = [];//todo need this? for (var i=0;i<foldData.vertices_coords.length;i++){ var vertex = foldData.vertices_coords[i]; + foldData.vertices_coords[i] = [vertex[0], 0, vertex[1]]; vertices.push(new THREE.Vector3(vertex[0], 0, vertex[1])); } mountains = FOLD.filter.mountainEdges(foldData); @@ -460,7 +461,8 @@ function initPattern(globals){ $("#numPassive").html("(" + hinges.length + ")"); var allCreaseParams = getFacesAndVerticesForEdges(foldData);//todo precompute vertices_faces - globals.model.buildModel(foldData, foldData.faces_vertices, vertices, foldData.edges_vertices, allCreaseParams, getAllEdges()); + + globals.model.buildModel(foldData, allCreaseParams, getAllEdges()); } function getFacesAndVerticesForEdges(fold){