diff --git a/src/index.html b/src/index.html index 48e65abccc553590cfe3a5e59173ba136e51f47b..dd0c6c54643cc436f310ea2ada45e80b09d86a20 100644 --- a/src/index.html +++ b/src/index.html @@ -9,13 +9,14 @@ attribute vec4 vPosition; attribute vec3 vNormal; +attribute vec2 a_texcoord; +varying vec2 v_texcoord; + uniform mat4 modelMatrix, viewMatrix, projectionMatrix, normalMatrix; uniform vec4 lightPosition; -varying vec3 normalInterp; -varying vec3 vertPos; -varying vec3 lightPos; +varying vec3 normalInterp, vertPos, lightPos; void main() { @@ -28,12 +29,22 @@ void main() normalInterp = vec3(normalMatrix * vec4(vNormal, 0.0)); gl_Position = projectionMatrix * vertPos4; + + // Pass the texcoord to the fragment shader. + v_texcoord = a_texcoord; } </script> <script id="fragment-shader" type="x-shader/x-fragment"> precision mediump float; +const vec4 selectedObjectColor = vec4(0.0/255.0, 123.0/255.0, 255.0/255.0, 1.0); + +// Texture setup + +varying vec2 v_texcoord; +uniform sampler2D u_texture; + varying vec3 normalInterp; // Surface normal varying vec3 vertPos; // Vertex position varying vec3 lightPos; // Light position, interpolated @@ -41,13 +52,10 @@ varying vec3 lightPos; // Light position, interpolated uniform vec4 ambientProduct, diffuseProduct, specularProduct; uniform float shininess; -// Percentage of mix between normal material shader -// and material shader +// Flag to indicate if object is selected or not +uniform bool isSelected; -uniform float selectingFactor; - -void main() -{ +vec4 calculatePhong() { vec3 N = normalize(normalInterp); vec3 L = normalize(lightPos - vertPos); @@ -60,15 +68,24 @@ void main() float specular = 0.0; if (lambertian > 0.0) { - // Compute specular reflection term (see p. 287 Angel 7th ed) - float specAngle = max(dot(N, H), 0.0); - specular = pow(specAngle, shininess); + // Compute specular reflection term (see p. 287 Angel 7th ed) + float specAngle = max(dot(N, H), 0.0); + specular = pow(specAngle, shininess); } - vec4 fColor = (ambientProduct + lambertian * diffuseProduct + specular * specularProduct); - - vec4 selectedColor = vec4(0.0/255.0, 123.0/255.0, 255.0/255.0, 1.0); - fColor = fColor * (1.0 - selectingFactor) + selectedColor * selectingFactor; + return ambientProduct + lambertian * diffuseProduct + specular * specularProduct; +} + +void main() +{ + vec4 fColor; + + if (!isSelected) { + fColor = calculatePhong(); + fColor = texture2D(u_texture, v_texcoord) * fColor; + } else { + fColor = selectedObjectColor; + } fColor.a = 1.0; gl_FragColor = fColor; @@ -94,9 +111,14 @@ void main() <script type="text/javascript" src="modules/renderer.js"></script> <script type="text/javascript" src="resources/objects/objects-materials.js"></script> -<script type="text/javascript" src="resources/objects/objects-data.js"></script> -<script type="text/javascript" src="resources/objects/objects-vertices.js"></script> -<script type="text/javascript" src="resources/objects/objects-animations.js"></script> + +<!-- TODO: REVERT BACK TO NON-SIMPLE OBJECT --> +<script type="text/javascript" src="resources/objects/objects-data-simple.js"></script> +<script type="text/javascript" src="resources/objects/objects-vertices-simple.js"></script> + +<!--script type="text/javascript" src="resources/objects/objects-data.js"></script> +<script type="text/javascript" src="resources/objects/objects-vertices.js"></script--> +<!--script type="text/javascript" src="resources/objects/objects-animations.js"></script--> <script type="text/javascript" src="modules/camera-coordinates.js"></script> <script type="text/javascript" src="modules/module-navigable-camera.js"></script> @@ -269,7 +291,7 @@ void main() </div> </div> </div> - <div class="submenu-two-list-container"> + <!--div class="submenu-two-list-container"> <div class="submenu" id="link-submenu"> <h3 class="submenu-title">Gerakan Ksatria ("Link")</h3> <div class="slider-container"> @@ -357,7 +379,6 @@ void main() class="custom-range range-animation"> </div> </div> - <!-- TODO: Change Slider Ayam--> <div class="submenu"> <h3 class="submenu-title">Gerakan Ayam</h3> <div class="slider-container"> @@ -431,7 +452,7 @@ void main() class="custom-range range-animation"> </div> </div> - </div> + </div--> </div> </div> </body> diff --git a/src/index.js b/src/index.js index 500cba1cc1f5126033de9a5b16d4da7bcf5bd2ce..8f72c03e4cf8bfd9af23060102e5f48eab3e9f05 100644 --- a/src/index.js +++ b/src/index.js @@ -28,7 +28,7 @@ let up = vec3(0.0, 0.0, 1.0) let canvas let gl let program -let resolution = 100 +let resolution = 40 // TODO: Reset to 100. Now is set to 10 that my computers doesn't get too hot. // Interaction variables @@ -393,23 +393,54 @@ let lightingCubeModel function createCubeLight() { let cube_objects = { "vertices": [ - [-0.5, -0.5, -0.5], - [-0.5, -0.5, 0.5], - [-0.5, 0.5, -0.5], - [-0.5, 0.5, 0.5], + [0.5, -0.5, 0.5], //0 [0.5, -0.5, -0.5], - [0.5, -0.5, 0.5], + [-0.5, -0.5, 0.5], //2 + [-0.5, -0.5, -0.5], + [0.5, 0.5, 0.5], //4 [0.5, 0.5, -0.5], - [0.5, 0.5, 0.5] - ], - "indices": [ - [0, 1, 3, 2], - [2, 3, 7, 6], - [6, 7, 5, 4], - [4, 5, 1, 0], - [2, 6, 4, 0], - [7, 3, 1, 5] - ], + [-0.5, 0.5, 0.5], //6 + [-0.5, 0.5, -0.5] + ], + "indices": [ + [0, 4, 6, 2], + [3, 2, 6, 7], + [7, 6, 4, 5], + [5, 1, 3, 7], + [1, 0, 2, 3], + [5, 4, 0, 1] + ], + "uv_coordinates": [ + [1, 1], + [0, 1], + [0, 0], + [1, 0], + + [1, 1], + [0, 1], + [0, 0], + [1, 0], + + [1, 1], + [0, 1], + [0, 0], + [1, 0], + + [1, 1], + [0, 1], + [0, 0], + [1, 0], + + [1, 1], + [0, 1], + [0, 0], + [1, 0], + + [1, 1], + [0, 1], + [0, 0], + [1, 0], + ], "material_name": "white" } @@ -421,11 +452,92 @@ function createCubeLight() { lightingCubeModel.vertices = cube_objects.vertices lightingCubeModel.indices = cube_objects.indices + lightingCubeModel.uvCoordinates = cube_objects.uv_coordinates lightingCubeModel.setMaterial('white', sceneGraph.materials) sceneGraph.addModelToScene(lightingCubeModel) } +let texcoordLocation; +let texcoordBuffer; +let textureLocation; + +let texture1; +let texture2; +let texture3; +let texture4; + +// NOTE: RENDERER.JS IS ALSO CHANGED. +// CHECK IT OUT. + +function initTextures() { + texcoordLocation = gl.getAttribLocation(program, "a_texcoord"); + textureLocation = gl.getUniformLocation(program, "u_texture"); + + texcoordBuffer = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, texcoordBuffer); + + gl.bufferData(gl.ARRAY_BUFFER, flatten(sceneGraph.uvCoordinatesArray), gl.STATIC_DRAW); + gl.vertexAttribPointer(texcoordLocation, 2, gl.FLOAT, false, 0, 0); + gl.enableVertexAttribArray(texcoordLocation); + + texture1 = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture1); + + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, + new Uint8Array([0, 0, 255, 255])); + + var image = new Image(); + image.src = "resources/objects/material_resources/Base.png"; + image.addEventListener('load', function() { + // Now that the image has loaded make copy it to the texture. + gl.bindTexture(gl.TEXTURE_2D, texture1); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA,gl.UNSIGNED_BYTE, image); + gl.generateMipmap(gl.TEXTURE_2D); + }); + + texture2 = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture2); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, + new Uint8Array([0, 255, 255, 255])); + + var secondImage = new Image(); + secondImage.src = "resources/objects/material_resources/F-textures.png"; + secondImage.addEventListener('load', function() { + // Now that the image has loaded make copy it to the texture. + gl.bindTexture(gl.TEXTURE_2D, texture2); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA,gl.UNSIGNED_BYTE, secondImage); + gl.generateMipmap(gl.TEXTURE_2D); + }); + + texture3 = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture3); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, + new Uint8Array([0, 255, 255, 255])); + + var thirdImage = new Image(); + thirdImage.src = "resources/objects/material_resources/1-64.png"; + thirdImage.addEventListener('load', function() { + // Now that the image has loaded make copy it to the texture. + gl.bindTexture(gl.TEXTURE_2D, texture3); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA,gl.UNSIGNED_BYTE, thirdImage); + gl.generateMipmap(gl.TEXTURE_2D); + }); + + texture4 = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture4); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, + new Uint8Array([0, 255, 255, 255])); + + var fourthImage = new Image(); + fourthImage.src = "resources/objects/material_resources/wood.png"; + fourthImage.addEventListener('load', function() { + // Now that the image has loaded make copy it to the texture. + gl.bindTexture(gl.TEXTURE_2D, texture4); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA,gl.UNSIGNED_BYTE, fourthImage); + gl.generateMipmap(gl.TEXTURE_2D); + }); +} window.addEventListener('load', function init() { // Initialize canvas and GL first @@ -451,17 +563,24 @@ window.addEventListener('load', function init() { sceneGraph.movePointsToBufferData() sceneGraph.updateModelsTransformations() + initTextures() + sceneGraph.updateLightSetup({ position: lightingCubeModel.location }) sceneGraph.updateGlLightPosition() - animationManager = new AnimationManager({ - sceneGraph, - speed: 0.5, - maxFrameNumber: 120 - }) - animationManager.initFromConfig(animations_definition) + let USE_ANIMATION = false + + if (USE_ANIMATION) { + animationManager = new AnimationManager({ + sceneGraph, + speed: 0.5, + maxFrameNumber: 120 + }) + animationManager.initFromConfig(animations_definition) + + } initializeCameraPosition() initializeProjectionMatrix() @@ -478,9 +597,12 @@ window.addEventListener('load', function init() { document.querySelector('#btn-animate').addEventListener('click', toggleAnimation) connectSlidersToModelData() - connectSpeedSlider() connectLightPositionSliders() - attachListenerOnAnimationUpdate() + + if (USE_ANIMATION) { + connectSpeedSlider() + attachListenerOnAnimationUpdate() + } if (typeof initObjectSelectionMechanism !== 'undefined') { initObjectSelectionMechanism() diff --git a/src/modules/module-select-object.js b/src/modules/module-select-object.js index 221cc14b99209fd4639e9cb2a8d7f4b1089d189e..c5c901028e67680ba32976e8887f3a2ec84e9e78 100644 --- a/src/modules/module-select-object.js +++ b/src/modules/module-select-object.js @@ -5,7 +5,9 @@ function initObjectSelectionMechanism() { connectSelectedObjectSlider() updateSliderOnObjectSelected() - animationManager.addListener('animationupdate', updateSliderOnObjectSelected) + if (typeof animationManager !== 'undefined') { + animationManager.addListener('animationupdate', updateSliderOnObjectSelected) + } } let isMatchingSelectedPropertyToSlider = false diff --git a/src/modules/renderer.js b/src/modules/renderer.js index b48b793b98558d344a02df325627fd0de18b418a..9ba2e1ef6c6cb60214813c8e1d9de2cd2d75bb52 100644 --- a/src/modules/renderer.js +++ b/src/modules/renderer.js @@ -47,17 +47,41 @@ class Renderer { flatten(model.fullTransformMatrix) ); + if (model.name === 'Suzanne') { + gl.bindTexture(gl.TEXTURE_2D, texture4); + } else if (model.name === 'Cube.001') { + gl.bindTexture(gl.TEXTURE_2D, texture3); + } else if (model.name === 'cube-lighting') { + gl.bindTexture(gl.TEXTURE_2D, texture2); + } else { + gl.bindTexture(gl.TEXTURE_2D, texture1); + } + + // gl.enableVertexAttribArray(texcoordLocation); + // gl.bindBuffer(gl.ARRAY_BUFFER, texcoordBuffer); + + // var size = 2; // 2 components per iteration + // var type = gl.FLOAT; // the data is 32bit floats + // var normalize = false; // don't normalize the data + // var stride = 0; // 0 = move forward size * sizeof(type) each iteration to get the next position + // var offset = 0; // start at the beginning of the buffer + + // gl.vertexAttribPointer(texcoordLocation, size, type, normalize, stride, offset); + + // // Tell the shader to use texture unit 0 for u_texture + // gl.uniform1i(textureLocation, 0); + let viewMatrix = m4.multiply(sceneGraph.camera.viewMatrix, model.fullTransformMatrix) let normalMatrix = m4.transpose(m4.inverse(viewMatrix)) gl.uniformMatrix4fv( glLocations.normalMatrix, false, normalMatrix); if (selected) { - gl.uniform1f(glLocations.selectingFactor, 1.0); + gl.uniform1f(glLocations.isSelected, true); } gl.drawArrays(gl.TRIANGLES, model.bufferStartIndex, model.vertexCount); if (selected) { - gl.uniform1f(glLocations.selectingFactor, 0.0); + gl.uniform1f(glLocations.isSelected, false); } } } \ No newline at end of file diff --git a/src/modules/scene-graph.js b/src/modules/scene-graph.js index 2f15d85ddcbd03b71ecb5827ee810882e1440a6e..3f6b9af025d8f0e49ee09c14e06bbb4cdc061af3 100644 --- a/src/modules/scene-graph.js +++ b/src/modules/scene-graph.js @@ -12,6 +12,7 @@ class SceneGraph { this.numVertices = 0 this.pointsArray = [] this.normalsArray = [] + this.uvCoordinatesArray = [] this.selectedNodeName = '' @@ -81,6 +82,7 @@ class SceneGraph { this.pointsArray = new Array(triangleCount * 3) this.normalsArray = new Array(triangleCount * 3) + this.uvCoordinatesArray = new Array(triangleCount * 3) // Iterate over the modelsVerticesData and modelsInfoData // to initiate node data. @@ -97,6 +99,11 @@ class SceneGraph { polygonIndices: objVertsData.indices }, self.numVertices, self.pointsArray, self.normalsArray) + populateUvCoordinates({ + objectUvCoordinates: objVertsData.uv_coordinates, + polygonIndices: objVertsData.indices, + }, self.numVertices, self.uvCoordinatesArray) + self.numVertices = newData.newStartIndex; let vertexCount = self.numVertices - numVertsBefore; @@ -170,6 +177,11 @@ class SceneGraph { polygonIndices: model.indices }, this.numVertices, this.pointsArray, this.normalsArray) + populateUvCoordinates({ + objectUvCoordinates: model.uvCoordinates, + polygonIndices: model.indices, + }, this.numVertices, this.uvCoordinatesArray) + this.numVertices = newData.newStartIndex; model.vertexCount = this.numVertices - numVertsBefore model.bufferStartIndex = numVertsBefore @@ -219,8 +231,8 @@ class SceneGraph { locations.viewMatrix = gl.getUniformLocation(program, "viewMatrix") locations.projectionMatrix = gl.getUniformLocation(program, "projectionMatrix") locations.normalMatrix = gl.getUniformLocation(program, "normalMatrix") - locations.selectingFactor = gl.getUniformLocation(program, "selectingFactor") - gl.uniform1f(locations.selectingFactor, 0.0) + locations.isSelected = gl.getUniformLocation(program, "isSelected") + gl.uniform1f(locations.isSelected, 0.0) gl.locations = locations diff --git a/src/modules/utils.js b/src/modules/utils.js index 38e87ae38bd3f8cd2cd615d8583547014444d37d..0a38e45aab44ee50d6ff1bd84c5dcd62a969c4a9 100644 --- a/src/modules/utils.js +++ b/src/modules/utils.js @@ -96,6 +96,100 @@ function populatePointsAndNormalsArrayFromObject( } } +function populateUvCoordinates( + { objectUvCoordinates, polygonIndices }, + startIndex, uvCoordinates) { + + if (typeof objectUvCoordinates === 'undefined') { + return populateUvCoordinatesWithoutCoordinate(polygonIndices, startIndex, uvCoordinates) + } + + let coordIdx = 0 + + objectUvCoordinates = objectUvCoordinates.map(el => [el[0], 1 - el[1]]) + + polygonIndices.forEach(indices => { + let vertexCount = indices.length + let a = objectUvCoordinates[coordIdx] + + // Duplicate texture points using triangle fan style + + for (let i = 1; i < vertexCount - 1; i++) { + let b = objectUvCoordinates[coordIdx + i]; + let c = objectUvCoordinates[coordIdx + i + 1]; + + uvCoordinates[startIndex++] = a; + uvCoordinates[startIndex++] = b; + uvCoordinates[startIndex++] = c; + } + + coordIdx += vertexCount + }) + + return { + uvCoordinates, + newStartIndex: startIndex + } +} + +function repositionThenScaleTilePoints(points, posX, posY, scale) { + points.forEach(point => { + point[0] += posX + point[1] += posY + point[0] *= scale + point[1] *= scale + }) + return points +} + +function populateUvCoordinatesWithoutCoordinate(polygonIndices, startIndex, uvCoordinates) { + let triangleCount = polygonIndices.reduce((p, c) => p + c.length, 0) - 2 * polygonIndices.length + + let squareCount = Math.ceil(triangleCount / 2) + let texResolution = Math.ceil(Math.sqrt(squareCount)) + let scale = 1 / texResolution + + let tileIndex = 0 + + let a = [0, 0] + let b = [1, 0] + let c = [1, 1] + + polygonIndices.forEach(indices => { + let vertexCount = indices.length + for (let i = 1; i < vertexCount - 1; i++) { + a = [0, 0] + if (tileIndex % 2 == 0) { + b = [1, 0] + c = [1, 1] + } else { + b = [1, 1] + c = [0, 1] + } + + let squareIndex = parseInt(tileIndex / 2) + let posX = squareIndex % texResolution + let posY = parseInt(squareIndex / texResolution) + + let coordinates = [a, b, c] + coordinates.forEach(coordinate => coordinate[1] = 1 - coordinate[1]) // Flip Y axis + + ;[a, b, c] = repositionThenScaleTilePoints(coordinates, posX, posY, scale) + + uvCoordinates[startIndex++] = a + uvCoordinates[startIndex++] = b + uvCoordinates[startIndex++] = c + + tileIndex++ + } + }) + + return { + uvCoordinates, + newStartIndex: startIndex + } +} + /** * Convert property name in format of string into * dictionary. Supported properties are location, rotation diff --git a/src/resources/objects/material_resources/1-64.png b/src/resources/objects/material_resources/1-64.png new file mode 100644 index 0000000000000000000000000000000000000000..03fcf72c8494ede97d58b452bbb4131af6a2d1ab Binary files /dev/null and b/src/resources/objects/material_resources/1-64.png differ diff --git a/src/resources/objects/material_resources/Base.png b/src/resources/objects/material_resources/Base.png new file mode 100644 index 0000000000000000000000000000000000000000..a4727ea1a8db1ff0ce8f991756b1efa14e762e35 Binary files /dev/null and b/src/resources/objects/material_resources/Base.png differ diff --git a/src/resources/objects/material_resources/F-textures.png b/src/resources/objects/material_resources/F-textures.png new file mode 100644 index 0000000000000000000000000000000000000000..75e0ccb21f6ed3e55badba3bbae34060b3dbcb08 Binary files /dev/null and b/src/resources/objects/material_resources/F-textures.png differ diff --git a/src/resources/objects/material_resources/wood.png b/src/resources/objects/material_resources/wood.png new file mode 100644 index 0000000000000000000000000000000000000000..3f95e69353705ed19981799c6f57b6a1a4030376 Binary files /dev/null and b/src/resources/objects/material_resources/wood.png differ diff --git a/src/resources/objects/objects-data-simple.js b/src/resources/objects/objects-data-simple.js new file mode 100644 index 0000000000000000000000000000000000000000..f7d9ca8f88e8524dd6313677774efc9c6b061867 --- /dev/null +++ b/src/resources/objects/objects-data-simple.js @@ -0,0 +1,56 @@ +var objects_info = { + "Cube": { + "location": [ + 0.0, + 0.0, + 0.0 + ], + "material_name": "Material", + "rotation": [ + 0.0, + 0.0, + 0.0 + ], + "scale": [ + 1.0, + 1.0, + 1.0 + ] + }, + "Cube.001": { + "location": [ + 3.382, + -0.276, + 0.247 + ], + "material_name": "Material", + "parent": "Cube", + "rotation": [ + 0.0, + 0.0, + 0.0 + ], + "scale": [ + 0.5456840991973877, + 0.5456840991973877, + 0.5456840991973877 + ] + }, + "Suzanne": { + "location": [ + 6.203, + 0.615, + 1.004 + ], + "rotation": [ + 0.0, + 0.0, + 0.0 + ], + "scale": [ + 1.0, + 1.0, + 1.0 + ] + } +} \ No newline at end of file diff --git a/src/resources/objects/objects-vertices-simple.js b/src/resources/objects/objects-vertices-simple.js new file mode 100644 index 0000000000000000000000000000000000000000..ad06e1b74e8461ecabff1a40ee2701631def6e7f --- /dev/null +++ b/src/resources/objects/objects-vertices-simple.js @@ -0,0 +1,3101 @@ +var objects_vertices = { + "Cube": { + "vertices": [ + [1.0, -1.0, 1.0], + [1.0, -1.0, -1.0], + [-1.0, -1.0, 1.0], + [-1.0, -1.0, -1.0], + [1.0, 1.0, 1.0], + [1.0, 1.0, -1.0], + [-1.0, 1.0, 1.0], + [-1.0, 1.0, -1.0] + ], + "indices": [ + [0, 4, 6, 2], + [3, 2, 6, 7], + [7, 6, 4, 5], + [5, 1, 3, 7], + [1, 0, 2, 3], + [5, 4, 0, 1] + ], + "uv_coordinates": [ + [0.25, 0.5], + [0.0, 0.5], + [0.0, 0.25], + [0.25, 0.25], + [0.75, 0.0], + [1.0, 0.0], + [1.0, 0.25], + [0.75, 0.25], + [0.75, 0.25], + [1.0, 0.25], + [1.0, 0.5], + [0.75, 0.5], + [0.75, 0.5], + [0.5, 0.5], + [0.5, 0.25], + [0.75, 0.25], + [0.5, 0.5], + [0.25, 0.5], + [0.25, 0.25], + [0.5, 0.25], + [0.75, 0.5], + [1.0, 0.5], + [1.0, 0.75], + [0.75, 0.75] + ] + }, + "Cube.001": { + "vertices": [ + [1.0, -1.0, 1.0], + [1.0, -1.0, -1.0], + [-1.0, -1.0, 1.0], + [-1.0, -1.0, -1.0], + [1.0, 1.0, 1.0], + [1.0, 1.0, -1.0], + [-1.0, 1.0, 1.0], + [-1.0, 1.0, -1.0], + [1.467, -1.467, 0.0], + [-1.467, 1.467, 0.0], + [-1.467, -1.467, 0.0], + [1.467, 1.467, 0.0] + ], + "indices": [ + [0, 4, 6, 2], + [10, 2, 6, 9], + [9, 6, 4, 11], + [5, 1, 3, 7], + [8, 0, 2, 10], + [11, 4, 0, 8], + [5, 11, 8, 1], + [1, 8, 10, 3], + [7, 9, 11, 5], + [3, 10, 9, 7] + ], + "uv_coordinates": [ + [0.25, 0.5], + [0.0, 0.5], + [0.0, 0.25], + [0.25, 0.25], + [0.875, 0.0], + [1.0, 0.0], + [1.0, 0.25], + [0.875, 0.25], + [0.875, 0.25], + [1.0, 0.25], + [1.0, 0.5], + [0.875, 0.5], + [0.75, 0.5], + [0.5, 0.5], + [0.5, 0.25], + [0.75, 0.25], + [0.375, 0.5], + [0.25, 0.5], + [0.25, 0.25], + [0.375, 0.25], + [0.875, 0.5], + [1.0, 0.5], + [1.0, 0.75], + [0.875, 0.75], + [0.75, 0.5], + [0.875, 0.5], + [0.875, 0.75], + [0.75, 0.75], + [0.5, 0.5], + [0.375, 0.5], + [0.375, 0.25], + [0.5, 0.25], + [0.75, 0.25], + [0.875, 0.25], + [0.875, 0.5], + [0.75, 0.5], + [0.75, 0.0], + [0.875, 0.0], + [0.875, 0.25], + [0.75, 0.25] + ] + }, + "Suzanne": { + "vertices": [ + [0.438, -0.766, 0.164], + [-0.438, -0.766, 0.164], + [0.5, -0.688, 0.094], + [-0.5, -0.688, 0.094], + [0.547, -0.578, 0.055], + [-0.547, -0.578, 0.055], + [0.352, -0.617, -0.023], + [-0.352, -0.617, -0.023], + [0.352, -0.719, 0.031], + [-0.352, -0.719, 0.031], + [0.352, -0.781, 0.133], + [-0.352, -0.781, 0.133], + [0.273, -0.797, 0.164], + [-0.273, -0.797, 0.164], + [0.203, -0.742, 0.094], + [-0.203, -0.742, 0.094], + [0.156, -0.648, 0.055], + [-0.156, -0.648, 0.055], + [0.078, -0.656, 0.242], + [-0.078, -0.656, 0.242], + [0.141, -0.742, 0.242], + [-0.141, -0.742, 0.242], + [0.242, -0.797, 0.242], + [-0.242, -0.797, 0.242], + [0.273, -0.797, 0.328], + [-0.273, -0.797, 0.328], + [0.203, -0.742, 0.391], + [-0.203, -0.742, 0.391], + [0.156, -0.648, 0.438], + [-0.156, -0.648, 0.438], + [0.352, -0.617, 0.516], + [-0.352, -0.617, 0.516], + [0.352, -0.719, 0.453], + [-0.352, -0.719, 0.453], + [0.352, -0.781, 0.359], + [-0.352, -0.781, 0.359], + [0.438, -0.766, 0.328], + [-0.438, -0.766, 0.328], + [0.5, -0.688, 0.391], + [-0.5, -0.688, 0.391], + [0.547, -0.578, 0.438], + [-0.547, -0.578, 0.438], + [0.625, -0.562, 0.242], + [-0.625, -0.562, 0.242], + [0.562, -0.672, 0.242], + [-0.562, -0.672, 0.242], + [0.469, -0.758, 0.242], + [-0.469, -0.758, 0.242], + [0.477, -0.773, 0.242], + [-0.477, -0.773, 0.242], + [0.445, -0.781, 0.336], + [-0.445, -0.781, 0.336], + [0.352, -0.805, 0.375], + [-0.352, -0.805, 0.375], + [0.266, -0.82, 0.336], + [-0.266, -0.82, 0.336], + [0.227, -0.82, 0.242], + [-0.227, -0.82, 0.242], + [0.266, -0.82, 0.156], + [-0.266, -0.82, 0.156], + [0.352, -0.828, 0.242], + [-0.352, -0.828, 0.242], + [0.352, -0.805, 0.117], + [-0.352, -0.805, 0.117], + [0.445, -0.781, 0.156], + [-0.445, -0.781, 0.156], + [0.0, -0.742, 0.43], + [0.0, -0.82, 0.352], + [0.0, -0.734, -0.68], + [0.0, -0.781, -0.32], + [0.0, -0.797, -0.188], + [0.0, -0.719, -0.773], + [0.0, -0.602, 0.406], + [0.0, -0.57, 0.57], + [0.0, 0.547, 0.898], + [0.0, 0.852, 0.562], + [0.0, 0.828, 0.07], + [0.0, 0.352, -0.383], + [0.203, -0.562, -0.188], + [-0.203, -0.562, -0.188], + [0.312, -0.57, -0.438], + [-0.312, -0.57, -0.438], + [0.352, -0.57, -0.695], + [-0.352, -0.57, -0.695], + [0.367, -0.531, -0.891], + [-0.367, -0.531, -0.891], + [0.328, -0.523, -0.945], + [-0.328, -0.523, -0.945], + [0.18, -0.555, -0.969], + [-0.18, -0.555, -0.969], + [0.0, -0.578, -0.984], + [0.438, -0.531, -0.141], + [-0.438, -0.531, -0.141], + [0.633, -0.539, -0.039], + [-0.633, -0.539, -0.039], + [0.828, -0.445, 0.148], + [-0.828, -0.445, 0.148], + [0.859, -0.594, 0.43], + [-0.859, -0.594, 0.43], + [0.711, -0.625, 0.484], + [-0.711, -0.625, 0.484], + [0.492, -0.688, 0.602], + [-0.492, -0.688, 0.602], + [0.32, -0.734, 0.758], + [-0.32, -0.734, 0.758], + [0.156, -0.758, 0.719], + [-0.156, -0.758, 0.719], + [0.062, -0.75, 0.492], + [-0.062, -0.75, 0.492], + [0.164, -0.773, 0.414], + [-0.164, -0.773, 0.414], + [0.125, -0.766, 0.305], + [-0.125, -0.766, 0.305], + [0.203, -0.742, 0.094], + [-0.203, -0.742, 0.094], + [0.375, -0.703, 0.016], + [-0.375, -0.703, 0.016], + [0.492, -0.672, 0.062], + [-0.492, -0.672, 0.062], + [0.625, -0.648, 0.188], + [-0.625, -0.648, 0.188], + [0.641, -0.648, 0.297], + [-0.641, -0.648, 0.297], + [0.602, -0.664, 0.375], + [-0.602, -0.664, 0.375], + [0.43, -0.719, 0.438], + [-0.43, -0.719, 0.438], + [0.25, -0.758, 0.469], + [-0.25, -0.758, 0.469], + [0.0, -0.734, -0.766], + [0.109, -0.734, -0.719], + [-0.109, -0.734, -0.719], + [0.117, -0.711, -0.836], + [-0.117, -0.711, -0.836], + [0.062, -0.695, -0.883], + [-0.062, -0.695, -0.883], + [0.0, -0.688, -0.891], + [0.0, -0.75, -0.195], + [0.0, -0.742, -0.141], + [0.102, -0.742, -0.148], + [-0.102, -0.742, -0.148], + [0.125, -0.75, -0.227], + [-0.125, -0.75, -0.227], + [0.086, -0.742, -0.289], + [-0.086, -0.742, -0.289], + [0.398, -0.672, -0.047], + [-0.398, -0.672, -0.047], + [0.617, -0.625, 0.055], + [-0.617, -0.625, 0.055], + [0.727, -0.602, 0.203], + [-0.727, -0.602, 0.203], + [0.742, -0.656, 0.375], + [-0.742, -0.656, 0.375], + [0.688, -0.727, 0.414], + [-0.688, -0.727, 0.414], + [0.438, -0.797, 0.547], + [-0.438, -0.797, 0.547], + [0.312, -0.836, 0.641], + [-0.312, -0.836, 0.641], + [0.203, -0.852, 0.617], + [-0.203, -0.852, 0.617], + [0.102, -0.844, 0.43], + [-0.102, -0.844, 0.43], + [0.125, -0.812, -0.102], + [-0.125, -0.812, -0.102], + [0.211, -0.711, -0.445], + [-0.211, -0.711, -0.445], + [0.25, -0.688, -0.703], + [-0.25, -0.688, -0.703], + [0.266, -0.664, -0.82], + [-0.266, -0.664, -0.82], + [0.234, -0.633, -0.914], + [-0.234, -0.633, -0.914], + [0.164, -0.633, -0.93], + [-0.164, -0.633, -0.93], + [0.0, -0.641, -0.945], + [0.0, -0.727, 0.047], + [0.0, -0.766, 0.211], + [0.328, -0.742, 0.477], + [-0.328, -0.742, 0.477], + [0.164, -0.75, 0.141], + [-0.164, -0.75, 0.141], + [0.133, -0.758, 0.211], + [-0.133, -0.758, 0.211], + [0.117, -0.734, -0.688], + [-0.117, -0.734, -0.688], + [0.078, -0.75, -0.445], + [-0.078, -0.75, -0.445], + [0.0, -0.75, -0.445], + [0.0, -0.742, -0.328], + [0.094, -0.781, -0.273], + [-0.094, -0.781, -0.273], + [0.133, -0.797, -0.227], + [-0.133, -0.797, -0.227], + [0.109, -0.781, -0.133], + [-0.109, -0.781, -0.133], + [0.039, -0.781, -0.125], + [-0.039, -0.781, -0.125], + [0.0, -0.828, -0.203], + [0.047, -0.812, -0.148], + [-0.047, -0.812, -0.148], + [0.094, -0.812, -0.156], + [-0.094, -0.812, -0.156], + [0.109, -0.828, -0.227], + [-0.109, -0.828, -0.227], + [0.078, -0.805, -0.25], + [-0.078, -0.805, -0.25], + [0.0, -0.805, -0.289], + [0.258, -0.555, -0.312], + [-0.258, -0.555, -0.312], + [0.164, -0.711, -0.242], + [-0.164, -0.711, -0.242], + [0.18, -0.711, -0.312], + [-0.18, -0.711, -0.312], + [0.234, -0.555, -0.25], + [-0.234, -0.555, -0.25], + [0.0, -0.688, -0.875], + [0.047, -0.688, -0.867], + [-0.047, -0.688, -0.867], + [0.094, -0.711, -0.82], + [-0.094, -0.711, -0.82], + [0.094, -0.727, -0.742], + [-0.094, -0.727, -0.742], + [0.0, -0.656, -0.781], + [0.094, -0.664, -0.75], + [-0.094, -0.664, -0.75], + [0.094, -0.641, -0.812], + [-0.094, -0.641, -0.812], + [0.047, -0.633, -0.852], + [-0.047, -0.633, -0.852], + [0.0, -0.633, -0.859], + [0.172, -0.781, 0.219], + [-0.172, -0.781, 0.219], + [0.188, -0.773, 0.156], + [-0.188, -0.773, 0.156], + [0.336, -0.758, 0.43], + [-0.336, -0.758, 0.43], + [0.273, -0.773, 0.422], + [-0.273, -0.773, 0.422], + [0.422, -0.773, 0.398], + [-0.422, -0.773, 0.398], + [0.562, -0.695, 0.352], + [-0.562, -0.695, 0.352], + [0.586, -0.688, 0.289], + [-0.586, -0.688, 0.289], + [0.578, -0.68, 0.195], + [-0.578, -0.68, 0.195], + [0.477, -0.719, 0.102], + [-0.477, -0.719, 0.102], + [0.375, -0.742, 0.062], + [-0.375, -0.742, 0.062], + [0.227, -0.781, 0.109], + [-0.227, -0.781, 0.109], + [0.18, -0.781, 0.297], + [-0.18, -0.781, 0.297], + [0.211, -0.781, 0.375], + [-0.211, -0.781, 0.375], + [0.234, -0.758, 0.359], + [-0.234, -0.758, 0.359], + [0.195, -0.758, 0.297], + [-0.195, -0.758, 0.297], + [0.242, -0.758, 0.125], + [-0.242, -0.758, 0.125], + [0.375, -0.727, 0.086], + [-0.375, -0.727, 0.086], + [0.461, -0.703, 0.117], + [-0.461, -0.703, 0.117], + [0.547, -0.672, 0.211], + [-0.547, -0.672, 0.211], + [0.555, -0.672, 0.281], + [-0.555, -0.672, 0.281], + [0.531, -0.68, 0.336], + [-0.531, -0.68, 0.336], + [0.414, -0.75, 0.391], + [-0.414, -0.75, 0.391], + [0.281, -0.766, 0.398], + [-0.281, -0.766, 0.398], + [0.336, -0.75, 0.406], + [-0.336, -0.75, 0.406], + [0.203, -0.75, 0.172], + [-0.203, -0.75, 0.172], + [0.195, -0.75, 0.227], + [-0.195, -0.75, 0.227], + [0.109, -0.609, 0.461], + [-0.109, -0.609, 0.461], + [0.195, -0.617, 0.664], + [-0.195, -0.617, 0.664], + [0.336, -0.594, 0.688], + [-0.336, -0.594, 0.688], + [0.484, -0.555, 0.555], + [-0.484, -0.555, 0.555], + [0.68, -0.492, 0.453], + [-0.68, -0.492, 0.453], + [0.797, -0.461, 0.406], + [-0.797, -0.461, 0.406], + [0.773, -0.375, 0.164], + [-0.773, -0.375, 0.164], + [0.602, -0.414, 0.0], + [-0.602, -0.414, 0.0], + [0.438, -0.469, -0.094], + [-0.438, -0.469, -0.094], + [0.0, -0.289, 0.898], + [0.0, 0.078, 0.984], + [0.0, 0.672, -0.195], + [0.0, -0.188, -0.461], + [0.0, -0.461, -0.977], + [0.0, -0.344, -0.805], + [0.0, -0.32, -0.57], + [0.0, -0.281, -0.484], + [0.852, -0.055, 0.234], + [-0.852, -0.055, 0.234], + [0.859, 0.047, 0.32], + [-0.859, 0.047, 0.32], + [0.773, 0.438, 0.266], + [-0.773, 0.438, 0.266], + [0.461, 0.703, 0.438], + [-0.461, 0.703, 0.438], + [0.734, -0.07, -0.047], + [-0.734, -0.07, -0.047], + [0.594, 0.164, -0.125], + [-0.594, 0.164, -0.125], + [0.641, 0.43, -0.008], + [-0.641, 0.43, -0.008], + [0.336, 0.664, 0.055], + [-0.336, 0.664, 0.055], + [0.234, -0.406, -0.352], + [-0.234, -0.406, -0.352], + [0.18, -0.258, -0.414], + [-0.18, -0.258, -0.414], + [0.289, -0.383, -0.711], + [-0.289, -0.383, -0.711], + [0.25, -0.391, -0.5], + [-0.25, -0.391, -0.5], + [0.328, -0.398, -0.914], + [-0.328, -0.398, -0.914], + [0.141, -0.367, -0.758], + [-0.141, -0.367, -0.758], + [0.125, -0.359, -0.539], + [-0.125, -0.359, -0.539], + [0.164, -0.438, -0.945], + [-0.164, -0.438, -0.945], + [0.219, -0.43, -0.281], + [-0.219, -0.43, -0.281], + [0.211, -0.469, -0.227], + [-0.211, -0.469, -0.227], + [0.203, -0.5, -0.172], + [-0.203, -0.5, -0.172], + [0.211, -0.164, -0.391], + [-0.211, -0.164, -0.391], + [0.297, 0.266, -0.312], + [-0.297, 0.266, -0.312], + [0.344, 0.539, -0.148], + [-0.344, 0.539, -0.148], + [0.453, 0.383, 0.867], + [-0.453, 0.383, 0.867], + [0.453, 0.07, 0.93], + [-0.453, 0.07, 0.93], + [0.453, -0.234, 0.852], + [-0.453, -0.234, 0.852], + [0.461, -0.43, 0.523], + [-0.461, -0.43, 0.523], + [0.727, -0.336, 0.406], + [-0.727, -0.336, 0.406], + [0.633, -0.281, 0.453], + [-0.633, -0.281, 0.453], + [0.641, -0.055, 0.703], + [-0.641, -0.055, 0.703], + [0.797, -0.125, 0.562], + [-0.797, -0.125, 0.562], + [0.797, 0.117, 0.617], + [-0.797, 0.117, 0.617], + [0.641, 0.195, 0.75], + [-0.641, 0.195, 0.75], + [0.641, 0.445, 0.68], + [-0.641, 0.445, 0.68], + [0.797, 0.359, 0.539], + [-0.797, 0.359, 0.539], + [0.617, 0.586, 0.328], + [-0.617, 0.586, 0.328], + [0.484, 0.547, 0.023], + [-0.484, 0.547, 0.023], + [0.82, 0.203, 0.328], + [-0.82, 0.203, 0.328], + [0.406, -0.148, -0.172], + [-0.406, -0.148, -0.172], + [0.43, 0.211, -0.195], + [-0.43, 0.211, -0.195], + [0.891, 0.234, 0.406], + [-0.891, 0.234, 0.406], + [0.773, 0.125, -0.141], + [-0.773, 0.125, -0.141], + [1.039, 0.328, -0.102], + [-1.039, 0.328, -0.102], + [1.281, 0.43, 0.055], + [-1.281, 0.43, 0.055], + [1.352, 0.422, 0.32], + [-1.352, 0.422, 0.32], + [1.234, 0.422, 0.508], + [-1.234, 0.422, 0.508], + [1.023, 0.312, 0.477], + [-1.023, 0.312, 0.477], + [1.016, 0.289, 0.414], + [-1.016, 0.289, 0.414], + [1.188, 0.391, 0.438], + [-1.188, 0.391, 0.438], + [1.266, 0.406, 0.289], + [-1.266, 0.406, 0.289], + [1.211, 0.406, 0.078], + [-1.211, 0.406, 0.078], + [1.031, 0.305, -0.039], + [-1.031, 0.305, -0.039], + [0.828, 0.133, -0.07], + [-0.828, 0.133, -0.07], + [0.922, 0.219, 0.359], + [-0.922, 0.219, 0.359], + [0.945, 0.289, 0.305], + [-0.945, 0.289, 0.305], + [0.883, 0.211, -0.023], + [-0.883, 0.211, -0.023], + [1.039, 0.367, 0.0], + [-1.039, 0.367, 0.0], + [1.188, 0.445, 0.094], + [-1.188, 0.445, 0.094], + [1.234, 0.445, 0.25], + [-1.234, 0.445, 0.25], + [1.172, 0.438, 0.359], + [-1.172, 0.438, 0.359], + [1.023, 0.359, 0.344], + [-1.023, 0.359, 0.344], + [0.844, 0.211, 0.289], + [-0.844, 0.211, 0.289], + [0.836, 0.273, 0.172], + [-0.836, 0.273, 0.172], + [0.758, 0.273, 0.094], + [-0.758, 0.273, 0.094], + [0.82, 0.273, 0.086], + [-0.82, 0.273, 0.086], + [0.844, 0.273, 0.016], + [-0.844, 0.273, 0.016], + [0.812, 0.273, -0.016], + [-0.812, 0.273, -0.016], + [0.727, 0.07, 0.0], + [-0.727, 0.07, 0.0], + [0.719, 0.172, -0.023], + [-0.719, 0.172, -0.023], + [0.719, 0.188, 0.039], + [-0.719, 0.188, 0.039], + [0.797, 0.211, 0.203], + [-0.797, 0.211, 0.203], + [0.891, 0.266, 0.242], + [-0.891, 0.266, 0.242], + [0.891, 0.32, 0.234], + [-0.891, 0.32, 0.234], + [0.812, 0.32, -0.016], + [-0.812, 0.32, -0.016], + [0.852, 0.32, 0.016], + [-0.852, 0.32, 0.016], + [0.828, 0.32, 0.078], + [-0.828, 0.32, 0.078], + [0.766, 0.32, 0.094], + [-0.766, 0.32, 0.094], + [0.844, 0.32, 0.172], + [-0.844, 0.32, 0.172], + [1.039, 0.414, 0.328], + [-1.039, 0.414, 0.328], + [1.188, 0.484, 0.344], + [-1.188, 0.484, 0.344], + [1.258, 0.492, 0.242], + [-1.258, 0.492, 0.242], + [1.211, 0.484, 0.086], + [-1.211, 0.484, 0.086], + [1.047, 0.422, 0.0], + [-1.047, 0.422, 0.0], + [0.883, 0.266, -0.016], + [-0.883, 0.266, -0.016], + [0.953, 0.344, 0.289], + [-0.953, 0.344, 0.289], + [0.891, 0.328, 0.109], + [-0.891, 0.328, 0.109], + [0.938, 0.336, 0.062], + [-0.938, 0.336, 0.062], + [1.0, 0.367, 0.125], + [-1.0, 0.367, 0.125], + [0.961, 0.352, 0.172], + [-0.961, 0.352, 0.172], + [1.016, 0.375, 0.234], + [-1.016, 0.375, 0.234], + [1.055, 0.383, 0.188], + [-1.055, 0.383, 0.188], + [1.109, 0.391, 0.211], + [-1.109, 0.391, 0.211], + [1.086, 0.391, 0.273], + [-1.086, 0.391, 0.273], + [1.023, 0.484, 0.438], + [-1.023, 0.484, 0.438], + [1.25, 0.547, 0.469], + [-1.25, 0.547, 0.469], + [1.367, 0.5, 0.297], + [-1.367, 0.5, 0.297], + [1.312, 0.531, 0.055], + [-1.312, 0.531, 0.055], + [1.039, 0.492, -0.086], + [-1.039, 0.492, -0.086], + [0.789, 0.328, -0.125], + [-0.789, 0.328, -0.125], + [0.859, 0.383, 0.383], + [-0.859, 0.383, 0.383] + ], + "indices": [ + [46, 0, 2, 44], + [3, 1, 47, 45], + [44, 2, 4, 42], + [5, 3, 45, 43], + [2, 8, 6, 4], + [7, 9, 3, 5], + [0, 10, 8, 2], + [9, 11, 1, 3], + [10, 12, 14, 8], + [15, 13, 11, 9], + [8, 14, 16, 6], + [17, 15, 9, 7], + [14, 20, 18, 16], + [19, 21, 15, 17], + [12, 22, 20, 14], + [21, 23, 13, 15], + [22, 24, 26, 20], + [27, 25, 23, 21], + [20, 26, 28, 18], + [29, 27, 21, 19], + [26, 32, 30, 28], + [31, 33, 27, 29], + [24, 34, 32, 26], + [33, 35, 25, 27], + [34, 36, 38, 32], + [39, 37, 35, 33], + [32, 38, 40, 30], + [41, 39, 33, 31], + [38, 44, 42, 40], + [43, 45, 39, 41], + [36, 46, 44, 38], + [45, 47, 37, 39], + [46, 36, 50, 48], + [51, 37, 47, 49], + [36, 34, 52, 50], + [53, 35, 37, 51], + [34, 24, 54, 52], + [55, 25, 35, 53], + [24, 22, 56, 54], + [57, 23, 25, 55], + [22, 12, 58, 56], + [59, 13, 23, 57], + [12, 10, 62, 58], + [63, 11, 13, 59], + [10, 0, 64, 62], + [65, 1, 11, 63], + [0, 46, 48, 64], + [49, 47, 1, 65], + [60, 64, 48], + [49, 65, 61], + [62, 64, 60], + [61, 65, 63], + [60, 58, 62], + [63, 59, 61], + [60, 56, 58], + [59, 57, 61], + [60, 54, 56], + [57, 55, 61], + [60, 52, 54], + [55, 53, 61], + [60, 50, 52], + [53, 51, 61], + [60, 48, 50], + [51, 49, 61], + [88, 173, 175, 90], + [175, 174, 89, 90], + [86, 171, 173, 88], + [174, 172, 87, 89], + [84, 169, 171, 86], + [172, 170, 85, 87], + [82, 167, 169, 84], + [170, 168, 83, 85], + [80, 165, 167, 82], + [168, 166, 81, 83], + [78, 91, 145, 163], + [146, 92, 79, 164], + [91, 93, 147, 145], + [148, 94, 92, 146], + [93, 95, 149, 147], + [150, 96, 94, 148], + [95, 97, 151, 149], + [152, 98, 96, 150], + [97, 99, 153, 151], + [154, 100, 98, 152], + [99, 101, 155, 153], + [156, 102, 100, 154], + [101, 103, 157, 155], + [158, 104, 102, 156], + [103, 105, 159, 157], + [160, 106, 104, 158], + [105, 107, 161, 159], + [162, 108, 106, 160], + [107, 66, 67, 161], + [67, 66, 108, 162], + [109, 127, 159, 161], + [160, 128, 110, 162], + [127, 178, 157, 159], + [158, 179, 128, 160], + [125, 155, 157, 178], + [158, 156, 126, 179], + [123, 153, 155, 125], + [156, 154, 124, 126], + [121, 151, 153, 123], + [154, 152, 122, 124], + [119, 149, 151, 121], + [152, 150, 120, 122], + [117, 147, 149, 119], + [150, 148, 118, 120], + [115, 145, 147, 117], + [148, 146, 116, 118], + [113, 163, 145, 115], + [146, 164, 114, 116], + [113, 180, 176, 163], + [176, 181, 114, 164], + [109, 161, 67, 111], + [67, 162, 110, 112], + [111, 67, 177, 182], + [177, 67, 112, 183], + [176, 180, 182, 177], + [183, 181, 176, 177], + [134, 136, 175, 173], + [175, 136, 135, 174], + [132, 134, 173, 171], + [174, 135, 133, 172], + [130, 132, 171, 169], + [172, 133, 131, 170], + [165, 186, 184, 167], + [185, 187, 166, 168], + [130, 169, 167, 184], + [168, 170, 131, 185], + [143, 189, 188, 186], + [188, 189, 144, 187], + [184, 186, 188, 68], + [188, 187, 185, 68], + [129, 130, 184, 68], + [185, 131, 129, 68], + [141, 192, 190, 143], + [191, 193, 142, 144], + [139, 194, 192, 141], + [193, 195, 140, 142], + [138, 196, 194, 139], + [195, 197, 138, 140], + [137, 70, 196, 138], + [197, 70, 137, 138], + [189, 143, 190, 69], + [191, 144, 189, 69], + [69, 190, 205, 207], + [206, 191, 69, 207], + [70, 198, 199, 196], + [200, 198, 70, 197], + [196, 199, 201, 194], + [202, 200, 197, 195], + [194, 201, 203, 192], + [204, 202, 195, 193], + [192, 203, 205, 190], + [206, 204, 193, 191], + [198, 203, 201, 199], + [202, 204, 198, 200], + [198, 207, 205, 203], + [206, 207, 198, 204], + [138, 139, 163, 176], + [164, 140, 138, 176], + [139, 141, 210, 163], + [211, 142, 140, 164], + [141, 143, 212, 210], + [213, 144, 142, 211], + [143, 186, 165, 212], + [166, 187, 144, 213], + [80, 208, 212, 165], + [213, 209, 81, 166], + [208, 214, 210, 212], + [211, 215, 209, 213], + [78, 163, 210, 214], + [211, 164, 79, 215], + [130, 129, 71, 221], + [71, 129, 131, 222], + [132, 130, 221, 219], + [222, 131, 133, 220], + [134, 132, 219, 217], + [220, 133, 135, 218], + [136, 134, 217, 216], + [218, 135, 136, 216], + [216, 217, 228, 230], + [229, 218, 216, 230], + [217, 219, 226, 228], + [227, 220, 218, 229], + [219, 221, 224, 226], + [225, 222, 220, 227], + [221, 71, 223, 224], + [223, 71, 222, 225], + [223, 230, 228, 224], + [229, 230, 223, 225], + [224, 228, 226], + [227, 229, 225], + [182, 180, 233, 231], + [234, 181, 183, 232], + [111, 182, 231, 253], + [232, 183, 112, 254], + [109, 111, 253, 255], + [254, 112, 110, 256], + [180, 113, 251, 233], + [252, 114, 181, 234], + [113, 115, 249, 251], + [250, 116, 114, 252], + [115, 117, 247, 249], + [248, 118, 116, 250], + [117, 119, 245, 247], + [246, 120, 118, 248], + [119, 121, 243, 245], + [244, 122, 120, 246], + [121, 123, 241, 243], + [242, 124, 122, 244], + [123, 125, 239, 241], + [240, 126, 124, 242], + [125, 178, 235, 239], + [236, 179, 126, 240], + [178, 127, 237, 235], + [238, 128, 179, 236], + [127, 109, 255, 237], + [256, 110, 128, 238], + [237, 255, 257, 275], + [258, 256, 238, 276], + [235, 237, 275, 277], + [276, 238, 236, 278], + [239, 235, 277, 273], + [278, 236, 240, 274], + [241, 239, 273, 271], + [274, 240, 242, 272], + [243, 241, 271, 269], + [272, 242, 244, 270], + [245, 243, 269, 267], + [270, 244, 246, 268], + [247, 245, 267, 265], + [268, 246, 248, 266], + [249, 247, 265, 263], + [266, 248, 250, 264], + [251, 249, 263, 261], + [264, 250, 252, 262], + [233, 251, 261, 279], + [262, 252, 234, 280], + [255, 253, 259, 257], + [260, 254, 256, 258], + [253, 231, 281, 259], + [282, 232, 254, 260], + [231, 233, 279, 281], + [280, 234, 232, 282], + [66, 107, 283, 72], + [284, 108, 66, 72], + [107, 105, 285, 283], + [286, 106, 108, 284], + [105, 103, 287, 285], + [288, 104, 106, 286], + [103, 101, 289, 287], + [290, 102, 104, 288], + [101, 99, 291, 289], + [292, 100, 102, 290], + [99, 97, 293, 291], + [294, 98, 100, 292], + [97, 95, 295, 293], + [296, 96, 98, 294], + [95, 93, 297, 295], + [298, 94, 96, 296], + [93, 91, 299, 297], + [300, 92, 94, 298], + [307, 308, 327, 337], + [328, 308, 307, 338], + [306, 307, 337, 335], + [338, 307, 306, 336], + [305, 306, 335, 339], + [336, 306, 305, 340], + [88, 90, 305, 339], + [305, 90, 89, 340], + [86, 88, 339, 333], + [340, 89, 87, 334], + [84, 86, 333, 329], + [334, 87, 85, 330], + [82, 84, 329, 331], + [330, 85, 83, 332], + [329, 335, 337, 331], + [338, 336, 330, 332], + [329, 333, 339, 335], + [340, 334, 330, 336], + [325, 331, 337, 327], + [338, 332, 326, 328], + [80, 82, 331, 325], + [332, 83, 81, 326], + [208, 341, 343, 214], + [344, 342, 209, 215], + [80, 325, 341, 208], + [342, 326, 81, 209], + [78, 214, 343, 345], + [344, 215, 79, 346], + [78, 345, 299, 91], + [300, 346, 79, 92], + [76, 323, 351, 303], + [352, 324, 76, 303], + [303, 351, 349, 77], + [350, 352, 303, 77], + [77, 349, 347, 304], + [348, 350, 77, 304], + [304, 347, 327, 308], + [328, 348, 304, 308], + [325, 327, 347, 341], + [348, 328, 326, 342], + [295, 297, 317, 309], + [318, 298, 296, 310], + [75, 315, 323, 76], + [324, 316, 75, 76], + [301, 357, 355, 302], + [356, 358, 301, 302], + [302, 355, 353, 74], + [354, 356, 302, 74], + [74, 353, 315, 75], + [316, 354, 74, 75], + [291, 293, 361, 363], + [362, 294, 292, 364], + [363, 361, 367, 365], + [368, 362, 364, 366], + [365, 367, 369, 371], + [370, 368, 366, 372], + [371, 369, 375, 373], + [376, 370, 372, 374], + [313, 377, 373, 375], + [374, 378, 314, 376], + [315, 353, 373, 377], + [374, 354, 316, 378], + [353, 355, 371, 373], + [372, 356, 354, 374], + [355, 357, 365, 371], + [366, 358, 356, 372], + [357, 359, 363, 365], + [364, 360, 358, 366], + [289, 291, 363, 359], + [364, 292, 290, 360], + [73, 359, 357, 301], + [358, 360, 73, 301], + [283, 285, 287, 289], + [288, 286, 284, 290], + [283, 289, 359, 73], + [360, 290, 284, 73], + [72, 283, 73], + [73, 284, 72], + [293, 295, 309, 361], + [310, 296, 294, 362], + [309, 311, 367, 361], + [368, 312, 310, 362], + [311, 381, 369, 367], + [370, 382, 312, 368], + [313, 375, 369, 381], + [370, 376, 314, 382], + [347, 349, 385, 383], + [386, 350, 348, 384], + [317, 383, 385, 319], + [386, 384, 318, 320], + [297, 299, 383, 317], + [384, 300, 298, 318], + [299, 343, 341, 383], + [342, 344, 300, 384], + [341, 347, 383], + [384, 348, 342], + [299, 345, 343], + [344, 346, 300], + [313, 321, 379, 377], + [380, 322, 314, 378], + [315, 377, 379, 323], + [380, 378, 316, 324], + [319, 385, 379, 321], + [380, 386, 320, 322], + [349, 351, 379, 385], + [380, 352, 350, 386], + [323, 379, 351], + [352, 380, 324], + [399, 387, 413, 401], + [414, 388, 400, 402], + [399, 401, 403, 397], + [404, 402, 400, 398], + [397, 403, 405, 395], + [406, 404, 398, 396], + [395, 405, 407, 393], + [408, 406, 396, 394], + [393, 407, 409, 391], + [410, 408, 394, 392], + [391, 409, 411, 389], + [412, 410, 392, 390], + [409, 419, 417, 411], + [418, 420, 410, 412], + [407, 421, 419, 409], + [420, 422, 408, 410], + [405, 423, 421, 407], + [422, 424, 406, 408], + [403, 425, 423, 405], + [424, 426, 404, 406], + [401, 427, 425, 403], + [426, 428, 402, 404], + [401, 413, 415, 427], + [416, 414, 402, 428], + [317, 319, 443, 441], + [444, 320, 318, 442], + [319, 389, 411, 443], + [412, 390, 320, 444], + [309, 317, 441, 311], + [442, 318, 310, 312], + [381, 429, 413, 387], + [414, 430, 382, 388], + [411, 417, 439, 443], + [440, 418, 412, 444], + [437, 445, 443, 439], + [444, 446, 438, 440], + [433, 445, 437, 435], + [438, 446, 434, 436], + [431, 447, 445, 433], + [446, 448, 432, 434], + [429, 447, 431, 449], + [432, 448, 430, 450], + [413, 429, 449, 415], + [450, 430, 414, 416], + [311, 447, 429, 381], + [430, 448, 312, 382], + [311, 441, 445, 447], + [446, 442, 312, 448], + [441, 443, 445], + [446, 444, 442], + [415, 449, 451, 475], + [452, 450, 416, 476], + [449, 431, 461, 451], + [462, 432, 450, 452], + [431, 433, 459, 461], + [460, 434, 432, 462], + [433, 435, 457, 459], + [458, 436, 434, 460], + [435, 437, 455, 457], + [456, 438, 436, 458], + [437, 439, 453, 455], + [454, 440, 438, 456], + [439, 417, 473, 453], + [474, 418, 440, 454], + [427, 415, 475, 463], + [476, 416, 428, 464], + [425, 427, 463, 465], + [464, 428, 426, 466], + [423, 425, 465, 467], + [466, 426, 424, 468], + [421, 423, 467, 469], + [468, 424, 422, 470], + [419, 421, 469, 471], + [470, 422, 420, 472], + [417, 419, 471, 473], + [472, 420, 418, 474], + [457, 455, 479, 477], + [480, 456, 458, 478], + [477, 479, 481, 483], + [482, 480, 478, 484], + [483, 481, 487, 485], + [488, 482, 484, 486], + [485, 487, 489, 491], + [490, 488, 486, 492], + [463, 475, 485, 491], + [486, 476, 464, 492], + [451, 483, 485, 475], + [486, 484, 452, 476], + [451, 461, 477, 483], + [478, 462, 452, 484], + [457, 477, 461, 459], + [462, 478, 458, 460], + [453, 473, 479, 455], + [480, 474, 454, 456], + [471, 481, 479, 473], + [480, 482, 472, 474], + [469, 487, 481, 471], + [482, 488, 470, 472], + [467, 489, 487, 469], + [488, 490, 468, 470], + [465, 491, 489, 467], + [490, 492, 466, 468], + [463, 491, 465], + [466, 492, 464], + [391, 389, 503, 501], + [504, 390, 392, 502], + [393, 391, 501, 499], + [502, 392, 394, 500], + [395, 393, 499, 497], + [500, 394, 396, 498], + [397, 395, 497, 495], + [498, 396, 398, 496], + [399, 397, 495, 493], + [496, 398, 400, 494], + [387, 399, 493, 505], + [494, 400, 388, 506], + [493, 501, 503, 505], + [504, 502, 494, 506], + [493, 495, 499, 501], + [500, 496, 494, 502], + [495, 497, 499], + [500, 498, 496], + [313, 381, 387, 505], + [388, 382, 314, 506], + [313, 505, 503, 321], + [504, 506, 314, 322], + [319, 321, 503, 389], + [504, 322, 320, 390] + ], + "uv_coordinates": [ + [0.891, 0.59], + [0.871, 0.59], + [0.86, 0.56], + [0.905, 0.559], + [0.856, 0.851], + [0.868, 0.822], + [0.888, 0.822], + [0.901, 0.853], + [0.905, 0.559], + [0.86, 0.56], + [0.853, 0.522], + [0.92, 0.525], + [0.847, 0.889], + [0.856, 0.851], + [0.901, 0.853], + [0.915, 0.889], + [0.86, 0.56], + [0.829, 0.591], + [0.798, 0.57], + [0.853, 0.522], + [0.795, 0.838], + [0.826, 0.819], + [0.856, 0.851], + [0.847, 0.889], + [0.871, 0.59], + [0.854, 0.605], + [0.829, 0.591], + [0.86, 0.56], + [0.826, 0.819], + [0.853, 0.806], + [0.868, 0.822], + [0.856, 0.851], + [0.854, 0.605], + [0.854, 0.625], + [0.828, 0.633], + [0.829, 0.591], + [0.828, 0.776], + [0.853, 0.785], + [0.853, 0.806], + [0.826, 0.819], + [0.829, 0.591], + [0.828, 0.633], + [0.791, 0.645], + [0.798, 0.57], + [0.791, 0.762], + [0.828, 0.776], + [0.826, 0.819], + [0.795, 0.838], + [0.828, 0.633], + [0.855, 0.669], + [0.842, 0.702], + [0.791, 0.645], + [0.845, 0.708], + [0.856, 0.742], + [0.828, 0.776], + [0.791, 0.762], + [0.854, 0.625], + [0.868, 0.642], + [0.855, 0.669], + [0.828, 0.633], + [0.856, 0.742], + [0.867, 0.769], + [0.853, 0.785], + [0.828, 0.776], + [0.868, 0.642], + [0.89, 0.642], + [0.9, 0.667], + [0.855, 0.669], + [0.901, 0.746], + [0.89, 0.77], + [0.867, 0.769], + [0.856, 0.742], + [0.855, 0.669], + [0.9, 0.667], + [0.919, 0.7], + [0.842, 0.702], + [0.921, 0.714], + [0.901, 0.746], + [0.856, 0.742], + [0.845, 0.708], + [0.9, 0.667], + [0.932, 0.637], + [0.968, 0.645], + [0.919, 0.7], + [0.968, 0.77], + [0.931, 0.777], + [0.901, 0.746], + [0.921, 0.714], + [0.89, 0.642], + [0.906, 0.628], + [0.932, 0.637], + [0.9, 0.667], + [0.931, 0.777], + [0.905, 0.785], + [0.89, 0.77], + [0.901, 0.746], + [0.906, 0.628], + [0.906, 0.606], + [0.934, 0.593], + [0.932, 0.637], + [0.931, 0.821], + [0.904, 0.807], + [0.905, 0.785], + [0.931, 0.777], + [0.932, 0.637], + [0.934, 0.593], + [0.968, 0.574], + [0.968, 0.645], + [0.965, 0.842], + [0.931, 0.821], + [0.931, 0.777], + [0.968, 0.77], + [0.934, 0.593], + [0.905, 0.559], + [0.92, 0.525], + [0.968, 0.574], + [0.915, 0.889], + [0.901, 0.853], + [0.931, 0.821], + [0.965, 0.842], + [0.906, 0.606], + [0.891, 0.59], + [0.905, 0.559], + [0.934, 0.593], + [0.901, 0.853], + [0.888, 0.822], + [0.904, 0.807], + [0.931, 0.821], + [0.891, 0.59], + [0.906, 0.606], + [0.902, 0.608], + [0.89, 0.593], + [0.901, 0.805], + [0.904, 0.807], + [0.888, 0.822], + [0.887, 0.819], + [0.906, 0.606], + [0.906, 0.628], + [0.9, 0.626], + [0.902, 0.608], + [0.899, 0.786], + [0.905, 0.785], + [0.904, 0.807], + [0.901, 0.805], + [0.906, 0.628], + [0.89, 0.642], + [0.888, 0.637], + [0.9, 0.626], + [0.887, 0.775], + [0.89, 0.77], + [0.905, 0.785], + [0.899, 0.786], + [0.89, 0.642], + [0.868, 0.642], + [0.871, 0.635], + [0.888, 0.637], + [0.87, 0.776], + [0.867, 0.769], + [0.89, 0.77], + [0.887, 0.775], + [0.868, 0.642], + [0.854, 0.625], + [0.86, 0.624], + [0.871, 0.635], + [0.859, 0.787], + [0.853, 0.785], + [0.867, 0.769], + [0.87, 0.776], + [0.854, 0.625], + [0.854, 0.605], + [0.86, 0.608], + [0.86, 0.624], + [0.858, 0.803], + [0.853, 0.806], + [0.853, 0.785], + [0.859, 0.787], + [0.854, 0.605], + [0.871, 0.59], + [0.872, 0.594], + [0.86, 0.608], + [0.869, 0.817], + [0.868, 0.822], + [0.853, 0.806], + [0.858, 0.803], + [0.871, 0.59], + [0.891, 0.59], + [0.89, 0.593], + [0.872, 0.594], + [0.887, 0.819], + [0.888, 0.822], + [0.868, 0.822], + [0.869, 0.817], + [0.879, 0.617], + [0.872, 0.594], + [0.89, 0.593], + [0.887, 0.819], + [0.869, 0.817], + [0.878, 0.795], + [0.86, 0.608], + [0.872, 0.594], + [0.879, 0.617], + [0.878, 0.795], + [0.869, 0.817], + [0.858, 0.803], + [0.879, 0.617], + [0.86, 0.624], + [0.86, 0.608], + [0.858, 0.803], + [0.859, 0.787], + [0.878, 0.795], + [0.879, 0.617], + [0.871, 0.635], + [0.86, 0.624], + [0.859, 0.787], + [0.87, 0.776], + [0.878, 0.795], + [0.879, 0.617], + [0.888, 0.637], + [0.871, 0.635], + [0.87, 0.776], + [0.887, 0.775], + [0.878, 0.795], + [0.879, 0.617], + [0.9, 0.626], + [0.888, 0.637], + [0.887, 0.775], + [0.899, 0.786], + [0.878, 0.795], + [0.879, 0.617], + [0.902, 0.608], + [0.9, 0.626], + [0.899, 0.786], + [0.901, 0.805], + [0.878, 0.795], + [0.879, 0.617], + [0.89, 0.593], + [0.902, 0.608], + [0.901, 0.805], + [0.887, 0.819], + [0.878, 0.795], + [0.54, 0.054], + [0.536, 0.062], + [0.519, 0.06], + [0.519, 0.05], + [0.519, 0.06], + [0.501, 0.062], + [0.498, 0.054], + [0.519, 0.05], + [0.552, 0.058], + [0.543, 0.064], + [0.536, 0.062], + [0.54, 0.054], + [0.501, 0.062], + [0.495, 0.064], + [0.486, 0.058], + [0.498, 0.054], + [0.555, 0.062], + [0.546, 0.073], + [0.543, 0.064], + [0.552, 0.058], + [0.495, 0.064], + [0.492, 0.073], + [0.483, 0.062], + [0.486, 0.058], + [0.564, 0.077], + [0.548, 0.085], + [0.546, 0.073], + [0.555, 0.062], + [0.492, 0.073], + [0.49, 0.085], + [0.474, 0.077], + [0.483, 0.062], + [0.583, 0.108], + [0.556, 0.122], + [0.548, 0.085], + [0.564, 0.077], + [0.49, 0.085], + [0.482, 0.122], + [0.455, 0.108], + [0.474, 0.077], + [0.606, 0.165], + [0.647, 0.201], + [0.622, 0.228], + [0.553, 0.21], + [0.417, 0.229], + [0.39, 0.202], + [0.432, 0.166], + [0.485, 0.21], + [0.647, 0.201], + [0.676, 0.233], + [0.665, 0.253], + [0.622, 0.228], + [0.373, 0.256], + [0.36, 0.236], + [0.39, 0.202], + [0.417, 0.229], + [0.676, 0.233], + [0.715, 0.265], + [0.684, 0.28], + [0.665, 0.253], + [0.354, 0.285], + [0.32, 0.27], + [0.36, 0.236], + [0.373, 0.256], + [0.715, 0.265], + [0.707, 0.31], + [0.688, 0.312], + [0.684, 0.28], + [0.351, 0.317], + [0.331, 0.317], + [0.32, 0.27], + [0.354, 0.285], + [0.707, 0.31], + [0.697, 0.333], + [0.677, 0.324], + [0.688, 0.312], + [0.363, 0.33], + [0.342, 0.34], + [0.331, 0.317], + [0.351, 0.317], + [0.697, 0.333], + [0.663, 0.373], + [0.639, 0.357], + [0.677, 0.324], + [0.403, 0.362], + [0.379, 0.379], + [0.342, 0.34], + [0.363, 0.33], + [0.663, 0.373], + [0.627, 0.396], + [0.618, 0.375], + [0.639, 0.357], + [0.425, 0.379], + [0.417, 0.401], + [0.379, 0.379], + [0.403, 0.362], + [0.627, 0.396], + [0.605, 0.398], + [0.601, 0.378], + [0.618, 0.375], + [0.442, 0.381], + [0.439, 0.402], + [0.417, 0.401], + [0.425, 0.379], + [0.605, 0.398], + [0.553, 0.391], + [0.56, 0.357], + [0.601, 0.378], + [0.483, 0.358], + [0.491, 0.392], + [0.439, 0.402], + [0.442, 0.381], + [0.553, 0.391], + [0.522, 0.386], + [0.521, 0.344], + [0.56, 0.357], + [0.521, 0.344], + [0.522, 0.386], + [0.491, 0.392], + [0.483, 0.358], + [0.577, 0.34], + [0.6, 0.345], + [0.601, 0.378], + [0.56, 0.357], + [0.442, 0.381], + [0.442, 0.348], + [0.465, 0.342], + [0.483, 0.358], + [0.6, 0.345], + [0.616, 0.342], + [0.618, 0.375], + [0.601, 0.378], + [0.425, 0.379], + [0.426, 0.346], + [0.442, 0.348], + [0.442, 0.381], + [0.634, 0.332], + [0.639, 0.357], + [0.618, 0.375], + [0.616, 0.342], + [0.425, 0.379], + [0.403, 0.362], + [0.406, 0.336], + [0.426, 0.346], + [0.662, 0.313], + [0.677, 0.324], + [0.639, 0.357], + [0.634, 0.332], + [0.403, 0.362], + [0.363, 0.33], + [0.377, 0.318], + [0.406, 0.336], + [0.668, 0.298], + [0.688, 0.312], + [0.677, 0.324], + [0.662, 0.313], + [0.363, 0.33], + [0.351, 0.317], + [0.37, 0.303], + [0.377, 0.318], + [0.664, 0.278], + [0.684, 0.28], + [0.688, 0.312], + [0.668, 0.298], + [0.351, 0.317], + [0.354, 0.285], + [0.374, 0.282], + [0.37, 0.303], + [0.639, 0.253], + [0.665, 0.253], + [0.684, 0.28], + [0.664, 0.278], + [0.354, 0.285], + [0.373, 0.256], + [0.399, 0.256], + [0.374, 0.282], + [0.614, 0.243], + [0.622, 0.228], + [0.665, 0.253], + [0.639, 0.253], + [0.373, 0.256], + [0.417, 0.229], + [0.424, 0.244], + [0.399, 0.256], + [0.573, 0.259], + [0.553, 0.21], + [0.622, 0.228], + [0.614, 0.243], + [0.417, 0.229], + [0.485, 0.21], + [0.466, 0.26], + [0.424, 0.244], + [0.573, 0.259], + [0.564, 0.272], + [0.52, 0.249], + [0.553, 0.21], + [0.52, 0.249], + [0.476, 0.273], + [0.466, 0.26], + [0.485, 0.21], + [0.577, 0.34], + [0.56, 0.357], + [0.521, 0.344], + [0.559, 0.317], + [0.521, 0.344], + [0.483, 0.358], + [0.465, 0.342], + [0.483, 0.318], + [0.559, 0.317], + [0.521, 0.344], + [0.52, 0.295], + [0.557, 0.291], + [0.52, 0.295], + [0.521, 0.344], + [0.483, 0.318], + [0.483, 0.292], + [0.52, 0.249], + [0.564, 0.272], + [0.557, 0.291], + [0.52, 0.295], + [0.483, 0.292], + [0.476, 0.273], + [0.52, 0.249], + [0.52, 0.295], + [0.525, 0.069], + [0.519, 0.068], + [0.519, 0.06], + [0.536, 0.062], + [0.519, 0.06], + [0.519, 0.068], + [0.512, 0.069], + [0.501, 0.062], + [0.531, 0.074], + [0.525, 0.069], + [0.536, 0.062], + [0.543, 0.064], + [0.501, 0.062], + [0.512, 0.069], + [0.507, 0.074], + [0.495, 0.064], + [0.531, 0.087], + [0.531, 0.074], + [0.543, 0.064], + [0.546, 0.073], + [0.495, 0.064], + [0.507, 0.074], + [0.507, 0.087], + [0.492, 0.073], + [0.556, 0.122], + [0.532, 0.128], + [0.533, 0.091], + [0.548, 0.085], + [0.505, 0.091], + [0.506, 0.128], + [0.482, 0.122], + [0.49, 0.085], + [0.531, 0.087], + [0.546, 0.073], + [0.548, 0.085], + [0.533, 0.091], + [0.49, 0.085], + [0.492, 0.073], + [0.507, 0.087], + [0.505, 0.091], + [0.538, 0.158], + [0.519, 0.152], + [0.519, 0.128], + [0.532, 0.128], + [0.519, 0.128], + [0.519, 0.152], + [0.5, 0.158], + [0.506, 0.128], + [0.533, 0.091], + [0.532, 0.128], + [0.519, 0.128], + [0.519, 0.094], + [0.519, 0.128], + [0.506, 0.128], + [0.505, 0.091], + [0.519, 0.094], + [0.519, 0.085], + [0.531, 0.087], + [0.533, 0.091], + [0.519, 0.094], + [0.505, 0.091], + [0.507, 0.087], + [0.519, 0.085], + [0.519, 0.094], + [0.548, 0.174], + [0.538, 0.176], + [0.535, 0.167], + [0.538, 0.158], + [0.503, 0.167], + [0.5, 0.176], + [0.49, 0.174], + [0.5, 0.158], + [0.544, 0.193], + [0.537, 0.188], + [0.538, 0.176], + [0.548, 0.174], + [0.5, 0.176], + [0.501, 0.188], + [0.494, 0.193], + [0.49, 0.174], + [0.52, 0.201], + [0.529, 0.192], + [0.537, 0.188], + [0.544, 0.193], + [0.501, 0.188], + [0.509, 0.192], + [0.52, 0.201], + [0.494, 0.193], + [0.518, 0.191], + [0.519, 0.185], + [0.529, 0.192], + [0.52, 0.201], + [0.509, 0.192], + [0.519, 0.185], + [0.518, 0.191], + [0.52, 0.201], + [0.519, 0.152], + [0.538, 0.158], + [0.535, 0.167], + [0.519, 0.159], + [0.503, 0.167], + [0.5, 0.158], + [0.519, 0.152], + [0.519, 0.159], + [0.519, 0.159], + [0.535, 0.167], + [0.531, 0.172], + [0.519, 0.166], + [0.507, 0.172], + [0.503, 0.167], + [0.519, 0.159], + [0.519, 0.166], + [0.519, 0.185], + [0.519, 0.179], + [0.528, 0.186], + [0.529, 0.192], + [0.51, 0.186], + [0.519, 0.179], + [0.519, 0.185], + [0.509, 0.192], + [0.529, 0.192], + [0.528, 0.186], + [0.534, 0.184], + [0.537, 0.188], + [0.505, 0.184], + [0.51, 0.186], + [0.509, 0.192], + [0.501, 0.188], + [0.537, 0.188], + [0.534, 0.184], + [0.533, 0.177], + [0.538, 0.176], + [0.505, 0.177], + [0.505, 0.184], + [0.501, 0.188], + [0.5, 0.176], + [0.538, 0.176], + [0.533, 0.177], + [0.531, 0.172], + [0.535, 0.167], + [0.507, 0.172], + [0.505, 0.177], + [0.5, 0.176], + [0.503, 0.167], + [0.519, 0.179], + [0.533, 0.177], + [0.534, 0.184], + [0.528, 0.186], + [0.505, 0.184], + [0.505, 0.177], + [0.519, 0.179], + [0.51, 0.186], + [0.519, 0.179], + [0.519, 0.166], + [0.531, 0.172], + [0.533, 0.177], + [0.507, 0.172], + [0.519, 0.166], + [0.519, 0.179], + [0.505, 0.177], + [0.52, 0.201], + [0.544, 0.193], + [0.553, 0.21], + [0.52, 0.249], + [0.485, 0.21], + [0.494, 0.193], + [0.52, 0.201], + [0.52, 0.249], + [0.544, 0.193], + [0.548, 0.174], + [0.562, 0.168], + [0.553, 0.21], + [0.476, 0.168], + [0.49, 0.174], + [0.494, 0.193], + [0.485, 0.21], + [0.548, 0.174], + [0.538, 0.158], + [0.559, 0.149], + [0.562, 0.168], + [0.478, 0.149], + [0.5, 0.158], + [0.49, 0.174], + [0.476, 0.168], + [0.538, 0.158], + [0.532, 0.128], + [0.556, 0.122], + [0.559, 0.149], + [0.482, 0.122], + [0.506, 0.128], + [0.5, 0.158], + [0.478, 0.149], + [0.583, 0.108], + [0.596, 0.133], + [0.559, 0.149], + [0.556, 0.122], + [0.478, 0.149], + [0.441, 0.134], + [0.455, 0.108], + [0.482, 0.122], + [0.596, 0.133], + [0.601, 0.148], + [0.562, 0.168], + [0.559, 0.149], + [0.476, 0.168], + [0.436, 0.148], + [0.441, 0.134], + [0.478, 0.149], + [0.606, 0.165], + [0.553, 0.21], + [0.562, 0.168], + [0.601, 0.148], + [0.476, 0.168], + [0.485, 0.21], + [0.432, 0.166], + [0.436, 0.148], + [0.531, 0.087], + [0.519, 0.085], + [0.519, 0.084], + [0.529, 0.085], + [0.519, 0.084], + [0.519, 0.085], + [0.507, 0.087], + [0.509, 0.085], + [0.531, 0.074], + [0.531, 0.087], + [0.529, 0.085], + [0.529, 0.075], + [0.509, 0.085], + [0.507, 0.087], + [0.507, 0.074], + [0.509, 0.075], + [0.525, 0.069], + [0.531, 0.074], + [0.529, 0.075], + [0.524, 0.071], + [0.509, 0.075], + [0.507, 0.074], + [0.512, 0.069], + [0.514, 0.071], + [0.519, 0.068], + [0.525, 0.069], + [0.524, 0.071], + [0.519, 0.069], + [0.514, 0.071], + [0.512, 0.069], + [0.519, 0.068], + [0.519, 0.069], + [0.519, 0.069], + [0.524, 0.071], + [0.522, 0.075], + [0.519, 0.074], + [0.516, 0.075], + [0.514, 0.071], + [0.519, 0.069], + [0.519, 0.074], + [0.524, 0.071], + [0.529, 0.075], + [0.524, 0.077], + [0.522, 0.075], + [0.514, 0.077], + [0.509, 0.075], + [0.514, 0.071], + [0.516, 0.075], + [0.529, 0.075], + [0.529, 0.085], + [0.525, 0.08], + [0.524, 0.077], + [0.513, 0.08], + [0.509, 0.085], + [0.509, 0.075], + [0.514, 0.077], + [0.529, 0.085], + [0.519, 0.084], + [0.519, 0.079], + [0.525, 0.08], + [0.519, 0.079], + [0.519, 0.084], + [0.509, 0.085], + [0.513, 0.08], + [0.519, 0.079], + [0.519, 0.074], + [0.522, 0.075], + [0.525, 0.08], + [0.516, 0.075], + [0.519, 0.074], + [0.519, 0.079], + [0.513, 0.08], + [0.525, 0.08], + [0.522, 0.075], + [0.524, 0.077], + [0.514, 0.077], + [0.516, 0.075], + [0.513, 0.08], + [0.557, 0.291], + [0.564, 0.272], + [0.572, 0.277], + [0.568, 0.293], + [0.468, 0.279], + [0.476, 0.273], + [0.483, 0.292], + [0.472, 0.294], + [0.559, 0.317], + [0.557, 0.291], + [0.568, 0.293], + [0.573, 0.311], + [0.472, 0.294], + [0.483, 0.292], + [0.483, 0.318], + [0.468, 0.313], + [0.577, 0.34], + [0.559, 0.317], + [0.573, 0.311], + [0.585, 0.328], + [0.468, 0.313], + [0.483, 0.318], + [0.465, 0.342], + [0.456, 0.33], + [0.564, 0.272], + [0.573, 0.259], + [0.581, 0.267], + [0.572, 0.277], + [0.459, 0.268], + [0.466, 0.26], + [0.476, 0.273], + [0.468, 0.279], + [0.573, 0.259], + [0.614, 0.243], + [0.612, 0.256], + [0.581, 0.267], + [0.427, 0.258], + [0.424, 0.244], + [0.466, 0.26], + [0.459, 0.268], + [0.614, 0.243], + [0.639, 0.253], + [0.632, 0.263], + [0.612, 0.256], + [0.406, 0.266], + [0.399, 0.256], + [0.424, 0.244], + [0.427, 0.258], + [0.639, 0.253], + [0.664, 0.278], + [0.654, 0.28], + [0.632, 0.263], + [0.385, 0.284], + [0.374, 0.282], + [0.399, 0.256], + [0.406, 0.266], + [0.664, 0.278], + [0.668, 0.298], + [0.656, 0.298], + [0.654, 0.28], + [0.383, 0.302], + [0.37, 0.303], + [0.374, 0.282], + [0.385, 0.284], + [0.668, 0.298], + [0.662, 0.313], + [0.653, 0.31], + [0.656, 0.298], + [0.387, 0.315], + [0.377, 0.318], + [0.37, 0.303], + [0.383, 0.302], + [0.662, 0.313], + [0.634, 0.332], + [0.629, 0.324], + [0.653, 0.31], + [0.412, 0.328], + [0.406, 0.336], + [0.377, 0.318], + [0.387, 0.315], + [0.634, 0.332], + [0.616, 0.342], + [0.614, 0.332], + [0.629, 0.324], + [0.427, 0.335], + [0.426, 0.346], + [0.406, 0.336], + [0.412, 0.328], + [0.616, 0.342], + [0.6, 0.345], + [0.601, 0.334], + [0.614, 0.332], + [0.44, 0.337], + [0.442, 0.348], + [0.426, 0.346], + [0.427, 0.335], + [0.6, 0.345], + [0.577, 0.34], + [0.585, 0.328], + [0.601, 0.334], + [0.456, 0.33], + [0.465, 0.342], + [0.442, 0.348], + [0.44, 0.337], + [0.601, 0.334], + [0.585, 0.328], + [0.591, 0.322], + [0.602, 0.328], + [0.45, 0.324], + [0.456, 0.33], + [0.44, 0.337], + [0.439, 0.331], + [0.614, 0.332], + [0.601, 0.334], + [0.602, 0.328], + [0.613, 0.327], + [0.439, 0.331], + [0.44, 0.337], + [0.427, 0.335], + [0.428, 0.33], + [0.629, 0.324], + [0.614, 0.332], + [0.613, 0.327], + [0.627, 0.321], + [0.428, 0.33], + [0.427, 0.335], + [0.412, 0.328], + [0.414, 0.324], + [0.653, 0.31], + [0.629, 0.324], + [0.627, 0.321], + [0.646, 0.306], + [0.414, 0.324], + [0.412, 0.328], + [0.387, 0.315], + [0.393, 0.311], + [0.656, 0.298], + [0.653, 0.31], + [0.646, 0.306], + [0.65, 0.296], + [0.393, 0.311], + [0.387, 0.315], + [0.383, 0.302], + [0.39, 0.3], + [0.654, 0.28], + [0.656, 0.298], + [0.65, 0.296], + [0.648, 0.283], + [0.39, 0.3], + [0.383, 0.302], + [0.385, 0.284], + [0.391, 0.287], + [0.632, 0.263], + [0.654, 0.28], + [0.648, 0.283], + [0.63, 0.267], + [0.391, 0.287], + [0.385, 0.284], + [0.406, 0.266], + [0.409, 0.27], + [0.612, 0.256], + [0.632, 0.263], + [0.63, 0.267], + [0.613, 0.262], + [0.409, 0.27], + [0.406, 0.266], + [0.427, 0.258], + [0.426, 0.264], + [0.581, 0.267], + [0.612, 0.256], + [0.613, 0.262], + [0.585, 0.271], + [0.426, 0.264], + [0.427, 0.258], + [0.459, 0.268], + [0.454, 0.273], + [0.572, 0.277], + [0.581, 0.267], + [0.585, 0.271], + [0.578, 0.282], + [0.454, 0.273], + [0.459, 0.268], + [0.468, 0.279], + [0.462, 0.283], + [0.585, 0.328], + [0.573, 0.311], + [0.58, 0.309], + [0.591, 0.322], + [0.461, 0.311], + [0.468, 0.313], + [0.456, 0.33], + [0.45, 0.324], + [0.573, 0.311], + [0.568, 0.293], + [0.578, 0.294], + [0.58, 0.309], + [0.463, 0.295], + [0.472, 0.294], + [0.468, 0.313], + [0.461, 0.311], + [0.568, 0.293], + [0.572, 0.277], + [0.578, 0.282], + [0.578, 0.294], + [0.462, 0.283], + [0.468, 0.279], + [0.472, 0.294], + [0.463, 0.295], + [0.522, 0.386], + [0.553, 0.391], + [0.553, 0.433], + [0.523, 0.434], + [0.493, 0.435], + [0.491, 0.392], + [0.522, 0.386], + [0.523, 0.434], + [0.553, 0.391], + [0.605, 0.398], + [0.61, 0.432], + [0.553, 0.433], + [0.436, 0.436], + [0.439, 0.402], + [0.491, 0.392], + [0.493, 0.435], + [0.605, 0.398], + [0.627, 0.396], + [0.648, 0.419], + [0.61, 0.432], + [0.397, 0.425], + [0.417, 0.401], + [0.439, 0.402], + [0.436, 0.436], + [0.627, 0.396], + [0.663, 0.373], + [0.692, 0.388], + [0.648, 0.419], + [0.35, 0.396], + [0.379, 0.379], + [0.417, 0.401], + [0.397, 0.425], + [0.663, 0.373], + [0.697, 0.333], + [0.726, 0.342], + [0.692, 0.388], + [0.313, 0.351], + [0.342, 0.34], + [0.379, 0.379], + [0.35, 0.396], + [0.697, 0.333], + [0.707, 0.31], + [0.736, 0.312], + [0.726, 0.342], + [0.301, 0.321], + [0.331, 0.317], + [0.342, 0.34], + [0.313, 0.351], + [0.707, 0.31], + [0.715, 0.265], + [0.73, 0.256], + [0.736, 0.312], + [0.305, 0.261], + [0.32, 0.27], + [0.331, 0.317], + [0.301, 0.321], + [0.715, 0.265], + [0.676, 0.233], + [0.698, 0.217], + [0.73, 0.256], + [0.337, 0.219], + [0.36, 0.236], + [0.32, 0.27], + [0.305, 0.261], + [0.676, 0.233], + [0.647, 0.201], + [0.663, 0.191], + [0.698, 0.217], + [0.373, 0.192], + [0.39, 0.202], + [0.36, 0.236], + [0.337, 0.219], + [0.627, 0.016], + [0.649, 0.022], + [0.66, 0.076], + [0.621, 0.048], + [0.377, 0.075], + [0.389, 0.022], + [0.411, 0.015], + [0.416, 0.048], + [0.567, 0.0], + [0.627, 0.016], + [0.621, 0.048], + [0.577, 0.033], + [0.416, 0.048], + [0.411, 0.015], + [0.471, 0.0], + [0.461, 0.033], + [0.519, 0.025], + [0.567, 0.0], + [0.577, 0.033], + [0.547, 0.042], + [0.461, 0.033], + [0.471, 0.0], + [0.519, 0.025], + [0.491, 0.042], + [0.54, 0.054], + [0.519, 0.05], + [0.519, 0.025], + [0.547, 0.042], + [0.519, 0.025], + [0.519, 0.05], + [0.498, 0.054], + [0.491, 0.042], + [0.552, 0.058], + [0.54, 0.054], + [0.547, 0.042], + [0.558, 0.054], + [0.491, 0.042], + [0.498, 0.054], + [0.486, 0.058], + [0.48, 0.054], + [0.555, 0.062], + [0.552, 0.058], + [0.558, 0.054], + [0.577, 0.058], + [0.48, 0.054], + [0.486, 0.058], + [0.483, 0.062], + [0.461, 0.058], + [0.564, 0.077], + [0.555, 0.062], + [0.577, 0.058], + [0.612, 0.078], + [0.461, 0.058], + [0.483, 0.062], + [0.474, 0.077], + [0.426, 0.078], + [0.577, 0.058], + [0.577, 0.033], + [0.621, 0.048], + [0.612, 0.078], + [0.416, 0.048], + [0.461, 0.033], + [0.461, 0.058], + [0.426, 0.078], + [0.577, 0.058], + [0.558, 0.054], + [0.547, 0.042], + [0.577, 0.033], + [0.491, 0.042], + [0.48, 0.054], + [0.461, 0.058], + [0.461, 0.033], + [0.627, 0.111], + [0.612, 0.078], + [0.621, 0.048], + [0.66, 0.076], + [0.416, 0.048], + [0.426, 0.078], + [0.411, 0.111], + [0.377, 0.075], + [0.583, 0.108], + [0.564, 0.077], + [0.612, 0.078], + [0.627, 0.111], + [0.426, 0.078], + [0.474, 0.077], + [0.455, 0.108], + [0.411, 0.111], + [0.596, 0.133], + [0.629, 0.13], + [0.623, 0.147], + [0.601, 0.148], + [0.414, 0.147], + [0.408, 0.131], + [0.441, 0.134], + [0.436, 0.148], + [0.583, 0.108], + [0.627, 0.111], + [0.629, 0.13], + [0.596, 0.133], + [0.408, 0.131], + [0.411, 0.111], + [0.455, 0.108], + [0.441, 0.134], + [0.606, 0.165], + [0.601, 0.148], + [0.623, 0.147], + [0.619, 0.16], + [0.414, 0.147], + [0.436, 0.148], + [0.432, 0.166], + [0.418, 0.16], + [0.606, 0.165], + [0.619, 0.16], + [0.663, 0.191], + [0.647, 0.201], + [0.373, 0.192], + [0.418, 0.16], + [0.432, 0.166], + [0.39, 0.202], + [0.946, 0.08], + [0.886, 0.122], + [0.849, 0.1], + [0.892, 0.037], + [0.183, 0.092], + [0.141, 0.112], + [0.079, 0.061], + [0.142, 0.021], + [0.892, 0.037], + [0.849, 0.1], + [0.788, 0.081], + [0.806, 0.011], + [0.246, 0.077], + [0.183, 0.092], + [0.142, 0.021], + [0.233, 0.003], + [0.806, 0.011], + [0.788, 0.081], + [0.687, 0.077], + [0.672, 0.022], + [0.35, 0.076], + [0.246, 0.077], + [0.233, 0.003], + [0.366, 0.021], + [0.672, 0.022], + [0.687, 0.077], + [0.66, 0.076], + [0.649, 0.022], + [0.377, 0.075], + [0.35, 0.076], + [0.366, 0.021], + [0.389, 0.022], + [0.627, 0.111], + [0.66, 0.076], + [0.687, 0.077], + [0.629, 0.13], + [0.35, 0.076], + [0.377, 0.075], + [0.411, 0.111], + [0.408, 0.131], + [0.73, 0.256], + [0.698, 0.217], + [0.76, 0.193], + [0.789, 0.233], + [0.272, 0.194], + [0.337, 0.219], + [0.305, 0.261], + [0.241, 0.237], + [0.995, 0.168], + [0.909, 0.183], + [0.886, 0.122], + [0.946, 0.08], + [0.141, 0.112], + [0.108, 0.179], + [0.012, 0.155], + [0.079, 0.061], + [0.912, 0.402], + [0.863, 0.339], + [0.894, 0.302], + [0.963, 0.345], + [0.124, 0.316], + [0.161, 0.357], + [0.106, 0.433], + [0.044, 0.367], + [0.963, 0.345], + [0.894, 0.302], + [0.915, 0.26], + [1.0, 0.255], + [0.099, 0.267], + [0.124, 0.316], + [0.044, 0.367], + [0.0, 0.259], + [1.0, 0.255], + [0.915, 0.26], + [0.909, 0.183], + [0.995, 0.168], + [0.108, 0.179], + [0.099, 0.267], + [0.0, 0.259], + [0.012, 0.155], + [0.75, 0.335], + [0.736, 0.312], + [0.766, 0.301], + [0.789, 0.314], + [0.267, 0.31], + [0.301, 0.321], + [0.288, 0.346], + [0.243, 0.326], + [0.789, 0.314], + [0.766, 0.301], + [0.815, 0.276], + [0.846, 0.293], + [0.213, 0.285], + [0.267, 0.31], + [0.243, 0.326], + [0.179, 0.305], + [0.846, 0.293], + [0.815, 0.276], + [0.845, 0.256], + [0.874, 0.266], + [0.18, 0.263], + [0.213, 0.285], + [0.179, 0.305], + [0.147, 0.274], + [0.874, 0.266], + [0.845, 0.256], + [0.859, 0.228], + [0.887, 0.234], + [0.163, 0.232], + [0.18, 0.263], + [0.147, 0.274], + [0.132, 0.238], + [0.842, 0.195], + [0.875, 0.185], + [0.887, 0.234], + [0.859, 0.228], + [0.132, 0.238], + [0.145, 0.183], + [0.177, 0.196], + [0.163, 0.232], + [0.909, 0.183], + [0.915, 0.26], + [0.887, 0.234], + [0.875, 0.185], + [0.132, 0.238], + [0.099, 0.267], + [0.108, 0.179], + [0.145, 0.183], + [0.915, 0.26], + [0.894, 0.302], + [0.874, 0.266], + [0.887, 0.234], + [0.147, 0.274], + [0.124, 0.316], + [0.099, 0.267], + [0.132, 0.238], + [0.894, 0.302], + [0.863, 0.339], + [0.846, 0.293], + [0.874, 0.266], + [0.179, 0.305], + [0.161, 0.357], + [0.124, 0.316], + [0.147, 0.274], + [0.863, 0.339], + [0.794, 0.364], + [0.789, 0.314], + [0.846, 0.293], + [0.243, 0.326], + [0.24, 0.383], + [0.161, 0.357], + [0.179, 0.305], + [0.77, 0.38], + [0.75, 0.335], + [0.789, 0.314], + [0.794, 0.364], + [0.243, 0.326], + [0.288, 0.346], + [0.268, 0.399], + [0.24, 0.383], + [0.845, 0.45], + [0.794, 0.364], + [0.863, 0.339], + [0.912, 0.402], + [0.161, 0.357], + [0.24, 0.383], + [0.185, 0.484], + [0.106, 0.433], + [0.816, 0.445], + [0.771, 0.444], + [0.756, 0.419], + [0.77, 0.38], + [0.287, 0.443], + [0.271, 0.473], + [0.219, 0.477], + [0.268, 0.399], + [0.816, 0.445], + [0.77, 0.38], + [0.794, 0.364], + [0.845, 0.45], + [0.24, 0.383], + [0.268, 0.399], + [0.219, 0.477], + [0.185, 0.484], + [0.82, 0.468], + [0.816, 0.445], + [0.845, 0.45], + [0.185, 0.484], + [0.219, 0.477], + [0.216, 0.504], + [0.736, 0.312], + [0.73, 0.256], + [0.789, 0.233], + [0.766, 0.301], + [0.241, 0.237], + [0.305, 0.261], + [0.301, 0.321], + [0.267, 0.31], + [0.789, 0.233], + [0.81, 0.234], + [0.815, 0.276], + [0.766, 0.301], + [0.213, 0.285], + [0.219, 0.237], + [0.241, 0.237], + [0.267, 0.31], + [0.81, 0.234], + [0.829, 0.22], + [0.845, 0.256], + [0.815, 0.276], + [0.18, 0.263], + [0.199, 0.222], + [0.219, 0.237], + [0.213, 0.285], + [0.842, 0.195], + [0.859, 0.228], + [0.845, 0.256], + [0.829, 0.22], + [0.18, 0.263], + [0.163, 0.232], + [0.177, 0.196], + [0.199, 0.222], + [0.687, 0.077], + [0.788, 0.081], + [0.786, 0.118], + [0.715, 0.14], + [0.247, 0.115], + [0.246, 0.077], + [0.35, 0.076], + [0.32, 0.139], + [0.76, 0.193], + [0.715, 0.14], + [0.786, 0.118], + [0.785, 0.152], + [0.247, 0.115], + [0.32, 0.139], + [0.272, 0.194], + [0.246, 0.151], + [0.698, 0.217], + [0.663, 0.191], + [0.715, 0.14], + [0.76, 0.193], + [0.32, 0.139], + [0.373, 0.192], + [0.337, 0.219], + [0.272, 0.194], + [0.663, 0.191], + [0.623, 0.147], + [0.629, 0.13], + [0.715, 0.14], + [0.408, 0.131], + [0.414, 0.147], + [0.373, 0.192], + [0.32, 0.139], + [0.629, 0.13], + [0.687, 0.077], + [0.715, 0.14], + [0.32, 0.139], + [0.35, 0.076], + [0.408, 0.131], + [0.663, 0.191], + [0.619, 0.16], + [0.623, 0.147], + [0.414, 0.147], + [0.418, 0.16], + [0.373, 0.192], + [0.842, 0.195], + [0.837, 0.156], + [0.858, 0.138], + [0.875, 0.185], + [0.172, 0.132], + [0.197, 0.155], + [0.177, 0.196], + [0.145, 0.183], + [0.909, 0.183], + [0.875, 0.185], + [0.858, 0.138], + [0.886, 0.122], + [0.172, 0.132], + [0.145, 0.183], + [0.108, 0.179], + [0.141, 0.112], + [0.785, 0.152], + [0.786, 0.118], + [0.858, 0.138], + [0.837, 0.156], + [0.172, 0.132], + [0.247, 0.115], + [0.246, 0.151], + [0.197, 0.155], + [0.788, 0.081], + [0.849, 0.1], + [0.858, 0.138], + [0.786, 0.118], + [0.172, 0.132], + [0.183, 0.092], + [0.246, 0.077], + [0.247, 0.115], + [0.886, 0.122], + [0.858, 0.138], + [0.849, 0.1], + [0.183, 0.092], + [0.172, 0.132], + [0.141, 0.112], + [0.506, 0.905], + [0.432, 0.895], + [0.439, 0.87], + [0.491, 0.882], + [0.316, 0.868], + [0.322, 0.893], + [0.247, 0.901], + [0.263, 0.878], + [0.506, 0.905], + [0.491, 0.882], + [0.573, 0.86], + [0.605, 0.88], + [0.181, 0.855], + [0.263, 0.878], + [0.247, 0.901], + [0.149, 0.873], + [0.605, 0.88], + [0.573, 0.86], + [0.586, 0.794], + [0.62, 0.792], + [0.17, 0.787], + [0.181, 0.855], + [0.149, 0.873], + [0.136, 0.784], + [0.62, 0.792], + [0.586, 0.794], + [0.549, 0.746], + [0.564, 0.739], + [0.209, 0.741], + [0.17, 0.787], + [0.136, 0.784], + [0.194, 0.733], + [0.564, 0.739], + [0.549, 0.746], + [0.5, 0.712], + [0.508, 0.698], + [0.258, 0.707], + [0.209, 0.741], + [0.194, 0.733], + [0.251, 0.693], + [0.508, 0.698], + [0.5, 0.712], + [0.439, 0.681], + [0.435, 0.659], + [0.321, 0.678], + [0.258, 0.707], + [0.251, 0.693], + [0.325, 0.656], + [0.5, 0.712], + [0.506, 0.731], + [0.453, 0.7], + [0.439, 0.681], + [0.306, 0.697], + [0.253, 0.727], + [0.258, 0.707], + [0.321, 0.678], + [0.549, 0.746], + [0.543, 0.756], + [0.506, 0.731], + [0.5, 0.712], + [0.253, 0.727], + [0.215, 0.75], + [0.209, 0.741], + [0.258, 0.707], + [0.586, 0.794], + [0.568, 0.787], + [0.543, 0.756], + [0.549, 0.746], + [0.215, 0.75], + [0.188, 0.781], + [0.17, 0.787], + [0.209, 0.741], + [0.573, 0.86], + [0.555, 0.826], + [0.568, 0.787], + [0.586, 0.794], + [0.188, 0.781], + [0.2, 0.821], + [0.181, 0.855], + [0.17, 0.787], + [0.491, 0.882], + [0.501, 0.844], + [0.555, 0.826], + [0.573, 0.86], + [0.2, 0.821], + [0.254, 0.841], + [0.263, 0.878], + [0.181, 0.855], + [0.491, 0.882], + [0.439, 0.87], + [0.458, 0.84], + [0.501, 0.844], + [0.298, 0.837], + [0.316, 0.868], + [0.263, 0.878], + [0.254, 0.841], + [0.76, 0.193], + [0.785, 0.152], + [0.796, 0.177], + [0.783, 0.187], + [0.234, 0.176], + [0.246, 0.151], + [0.272, 0.194], + [0.247, 0.187], + [0.391, 0.612], + [0.435, 0.659], + [0.439, 0.681], + [0.395, 0.686], + [0.321, 0.678], + [0.325, 0.656], + [0.37, 0.61], + [0.365, 0.684], + [0.789, 0.233], + [0.76, 0.193], + [0.783, 0.187], + [0.81, 0.234], + [0.247, 0.187], + [0.272, 0.194], + [0.241, 0.237], + [0.219, 0.237], + [0.392, 0.862], + [0.402, 0.841], + [0.439, 0.87], + [0.432, 0.895], + [0.316, 0.868], + [0.354, 0.84], + [0.363, 0.861], + [0.322, 0.893], + [0.439, 0.681], + [0.453, 0.7], + [0.435, 0.718], + [0.395, 0.686], + [0.324, 0.716], + [0.306, 0.697], + [0.321, 0.678], + [0.365, 0.684], + [0.434, 0.73], + [0.385, 0.71], + [0.395, 0.686], + [0.435, 0.718], + [0.365, 0.684], + [0.374, 0.709], + [0.325, 0.727], + [0.324, 0.716], + [0.411, 0.748], + [0.385, 0.71], + [0.434, 0.73], + [0.428, 0.743], + [0.325, 0.727], + [0.374, 0.709], + [0.347, 0.746], + [0.33, 0.741], + [0.418, 0.785], + [0.385, 0.795], + [0.385, 0.71], + [0.411, 0.748], + [0.374, 0.709], + [0.372, 0.794], + [0.339, 0.783], + [0.347, 0.746], + [0.402, 0.841], + [0.385, 0.795], + [0.418, 0.785], + [0.431, 0.818], + [0.339, 0.783], + [0.372, 0.794], + [0.354, 0.84], + [0.325, 0.815], + [0.439, 0.87], + [0.402, 0.841], + [0.431, 0.818], + [0.458, 0.84], + [0.325, 0.815], + [0.354, 0.84], + [0.316, 0.868], + [0.298, 0.837], + [0.81, 0.234], + [0.816, 0.203], + [0.825, 0.21], + [0.829, 0.22], + [0.2, 0.215], + [0.21, 0.206], + [0.219, 0.237], + [0.199, 0.222], + [0.81, 0.234], + [0.783, 0.187], + [0.802, 0.185], + [0.816, 0.203], + [0.226, 0.183], + [0.247, 0.187], + [0.219, 0.237], + [0.21, 0.206], + [0.783, 0.187], + [0.796, 0.177], + [0.802, 0.185], + [0.226, 0.183], + [0.234, 0.176], + [0.247, 0.187], + [0.458, 0.84], + [0.431, 0.818], + [0.449, 0.805], + [0.473, 0.825], + [0.308, 0.802], + [0.325, 0.815], + [0.298, 0.837], + [0.282, 0.822], + [0.431, 0.818], + [0.418, 0.785], + [0.436, 0.78], + [0.449, 0.805], + [0.321, 0.777], + [0.339, 0.783], + [0.325, 0.815], + [0.308, 0.802], + [0.418, 0.785], + [0.411, 0.748], + [0.424, 0.754], + [0.436, 0.78], + [0.334, 0.752], + [0.347, 0.746], + [0.339, 0.783], + [0.321, 0.777], + [0.411, 0.748], + [0.428, 0.743], + [0.438, 0.75], + [0.424, 0.754], + [0.32, 0.747], + [0.33, 0.741], + [0.347, 0.746], + [0.334, 0.752], + [0.428, 0.743], + [0.434, 0.73], + [0.445, 0.732], + [0.438, 0.75], + [0.313, 0.729], + [0.325, 0.727], + [0.33, 0.741], + [0.32, 0.747], + [0.434, 0.73], + [0.435, 0.718], + [0.441, 0.724], + [0.445, 0.732], + [0.318, 0.722], + [0.324, 0.716], + [0.325, 0.727], + [0.313, 0.729], + [0.435, 0.718], + [0.453, 0.7], + [0.455, 0.714], + [0.441, 0.724], + [0.303, 0.711], + [0.306, 0.697], + [0.324, 0.716], + [0.318, 0.722], + [0.501, 0.844], + [0.458, 0.84], + [0.473, 0.825], + [0.512, 0.829], + [0.282, 0.822], + [0.298, 0.837], + [0.254, 0.841], + [0.243, 0.825], + [0.555, 0.826], + [0.501, 0.844], + [0.512, 0.829], + [0.551, 0.812], + [0.243, 0.825], + [0.254, 0.841], + [0.2, 0.821], + [0.205, 0.806], + [0.568, 0.787], + [0.555, 0.826], + [0.551, 0.812], + [0.552, 0.788], + [0.205, 0.806], + [0.2, 0.821], + [0.188, 0.781], + [0.204, 0.782], + [0.543, 0.756], + [0.568, 0.787], + [0.552, 0.788], + [0.539, 0.765], + [0.204, 0.782], + [0.188, 0.781], + [0.215, 0.75], + [0.218, 0.759], + [0.506, 0.731], + [0.543, 0.756], + [0.539, 0.765], + [0.508, 0.743], + [0.218, 0.759], + [0.215, 0.75], + [0.253, 0.727], + [0.249, 0.739], + [0.453, 0.7], + [0.506, 0.731], + [0.508, 0.743], + [0.455, 0.714], + [0.249, 0.739], + [0.253, 0.727], + [0.306, 0.697], + [0.303, 0.711], + [0.438, 0.75], + [0.445, 0.732], + [0.471, 0.748], + [0.455, 0.762], + [0.287, 0.745], + [0.313, 0.729], + [0.32, 0.747], + [0.303, 0.759], + [0.455, 0.762], + [0.471, 0.748], + [0.489, 0.77], + [0.475, 0.784], + [0.268, 0.767], + [0.287, 0.745], + [0.303, 0.759], + [0.281, 0.781], + [0.475, 0.784], + [0.489, 0.77], + [0.504, 0.788], + [0.494, 0.802], + [0.253, 0.783], + [0.268, 0.767], + [0.281, 0.781], + [0.262, 0.799], + [0.494, 0.802], + [0.504, 0.788], + [0.519, 0.792], + [0.517, 0.807], + [0.238, 0.787], + [0.253, 0.783], + [0.262, 0.799], + [0.239, 0.803], + [0.512, 0.829], + [0.473, 0.825], + [0.494, 0.802], + [0.517, 0.807], + [0.262, 0.799], + [0.282, 0.822], + [0.243, 0.825], + [0.239, 0.803], + [0.449, 0.805], + [0.475, 0.784], + [0.494, 0.802], + [0.473, 0.825], + [0.262, 0.799], + [0.281, 0.781], + [0.308, 0.802], + [0.282, 0.822], + [0.449, 0.805], + [0.436, 0.78], + [0.455, 0.762], + [0.475, 0.784], + [0.303, 0.759], + [0.321, 0.777], + [0.308, 0.802], + [0.281, 0.781], + [0.438, 0.75], + [0.455, 0.762], + [0.436, 0.78], + [0.424, 0.754], + [0.321, 0.777], + [0.303, 0.759], + [0.32, 0.747], + [0.334, 0.752], + [0.441, 0.724], + [0.455, 0.714], + [0.471, 0.748], + [0.445, 0.732], + [0.287, 0.745], + [0.303, 0.711], + [0.318, 0.722], + [0.313, 0.729], + [0.508, 0.743], + [0.489, 0.77], + [0.471, 0.748], + [0.455, 0.714], + [0.287, 0.745], + [0.268, 0.767], + [0.249, 0.739], + [0.303, 0.711], + [0.539, 0.765], + [0.504, 0.788], + [0.489, 0.77], + [0.508, 0.743], + [0.268, 0.767], + [0.253, 0.783], + [0.218, 0.759], + [0.249, 0.739], + [0.552, 0.788], + [0.519, 0.792], + [0.504, 0.788], + [0.539, 0.765], + [0.253, 0.783], + [0.238, 0.787], + [0.204, 0.782], + [0.218, 0.759], + [0.551, 0.812], + [0.517, 0.807], + [0.519, 0.792], + [0.552, 0.788], + [0.238, 0.787], + [0.239, 0.803], + [0.205, 0.806], + [0.204, 0.782], + [0.512, 0.829], + [0.517, 0.807], + [0.551, 0.812], + [0.205, 0.806], + [0.239, 0.803], + [0.243, 0.825], + [0.508, 0.698], + [0.435, 0.659], + [0.484, 0.629], + [0.543, 0.684], + [0.277, 0.625], + [0.325, 0.656], + [0.251, 0.693], + [0.216, 0.678], + [0.564, 0.739], + [0.508, 0.698], + [0.543, 0.684], + [0.581, 0.727], + [0.216, 0.678], + [0.251, 0.693], + [0.194, 0.733], + [0.177, 0.72], + [0.62, 0.792], + [0.564, 0.739], + [0.581, 0.727], + [0.617, 0.76], + [0.177, 0.72], + [0.194, 0.733], + [0.136, 0.784], + [0.14, 0.752], + [0.707, 0.76], + [0.62, 0.792], + [0.617, 0.76], + [0.661, 0.741], + [0.14, 0.752], + [0.136, 0.784], + [0.05, 0.749], + [0.097, 0.732], + [0.746, 0.652], + [0.707, 0.76], + [0.661, 0.741], + [0.677, 0.67], + [0.097, 0.732], + [0.05, 0.749], + [0.019, 0.64], + [0.084, 0.662], + [0.741, 0.572], + [0.746, 0.652], + [0.677, 0.67], + [0.671, 0.593], + [0.084, 0.662], + [0.019, 0.64], + [0.034, 0.564], + [0.093, 0.59], + [0.677, 0.67], + [0.543, 0.684], + [0.484, 0.629], + [0.671, 0.593], + [0.277, 0.625], + [0.216, 0.678], + [0.084, 0.662], + [0.093, 0.59], + [0.677, 0.67], + [0.661, 0.741], + [0.581, 0.727], + [0.543, 0.684], + [0.177, 0.72], + [0.097, 0.732], + [0.084, 0.662], + [0.216, 0.678], + [0.661, 0.741], + [0.617, 0.76], + [0.581, 0.727], + [0.177, 0.72], + [0.14, 0.752], + [0.097, 0.732], + [0.842, 0.195], + [0.829, 0.22], + [0.835, 0.207], + [0.835, 0.207], + [0.034, 0.564], + [0.051, 0.523], + [0.145, 0.563], + [0.093, 0.59], + [0.62, 0.566], + [0.671, 0.593], + [0.484, 0.629], + [0.498, 0.552], + [0.277, 0.625], + [0.093, 0.59], + [0.145, 0.563], + [0.264, 0.55], + [0.391, 0.612], + [0.498, 0.552], + [0.484, 0.629], + [0.435, 0.659], + [0.277, 0.625], + [0.264, 0.55], + [0.37, 0.61], + [0.325, 0.656] + ] + } +} \ No newline at end of file diff --git a/src/scripts/write_selected.py b/src/scripts/write_selected.py index 9063cdd55a238fb2046411c5320d1ef04cbe2dd6..f9fa13746e41cce69e927917e2e07ed8f1041953 100644 --- a/src/scripts/write_selected.py +++ b/src/scripts/write_selected.py @@ -6,11 +6,14 @@ import json import math import os +import sys + C = bpy.context -DIR = os.path.dirname(os.path.abspath(__file__)) -OBJECTS_VERTEX_FPATH = os.path.join(DIR, '../src/resources/objects/objects-vertices.js') -OBJECTS_INFO_PATH = os.path.join(DIR, '../src/resources/objects/objects-data.js') +DIR = os.path.join(bpy.path.abspath("//"), "../kode/src/resources/objects/") +DIR = os.path.normpath(DIR) +OBJECTS_VERTEX_FPATH = os.path.join(DIR, 'objects-vertices.js') +OBJECTS_INFO_PATH = os.path.join(DIR, 'objects-data.js') def write_selected(): # C = Convenience variables for bpy.context @@ -24,12 +27,27 @@ def write_selected(): vertices = [] indices = [] + uv_coordinates = [] for idx, vertex in enumerate(obj.data.vertices): vertices.append(list(map(lambda i: round(i, 3), vertex.co[0:3]))) for i in range(len(obj.data.polygons)): indices.append(list(obj.data.polygons[i].vertices)) + + uv_maps = obj.data.uv_layers + uv_map_exists = len(uv_maps) >= 1 + + if uv_map_exists: + first_uv_map_key = uv_maps.keys()[0] + uv_map = uv_maps[first_uv_map_key] + coords = uv_map.data + + # Assume the UV map coords corresponds to information in indices + + for i in range(len(coords)): + coord = list(map(lambda i: round(i, 3), coords[i].uv)) + uv_coordinates.append(coord) # Print object loc rot scale obj_info = {} @@ -69,9 +87,11 @@ def write_selected(): "vertices": vertices, "indices": indices } + if len(uv_coordinates) > 0: + objs_verts_data[obj.name]["uv_coordinates"] = uv_coordinates with open(OBJECTS_INFO_PATH, "w+") as outfile: - outfile.write("var objects_info = " + json.dumps(objs_info_data)) + outfile.write("var objects_info = " + json.dumps(objs_info_data, sort_keys=True, indent=4)) with open(OBJECTS_VERTEX_FPATH, "w+") as outfile: outfile.write("var objects_vertices = " + json.dumps(objs_verts_data))