From 375fd1bdfd79e8ae233f6d53764dd82464e02b83 Mon Sep 17 00:00:00 2001 From: Richard Lee Date: Tue, 12 Apr 2016 00:52:43 -0400 Subject: [PATCH 1/2] added convertDagToTree stage --- lib/convertDagToTree.js | 115 ++++ package.json | 1 - specs/data/boxAnimated/README.txt | 1 - .../data/boxAnimated/collada/boxAnimated.dae | 313 ---------- .../boxAnimated/glTF-Binary/boxAnimated.glb | Bin 19500 -> 0 bytes .../glTF-Embedded/boxAnimated.gltf | 533 ------------------ .../glTF-MaterialsCommon.bin | Bin 11376 -> 0 bytes .../glTF-MaterialsCommon.gltf | 484 ---------------- specs/data/boxAnimated/glTF/glTF.bin | Bin 11376 -> 0 bytes specs/data/boxAnimated/glTF/glTF.gltf | 533 ------------------ specs/data/boxAnimated/glTF/glTF0FS.glsl | 39 -- specs/data/boxAnimated/glTF/glTF0VS.glsl | 17 - .../boxAnimated/screenshot/screenshot.png | Bin 3509 -> 0 bytes .../dagToTree/DagTestSingleDuplicate.gltf | 28 + specs/data/dagToTree/DagTestSingleNode.gltf | 12 + .../dagToTree/DagTestSubgraphDuplicate.gltf | 44 ++ specs/data/dagToTree/DagTestTree.gltf | 19 + specs/data/dagToTree/DagTestTwoRoots.gltf | 39 ++ specs/lib/convertDagToTreeSpec.js | 122 ++++ 19 files changed, 379 insertions(+), 1921 deletions(-) create mode 100755 lib/convertDagToTree.js delete mode 100755 specs/data/boxAnimated/README.txt delete mode 100755 specs/data/boxAnimated/collada/boxAnimated.dae delete mode 100755 specs/data/boxAnimated/glTF-Binary/boxAnimated.glb delete mode 100755 specs/data/boxAnimated/glTF-Embedded/boxAnimated.gltf delete mode 100755 specs/data/boxAnimated/glTF-MaterialsCommon/glTF-MaterialsCommon.bin delete mode 100755 specs/data/boxAnimated/glTF-MaterialsCommon/glTF-MaterialsCommon.gltf delete mode 100755 specs/data/boxAnimated/glTF/glTF.bin delete mode 100755 specs/data/boxAnimated/glTF/glTF.gltf delete mode 100755 specs/data/boxAnimated/glTF/glTF0FS.glsl delete mode 100755 specs/data/boxAnimated/glTF/glTF0VS.glsl delete mode 100755 specs/data/boxAnimated/screenshot/screenshot.png create mode 100755 specs/data/dagToTree/DagTestSingleDuplicate.gltf create mode 100755 specs/data/dagToTree/DagTestSingleNode.gltf create mode 100755 specs/data/dagToTree/DagTestSubgraphDuplicate.gltf create mode 100755 specs/data/dagToTree/DagTestTree.gltf create mode 100755 specs/data/dagToTree/DagTestTwoRoots.gltf create mode 100755 specs/lib/convertDagToTreeSpec.js diff --git a/lib/convertDagToTree.js b/lib/convertDagToTree.js new file mode 100755 index 00000000..f6213a54 --- /dev/null +++ b/lib/convertDagToTree.js @@ -0,0 +1,115 @@ +'use strict'; +var Cesium = require('cesium'); +var clone = Cesium.clone; +var defined = Cesium.defined; + +module.exports = convertDagToTree; + +function convertDagToTree(gltf) { + var scenes = gltf.scenes; + var nodes = gltf.nodes; + + if (defined(scenes) && defined(nodes)) { + for (var sceneId in scenes) { + if (scenes.hasOwnProperty(sceneId)) { + var roots = scenes[sceneId].nodes; + if (defined(roots)) { + //For each scene, reinitialize all nodes to unvisited + for (var nodeId in nodes) { + if (nodes.hasOwnProperty(nodeId)) { + nodes[nodeId].extras._pipeline.visited = false; + nodes[nodeId].extras._pipeline.copy = 0; + } + } + + //Perform a breadth-first search from each root, searching for previously visited nodes + var nodeStack = []; + var rootsLength = roots.length; + for (var i = 0; i < rootsLength; i++) { + var root = roots[i]; + nodeStack.push(root); + nodes[root].extras._pipeline.visited = true; + while (nodeStack.length > 0) { + var currentNode = nodes[nodeStack.shift()]; + var children = currentNode.children; + if (defined(children)) { + for (var j = 0; j < children.length; j++) { + var childId = children[j]; + var child = nodes[childId]; + //If child has already been visited, duplicate and search the subgraph + if (child.extras._pipeline.visited) { + nodeStack.push(duplicateSubgraph(nodes, currentNode, j, childId)); + } + else { + child.extras._pipeline.visited = true; + nodeStack.push(childId); + } + } + } + } + } + } + } + } + } + + return gltf; +} + +//Duplicates and returns the id of the new subgraph root +function duplicateSubgraph(nodes, parent, rootIndex, root) { + var newRootId = duplicateNode(nodes, root); + + //Keep track of the subgraph nodes that have already been duplicated + var duplicatedNodes = {}; + duplicatedNodes[root] = newRootId; + + var nodeStack = []; + nodeStack.push(newRootId); + while (nodeStack.length > 0) { + var currentNode = nodes[nodeStack.shift()]; + var children = currentNode.children; + if (defined(children)) { + for (var j = 0; j < children.length; j++) { + //Duplicate the child if it has not been encountered yet + var childId = children[j]; + if (Object.keys(duplicatedNodes).indexOf(childId) == -1) { + duplicatedNodes[childId] = duplicateNode(nodes, childId); + } + + //Update the list of children with the new child and push it on the node stack + children.splice(j, 1, duplicatedNodes[childId]); + nodeStack.push(duplicatedNodes[childId]); + } + } + } + + //Update the parent's children with the new subgraph root id + parent.children.splice(rootIndex, 1, newRootId); + return newRootId; +} + +//Duplicate node and return the id of the new node +function duplicateNode(nodes, nodeId) { + var node = nodes[nodeId]; + var copyId = node.extras._pipeline.copy + 1; + var newId = nodeId; + + //Appends the copy suffix if duplicating the original node + if (copyId == 1) { + newId += '_1'; + } + + //Increments the copy suffix until the new node has a unique id + var nodeKeys = Object.keys(nodes); + while (nodeKeys.indexOf(newId) != -1) { + copyId++; + newId = newId.slice(0, -1) + copyId; + } + + var newNode = clone(node, true); + nodes[newId] = newNode; + newNode.extras._pipeline.visited = false; + newNode.extras._pipeline.copy = copyId; + return newId; +} \ No newline at end of file diff --git a/package.json b/package.json index d52c8fb3..6bdf6d15 100755 --- a/package.json +++ b/package.json @@ -51,7 +51,6 @@ "gulp-jshint": "2.0.0", "istanbul": "^0.4.1", "jasmine": "^2.4.1", - "jasmine-node": "^1.14.5", "jshint": "2.8.0", "jshint-stylish": "2.1.0" } diff --git a/specs/data/boxAnimated/README.txt b/specs/data/boxAnimated/README.txt deleted file mode 100755 index f913a8cb..00000000 --- a/specs/data/boxAnimated/README.txt +++ /dev/null @@ -1 +0,0 @@ -Donated by Cesium for glTF testing. \ No newline at end of file diff --git a/specs/data/boxAnimated/collada/boxAnimated.dae b/specs/data/boxAnimated/collada/boxAnimated.dae deleted file mode 100755 index 800cf18c..00000000 --- a/specs/data/boxAnimated/collada/boxAnimated.dae +++ /dev/null @@ -1,313 +0,0 @@ - - - - - modo 701 [Build 64278], Microsoft Windows 7 Service Pack 1 (6.1.7601 Service Pack 1) - Plug-in: [Build 64278]; Use Absolute Path: No; Merge Reference Items: No; Save Hidden Items: No; Save Cameras: No; Save Lights: Yes; Save Locators: Yes; Save Triangles as Triangles: Yes; Order Vertex Maps Alphabetically: Yes; Bake Matrices: No; Save Vertex Normals: Yes; Save UV Texture Coordinates: Yes; Save Vertex Colors: No; Save Vertex Weights: No; Save Animation: Yes; Sample Animation: No; Sample Animation Start: 0; Sample Animation End: 120; Save modo Profile: No; Save Maya Profile: No; Save 3ds Max Profile: No; Formatted Arrays: No; - file:///C:/Users/bcoker/Desktop/DAE%20Test/anim-test-boxes.lxo - - 2013-10-31T20:53:56Z - 2013-10-31T20:53:56Z - Y_UP - - - - - 1.25 2.5 - - - - - - - - 0 180 - - - - - - - - 0.833333 0 2.08333 180 - - - - - - - - - 1.66667 0 2.91667 180 - - - - - - - - - BEZIER BEZIER - - - - - - - - - - - - - - - - - - 0 1.25 2.5 3.70833 - - - - - - - - 0 2.52 2.52 0 - - - - - - - - -0.416667 0 0.833333 2.52 2.08333 2.52 3.30556 0 - - - - - - - - - 0.416667 0 1.66667 2.52 2.91667 2.52 4.11111 0 - - - - - - - - - BEZIER BEZIER BEZIER BEZIER - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0.8 0.415942 0.795292 1 - - - 0.2 0.2 0.2 1 - - - 256 - - - - - - - - - - - 0.301604 0.533542 0.8 1 - - - 0.2 0.2 0.2 1 - - - 256 - - - - - - - - - - - -0.497 -0.497 -0.5 -0.494879 -0.5 -0.497879 -0.497879 -0.5 -0.494879 -0.5 -0.497 -0.497 0.5 -0.497 -0.497 0.497879 -0.5 -0.494879 0.494879 -0.5 -0.497879 0.497 -0.497 -0.5 0.497 -0.497 0.5 0.494879 -0.5 0.497879 0.497879 -0.5 0.494879 0.5 -0.497 0.497 -0.5 -0.497 0.497 -0.497879 -0.5 0.494879 -0.494879 -0.5 0.497879 -0.497 -0.497 0.5 -0.5 0.497 -0.497 -0.497879 0.5 -0.494879 -0.494879 0.5 -0.497879 -0.497 0.497 -0.5 0.494879 0.5 -0.497879 0.497879 0.5 -0.494879 0.5 0.497 -0.497 0.497 0.497 -0.5 0.497879 0.5 0.494879 0.494879 0.5 0.497879 0.497 0.497 0.5 0.5 0.497 0.497 -0.494879 0.5 0.497879 -0.497879 0.5 0.494879 -0.5 0.497 0.497 -0.497 0.497 0.5 -0.347852 -0.5 -0.351772 -0.346 -0.497 -0.349 -0.349 -0.497 -0.346 -0.351772 -0.5 -0.347852 0.351772 -0.5 -0.347852 0.349 -0.497 -0.346 0.346 -0.497 -0.349 0.347852 -0.5 -0.351772 0.347852 -0.5 0.351772 0.346 -0.497 0.349 0.349 -0.497 0.346 0.351772 -0.5 0.347852 -0.351772 -0.5 0.347852 -0.349 -0.497 0.346 -0.346 -0.497 0.349 -0.347852 -0.5 0.351772 -0.351772 0.5 -0.347852 -0.349 0.497 -0.346 -0.346 0.497 -0.349 -0.347852 0.5 -0.351772 0.347852 0.5 -0.351772 0.346 0.497 -0.349 0.349 0.497 -0.346 0.351772 0.5 -0.347852 0.351772 0.5 0.347852 0.349 0.497 0.346 0.346 0.497 0.349 0.347852 0.5 0.351772 -0.347852 0.5 0.351772 -0.346 0.497 0.349 -0.349 0.497 0.346 -0.351772 0.5 0.347852 - - - - - - - - - - 0 -0.6786 -0.734508 0 -1 -0 0.707107 0 0.707107 -0.734508 -0.6786 -0 0.734508 -0.6786 0 0 -0.577353 0.816495 0 -0.6786 0.734508 0 0.6786 -0.734508 -0.816495 -0.577353 -0 0.816495 -0.577353 0 -0.734508 0.6786 0 0.734508 0.6786 0 0 -0.577353 -0.816495 0.707107 0 -0.707107 0 0.577353 0.816495 -0 0.6786 0.734508 -0.707107 0 -0.707107 0.816495 0.577353 -0 -0.816495 0.577353 0 -0.707107 0 0.707107 0 0.577353 -0.816495 -0.499998 -0.707109 -0.499998 0.499998 -0.707109 -0.499998 0.499998 -0.707109 0.499998 -0.499998 -0.707109 0.499998 -0.499998 0.707109 -0.499998 0.499998 0.707109 -0.499998 0.499998 0.707109 0.499998 -0.499998 0.707109 0.499998 0.478075 -0.73681 0.478075 -0.478075 -0.73681 0.478075 -0.478075 -0.73681 -0.478075 0.478075 -0.73681 -0.478075 0.478075 0.73681 0.478075 -0.478075 0.73681 0.478075 -0.478075 0.73681 -0.478075 0.478075 0.73681 -0.478075 1 0 0 -0 0 1 -1 0 0 -0 -0 -1 0 1 0 - - - - - - - - - - 0.344638 0.240525 0.405362 0.240525 0.407013 0.240691 0.342987 0.240691 0.342643 0.0934546 0.251326 0.00232583 0.252076 0.00132583 0.342987 0.0926427 0.344375 0.90257 0.344375 0.0974302 0.344638 0.0968087 0.344638 0.903191 0.405625 0.239903 0.405625 0.0974302 0.407357 0.0934546 0.407357 0.239879 0.342643 0.239879 0.344375 0.239903 0.49925 0.334333 0.25075 0.334333 0.252076 0.332007 0.497924 0.332007 0.405362 0.0968087 0.407013 0.0926427 0.405362 0.759475 0.344638 0.759475 0.342987 0.759309 0.407013 0.759309 0.248674 0.331008 0.248674 0.00232583 0.251326 0.331008 0.501326 0.00232583 0.501326 0.331008 0.498674 0.331008 0.498674 0.00232583 0.405625 0.90257 0.405625 0.760097 0.407357 0.760121 0.407357 0.906545 0.344375 0.760097 0.342643 0.906545 0.342643 0.760121 0.252076 -0.00132583 0.497924 -0.00132583 0.497924 0.00132583 0.497924 0.667992 0.252076 0.667992 0.25075 0.665667 0.49925 0.665667 0.405362 0.903191 0.407013 0.907357 0.342987 0.907357 0.74925 0.667667 0.50075 0.667667 0.50075 0.665667 0.74925 0.665667 0.24925 0.667667 0.00075 0.667667 0.00075 0.665667 0.24925 0.665667 0.99925 0.667667 0.75075 0.667667 0.75075 0.665667 0.99925 0.665667 0.24923 0.000132068 0.249868 0.000769766 0.25077 -0.000132068 0.250132 -0.000769766 0.500132 0.000769766 0.50077 0.000132068 0.499868 -0.000769766 0.49923 -0.000132068 0.50075 0.334333 0.24925 0.334333 1.00013 0.665897 1.00077 0.666535 0.999868 0.667436 0.99923 0.666799 0.749868 0.665897 0.75077 0.666799 0.750132 0.667436 0.74923 0.666535 0.498674 0.668993 0.251326 0.668993 0.498674 0.997674 0.497924 0.998674 0.251326 0.997674 0.252076 0.998674 0.00075 0.334333 0.75075 0.334333 0.99925 0.334333 0.74925 0.334333 -0.00075 0.665667 -0.00075 0.334333 - - - - - - - - - - - - - - - 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 -

46 0 0 41 0 1 40 0 2 47 0 3 35 1 4 2 1 5 1 1 6 32 1 7 49 2 8 34 2 9 33 2 10 50 2 11 42 3 12 37 3 13 36 3 14 43 3 15 44 4 16 35 4 4 34 4 9 45 4 17 8 5 18 15 5 19 14 5 20 9 5 21 38 6 22 33 6 10 32 6 7 39 6 23 58 7 24 61 7 25 60 7 26 59 7 27 12 8 28 3 8 29 2 8 5 13 8 30 4 9 31 11 9 32 10 9 33 5 9 34 47 1 3 14 1 20 13 1 30 44 1 16 54 10 35 57 10 36 56 10 37 55 10 38 62 11 39 49 11 8 48 11 40 63 11 41 0 12 42 7 12 43 6 12 44 1 12 6 61 13 25 46 13 0 45 13 17 62 13 39 25 14 45 28 14 46 31 14 47 26 14 48 43 1 15 10 1 33 9 1 21 40 1 2 50 15 11 53 15 49 52 15 50 51 15 51 41 16 1 58 16 24 57 16 36 42 16 12 21 17 52 24 17 53 27 17 54 22 17 55 29 18 56 17 18 57 16 18 58 30 18 59 39 1 23 6 1 44 5 1 34 36 1 14 37 19 13 54 19 35 53 19 49 38 19 22 18 20 60 20 20 61 23 20 62 19 20 63 0 21 64 1 21 65 2 21 66 3 21 67 4 22 68 5 22 69 6 22 70 7 22 71 8 23 18 9 23 21 10 23 33 11 23 72 12 24 73 13 24 30 14 24 20 15 24 19 16 25 74 17 25 75 18 25 76 19 25 77 20 26 78 21 26 79 22 26 80 23 26 81 24 27 82 25 27 45 26 27 48 27 27 54 28 28 46 29 28 83 30 28 59 31 28 47 32 29 7 33 29 10 34 29 9 35 29 4 36 30 14 37 30 13 38 30 22 39 30 23 40 31 2 41 31 1 42 31 12 43 31 15 44 32 16 45 32 17 46 32 0 47 32 3 48 33 40 49 33 8 50 33 11 51 33 51 52 34 50 53 34 49 54 34 35 55 34 38 56 35 37 57 35 36 58 35 24 59 35 27 60 36 26 61 36 25 62 36 39 63 36 41 14 1 20 47 1 3 40 1 2 9 1 21 2 1 5 35 1 4 44 1 16 13 1 30 6 1 44 39 1 23 32 1 7 1 1 6 10 1 33 43 1 15 36 1 14 5 1 34 62 37 39 45 37 17 34 37 9 49 37 8 50 38 11 33 38 10 38 38 22 53 38 49 54 39 35 37 39 13 42 39 12 57 39 36 58 40 24 41 40 1 46 40 0 61 40 25 21 41 84 20 41 85 52 41 50 55 41 38 17 41 86 29 41 83 63 41 41 48 41 40 24 41 82 21 41 84 55 41 38 56 41 37 18 41 87 17 41 86 48 41 40 51 41 51 25 41 45 24 41 82 56 41 37 59 41 27 20 41 85 18 41 87 51 41 51 52 41 50 28 41 46 25 41 45 59 41 27 60 41 26 29 41 83 28 41 46 60 41 26 63 41 41 30 39 59 16 39 58 3 39 88 12 39 73 19 40 63 23 40 62 7 40 89 0 40 90 31 19 47 30 19 59 12 19 73 15 19 19 22 37 55 27 37 54 11 37 72 4 37 91 26 38 48 31 38 47 15 38 19 8 38 18 16 16 58 19 16 92 0 16 93 3 16 88 27 2 54 26 2 48 8 2 18 11 2 72 23 13 62 22 13 55 4 13 91 7 13 89

-
-
-
- - - - -0.33204 -0.497 -0.33504 -0.33204 -0.5 -0.33204 -0.33504 -0.497 -0.33204 0.33504 -0.497 -0.33204 0.33204 -0.5 -0.33204 0.33204 -0.497 -0.33504 0.33204 -0.497 0.33504 0.33204 -0.5 0.33204 0.33504 -0.497 0.33204 -0.33204 -0.5 0.33204 -0.33204 -0.497 0.33504 -0.33504 -0.497 0.33204 -0.33204 0.5 -0.33204 -0.33204 0.497 -0.33504 -0.33504 0.497 -0.33204 0.33204 0.5 -0.33204 0.33504 0.497 -0.33204 0.33204 0.497 -0.33504 0.33204 0.5 0.33204 0.33204 0.497 0.33504 0.33504 0.497 0.33204 -0.33504 0.497 0.33204 -0.33204 0.497 0.33504 -0.33204 0.5 0.33204 - - - - - - - - - - 0 -0.707107 0.707107 -0.707107 -0 -0.707107 0.707107 -0.707107 0 -0.707107 -0.707107 -0 -0 -0.707107 -0.707107 -0 0.707107 0.707107 0.707107 0.707107 0 -0.707107 0.707107 0 -0.707107 0 0.707107 0 0.707107 -0.707107 0.707107 0 0.707107 0.707107 0 -0.707107 -0.57735 -0.57735 -0.57735 0.57735 -0.57735 -0.57735 0.57735 -0.57735 0.57735 -0.57735 -0.57735 0.57735 -0.57735 0.57735 -0.57735 0.57735 0.57735 -0.57735 0.57735 0.57735 0.57735 -0.57735 0.57735 0.57735 -1 0 0 0 0 -1 1 -0 0 0 0 1 0 1 0 0 -1 0 - - - - - - - - - - 0.344393 0.238915 0.405607 0.238915 0.405607 0.239063 0.344393 0.239063 0.344393 0.905463 0.344393 0.0945372 0.344375 0.0945804 0.344375 0.90542 0.405607 0.0944181 0.405625 0.0945804 0.405625 0.23902 0.344375 0.23902 0.344393 0.0944182 0.405607 0.0945372 0.344393 0.760937 0.405607 0.760937 0.405607 0.761085 0.344393 0.761085 0.405625 0.76098 0.405625 0.90542 0.405607 0.905582 0.344393 0.905582 0.344375 0.76098 0.405607 0.905463 - - - - - - - - - - - - - - - 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 4 4 4 4 4 4 -

9 0 0 7 0 1 6 0 2 10 0 3 13 1 4 0 1 5 2 1 6 14 1 7 7 2 1 4 2 8 3 2 9 8 2 10 11 3 11 2 3 6 1 3 12 9 3 0 4 4 8 1 4 12 0 4 5 5 4 13 22 5 14 19 5 15 18 5 16 23 5 17 20 6 18 16 6 19 15 6 20 18 6 16 23 7 17 12 7 21 14 7 7 21 7 22 21 8 22 11 8 11 10 8 3 22 8 14 17 9 23 13 9 4 12 9 21 15 9 20 19 10 15 6 10 2 8 10 10 20 10 18 16 11 19 3 11 9 5 11 13 17 11 23 0 12 5 1 12 12 2 12 6 3 13 9 4 13 8 5 13 13 6 14 2 7 14 1 8 14 10 9 15 0 10 15 3 11 15 11 12 16 21 13 16 4 14 16 7 15 17 20 16 17 19 17 17 23 18 18 16 19 18 15 20 18 18 21 19 22 22 19 14 23 19 17 2 20 6 11 20 11 21 20 22 14 20 7 5 21 13 0 21 5 13 21 4 17 21 23 8 22 10 3 22 9 16 22 19 20 22 18 10 23 3 6 23 2 19 23 15 22 23 14 12 24 21 23 24 17 18 24 16 15 24 20 4 25 8 7 25 1 9 25 0 1 25 12

-
-
-
-
- - - - - 0 0 0 - - - - - - - 1 1 1 - - - - - - - - - - - - - - - - - - - - 0 0 0 - 0 1 0 0 - 1 0 0 0 - 0 0 1 0 - - - - - - - - - - 0 0.75 4 - 0 1 0 0 - 1 0 0 -5 - 0 0 1 0 - - - - -2 2 2 - 0 1 0 -45 - 1 0 0 -30 - 0 0 1 0 - - - - - - - -
diff --git a/specs/data/boxAnimated/glTF-Binary/boxAnimated.glb b/specs/data/boxAnimated/glTF-Binary/boxAnimated.glb deleted file mode 100755 index a11249a8b06b9427febd5a092d65d8e6fd151b19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19500 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 Uz*Y8THPPQ5MDRct+(l9RKhPp5YXATM diff --git a/specs/data/boxAnimated/glTF-Embedded/boxAnimated.gltf b/specs/data/boxAnimated/glTF-Embedded/boxAnimated.gltf deleted file mode 100755 index d9f1b013..00000000 --- a/specs/data/boxAnimated/glTF-Embedded/boxAnimated.gltf +++ /dev/null @@ -1,533 +0,0 @@ -{ - "accessors": { - "accessor_29": { - "bufferView": "bufferView_64", - "byteOffset": 0, - "byteStride": 0, - "componentType": 5123, - "count": 384, - "type": "SCALAR" - }, - "accessor_31": { - "bufferView": "bufferView_65", - "byteOffset": 0, - "byteStride": 12, - "componentType": 5126, - "count": 224, - "max": [ - 0.5, - 0.5, - 0.5 - ], - "min": [ - -0.5, - -0.5, - -0.5 - ], - "type": "VEC3" - }, - "accessor_33": { - "bufferView": "bufferView_65", - "byteOffset": 2688, - "byteStride": 12, - "componentType": 5126, - "count": 224, - "max": [ - 1, - 1, - 1 - ], - "min": [ - -1, - -1, - -1 - ], - "type": "VEC3" - }, - "accessor_35": { - "bufferView": "bufferView_65", - "byteOffset": 5376, - "byteStride": 8, - "componentType": 5126, - "count": 224, - "max": [ - 1.0007699728012085, - 1.0013258457183838 - ], - "min": [ - -0.000750000006519258, - 0.0013260245323181152 - ], - "type": "VEC2" - }, - "accessor_56": { - "bufferView": "bufferView_64", - "byteOffset": 768, - "byteStride": 0, - "componentType": 5123, - "count": 132, - "type": "SCALAR" - }, - "accessor_58": { - "bufferView": "bufferView_65", - "byteOffset": 7168, - "byteStride": 12, - "componentType": 5126, - "count": 96, - "max": [ - 0.33504000306129456, - 0.5, - 0.33504000306129456 - ], - "min": [ - -0.33504000306129456, - -0.5, - -0.33504000306129456 - ], - "type": "VEC3" - }, - "accessor_60": { - "bufferView": "bufferView_65", - "byteOffset": 8320, - "byteStride": 12, - "componentType": 5126, - "count": 96, - "max": [ - 1, - 1, - 1 - ], - "min": [ - -1, - -1, - -1 - ], - "type": "VEC3" - }, - "accessor_62": { - "bufferView": "bufferView_65", - "byteOffset": 9472, - "byteStride": 8, - "componentType": 5126, - "count": 96, - "max": [ - 0.40562498569488525, - 0.9055818915367126 - ], - "min": [ - 0.34437498450279236, - 0.0944179892539978 - ], - "type": "VEC2" - }, - "animAccessor_0": { - "bufferView": "bufferView_63", - "byteOffset": 0, - "componentType": 5126, - "count": 2, - "type": "SCALAR" - }, - "animAccessor_1": { - "bufferView": "bufferView_63", - "byteOffset": 8, - "componentType": 5126, - "count": 2, - "type": "VEC4" - }, - "animAccessor_2": { - "bufferView": "bufferView_63", - "byteOffset": 40, - "componentType": 5126, - "count": 4, - "type": "SCALAR" - }, - "animAccessor_3": { - "bufferView": "bufferView_63", - "byteOffset": 56, - "componentType": 5126, - "count": 4, - "type": "VEC3" - } - }, - "animations": { - "animation_0": { - "channels": [ - { - "sampler": "animation_0_rotation_sampler", - "target": { - "id": "Geometry-mesh020Node", - "path": "rotation" - } - } - ], - "parameters": { - "TIME": "animAccessor_0", - "rotation": "animAccessor_1" - }, - "samplers": { - "animation_0_rotation_sampler": { - "input": "TIME", - "interpolation": "LINEAR", - "output": "rotation" - } - } - }, - "animation_1": { - "channels": [ - { - "sampler": "animation_1_translation_sampler", - "target": { - "id": "Geometry-mesh020Node", - "path": "translation" - } - } - ], - "parameters": { - "TIME": "animAccessor_2", - "translation": "animAccessor_3" - }, - "samplers": { - "animation_1_translation_sampler": { - "input": "TIME", - "interpolation": "LINEAR", - "output": "translation" - } - } - } - }, - "asset": { - "generator": "collada2gltf@", - "premultipliedAlpha": true, - "profile": { - "api": "WebGL", - "version": "1.0.2" - }, - "version": 1 - }, - "bufferViews": { - "bufferView_63": { - "buffer": "input", - "byteLength": 104, - "byteOffset": 0 - }, - "bufferView_64": { - "buffer": "input", - "byteLength": 1032, - "byteOffset": 104, - "target": 34963 - }, - "bufferView_65": { - "buffer": "input", - "byteLength": 10240, - "byteOffset": 1136, - "target": 34962 - } - }, - "buffers": { - "input": { - "byteLength": 11376, - "type": "arraybuffer", - "uri": "data:application/octet-stream;base64,AACgPwAAIEAAAAAAAAAAAAAAAAAAAIA/AACAvwAAAIAAAACAEnVFrgAAAAAAAKA/AAAgQEdVbUAAAAAAAAAAAAAAAAAAAAAArkchQAAAAAAAAAAArkchQAAAAAAAAAAAAAAAAAAAAAAAAAEAAgACAAMAAAAEAAUABgAGAAcABAAIAAkACgAKAAsACAAMAA0ADgAOAA8ADAAQABEAEgASABMAEAAUABUAFgAWABcAFAAYABkAGgAaABsAGAAcAB0AHgAeAB8AHAAgACEAIgAiACMAIAAkACUAJgAmACcAJAAoACkAKgAqACsAKAAsAC0ALgAuAC8ALAAwADEAMgAyADMAMAA0ADUANgA2ADcANAA4ADkAOgA6ADsAOAA8AD0APgA+AD8APABAAEEAQgBCAEMAQABEAEUARgBGAEcARABIAEkASgBKAEsASABMAE0ATgBOAE8ATABQAFEAUgBSAFMAUABUAFUAVgBWAFcAVABYAFkAWgBaAFsAWABcAF0AXgBeAF8AXABgAGEAYgBiAGMAYABkAGUAZgBmAGcAZABoAGkAagBqAGsAaABsAG0AbgBuAG8AbABwAHEAcgByAHMAcAB0AHUAdgB2AHcAdAB4AHkAegB6AHsAeAB8AH0AfgB+AH8AfACAAIEAggCCAIMAgACEAIUAhgCGAIcAhACIAIkAigCKAIsAiACMAI0AjgCOAI8AjACQAJEAkgCSAJMAkACUAJUAlgCWAJcAlACYAJkAmgCaAJsAmACcAJ0AngCeAJ8AnAApACgAQwBDAEIAKQAFAAQAKwArACoABQBVAFQABwAHAAYAVQBBAEAAVwBXAFYAQQCgAKEAogCiAKMAoACkAKUApgCmAKcApACoAKkAqgCqAKsAqACsAK0ArgCuAK8ArACwALEAsgCyALMAsAC0ALUAtgC2ALcAtAC4ALAAswCzALkAuAC6ALQAtwC3ALsAugC8ALgAuQC5AL0AvACxALoAuwC7ALIAsQC+ALwAvQC9AL8AvgC1AL4AvwC/ALYAtQDAAMEAwgDCAMMAwADEAMUAxgDGAMcAxADIAMkAygDKAMsAyADMAM0AzgDOAM8AzADQANEA0gDSANMA0ADUANUA1gDWANcA1ADYANkA2gDaANsA2ADcAN0A3gDeAN8A3AAAAAEAAgACAAMAAAAEAAUABgAGAAcABAAIAAkA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AAAAAPcENb/3BDU/AAAAAPcENb/3BDU/AAAAAPcENb/3BDU/AAAAAPcENb8AAAAAaM0TP9EFUT8AAAAAaM0TP9EFUT8AAAAAaM0TP9EFUT8AAAAAaM0TP9EFUT8AAAAAAACAvwAAAIAAAAAAAACAvwAAAIAAAAAAAACAvwAAAIAAAAAAAACAvwAAAIAAAACAurgtP7cIPD8AAACAurgtP7cIPD8AAACAurgtP7cIPD8AAACAurgtP7cIPD/3BDW/AAAAAPcENb/3BDW/AAAAAPcENb/3BDW/AAAAAPcENb/3BDW/AAAAAPcENb/RBVE/aM0TPwAAAIDRBVE/aM0TPwAAAIDRBVE/aM0TPwAAAIDRBVE/aM0TPwAAAIDRBVG/aM0TPwAAAADRBVG/aM0TPwAAAADRBVG/aM0TPwAAAADRBVG/aM0TPwAAAAAAAAAAAACAvwAAAIAAAAAAAACAvwAAAIAAAAAAAACAvwAAAIAAAAAAAACAvwAAAID3BDW/AAAAAPcENT/3BDW/AAAAAPcENT/3BDW/AAAAAPcENT/3BDW/AAAAAPcENT8AAAAAaM0TP9EFUb8AAAAAaM0TP9EFUb8AAAAAaM0TP9EFUb8AAAAAaM0TP9EFUb+9//++GAU1v73//769//++GAU1v73//769//++GAU1v73//769//++GAU1v73//769//8+GAU1v73//769//8+GAU1v73//769//8+GAU1v73//769//8+GAU1v73//769//8+GAU1v73//z69//8+GAU1v73//z69//8+GAU1v73//z69//8+GAU1v73//z69//++GAU1v73//z69//++GAU1v73//z69//++GAU1v73//z69//++GAU1v73//z69//++GAU1P73//769//++GAU1P73//769//++GAU1P73//769//++GAU1P73//769//8+GAU1P73//769//8+GAU1P73//769//8+GAU1P73//769//8+GAU1P73//769//8+GAU1P73//z69//8+GAU1P73//z69//8+GAU1P73//z69//8+GAU1P73//z69//++GAU1P73//z69//++GAU1P73//z69//++GAU1P73//z69//++GAU1P73//z4/xvQ+lJ88vz/G9D4/xvQ+lJ88vz/G9D4/xvQ+lJ88vz/G9D4/xvQ+lJ88vz/G9D4/xvS+lJ88vz/G9D4/xvS+lJ88vz/G9D4/xvS+lJ88vz/G9D4/xvS+lJ88vz/G9D4/xvS+lJ88vz/G9L4/xvS+lJ88vz/G9L4/xvS+lJ88vz/G9L4/xvS+lJ88vz/G9L4/xvQ+lJ88vz/G9L4/xvQ+lJ88vz/G9L4/xvQ+lJ88vz/G9L4/xvQ+lJ88vz/G9L4/xvQ+lJ88Pz/G9D4/xvQ+lJ88Pz/G9D4/xvQ+lJ88Pz/G9D4/xvQ+lJ88Pz/G9D4/xvS+lJ88Pz/G9D4/xvS+lJ88Pz/G9D4/xvS+lJ88Pz/G9D4/xvS+lJ88Pz/G9D4/xvS+lJ88Pz/G9L4/xvS+lJ88Pz/G9L4/xvS+lJ88Pz/G9L4/xvS+lJ88Pz/G9L4/xvQ+lJ88Pz/G9L4/xvQ+lJ88Pz/G9L4/xvQ+lJ88Pz/G9L4/xvQ+lJ88Pz/G9L4AAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAACAAAAAgAAAgL8AAACAAAAAgAAAgL8AAACAAAAAgAAAgL8AAACAAAAAgAAAgL8AAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAACAAAAAgAAAgL8AAACAAAAAgAAAgL8AAACAAAAAgAAAgL8AAACAAAAAgAAAgL/3BDW/AAAAAPcENT/3BDW/AAAAAPcENT/3BDW/AAAAAPcENT/3BDW/AAAAAPcENT8AAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/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" - } - }, - "materials": { - "Effect-inner": { - "name": "inner", - "technique": "technique0", - "values": { - "diffuse": [ - 0.800000011920929, - 0.4159420132637024, - 0.7952920198440552, - 1 - ], - "shininess": 256, - "specular": [ - 0.20000000298023224, - 0.20000000298023224, - 0.20000000298023224, - 1 - ] - } - }, - "Effect-outer": { - "name": "outer", - "technique": "technique0", - "values": { - "diffuse": [ - 0.3016040027141571, - 0.5335419774055481, - 0.800000011920929, - 1 - ], - "shininess": 256, - "specular": [ - 0.20000000298023224, - 0.20000000298023224, - 0.20000000298023224, - 1 - ] - } - } - }, - "meshes": { - "Geometry-mesh019": { - "name": "outer_box", - "primitives": [ - { - "attributes": { - "NORMAL": "accessor_33", - "POSITION": "accessor_31", - "TEXCOORD_0": "accessor_35" - }, - "indices": "accessor_29", - "material": "Effect-outer", - "mode": 4 - } - ] - }, - "Geometry-mesh020": { - "name": "inner_box", - "primitives": [ - { - "attributes": { - "NORMAL": "accessor_60", - "POSITION": "accessor_58", - "TEXCOORD_0": "accessor_62" - }, - "indices": "accessor_56", - "material": "Effect-inner", - "mode": 4 - } - ] - } - }, - "nodes": { - "Camera-camera002Node": { - "camera": "", - "children": [], - "matrix": [ - 1, - 0, - 0, - 0, - 0, - 0.9961947202682495, - -0.08715574443340302, - 0, - 0, - 0.08715574443340302, - 0.9961947202682495, - 0, - 0, - 0.75, - 4, - 1 - ], - "name": "Camera" - }, - "Geometry-mesh019Node": { - "children": [], - "matrix": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ], - "meshes": [ - "Geometry-mesh019" - ], - "name": "outer_box" - }, - "Geometry-mesh020Node": { - "children": [], - "meshes": [ - "Geometry-mesh020" - ], - "name": "inner_box", - "rotation": [ - 0, - 0, - 0, - 1 - ], - "scale": [ - 1, - 1, - 1 - ], - "translation": [ - 0, - 0, - 0 - ] - }, - "Light-sunLight011Node": { - "children": [], - "matrix": [ - 0.7071067690849304, - 0, - 0.7071067690849304, - 0, - 0.3535533845424652, - 0.8660253882408142, - -0.3535533845424652, - 0, - -0.6123724579811096, - 0.5, - 0.6123724579811096, - 0, - -2, - 2, - 2, - 1 - ], - "name": "Directional_Light" - }, - "polyRender005": { - "children": [], - "matrix": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ], - "name": "Render" - } - }, - "programs": { - "program_0": { - "attributes": [ - "a_normal", - "a_position" - ], - "fragmentShader": "input0FS", - "vertexShader": "input0VS" - } - }, - "scene": "defaultScene", - "scenes": { - "defaultScene": { - "nodes": [ - "polyRender005", - "Geometry-mesh019Node", - "Geometry-mesh020Node", - "Camera-camera002Node", - "Light-sunLight011Node" - ] - } - }, - "shaders": { - "input0FS": { - "type": 35632, - "uri": "data:text/plain;base64,cHJlY2lzaW9uIGhpZ2hwIGZsb2F0Owp2YXJ5aW5nIHZlYzMgdl9ub3JtYWw7CnVuaWZvcm0gdmVjNCB1X2RpZmZ1c2U7CnVuaWZvcm0gdmVjNCB1X3NwZWN1bGFyOwp1bmlmb3JtIGZsb2F0IHVfc2hpbmluZXNzOwp1bmlmb3JtIHZlYzMgdV9saWdodDBDb2xvcjsKdmFyeWluZyB2ZWMzIHZfbGlnaHQxRGlyZWN0aW9uOwp2YXJ5aW5nIHZlYzMgdl9wb3NpdGlvbjsKdW5pZm9ybSB2ZWMzIHVfbGlnaHQxQ29sb3I7CnZvaWQgbWFpbih2b2lkKSB7CnZlYzMgbm9ybWFsID0gbm9ybWFsaXplKHZfbm9ybWFsKTsKdmVjNCBjb2xvciA9IHZlYzQoMC4sIDAuLCAwLiwgMC4pOwp2ZWM0IGRpZmZ1c2UgPSB2ZWM0KDAuLCAwLiwgMC4sIDEuKTsKdmVjMyBkaWZmdXNlTGlnaHQgPSB2ZWMzKDAuLCAwLiwgMC4pOwp2ZWM0IHNwZWN1bGFyOwpkaWZmdXNlID0gdV9kaWZmdXNlOwpzcGVjdWxhciA9IHVfc3BlY3VsYXI7CnZlYzMgc3BlY3VsYXJMaWdodCA9IHZlYzMoMC4sIDAuLCAwLik7CnZlYzMgYW1iaWVudExpZ2h0ID0gdmVjMygwLiwgMC4sIDAuKTsKewphbWJpZW50TGlnaHQgKz0gdV9saWdodDBDb2xvcjsKfQp7CmZsb2F0IHNwZWN1bGFySW50ZW5zaXR5ID0gMC47CmZsb2F0IGF0dGVudWF0aW9uID0gMS4wOwp2ZWMzIGwgPSBub3JtYWxpemUodl9saWdodDFEaXJlY3Rpb24pOwp2ZWMzIHZpZXdEaXIgPSAtbm9ybWFsaXplKHZfcG9zaXRpb24pOwpmbG9hdCBwaG9uZ1Rlcm0gPSBtYXgoMC4wLCBkb3QocmVmbGVjdCgtbCxub3JtYWwpLCB2aWV3RGlyKSk7CnNwZWN1bGFySW50ZW5zaXR5ID0gbWF4KDAuLCBwb3cocGhvbmdUZXJtICwgdV9zaGluaW5lc3MpKSAqIGF0dGVudWF0aW9uOwpzcGVjdWxhckxpZ2h0ICs9IHVfbGlnaHQxQ29sb3IgKiBzcGVjdWxhckludGVuc2l0eTsKZGlmZnVzZUxpZ2h0ICs9IHVfbGlnaHQxQ29sb3IgKiBtYXgoZG90KG5vcm1hbCxsKSwgMC4pICogYXR0ZW51YXRpb247Cn0Kc3BlY3VsYXIueHl6ICo9IHNwZWN1bGFyTGlnaHQ7CmNvbG9yLnh5eiArPSBzcGVjdWxhci54eXo7CmRpZmZ1c2UueHl6ICo9IGRpZmZ1c2VMaWdodDsKY29sb3IueHl6ICs9IGRpZmZ1c2UueHl6Owpjb2xvciA9IHZlYzQoY29sb3IucmdiICogZGlmZnVzZS5hLCBkaWZmdXNlLmEpOwpnbF9GcmFnQ29sb3IgPSBjb2xvcjsKfQo=" - }, - "input0VS": { - "type": 35633, - "uri": "data:text/plain;base64,cHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwphdHRyaWJ1dGUgdmVjMyBhX3Bvc2l0aW9uOwphdHRyaWJ1dGUgdmVjMyBhX25vcm1hbDsKdmFyeWluZyB2ZWMzIHZfbm9ybWFsOwp1bmlmb3JtIG1hdDMgdV9ub3JtYWxNYXRyaXg7CnVuaWZvcm0gbWF0NCB1X21vZGVsVmlld01hdHJpeDsKdW5pZm9ybSBtYXQ0IHVfcHJvamVjdGlvbk1hdHJpeDsKdmFyeWluZyB2ZWMzIHZfbGlnaHQxRGlyZWN0aW9uOwp2YXJ5aW5nIHZlYzMgdl9wb3NpdGlvbjsKdW5pZm9ybSBtYXQ0IHVfbGlnaHQxVHJhbnNmb3JtOwp2b2lkIG1haW4odm9pZCkgewp2ZWM0IHBvcyA9IHVfbW9kZWxWaWV3TWF0cml4ICogdmVjNChhX3Bvc2l0aW9uLDEuMCk7CnZfbm9ybWFsID0gdV9ub3JtYWxNYXRyaXggKiBhX25vcm1hbDsKdl9wb3NpdGlvbiA9IHBvcy54eXo7CnZfbGlnaHQxRGlyZWN0aW9uID0gbWF0Myh1X2xpZ2h0MVRyYW5zZm9ybSkgKiB2ZWMzKDAuLDAuLDEuKTsKZ2xfUG9zaXRpb24gPSB1X3Byb2plY3Rpb25NYXRyaXggKiBwb3M7Cn0K" - } - }, - "skins": {}, - "techniques": { - "technique0": { - "attributes": { - "a_normal": "normal", - "a_position": "position" - }, - "parameters": { - "diffuse": { - "type": 35666 - }, - "light0Color": { - "type": 35665, - "value": [ - 0, - 0, - 0 - ] - }, - "light1Color": { - "type": 35665, - "value": [ - 1, - 1, - 1 - ] - }, - "light1Transform": { - "node": "Light-sunLight011Node", - "semantic": "MODELVIEW", - "type": 35676 - }, - "modelViewMatrix": { - "semantic": "MODELVIEW", - "type": 35676 - }, - "normal": { - "semantic": "NORMAL", - "type": 35665 - }, - "normalMatrix": { - "semantic": "MODELVIEWINVERSETRANSPOSE", - "type": 35675 - }, - "position": { - "semantic": "POSITION", - "type": 35665 - }, - "projectionMatrix": { - "semantic": "PROJECTION", - "type": 35676 - }, - "shininess": { - "type": 5126 - }, - "specular": { - "type": 35666 - } - }, - "program": "program_0", - "states": { - "enable": [ - 2929, - 2884 - ] - }, - "uniforms": { - "u_diffuse": "diffuse", - "u_light0Color": "light0Color", - "u_light1Color": "light1Color", - "u_light1Transform": "light1Transform", - "u_modelViewMatrix": "modelViewMatrix", - "u_normalMatrix": "normalMatrix", - "u_projectionMatrix": "projectionMatrix", - "u_shininess": "shininess", - "u_specular": "specular" - } - } - } -} \ No newline at end of file diff --git a/specs/data/boxAnimated/glTF-MaterialsCommon/glTF-MaterialsCommon.bin b/specs/data/boxAnimated/glTF-MaterialsCommon/glTF-MaterialsCommon.bin deleted file mode 100755 index 28a90ee82bd97a44cc89176948ff5ebc33b41b58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11376 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 RFLZ~E`-%QVf5Ou5{{s8#4?q9_ diff --git a/specs/data/boxAnimated/glTF-MaterialsCommon/glTF-MaterialsCommon.gltf b/specs/data/boxAnimated/glTF-MaterialsCommon/glTF-MaterialsCommon.gltf deleted file mode 100755 index f2498e1b..00000000 --- a/specs/data/boxAnimated/glTF-MaterialsCommon/glTF-MaterialsCommon.gltf +++ /dev/null @@ -1,484 +0,0 @@ -{ - "accessors": { - "accessor_29": { - "bufferView": "bufferView_64", - "byteOffset": 0, - "byteStride": 0, - "componentType": 5123, - "count": 384, - "type": "SCALAR" - }, - "accessor_31": { - "bufferView": "bufferView_65", - "byteOffset": 0, - "byteStride": 12, - "componentType": 5126, - "count": 224, - "max": [ - 0.5, - 0.5, - 0.5 - ], - "min": [ - -0.5, - -0.5, - -0.5 - ], - "type": "VEC3" - }, - "accessor_33": { - "bufferView": "bufferView_65", - "byteOffset": 2688, - "byteStride": 12, - "componentType": 5126, - "count": 224, - "max": [ - 1, - 1, - 1 - ], - "min": [ - -1, - -1, - -1 - ], - "type": "VEC3" - }, - "accessor_35": { - "bufferView": "bufferView_65", - "byteOffset": 5376, - "byteStride": 8, - "componentType": 5126, - "count": 224, - "max": [ - 1.00077, - 1.00133 - ], - "min": [ - -0.00075, - 0.00132602 - ], - "type": "VEC2" - }, - "accessor_56": { - "bufferView": "bufferView_64", - "byteOffset": 768, - "byteStride": 0, - "componentType": 5123, - "count": 132, - "type": "SCALAR" - }, - "accessor_58": { - "bufferView": "bufferView_65", - "byteOffset": 7168, - "byteStride": 12, - "componentType": 5126, - "count": 96, - "max": [ - 0.33504, - 0.5, - 0.33504 - ], - "min": [ - -0.33504, - -0.5, - -0.33504 - ], - "type": "VEC3" - }, - "accessor_60": { - "bufferView": "bufferView_65", - "byteOffset": 8320, - "byteStride": 12, - "componentType": 5126, - "count": 96, - "max": [ - 1, - 1, - 1 - ], - "min": [ - -1, - -1, - -1 - ], - "type": "VEC3" - }, - "accessor_62": { - "bufferView": "bufferView_65", - "byteOffset": 9472, - "byteStride": 8, - "componentType": 5126, - "count": 96, - "max": [ - 0.405625, - 0.905582 - ], - "min": [ - 0.344375, - 0.094418 - ], - "type": "VEC2" - }, - "animAccessor_0": { - "bufferView": "bufferView_63", - "byteOffset": 0, - "componentType": 5126, - "count": 2, - "type": "SCALAR" - }, - "animAccessor_1": { - "bufferView": "bufferView_63", - "byteOffset": 8, - "componentType": 5126, - "count": 2, - "type": "VEC4" - }, - "animAccessor_2": { - "bufferView": "bufferView_63", - "byteOffset": 40, - "componentType": 5126, - "count": 4, - "type": "SCALAR" - }, - "animAccessor_3": { - "bufferView": "bufferView_63", - "byteOffset": 56, - "componentType": 5126, - "count": 4, - "type": "VEC3" - } - }, - "animations": { - "animation_0": { - "channels": [ - { - "sampler": "animation_0_rotation_sampler", - "target": { - "id": "Geometry-mesh020Node", - "path": "rotation" - } - } - ], - "parameters": { - "TIME": "animAccessor_0", - "rotation": "animAccessor_1" - }, - "samplers": { - "animation_0_rotation_sampler": { - "input": "TIME", - "interpolation": "LINEAR", - "output": "rotation" - } - } - }, - "animation_1": { - "channels": [ - { - "sampler": "animation_1_translation_sampler", - "target": { - "id": "Geometry-mesh020Node", - "path": "translation" - } - } - ], - "parameters": { - "TIME": "animAccessor_2", - "translation": "animAccessor_3" - }, - "samplers": { - "animation_1_translation_sampler": { - "input": "TIME", - "interpolation": "LINEAR", - "output": "translation" - } - } - } - }, - "asset": { - "generator": "collada2gltf@d78daf1e7950e6c22fe6bec1d07965e8a302e90d", - "premultipliedAlpha": true, - "profile": { - "api": "WebGL", - "version": "1.0.2" - }, - "version": 1 - }, - "bufferViews": { - "bufferView_63": { - "buffer": "glTF-MaterialsCommon", - "byteLength": 104, - "byteOffset": 0 - }, - "bufferView_64": { - "buffer": "glTF-MaterialsCommon", - "byteLength": 1032, - "byteOffset": 104, - "target": 34963 - }, - "bufferView_65": { - "buffer": "glTF-MaterialsCommon", - "byteLength": 10240, - "byteOffset": 1136, - "target": 34962 - } - }, - "buffers": { - "glTF-MaterialsCommon": { - "byteLength": 11376, - "type": "arraybuffer", - "uri": "glTF-MaterialsCommon.bin" - } - }, - "extensions": { - "KHR_materials_common": { - "lights": { - "Light-polyRender005": { - "ambient": { - "color": [ - 0, - 0, - 0 - ] - }, - "name": "Render", - "type": "ambient" - }, - "Light-sunLight011": { - "directional": { - "color": [ - 1, - 1, - 1 - ] - }, - "name": "Directional_Light", - "type": "directional" - } - } - } - }, - "extensionsUsed": [ - "KHR_materials_common" - ], - "materials": { - "Effect-inner": { - "extensions": { - "KHR_materials_common": { - "technique": "PHONG", - "values": { - "diffuse": [ - 0.8, - 0.415942, - 0.795292, - 1 - ], - "shininess": 256, - "specular": [ - 0.2, - 0.2, - 0.2, - 1 - ] - } - } - }, - "name": "inner" - }, - "Effect-outer": { - "extensions": { - "KHR_materials_common": { - "technique": "PHONG", - "values": { - "diffuse": [ - 0.301604, - 0.533542, - 0.8, - 1 - ], - "shininess": 256, - "specular": [ - 0.2, - 0.2, - 0.2, - 1 - ] - } - } - }, - "name": "outer" - } - }, - "meshes": { - "Geometry-mesh019": { - "name": "outer_box", - "primitives": [ - { - "attributes": { - "NORMAL": "accessor_33", - "POSITION": "accessor_31", - "TEXCOORD_0": "accessor_35" - }, - "indices": "accessor_29", - "material": "Effect-outer", - "mode": 4 - } - ] - }, - "Geometry-mesh020": { - "name": "inner_box", - "primitives": [ - { - "attributes": { - "NORMAL": "accessor_60", - "POSITION": "accessor_58", - "TEXCOORD_0": "accessor_62" - }, - "indices": "accessor_56", - "material": "Effect-inner", - "mode": 4 - } - ] - } - }, - "nodes": { - "Camera-camera002Node": { - "camera": "", - "children": [], - "matrix": [ - 1, - 0, - 0, - 0, - 0, - 0.996195, - -0.0871557, - 0, - 0, - 0.0871557, - 0.996195, - 0, - 0, - 0.75, - 4, - 1 - ], - "name": "Camera" - }, - "Geometry-mesh019Node": { - "children": [], - "matrix": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ], - "meshes": [ - "Geometry-mesh019" - ], - "name": "outer_box" - }, - "Geometry-mesh020Node": { - "children": [], - "meshes": [ - "Geometry-mesh020" - ], - "name": "inner_box", - "rotation": [ - 0, - 0, - 0, - 1 - ], - "scale": [ - 1, - 1, - 1 - ], - "translation": [ - 0, - 0, - 0 - ] - }, - "Light-sunLight011Node": { - "children": [], - "extensions": { - "KHR_materials_common": { - "light": "Light-sunLight011" - } - }, - "matrix": [ - 0.707107, - 0, - 0.707107, - 0, - 0.353553, - 0.866025, - -0.353553, - 0, - -0.612372, - 0.5, - 0.612372, - 0, - -2, - 2, - 2, - 1 - ], - "name": "Directional_Light" - }, - "polyRender005": { - "children": [], - "extensions": { - "KHR_materials_common": { - "light": "Light-polyRender005" - } - }, - "matrix": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ], - "name": "Render" - } - }, - "scene": "defaultScene", - "scenes": { - "defaultScene": { - "nodes": [ - "polyRender005", - "Geometry-mesh019Node", - "Geometry-mesh020Node", - "Camera-camera002Node", - "Light-sunLight011Node" - ] - } - }, - "skins": {} -} \ No newline at end of file diff --git a/specs/data/boxAnimated/glTF/glTF.bin b/specs/data/boxAnimated/glTF/glTF.bin deleted file mode 100755 index 28a90ee82bd97a44cc89176948ff5ebc33b41b58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11376 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 RFLZ~E`-%QVf5Ou5{{s8#4?q9_ diff --git a/specs/data/boxAnimated/glTF/glTF.gltf b/specs/data/boxAnimated/glTF/glTF.gltf deleted file mode 100755 index 8e828062..00000000 --- a/specs/data/boxAnimated/glTF/glTF.gltf +++ /dev/null @@ -1,533 +0,0 @@ -{ - "accessors": { - "accessor_29": { - "bufferView": "bufferView_64", - "byteOffset": 0, - "byteStride": 0, - "componentType": 5123, - "count": 384, - "type": "SCALAR" - }, - "accessor_31": { - "bufferView": "bufferView_65", - "byteOffset": 0, - "byteStride": 12, - "componentType": 5126, - "count": 224, - "max": [ - 0.5, - 0.5, - 0.5 - ], - "min": [ - -0.5, - -0.5, - -0.5 - ], - "type": "VEC3" - }, - "accessor_33": { - "bufferView": "bufferView_65", - "byteOffset": 2688, - "byteStride": 12, - "componentType": 5126, - "count": 224, - "max": [ - 1, - 1, - 1 - ], - "min": [ - -1, - -1, - -1 - ], - "type": "VEC3" - }, - "accessor_35": { - "bufferView": "bufferView_65", - "byteOffset": 5376, - "byteStride": 8, - "componentType": 5126, - "count": 224, - "max": [ - 1.00077, - 1.00133 - ], - "min": [ - -0.00075, - 0.00132602 - ], - "type": "VEC2" - }, - "accessor_56": { - "bufferView": "bufferView_64", - "byteOffset": 768, - "byteStride": 0, - "componentType": 5123, - "count": 132, - "type": "SCALAR" - }, - "accessor_58": { - "bufferView": "bufferView_65", - "byteOffset": 7168, - "byteStride": 12, - "componentType": 5126, - "count": 96, - "max": [ - 0.33504, - 0.5, - 0.33504 - ], - "min": [ - -0.33504, - -0.5, - -0.33504 - ], - "type": "VEC3" - }, - "accessor_60": { - "bufferView": "bufferView_65", - "byteOffset": 8320, - "byteStride": 12, - "componentType": 5126, - "count": 96, - "max": [ - 1, - 1, - 1 - ], - "min": [ - -1, - -1, - -1 - ], - "type": "VEC3" - }, - "accessor_62": { - "bufferView": "bufferView_65", - "byteOffset": 9472, - "byteStride": 8, - "componentType": 5126, - "count": 96, - "max": [ - 0.405625, - 0.905582 - ], - "min": [ - 0.344375, - 0.094418 - ], - "type": "VEC2" - }, - "animAccessor_0": { - "bufferView": "bufferView_63", - "byteOffset": 0, - "componentType": 5126, - "count": 2, - "type": "SCALAR" - }, - "animAccessor_1": { - "bufferView": "bufferView_63", - "byteOffset": 8, - "componentType": 5126, - "count": 2, - "type": "VEC4" - }, - "animAccessor_2": { - "bufferView": "bufferView_63", - "byteOffset": 40, - "componentType": 5126, - "count": 4, - "type": "SCALAR" - }, - "animAccessor_3": { - "bufferView": "bufferView_63", - "byteOffset": 56, - "componentType": 5126, - "count": 4, - "type": "VEC3" - } - }, - "animations": { - "animation_0": { - "channels": [ - { - "sampler": "animation_0_rotation_sampler", - "target": { - "id": "Geometry-mesh020Node", - "path": "rotation" - } - } - ], - "parameters": { - "TIME": "animAccessor_0", - "rotation": "animAccessor_1" - }, - "samplers": { - "animation_0_rotation_sampler": { - "input": "TIME", - "interpolation": "LINEAR", - "output": "rotation" - } - } - }, - "animation_1": { - "channels": [ - { - "sampler": "animation_1_translation_sampler", - "target": { - "id": "Geometry-mesh020Node", - "path": "translation" - } - } - ], - "parameters": { - "TIME": "animAccessor_2", - "translation": "animAccessor_3" - }, - "samplers": { - "animation_1_translation_sampler": { - "input": "TIME", - "interpolation": "LINEAR", - "output": "translation" - } - } - } - }, - "asset": { - "generator": "collada2gltf@d78daf1e7950e6c22fe6bec1d07965e8a302e90d", - "premultipliedAlpha": true, - "profile": { - "api": "WebGL", - "version": "1.0.2" - }, - "version": 1 - }, - "bufferViews": { - "bufferView_63": { - "buffer": "glTF", - "byteLength": 104, - "byteOffset": 0 - }, - "bufferView_64": { - "buffer": "glTF", - "byteLength": 1032, - "byteOffset": 104, - "target": 34963 - }, - "bufferView_65": { - "buffer": "glTF", - "byteLength": 10240, - "byteOffset": 1136, - "target": 34962 - } - }, - "buffers": { - "glTF": { - "byteLength": 11376, - "type": "arraybuffer", - "uri": "glTF.bin" - } - }, - "materials": { - "Effect-inner": { - "name": "inner", - "technique": "technique0", - "values": { - "diffuse": [ - 0.8, - 0.415942, - 0.795292, - 1 - ], - "shininess": 256, - "specular": [ - 0.2, - 0.2, - 0.2, - 1 - ] - } - }, - "Effect-outer": { - "name": "outer", - "technique": "technique0", - "values": { - "diffuse": [ - 0.301604, - 0.533542, - 0.8, - 1 - ], - "shininess": 256, - "specular": [ - 0.2, - 0.2, - 0.2, - 1 - ] - } - } - }, - "meshes": { - "Geometry-mesh019": { - "name": "outer_box", - "primitives": [ - { - "attributes": { - "NORMAL": "accessor_33", - "POSITION": "accessor_31", - "TEXCOORD_0": "accessor_35" - }, - "indices": "accessor_29", - "material": "Effect-outer", - "mode": 4 - } - ] - }, - "Geometry-mesh020": { - "name": "inner_box", - "primitives": [ - { - "attributes": { - "NORMAL": "accessor_60", - "POSITION": "accessor_58", - "TEXCOORD_0": "accessor_62" - }, - "indices": "accessor_56", - "material": "Effect-inner", - "mode": 4 - } - ] - } - }, - "nodes": { - "Camera-camera002Node": { - "camera": "", - "children": [], - "matrix": [ - 1, - 0, - 0, - 0, - 0, - 0.996195, - -0.0871557, - 0, - 0, - 0.0871557, - 0.996195, - 0, - 0, - 0.75, - 4, - 1 - ], - "name": "Camera" - }, - "Geometry-mesh019Node": { - "children": [], - "matrix": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ], - "meshes": [ - "Geometry-mesh019" - ], - "name": "outer_box" - }, - "Geometry-mesh020Node": { - "children": [], - "meshes": [ - "Geometry-mesh020" - ], - "name": "inner_box", - "rotation": [ - 0, - 0, - 0, - 1 - ], - "scale": [ - 1, - 1, - 1 - ], - "translation": [ - 0, - 0, - 0 - ] - }, - "Light-sunLight011Node": { - "children": [], - "matrix": [ - 0.707107, - 0, - 0.707107, - 0, - 0.353553, - 0.866025, - -0.353553, - 0, - -0.612372, - 0.5, - 0.612372, - 0, - -2, - 2, - 2, - 1 - ], - "name": "Directional_Light" - }, - "polyRender005": { - "children": [], - "matrix": [ - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1, - 0, - 0, - 0, - 0, - 1 - ], - "name": "Render" - } - }, - "programs": { - "program_0": { - "attributes": [ - "a_normal", - "a_position" - ], - "fragmentShader": "glTF0FS", - "vertexShader": "glTF0VS" - } - }, - "scene": "defaultScene", - "scenes": { - "defaultScene": { - "nodes": [ - "polyRender005", - "Geometry-mesh019Node", - "Geometry-mesh020Node", - "Camera-camera002Node", - "Light-sunLight011Node" - ] - } - }, - "shaders": { - "glTF0FS": { - "type": 35632, - "uri": "glTF0FS.glsl" - }, - "glTF0VS": { - "type": 35633, - "uri": "glTF0VS.glsl" - } - }, - "skins": {}, - "techniques": { - "technique0": { - "attributes": { - "a_normal": "normal", - "a_position": "position" - }, - "parameters": { - "diffuse": { - "type": 35666 - }, - "light0Color": { - "type": 35665, - "value": [ - 0, - 0, - 0 - ] - }, - "light1Color": { - "type": 35665, - "value": [ - 1, - 1, - 1 - ] - }, - "light1Transform": { - "node": "Light-sunLight011Node", - "semantic": "MODELVIEW", - "type": 35676 - }, - "modelViewMatrix": { - "semantic": "MODELVIEW", - "type": 35676 - }, - "normal": { - "semantic": "NORMAL", - "type": 35665 - }, - "normalMatrix": { - "semantic": "MODELVIEWINVERSETRANSPOSE", - "type": 35675 - }, - "position": { - "semantic": "POSITION", - "type": 35665 - }, - "projectionMatrix": { - "semantic": "PROJECTION", - "type": 35676 - }, - "shininess": { - "type": 5126 - }, - "specular": { - "type": 35666 - } - }, - "program": "program_0", - "states": { - "enable": [ - 2929, - 2884 - ] - }, - "uniforms": { - "u_diffuse": "diffuse", - "u_light0Color": "light0Color", - "u_light1Color": "light1Color", - "u_light1Transform": "light1Transform", - "u_modelViewMatrix": "modelViewMatrix", - "u_normalMatrix": "normalMatrix", - "u_projectionMatrix": "projectionMatrix", - "u_shininess": "shininess", - "u_specular": "specular" - } - } - } -} \ No newline at end of file diff --git a/specs/data/boxAnimated/glTF/glTF0FS.glsl b/specs/data/boxAnimated/glTF/glTF0FS.glsl deleted file mode 100755 index dd76261a..00000000 --- a/specs/data/boxAnimated/glTF/glTF0FS.glsl +++ /dev/null @@ -1,39 +0,0 @@ -precision highp float; -varying vec3 v_normal; -uniform vec4 u_diffuse; -uniform vec4 u_specular; -uniform float u_shininess; -uniform vec3 u_light0Color; -varying vec3 v_light1Direction; -varying vec3 v_position; -uniform vec3 u_light1Color; -void main(void) { -vec3 normal = normalize(v_normal); -vec4 color = vec4(0., 0., 0., 0.); -vec4 diffuse = vec4(0., 0., 0., 1.); -vec3 diffuseLight = vec3(0., 0., 0.); -vec4 specular; -diffuse = u_diffuse; -specular = u_specular; -vec3 specularLight = vec3(0., 0., 0.); -vec3 ambientLight = vec3(0., 0., 0.); -{ -ambientLight += u_light0Color; -} -{ -float specularIntensity = 0.; -float attenuation = 1.0; -vec3 l = normalize(v_light1Direction); -vec3 viewDir = -normalize(v_position); -float phongTerm = max(0.0, dot(reflect(-l,normal), viewDir)); -specularIntensity = max(0., pow(phongTerm , u_shininess)) * attenuation; -specularLight += u_light1Color * specularIntensity; -diffuseLight += u_light1Color * max(dot(normal,l), 0.) * attenuation; -} -specular.xyz *= specularLight; -color.xyz += specular.xyz; -diffuse.xyz *= diffuseLight; -color.xyz += diffuse.xyz; -color = vec4(color.rgb * diffuse.a, diffuse.a); -gl_FragColor = color; -} diff --git a/specs/data/boxAnimated/glTF/glTF0VS.glsl b/specs/data/boxAnimated/glTF/glTF0VS.glsl deleted file mode 100755 index 85accb6c..00000000 --- a/specs/data/boxAnimated/glTF/glTF0VS.glsl +++ /dev/null @@ -1,17 +0,0 @@ -precision highp float; -attribute vec3 a_position; -attribute vec3 a_normal; -varying vec3 v_normal; -uniform mat3 u_normalMatrix; -uniform mat4 u_modelViewMatrix; -uniform mat4 u_projectionMatrix; -varying vec3 v_light1Direction; -varying vec3 v_position; -uniform mat4 u_light1Transform; -void main(void) { -vec4 pos = u_modelViewMatrix * vec4(a_position,1.0); -v_normal = u_normalMatrix * a_normal; -v_position = pos.xyz; -v_light1Direction = mat3(u_light1Transform) * vec3(0.,0.,1.); -gl_Position = u_projectionMatrix * pos; -} diff --git a/specs/data/boxAnimated/screenshot/screenshot.png b/specs/data/boxAnimated/screenshot/screenshot.png deleted file mode 100755 index 949868db7050c46d6199594d89a615c355be585c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3509 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 diff --git a/specs/data/dagToTree/DagTestSingleDuplicate.gltf b/specs/data/dagToTree/DagTestSingleDuplicate.gltf new file mode 100755 index 00000000..5dc6766b --- /dev/null +++ b/specs/data/dagToTree/DagTestSingleDuplicate.gltf @@ -0,0 +1,28 @@ +{ + "nodes": { + "A": { + "children": [ + "B", + "C" + ] + }, + "B": { + "children": [ + "D" + ] + }, + "C": { + "children": [ + "D" + ] + }, + "D": {} + }, + "scenes": { + "defaultScene": { + "nodes": [ + "A" + ] + } + } +} \ No newline at end of file diff --git a/specs/data/dagToTree/DagTestSingleNode.gltf b/specs/data/dagToTree/DagTestSingleNode.gltf new file mode 100755 index 00000000..2916c5d8 --- /dev/null +++ b/specs/data/dagToTree/DagTestSingleNode.gltf @@ -0,0 +1,12 @@ +{ + "nodes": { + "A": {} + }, + "scenes": { + "defaultScene": { + "nodes": [ + "A" + ] + } + } +} \ No newline at end of file diff --git a/specs/data/dagToTree/DagTestSubgraphDuplicate.gltf b/specs/data/dagToTree/DagTestSubgraphDuplicate.gltf new file mode 100755 index 00000000..7723d4fa --- /dev/null +++ b/specs/data/dagToTree/DagTestSubgraphDuplicate.gltf @@ -0,0 +1,44 @@ +{ + "nodes": { + "A": { + "children": [ + "B", + "C" + ] + }, + "B": { + "children": [ + "D" + ] + }, + "C": { + "children": [ + "D" + ] + }, + "D": { + "children": [ + "E", + "F" + ] + }, + "E": { + "children": [ + "G" + ] + }, + "F": { + "children": [ + "G" + ] + }, + "G": {} + }, + "scenes": { + "defaultScene": { + "nodes": [ + "A" + ] + } + } +} \ No newline at end of file diff --git a/specs/data/dagToTree/DagTestTree.gltf b/specs/data/dagToTree/DagTestTree.gltf new file mode 100755 index 00000000..86daa9dd --- /dev/null +++ b/specs/data/dagToTree/DagTestTree.gltf @@ -0,0 +1,19 @@ +{ + "nodes": { + "A": { + "children": [ + "B", + "C" + ] + }, + "B": {}, + "C": {} + }, + "scenes": { + "defaultScene": { + "nodes": [ + "A" + ] + } + } +} \ No newline at end of file diff --git a/specs/data/dagToTree/DagTestTwoRoots.gltf b/specs/data/dagToTree/DagTestTwoRoots.gltf new file mode 100755 index 00000000..3bf9dceb --- /dev/null +++ b/specs/data/dagToTree/DagTestTwoRoots.gltf @@ -0,0 +1,39 @@ +{ + "nodes": { + "B": { + "children": [ + "D" + ] + }, + "C": { + "children": [ + "D" + ] + }, + "D": { + "children": [ + "E", + "F" + ] + }, + "E": { + "children": [ + "G" + ] + }, + "F": { + "children": [ + "G" + ] + }, + "G": {} + }, + "scenes": { + "defaultScene": { + "nodes": [ + "B", + "C" + ] + } + } +} \ No newline at end of file diff --git a/specs/lib/convertDagToTreeSpec.js b/specs/lib/convertDagToTreeSpec.js new file mode 100755 index 00000000..40eda8ac --- /dev/null +++ b/specs/lib/convertDagToTreeSpec.js @@ -0,0 +1,122 @@ +'use strict'; +var fs = require('fs'); +var async = require('async'); +var convertDagToTree = require('../../lib/convertDagToTree'); +var addPipelineExtras = require('../../lib/addPipelineExtras'); +var removePipelineExtras = require('../../lib/removePipelineExtras'); +var singleNodePath = './specs/data/dagToTree/DagTestSingleNode.gltf'; +var treePath = './specs/data/dagToTree/DagTestTree.gltf'; +var singleDuplicatePath = './specs/data/dagToTree/DagTestSingleDuplicate.gltf'; +var subgraphDuplicatePath = './specs/data/dagToTree/DagTestSubgraphDuplicate.gltf'; +var twoRootsPath = './specs/data/dagToTree/DagTestTwoRoots.gltf'; + +describe('writeBinaryGltf', function() { + var testDags = { + singleNode: singleNodePath, + tree: treePath, + singleDuplicate: singleDuplicatePath, + subgraphDuplicate: subgraphDuplicatePath, + twoRoots: twoRootsPath + } + + beforeAll(function(done) { + async.each(Object.keys(testDags), function(name, callback) { + fs.readFile(testDags[name], function(err, data) { + if (err) { + callback(err); + } + else { + testDags[name] = addPipelineExtras(JSON.parse(data)); + callback(); + } + }); + }, function(err) { + if (err) { + throw err; + } + + done(); + }); + }); + + it('does not duplicate any nodes', function() { + var dag = testDags.singleNode; + convertDagToTree(dag); + removePipelineExtras(dag); + + expect(dag.nodes).toEqual({ + "A": {} + }); + }); + + it('does not duplicate any nodes in the tree', function() { + var dag = testDags.tree; + convertDagToTree(dag); + removePipelineExtras(dag); + + expect(dag.nodes).toEqual({ + "A": { "children": ["B", "C"] }, + "B": {}, + "C": {} + }); + }); + + it('duplicates one node', function() { + var dag = testDags.singleDuplicate; + convertDagToTree(dag); + removePipelineExtras(dag); + + expect(dag.nodes.D_1).toBeDefined(); + expect(dag.nodes.A.children).toEqual(["B", "C"]); + expect(dag.nodes.B.children).toEqual(["D"]); + expect(dag.nodes.C.children).toEqual(["D_1"]); + expect(dag.nodes.D.children).not.toBeDefined(); + }); + + it('duplicates a subgraph', function() { + var dag = testDags.subgraphDuplicate; + + convertDagToTree(dag); + removePipelineExtras(dag); + + expect(dag.nodes.D_1).toBeDefined(); + expect(dag.nodes.E_1).toBeDefined(); + expect(dag.nodes.F_1).toBeDefined(); + expect(dag.nodes.G_1).toBeDefined(); + expect(dag.nodes.G_2).toBeDefined(); + expect(dag.nodes.G_3).toBeDefined(); + + expect(dag.nodes.A.children).toEqual(["B", "C"]); + expect(dag.nodes.B.children).toEqual(["D"]); + expect(dag.nodes.C.children).toEqual(["D_1"]); + expect(dag.nodes.D.children).toEqual(["E", "F"]); + expect(dag.nodes.D_1.children).toEqual(["E_1", "F_1"]); + expect(dag.nodes.E.children).toEqual(["G"]); + expect(dag.nodes.F.children).toEqual(["G_2"]); + expect(dag.nodes.E_1.children).toEqual(["G_1"]); + expect(dag.nodes.F_1.children).toEqual(["G_3"]); + }); + + it('converts a DAG with two roots', function() { + var dag = testDags.twoRoots; + + convertDagToTree(dag); + removePipelineExtras(dag); + + expect(dag.nodes.D_1).toBeDefined(); + expect(dag.nodes.E_1).toBeDefined(); + expect(dag.nodes.F_1).toBeDefined(); + expect(dag.nodes.G_1).toBeDefined(); + expect(dag.nodes.G_2).toBeDefined(); + expect(dag.nodes.G_3).toBeDefined(); + + expect(dag.nodes.B.children).toEqual(["D"]); + expect(dag.nodes.C.children).toEqual(["D_1"]); + expect(dag.nodes.D.children).toEqual(["E", "F"]); + expect(dag.nodes.D_1.children).toEqual(["E_1", "F_1"]); + expect(dag.nodes.E.children).toEqual(["G"]); + expect(dag.nodes.F.children).toEqual(["G_1"]); + expect(dag.nodes.E_1.children).toEqual(["G_2"]); + expect(dag.nodes.F_1.children).toEqual(["G_3"]); + }); +}); \ No newline at end of file From 68c811ace988724075871c2a87a00d3aff29b1d0 Mon Sep 17 00:00:00 2001 From: Richard Lee Date: Tue, 12 Apr 2016 01:02:28 -0400 Subject: [PATCH 2/2] Added convertDagToTree stage to command line tool --- bin/gltf-pipeline.js | 4 ++++ index.js | 2 ++ 2 files changed, 6 insertions(+) diff --git a/bin/gltf-pipeline.js b/bin/gltf-pipeline.js index 60e9f65e..8c630e78 100644 --- a/bin/gltf-pipeline.js +++ b/bin/gltf-pipeline.js @@ -23,6 +23,7 @@ var loadGltfUris = require('../').loadGltfUris; var writeGltf = require('../').writeGltf; var parseBinaryGltf = require('../').parseBinaryGltf; var addPipelineExtras = require('../').addPipelineExtras; +var convertDagToTree = require('../').convertDagToTree; var OptimizationStatistics = require('../').OptimizationStatistics; var Cesium = require('cesium'); var defined = Cesium.defined; @@ -65,6 +66,9 @@ fs.readFile(gltfPath, function (err, data) { removeUnused(gltf, stats); printStats(stats); + addPipelineExtras(gltf); + convertDagToTree(gltf); + gltf = loadGltfUris(gltf, filePath, function(err) { if (err) { throw err; diff --git a/index.js b/index.js index 9724c548..f67f9188 100644 --- a/index.js +++ b/index.js @@ -21,5 +21,7 @@ module.exports = { writeGltf : require('./lib/writeGltf'), parseBinaryGltf : require('./lib/parseBinaryGltf'), writeBinaryGltf : require('./lib/writeBinaryGltf'), + addPipelineExtras : require('./lib/addPipelineExtras'), + convertDagToTree : require('./lib/convertDagToTree'), OptimizationStatistics : require('./lib/OptimizationStatistics') }; \ No newline at end of file