├── .gitignore ├── LICENSE ├── README.md ├── bundle.js ├── lib ├── Detector.js └── THREE.MeshLine.js ├── package-lock.json ├── package.json ├── public ├── index.html └── static │ ├── app.css │ ├── images │ └── spinner.svg │ └── meshes │ ├── balloon.json │ ├── boat01.json │ ├── church01.json │ ├── model.json │ ├── pier01.json │ ├── plane.json │ └── tree.json ├── resources ├── balloon.fbx ├── blimp.lxo ├── church.c4d ├── dae │ ├── balloon.dae │ ├── boat01.dae │ ├── church01.dae │ ├── pier01.dae │ ├── plane.dae │ └── tree.dae ├── pier.blend ├── plane.lxo ├── tree.fbx └── tree.lxo ├── src ├── FBXLoader.js ├── ImprovedNoise.js ├── classes │ ├── bird.js │ ├── heightmap.js │ ├── mathf.js │ ├── player.js │ ├── random.js │ └── terrain-patch.js ├── index.js └── shaders │ ├── landscape_frag.glsl │ ├── landscape_vert.glsl │ ├── standard_frag.glsl │ └── standard_vert.glsl ├── webpack.common.js ├── webpack.dev.js └── webpack.prod.js /.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Alexander Perrin 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Ballooning with Three.js 2 | This was developed as a study into procedural terrains, buffer geometry optimisation and shadow mappers with Three.js and WebGL. 3 | I had some grand plans for the application, but they were never realised so it's probably more useful to just release it as it is for others to take a look! 4 | There are plenty of issues with it and it's pretty rough having been developed over 2 years ago now, but if it's some use to anyone that's great. 5 | 6 | Example at https://alexanderperrin.com.au/triangles/ballooning. 7 | 8 | Use the arrow keys or the left and right sides of the screen on touch devices to move the balloon. 9 | 10 | ## Features 11 | - Procedurally generated infinite terrain & tree placement 12 | - Happy flapping birds 13 | - Shoreline boathouse placement 14 | - Pleasant mountain ballooning 15 | - Statically batched tree rendering 16 | - Runs on desktop and mobile 17 | 18 | ## Development 19 | Feel free to have a dig around in the code and change things. I've setup a [webpack](https://webpack.js.org/) development environment with hot module replacement that you can use to quickly iterate the application. 20 | - Ensure that you have node and npm installed on your machine. You can follow the official instructions at https://www.npmjs.com/get-npm 21 | - Clone the repository into your desired project folder 22 | - Run `npm install` from within the project folder to install dependencies 23 | - Ensure webpack-cli is either available globally or installed locally (`npm install --save-dev webpack-cli`) 24 | - Run `npm start`. This will spin up a webpack development server running at http://localhost:8080 25 | - Change the code you like and see what happens! 26 | 27 | ## Building 28 | - Run `npm run build` to build a production ready version of the web app. 29 | - Contents will be processed into /dist, which you can upload to your web server. 30 | 31 | ## License 32 | MIT 33 | 34 | ## Warranty 35 | None whatsoever. 36 | -------------------------------------------------------------------------------- /lib/Detector.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author alteredq / http://alteredqualia.com/ 3 | * @author mr.doob / http://mrdoob.com/ 4 | */ 5 | 6 | var Detector = { 7 | 8 | canvas: !! window.CanvasRenderingContext2D, 9 | webgl: ( function () { 10 | 11 | try { 12 | 13 | var canvas = document.createElement( 'canvas' ); return !! ( window.WebGLRenderingContext && ( canvas.getContext( 'webgl' ) || canvas.getContext( 'experimental-webgl' ) ) ); 14 | 15 | } catch ( e ) { 16 | 17 | return false; 18 | 19 | } 20 | 21 | } )(), 22 | workers: !! window.Worker, 23 | fileapi: window.File && window.FileReader && window.FileList && window.Blob, 24 | 25 | getWebGLErrorMessage: function () { 26 | 27 | var element = document.createElement( 'div' ); 28 | element.id = 'webgl-error-message'; 29 | element.style.fontFamily = 'monospace'; 30 | element.style.fontSize = '13px'; 31 | element.style.fontWeight = 'normal'; 32 | element.style.textAlign = 'center'; 33 | element.style.background = '#fff'; 34 | element.style.color = '#000'; 35 | element.style.padding = '1.5em'; 36 | element.style.width = '400px'; 37 | element.style.margin = '5em auto 0'; 38 | 39 | if ( ! this.webgl ) { 40 | 41 | element.innerHTML = window.WebGLRenderingContext ? [ 42 | 'Your graphics card does not seem to support WebGL.
', 43 | 'Find out how to get it here.' 44 | ].join( '\n' ) : [ 45 | 'Your browser does not seem to support WebGL.
', 46 | 'Find out how to get it here.' 47 | ].join( '\n' ); 48 | 49 | } 50 | 51 | return element; 52 | 53 | }, 54 | 55 | addGetWebGLMessage: function ( parameters ) { 56 | 57 | var parent, id, element; 58 | 59 | parameters = parameters || {}; 60 | 61 | parent = parameters.parent !== undefined ? parameters.parent : document.body; 62 | id = parameters.id !== undefined ? parameters.id : 'oldie'; 63 | 64 | element = Detector.getWebGLErrorMessage(); 65 | element.id = id; 66 | 67 | parent.appendChild( element ); 68 | 69 | } 70 | 71 | }; 72 | 73 | // browserify support 74 | if ( typeof module === 'object' ) { 75 | 76 | module.exports = Detector; 77 | 78 | } 79 | -------------------------------------------------------------------------------- /lib/THREE.MeshLine.js: -------------------------------------------------------------------------------- 1 | ( function () { 2 | 3 | THREE.MeshLine = function () { 4 | 5 | this.positions = []; 6 | 7 | this.previous = []; 8 | this.next = []; 9 | this.side = []; 10 | this.width = []; 11 | this.indices_array = []; 12 | this.uvs = []; 13 | this.counters = []; 14 | this.geometry = new THREE.BufferGeometry(); 15 | 16 | this.widthCallback = null; 17 | 18 | } 19 | 20 | THREE.MeshLine.prototype.setGeometry = function ( g, c ) { 21 | 22 | this.widthCallback = c; 23 | 24 | this.positions = []; 25 | this.counters = []; 26 | 27 | if ( g instanceof THREE.Geometry ) { 28 | for ( var j = 0; j < g.vertices.length; j++ ) { 29 | var v = g.vertices[ j ]; 30 | var c = j / g.vertices.length; 31 | this.positions.push( v.x, v.y, v.z ); 32 | this.positions.push( v.x, v.y, v.z ); 33 | this.counters.push( c ); 34 | this.counters.push( c ); 35 | } 36 | } 37 | 38 | if ( g instanceof THREE.BufferGeometry ) { 39 | // read attribute positions ? 40 | } 41 | 42 | if ( g instanceof Float32Array ||  g instanceof Array ) { 43 | for ( var j = 0; j < g.length; j += 3 ) { 44 | var c = j / g.length; 45 | this.positions.push( g[ j ], g[ j + 1 ], g[ j + 2 ] ); 46 | this.positions.push( g[ j ], g[ j + 1 ], g[ j + 2 ] ); 47 | this.counters.push( c ); 48 | this.counters.push( c ); 49 | } 50 | } 51 | 52 | this.process(); 53 | 54 | } 55 | 56 | THREE.MeshLine.prototype.compareV3 = function ( a, b ) { 57 | 58 | var aa = a * 6; 59 | var ab = b * 6; 60 | return ( this.positions[ aa ] === this.positions[ ab ] ) && ( this.positions[ aa + 1 ] === this.positions[ ab + 1 ] ) && ( this.positions[ aa + 2 ] === this.positions[ ab + 2 ] ); 61 | 62 | } 63 | 64 | THREE.MeshLine.prototype.copyV3 = function ( a ) { 65 | 66 | var aa = a * 6; 67 | return [ this.positions[ aa ], this.positions[ aa + 1 ], this.positions[ aa + 2 ] ]; 68 | 69 | } 70 | 71 | THREE.MeshLine.prototype.process = function () { 72 | 73 | var l = this.positions.length / 6; 74 | 75 | this.previous = []; 76 | this.next = []; 77 | this.side = []; 78 | this.width = []; 79 | this.indices_array = []; 80 | this.uvs = []; 81 | 82 | for ( var j = 0; j < l; j++ ) { 83 | this.side.push( 1 ); 84 | this.side.push( -1 ); 85 | } 86 | 87 | var w; 88 | for ( var j = 0; j < l; j++ ) { 89 | if ( this.widthCallback ) w = this.widthCallback( j / ( l - 1 ) ); 90 | else w = 1; 91 | this.width.push( w ); 92 | this.width.push( w ); 93 | } 94 | 95 | for ( var j = 0; j < l; j++ ) { 96 | this.uvs.push( j / ( l - 1 ), 0 ); 97 | this.uvs.push( j / ( l - 1 ), 1 ); 98 | } 99 | 100 | var v; 101 | 102 | if ( this.compareV3( 0, l - 1 ) ) { 103 | v = this.copyV3( l - 2 ); 104 | } else { 105 | v = this.copyV3( 0 ); 106 | } 107 | this.previous.push( v[ 0 ], v[ 1 ], v[ 2 ] ); 108 | this.previous.push( v[ 0 ], v[ 1 ], v[ 2 ] ); 109 | for ( var j = 0; j < l - 1; j++ ) { 110 | v = this.copyV3( j ); 111 | this.previous.push( v[ 0 ], v[ 1 ], v[ 2 ] ); 112 | this.previous.push( v[ 0 ], v[ 1 ], v[ 2 ] ); 113 | } 114 | 115 | for ( var j = 1; j < l; j++ ) { 116 | v = this.copyV3( j ); 117 | this.next.push( v[ 0 ], v[ 1 ], v[ 2 ] ); 118 | this.next.push( v[ 0 ], v[ 1 ], v[ 2 ] ); 119 | } 120 | 121 | if ( this.compareV3( l - 1, 0 ) ) { 122 | v = this.copyV3( 1 ); 123 | } else { 124 | v = this.copyV3( l - 1 ); 125 | } 126 | this.next.push( v[ 0 ], v[ 1 ], v[ 2 ] ); 127 | this.next.push( v[ 0 ], v[ 1 ], v[ 2 ] ); 128 | 129 | for ( var j = 0; j < l - 1; j++ ) { 130 | var n = j * 2; 131 | this.indices_array.push( n, n + 1, n + 2 ); 132 | this.indices_array.push( n + 2, n + 1, n + 3 ); 133 | } 134 | 135 | if ( !this.attributes ) { 136 | this.attributes = { 137 | position: new THREE.BufferAttribute( new Float32Array( this.positions ), 3 ), 138 | previous: new THREE.BufferAttribute( new Float32Array( this.previous ), 3 ), 139 | next: new THREE.BufferAttribute( new Float32Array( this.next ), 3 ), 140 | side: new THREE.BufferAttribute( new Float32Array( this.side ), 1 ), 141 | width: new THREE.BufferAttribute( new Float32Array( this.width ), 1 ), 142 | uv: new THREE.BufferAttribute( new Float32Array( this.uvs ), 2 ), 143 | index: new THREE.BufferAttribute( new Uint16Array( this.indices_array ), 1 ), 144 | counters: new THREE.BufferAttribute( new Float32Array( this.counters ), 1 ) 145 | } 146 | } else { 147 | this.attributes.position.copyArray( new Float32Array( this.positions ) ); 148 | this.attributes.position.needsUpdate = true; 149 | this.attributes.previous.copyArray( new Float32Array( this.previous ) ); 150 | this.attributes.previous.needsUpdate = true; 151 | this.attributes.next.copyArray( new Float32Array( this.next ) ); 152 | this.attributes.next.needsUpdate = true; 153 | this.attributes.side.copyArray( new Float32Array( this.side ) ); 154 | this.attributes.side.needsUpdate = true; 155 | this.attributes.width.copyArray( new Float32Array( this.width ) ); 156 | this.attributes.width.needsUpdate = true; 157 | this.attributes.uv.copyArray( new Float32Array( this.uvs ) ); 158 | this.attributes.uv.needsUpdate = true; 159 | this.attributes.index.copyArray( new Uint16Array( this.indices_array ) ); 160 | this.attributes.index.needsUpdate = true; 161 | } 162 | 163 | this.geometry.addAttribute( 'position', this.attributes.position ); 164 | this.geometry.addAttribute( 'previous', this.attributes.previous ); 165 | this.geometry.addAttribute( 'next', this.attributes.next ); 166 | this.geometry.addAttribute( 'side', this.attributes.side ); 167 | this.geometry.addAttribute( 'width', this.attributes.width ); 168 | this.geometry.addAttribute( 'uv', this.attributes.uv ); 169 | this.geometry.addAttribute( 'counters', this.attributes.counters ); 170 | 171 | this.geometry.setIndex( this.attributes.index ); 172 | 173 | } 174 | 175 | function memcpy( src, srcOffset, dst, dstOffset, length ) { 176 | var i 177 | 178 | src = src.subarray || src.slice ? src : src.buffer 179 | dst = dst.subarray || dst.slice ? dst : dst.buffer 180 | 181 | src = srcOffset ? src.subarray ? 182 | src.subarray( srcOffset, length && srcOffset + length ) : 183 | src.slice( srcOffset, length && srcOffset + length ) : src 184 | 185 | if ( dst.set ) { 186 | dst.set( src, dstOffset ) 187 | } else { 188 | for ( i = 0; i < src.length; i++ ) { 189 | dst[ i + dstOffset ] = src[ i ] 190 | } 191 | } 192 | 193 | return dst 194 | } 195 | 196 | /** 197 | * Fast method to advance the line by one position. The oldest position is removed. 198 | * @param position 199 | */ 200 | THREE.MeshLine.prototype.advance = function ( position ) { 201 | 202 | var positions = this.attributes.position.array; 203 | var previous = this.attributes.previous.array; 204 | var next = this.attributes.next.array; 205 | var l = positions.length; 206 | 207 | // PREVIOUS 208 | memcpy( positions, 0, previous, 0, l ); 209 | 210 | // POSITIONS 211 | memcpy( positions, 6, positions, 0, l - 6 ); 212 | 213 | positions[ l - 6 ] = position.x; 214 | positions[ l - 5 ] = position.y; 215 | positions[ l - 4 ] = position.z; 216 | positions[ l - 3 ] = position.x; 217 | positions[ l - 2 ] = position.y; 218 | positions[ l - 1 ] = position.z; 219 | 220 | // NEXT 221 | memcpy( positions, 6, next, 0, l - 6 ); 222 | 223 | next[ l - 6 ] = position.x; 224 | next[ l - 5 ] = position.y; 225 | next[ l - 4 ] = position.z; 226 | next[ l - 3 ] = position.x; 227 | next[ l - 2 ] = position.y; 228 | next[ l - 1 ] = position.z; 229 | 230 | this.attributes.position.needsUpdate = true; 231 | this.attributes.previous.needsUpdate = true; 232 | this.attributes.next.needsUpdate = true; 233 | 234 | }; 235 | 236 | THREE.MeshLineMaterial = function ( parameters ) { 237 | 238 | var vertexShaderSource = [ 239 | 'precision highp float;', 240 | '', 241 | 'attribute vec3 position;', 242 | 'attribute vec3 previous;', 243 | 'attribute vec3 next;', 244 | 'attribute float side;', 245 | 'attribute float width;', 246 | 'attribute vec2 uv;', 247 | 'attribute float counters;', 248 | '', 249 | 'uniform mat4 projectionMatrix;', 250 | 'uniform mat4 modelViewMatrix;', 251 | 'uniform vec2 resolution;', 252 | 'uniform float lineWidth;', 253 | 'uniform vec3 color;', 254 | 'uniform float opacity;', 255 | 'uniform float near;', 256 | 'uniform float far;', 257 | 'uniform float sizeAttenuation;', 258 | '', 259 | 'varying vec2 vUV;', 260 | 'varying vec4 vColor;', 261 | 'varying vec3 vPosition;', 262 | 'varying float vCounters;', 263 | '', 264 | 'vec2 fix( vec4 i, float aspect ) {', 265 | '', 266 | ' vec2 res = i.xy / i.w;', 267 | ' res.x *= aspect;', 268 | ' vCounters = counters;', 269 | ' return res;', 270 | '', 271 | '}', 272 | '', 273 | 'void main() {', 274 | '', 275 | ' float aspect = resolution.x / resolution.y;', 276 | ' float pixelWidthRatio = 1. / (resolution.x * projectionMatrix[0][0]);', 277 | '', 278 | ' vColor = vec4( color, opacity );', 279 | ' vUV = uv;', 280 | '', 281 | ' mat4 m = projectionMatrix * modelViewMatrix;', 282 | ' vec4 finalPosition = m * vec4( position, 1.0 );', 283 | ' vec4 prevPos = m * vec4( previous, 1.0 );', 284 | ' vec4 nextPos = m * vec4( next, 1.0 );', 285 | '', 286 | ' vec2 currentP = fix( finalPosition, aspect );', 287 | ' vec2 prevP = fix( prevPos, aspect );', 288 | ' vec2 nextP = fix( nextPos, aspect );', 289 | '', 290 | ' float pixelWidth = finalPosition.w * pixelWidthRatio;', 291 | ' float w = 1.8 * pixelWidth * lineWidth * width;', 292 | '', 293 | ' if( sizeAttenuation == 1. ) {', 294 | ' w = 1.8 * lineWidth * width;', 295 | ' }', 296 | '', 297 | ' vec2 dir;', 298 | ' if( nextP == currentP ) dir = normalize( currentP - prevP );', 299 | ' else if( prevP == currentP ) dir = normalize( nextP - currentP );', 300 | ' else {', 301 | ' vec2 dir1 = normalize( currentP - prevP );', 302 | ' vec2 dir2 = normalize( nextP - currentP );', 303 | ' dir = normalize( dir1 + dir2 );', 304 | '', 305 | ' vec2 perp = vec2( -dir1.y, dir1.x );', 306 | ' vec2 miter = vec2( -dir.y, dir.x );', 307 | ' //w = clamp( w / dot( miter, perp ), 0., 4. * lineWidth * width );', 308 | '', 309 | ' }', 310 | '', 311 | ' //vec2 normal = ( cross( vec3( dir, 0. ), vec3( 0., 0., 1. ) ) ).xy;', 312 | ' vec2 normal = vec2( -dir.y, dir.x );', 313 | ' normal.x /= aspect;', 314 | ' normal *= .5 * w;', 315 | '', 316 | ' vec4 offset = vec4( normal * side, 0.0, 1.0 );', 317 | ' finalPosition.xy += offset.xy;', 318 | '', 319 | ' vPosition = ( modelViewMatrix * vec4( position, 1. ) ).xyz;', 320 | ' gl_Position = finalPosition;', 321 | '', 322 | '}' ]; 323 | 324 | var fragmentShaderSource = [ 325 | '#extension GL_OES_standard_derivatives : enable', 326 | 'precision mediump float;', 327 | '', 328 | 'uniform sampler2D map;', 329 | 'uniform float useMap;', 330 | 'uniform float useDash;', 331 | 'uniform vec2 dashArray;', 332 | 'uniform float visibility;', 333 | 'uniform float alphaTest;', 334 | '', 335 | 'varying vec2 vUV;', 336 | 'varying vec4 vColor;', 337 | 'varying vec3 vPosition;', 338 | 'varying float vCounters;', 339 | '', 340 | 'void main() {', 341 | '', 342 | ' vec4 c = vColor;', 343 | ' if( c.a < alphaTest ) discard;', 344 | ' if( useMap == 1. ) c *= texture2D( map, vUV );', 345 | ' if( useDash == 1. ){', 346 | ' ', 347 | ' }', 348 | ' gl_FragColor = c;', 349 | ' gl_FragColor.a *= step(vCounters,visibility);', 350 | '}' ]; 351 | 352 | function check( v, d ) { 353 | if ( v === undefined ) return d; 354 | return v; 355 | } 356 | 357 | THREE.Material.call( this ); 358 | 359 | parameters = parameters ||  {}; 360 | 361 | this.lineWidth = check( parameters.lineWidth, 1 ); 362 | this.map = check( parameters.map, null ); 363 | this.useMap = check( parameters.useMap, 0 ); 364 | this.color = check( parameters.color, new THREE.Color( 0xffffff ) ); 365 | this.opacity = check( parameters.opacity, 1 ); 366 | this.resolution = check( parameters.resolution, new THREE.Vector2( 1, 1 ) ); 367 | this.sizeAttenuation = check( parameters.sizeAttenuation, 1 ); 368 | this.near = check( parameters.near, 1 ); 369 | this.far = check( parameters.far, 1 ); 370 | this.dashArray = check( parameters.dashArray, [] ); 371 | this.useDash = ( this.dashArray !== [] ) ? 1 : 0; 372 | this.visibility = check( parameters.visibility, 1 ); 373 | this.alphaTest = check( parameters.alphaTest, 0 ); 374 | 375 | var material = new THREE.RawShaderMaterial( { 376 | uniforms: { 377 | lineWidth: { type: 'f', value: this.lineWidth }, 378 | map: { type: 't', value: this.map }, 379 | useMap: { type: 'f', value: this.useMap }, 380 | color: { type: 'c', value: this.color }, 381 | opacity: { type: 'f', value: this.opacity }, 382 | resolution: { type: 'v2', value: this.resolution }, 383 | sizeAttenuation: { type: 'f', value: this.sizeAttenuation }, 384 | near: { type: 'f', value: this.near }, 385 | far: { type: 'f', value: this.far }, 386 | dashArray: { type: 'v2', value: new THREE.Vector2( this.dashArray[ 0 ], this.dashArray[ 1 ] ) }, 387 | useDash: { type: 'f', value: this.useDash }, 388 | visibility: { type: 'f', value: this.visibility }, 389 | alphaTest: { type: 'f', value: this.alphaTest } 390 | }, 391 | vertexShader: vertexShaderSource.join( '\r\n' ), 392 | fragmentShader: fragmentShaderSource.join( '\r\n' ) 393 | } ); 394 | 395 | delete parameters.lineWidth; 396 | delete parameters.map; 397 | delete parameters.useMap; 398 | delete parameters.color; 399 | delete parameters.opacity; 400 | delete parameters.resolution; 401 | delete parameters.sizeAttenuation; 402 | delete parameters.near; 403 | delete parameters.far; 404 | delete parameters.dashArray; 405 | delete parameters.visibility; 406 | delete parameters.alphaTest; 407 | 408 | material.type = 'MeshLineMaterial'; 409 | 410 | material.setValues( parameters ); 411 | 412 | return material; 413 | 414 | }; 415 | 416 | THREE.MeshLineMaterial.prototype = Object.create( THREE.Material.prototype ); 417 | THREE.MeshLineMaterial.prototype.constructor = THREE.MeshLineMaterial; 418 | 419 | THREE.MeshLineMaterial.prototype.copy = function ( source ) { 420 | 421 | THREE.Material.prototype.copy.call( this, source ); 422 | 423 | this.lineWidth = source.lineWidth; 424 | this.map = source.map; 425 | this.useMap = source.useMap; 426 | this.color.copy( source.color ); 427 | this.opacity = source.opacity; 428 | this.resolution.copy( source.resolution ); 429 | this.sizeAttenuation = source.sizeAttenuation; 430 | this.near = source.near; 431 | this.far = source.far; 432 | 433 | return this; 434 | 435 | }; 436 | 437 | } )(); 438 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "threejs-ballooning", 3 | "version": "1.0.0", 4 | "description": "Experiment using Three.js", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "webpack-dev-server --open --config webpack.dev.js --host 0.0.0.0", 8 | "build": "webpack --config webpack.prod.js" 9 | }, 10 | "author": "Alexander Perrin", 11 | "license": "ISC", 12 | "devDependencies": { 13 | "babel-core": "^6.26.3", 14 | "babel-loader": "^6.4.1", 15 | "babel-minify-webpack-plugin": "^0.3.1", 16 | "babel-plugin-transform-class-properties": "^6.24.1", 17 | "babel-preset-es2015": "^6.24.1", 18 | "babel-preset-react": "^6.24.1", 19 | "clean-webpack-plugin": "^1.0.1", 20 | "copy-webpack-plugin": "^4.6.0", 21 | "css-loader": "^0.23.1", 22 | "exports-loader": "^0.6.4", 23 | "file-loader": "^0.9.0", 24 | "html-webpack-plugin": "^3.2.0", 25 | "imports-loader": "^0.6.5", 26 | "jquery": "^3.3.1", 27 | "jshint": "^2.10.1", 28 | "json-loader": "^0.5.7", 29 | "seedrandom": "^2.4.2", 30 | "strip-loader": "^0.1.2", 31 | "style-loader": "^0.13.2", 32 | "three": "^0.78.0", 33 | "uglifyjs-webpack-plugin": "^2.1.1", 34 | "underscore": "^1.9.1", 35 | "webpack": "^4.29.3", 36 | "webpack-dev-server": "^3.1.14", 37 | "webpack-glsl-loader": "^1.0.1", 38 | "webpack-merge": "^4.2.1" 39 | }, 40 | "dependencies": {} 41 | } 42 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Three.js Ballooning - Alexander Perrin 5 | 6 | 10 | 11 | 12 | 13 |
14 |
15 |
16 | loading ~ code ~ 17 | 18 |
19 |
20 | 21 | 22 | -------------------------------------------------------------------------------- /public/static/app.css: -------------------------------------------------------------------------------- 1 | @-moz-keyframes spin { 2 | 100% { 3 | -moz-transform: rotate(360deg); 4 | } 5 | } 6 | 7 | @-webkit-keyframes spin { 8 | 100% { 9 | -webkit-transform: rotate(360deg); 10 | } 11 | } 12 | 13 | @keyframes spin { 14 | 100% { 15 | -webkit-transform: rotate(360deg); 16 | transform: rotate(360deg); 17 | } 18 | } 19 | 20 | body { 21 | color: black; 22 | background-color: white; 23 | font-family: sans-serif; 24 | overflow: hidden; 25 | } 26 | 27 | canvas { 28 | -webkit-touch-callout: none; 29 | -webkit-user-select: none; 30 | -khtml-user-select: none; 31 | -moz-user-select: none; 32 | -ms-user-select: none; 33 | user-select: none; 34 | outline: none; 35 | -webkit-tap-highlight-color: rgba(255, 255, 255, 0); /* mobile webkit */ 36 | } 37 | 38 | #heading { 39 | position: absolute; 40 | top: 16px; 41 | left: 16px; 42 | margin-top: 0px; 43 | } 44 | 45 | #canvas-container { 46 | position: absolute; 47 | top: 0px; 48 | left: 0px; 49 | width: 100%; 50 | height: 100%; 51 | } 52 | 53 | #loader { 54 | background-color: white; 55 | position: absolute; 56 | top: 0px; 57 | left: 0px; 58 | width: 100%; 59 | height: 100%; 60 | } 61 | 62 | #loader> .label { 63 | position: absolute; 64 | top: 50%; 65 | left: 50%; 66 | text-align: center; 67 | width: 256px; 68 | height: 48px; 69 | margin-top: -24px; 70 | margin-left: -128px; 71 | color: #ddd; 72 | } 73 | 74 | #loader> .label> .spinner { 75 | display: block; 76 | margin: auto; 77 | width: 48px; 78 | height: 48px; 79 | -webkit-animation: spin 0.25s linear infinite; 80 | -moz-animation: spin 0.25s linear infinite; 81 | animation: spin 0.25s linear infinite; 82 | } 83 | -------------------------------------------------------------------------------- /public/static/images/spinner.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 9 | loading 10 | Created with Sketch. 11 | loading 12 | Created with Sketch. 13 | 15 | 16 | -------------------------------------------------------------------------------- /public/static/meshes/church01.json: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": { 3 | "version": 4.4, 4 | "type": "Object", 5 | "generator": "Object3D.toJSON" 6 | }, 7 | "geometries": [ 8 | { 9 | "uuid": "1241138A-3037-4803-BE0C-B8A22772A673", 10 | "type": "BufferGeometry", 11 | "name": "church", 12 | "data": { 13 | "attributes": { 14 | "position": { 15 | "itemSize": 3, 16 | "type": "Float32Array", 17 | "array": [25.3262996673584,0,-9.125511169433594,-25.3262996673584,0,9.125511169433594,25.3262996673584,0,9.125511169433594,218.9980010986328,0,-20.958200454711914,103.39199829101562,0,20.958200454711914,218.9980010986328,0,20.958200454711914,100.07599639892578,-275.1369934082031,-102.35800170898438,208.79299926757812,-240.48300170898438,-102.35800170898438,208.79299926757812,-275.1369934082031,-102.35800170898438,100.07599639892578,-275.1369934082031,102.35800170898438,208.79299926757812,-240.48300170898438,102.35800170898438,100.07599639892578,-240.48300170898438,102.35800170898438,100.07599639892578,-381.0870056152344,-102.35800170898438,208.79299926757812,-346.4339904785156,-102.35800170898438,208.79299926757812,-381.0870056152344,-102.35800170898438,100.07599639892578,-381.0870056152344,102.35800170898438,208.79299926757812,-346.4339904785156,102.35800170898438,100.07599639892578,-346.4339904785156,102.35800170898438,100.07599639892578,-171.04100036621094,-102.35800170898438,208.79299926757812,-136.38800048828125,-102.35800170898438,208.79299926757812,-171.04100036621094,-102.35800170898438,100.07599639892578,-171.04100036621094,102.35800170898438,208.79299926757812,-136.38800048828125,102.35800170898438,100.07599639892578,-136.38800048828125,102.35800170898438,-42.24689865112305,-3.382430076599121,52.242000579833984,220.59300231933594,-105.09400177001953,52.242000579833984,220.59300231933594,-3.382430076599121,52.242000579833984,-42.24689865112305,-3.382430076599121,-52.242000579833984,220.59300231933594,-3.382430076599121,52.242000579833984,220.59300231933594,-3.382430076599121,-52.242000579833984,-42.24689865112305,-105.09400177001953,-52.242000579833984,220.59300231933594,-3.382430076599121,-52.242000579833984,220.59300231933594,-105.09400177001953,-52.242000579833984,-42.24689865112305,-105.09400177001953,52.242000579833984,220.59300231933594,-105.09400177001953,-52.242000579833984,220.59300231933594,-105.09400177001953,52.242000579833984,-43.45479965209961,-105.09400177001953,52.242000579833984,-264.9620056152344,-58.25590133666992,-4.127120018005371,-43.45479965209961,-105.09400177001953,-52.242000579833984,63.03010177612305,-448.5899963378906,100,-48.504600524902344,-59.08219909667969,0,-48.504600524902344,-448.5899963378906,0,-43.45479965209961,-3.382430076599121,52.242000579833984,-264.9620056152344,-58.25590133666992,-4.127120018005371,-43.45479965209961,-105.09400177001953,52.242000579833984,-43.45479965209961,-3.382430076599121,-52.242000579833984,-264.9620056152344,-58.25590133666992,-4.127120018005371,-43.45479965209961,-3.382430076599121,52.242000579833984,-43.45479965209961,-105.09400177001953,-52.242000579833984,-264.9620056152344,-58.25590133666992,-4.127120018005371,-43.45479965209961,-3.382430076599121,-52.242000579833984,63.03010177612305,-59.08219909667969,100,65.05799865722656,-448.5899963378906,100,65.05799865722656,-59.08219909667969,100,-45.041099548339844,-59.08219909667969,0,63.03010177612305,-59.08219909667969,-100,-48.504600524902344,-59.08219909667969,0,63.03010177612305,-448.5899963378906,-100,65.05799865722656,-59.08219909667969,-100,65.05799865722656,-448.5899963378906,-100,-45.041099548339844,-448.5899963378906,0,63.03010177612305,-448.5899963378906,-100,65.05799865722656,-448.5899963378906,-100,63.03010177612305,-59.08219909667969,-100,-48.504600524902344,-448.5899963378906,0,-48.504600524902344,-59.08219909667969,0,-45.041099548339844,-59.08219909667969,0,63.03010177612305,-59.08219909667969,100,65.05799865722656,-59.08219909667969,100,-45.041099548339844,-448.5899963378906,0,63.03010177612305,-448.5899963378906,100,-48.504600524902344,-448.5899963378906,0,-43.45479965209961,-105.09400177001953,-52.242000579833984,-42.24689865112305,-3.382430076599121,-52.242000579833984,-42.24689865112305,-105.09400177001953,-52.242000579833984,-43.45479965209961,-105.09400177001953,52.242000579833984,-42.24689865112305,-105.09400177001953,-52.242000579833984,-42.24689865112305,-105.09400177001953,52.242000579833984,-43.45479965209961,-3.382430076599121,52.242000579833984,-42.24689865112305,-105.09400177001953,52.242000579833984,-42.24689865112305,-3.382430076599121,52.242000579833984,-43.45479965209961,-3.382430076599121,-52.242000579833984,-42.24689865112305,-3.382430076599121,52.242000579833984,-42.24689865112305,-3.382430076599121,-52.242000579833984,220.59300231933594,-59.08219909667969,0,65.05799865722656,-59.08219909667969,-100,-45.041099548339844,-59.08219909667969,0,65.05799865722656,-59.08219909667969,100,220.59300231933594,-59.08219909667969,0,-45.041099548339844,-59.08219909667969,0,220.59300231933594,-448.5899963378906,100,65.05799865722656,-59.08219909667969,100,65.05799865722656,-448.5899963378906,100,220.59300231933594,-448.5899963378906,0,65.05799865722656,-448.5899963378906,100,-45.041099548339844,-448.5899963378906,0,65.05799865722656,-448.5899963378906,-100,220.59300231933594,-448.5899963378906,0,-45.041099548339844,-448.5899963378906,0,220.59300231933594,-59.08219909667969,-100,65.05799865722656,-448.5899963378906,-100,65.05799865722656,-59.08219909667969,-100,25.3262996673584,0,-9.125511169433594,-25.3262996673584,0,-9.125511169433594,-25.3262996673584,0,9.125511169433594,218.9980010986328,0,-20.958200454711914,103.39199829101562,0,-20.958200454711914,103.39199829101562,0,20.958200454711914,100.07599639892578,-275.1369934082031,-102.35800170898438,100.07599639892578,-240.48300170898438,-102.35800170898438,208.79299926757812,-240.48300170898438,-102.35800170898438,100.07599639892578,-275.1369934082031,102.35800170898438,208.79299926757812,-275.1369934082031,102.35800170898438,208.79299926757812,-240.48300170898438,102.35800170898438,100.07599639892578,-381.0870056152344,-102.35800170898438,100.07599639892578,-346.4339904785156,-102.35800170898438,208.79299926757812,-346.4339904785156,-102.35800170898438,100.07599639892578,-381.0870056152344,102.35800170898438,208.79299926757812,-381.0870056152344,102.35800170898438,208.79299926757812,-346.4339904785156,102.35800170898438,100.07599639892578,-171.04100036621094,-102.35800170898438,100.07599639892578,-136.38800048828125,-102.35800170898438,208.79299926757812,-136.38800048828125,-102.35800170898438,100.07599639892578,-171.04100036621094,102.35800170898438,208.79299926757812,-171.04100036621094,102.35800170898438,208.79299926757812,-136.38800048828125,102.35800170898438,-42.24689865112305,-3.382430076599121,52.242000579833984,-42.24689865112305,-105.09400177001953,52.242000579833984,220.59300231933594,-105.09400177001953,52.242000579833984,-42.24689865112305,-3.382430076599121,-52.242000579833984,-42.24689865112305,-3.382430076599121,52.242000579833984,220.59300231933594,-3.382430076599121,52.242000579833984,-42.24689865112305,-105.09400177001953,-52.242000579833984,-42.24689865112305,-3.382430076599121,-52.242000579833984,220.59300231933594,-3.382430076599121,-52.242000579833984,-42.24689865112305,-105.09400177001953,52.242000579833984,-42.24689865112305,-105.09400177001953,-52.242000579833984,220.59300231933594,-105.09400177001953,-52.242000579833984,63.03010177612305,-448.5899963378906,100,63.03010177612305,-59.08219909667969,100,-48.504600524902344,-59.08219909667969,0,63.03010177612305,-59.08219909667969,100,63.03010177612305,-448.5899963378906,100,65.05799865722656,-448.5899963378906,100,-45.041099548339844,-59.08219909667969,0,65.05799865722656,-59.08219909667969,-100,63.03010177612305,-59.08219909667969,-100,63.03010177612305,-448.5899963378906,-100,63.03010177612305,-59.08219909667969,-100,65.05799865722656,-59.08219909667969,-100,-45.041099548339844,-448.5899963378906,0,-48.504600524902344,-448.5899963378906,0,63.03010177612305,-448.5899963378906,-100,63.03010177612305,-59.08219909667969,-100,63.03010177612305,-448.5899963378906,-100,-48.504600524902344,-448.5899963378906,0,-45.041099548339844,-59.08219909667969,0,-48.504600524902344,-59.08219909667969,0,63.03010177612305,-59.08219909667969,100,-45.041099548339844,-448.5899963378906,0,65.05799865722656,-448.5899963378906,100,63.03010177612305,-448.5899963378906,100,-43.45479965209961,-105.09400177001953,-52.242000579833984,-43.45479965209961,-3.382430076599121,-52.242000579833984,-42.24689865112305,-3.382430076599121,-52.242000579833984,-43.45479965209961,-105.09400177001953,52.242000579833984,-43.45479965209961,-105.09400177001953,-52.242000579833984,-42.24689865112305,-105.09400177001953,-52.242000579833984,-43.45479965209961,-3.382430076599121,52.242000579833984,-43.45479965209961,-105.09400177001953,52.242000579833984,-42.24689865112305,-105.09400177001953,52.242000579833984,-43.45479965209961,-3.382430076599121,-52.242000579833984,-43.45479965209961,-3.382430076599121,52.242000579833984,-42.24689865112305,-3.382430076599121,52.242000579833984,220.59300231933594,-59.08219909667969,0,220.59300231933594,-59.08219909667969,-100,65.05799865722656,-59.08219909667969,-100,65.05799865722656,-59.08219909667969,100,220.59300231933594,-59.08219909667969,100,220.59300231933594,-59.08219909667969,0,220.59300231933594,-448.5899963378906,100,220.59300231933594,-59.08219909667969,100,65.05799865722656,-59.08219909667969,100,220.59300231933594,-448.5899963378906,0,220.59300231933594,-448.5899963378906,100,65.05799865722656,-448.5899963378906,100,65.05799865722656,-448.5899963378906,-100,220.59300231933594,-448.5899963378906,-100,220.59300231933594,-448.5899963378906,0,220.59300231933594,-59.08219909667969,-100,220.59300231933594,-448.5899963378906,-100,65.05799865722656,-448.5899963378906,-100], 18 | "normalized": false 19 | }, 20 | "normal": { 21 | "itemSize": 3, 22 | "type": "Float32Array", 23 | "array": [0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,-0.20687739551067352,-0.9783669114112854,0,-0.20687739551067352,-0.9783669114112854,0,-0.20687739551067352,-0.9783669114112854,0,-0.6675574779510498,0,0.7445582747459412,-0.6675574779510498,0,0.7445582747459412,-0.6675574779510498,0,0.7445582747459412,-0.2466195970773697,0,0.9691123962402344,-0.2466195970773697,0,0.9691123962402344,-0.2466195970773697,0,0.9691123962402344,-0.24045920372009277,0.9706593155860901,0,-0.24045920372009277,0.9706593155860901,0,-0.24045920372009277,0.9706593155860901,0,-0.21226589381694794,0,-0.9772120118141174,-0.21226589381694794,0,-0.9772120118141174,-0.21226589381694794,0,-0.9772120118141174,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,-1,-0.00004875840022577904,0,-1,-0.00004875840022577904,0,-1,-0.00004875840022577904,-0.6675574779510498,0,-0.7445582151412964,-0.6675574779510498,0,-0.7445582151412964,-0.6675574779510498,0,-0.7445582151412964,0,1,-0.0000037622201034537284,0,1,-0.0000037622201034537284,0,1,-0.0000037622201034537284,0,-1,-0.00002255670005979482,0,-1,-0.00002255670005979482,0,-1,-0.00002255670005979482,-0.1378553956747055,-0.6998671293258667,-0.7008438110351562,0,0.7071068286895752,-0.7071068286895752,0,-0.7071068286895752,-0.7071068286895752,-0.14844389259815216,-0.6958308219909668,0.7026975750923157,0,-0.7071068286895752,-0.7071068286895752,0,-0.7071068286895752,0.7071068286895752,-0.15821099281311035,0.6976668238639832,0.6987348794937134,0,-0.7071068286895752,0.7071068286895752,0,0.7071068286895752,0.7071068286895752,-0.14811010658740997,0.7017300724983215,-0.6968774795532227,0,0.7071068286895752,0.7071068286895752,0,0.7071068286895752,-0.7071068286895752,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,-1,-2.941079912943678e-7,0,-1,-2.941079912943678e-7,0,-1,-2.941079912943678e-7,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,-0.6675574779510498,0,0.7445582151412964,-0.6675574779510498,0,0.7445582151412964,-0.6675574779510498,0,0.7445582151412964,0,0,1,0,0,1,0,0,1,0,1,0.0000037622201034537284,0,1,0.0000037622201034537284,0,1,0.0000037622201034537284,0,0,-1,0,0,-1,0,0,-1,0,-1,0.00002255670005979482,0,-1,0.00002255670005979482,0,-1,0.00002255670005979482,-0.6675574779510498,0,-0.7445582747459412,-0.6675574779510498,0,-0.7445582747459412,-0.6675574779510498,0,-0.7445582747459412,0,1,0,0,1,0,0,1,0,0,-1,0.00004875840022577904,0,-1,0.00004875840022577904,0,-1,0.00004875840022577904,-0.1378553956747055,-0.6998671293258667,-0.7008438110351562,-0.14811010658740997,0.7017300724983215,-0.6968774795532227,0,0.7071068286895752,-0.7071068286895752,-0.14844389259815216,-0.6958308219909668,0.7026975750923157,-0.1378553956747055,-0.6998671293258667,-0.7008438110351562,0,-0.7071068286895752,-0.7071068286895752,-0.15821099281311035,0.6976668238639832,0.6987348794937134,-0.14844389259815216,-0.6958308219909668,0.7026975750923157,0,-0.7071068286895752,0.7071068286895752,-0.14811010658740997,0.7017300724983215,-0.6968774795532227,-0.15821099281311035,0.6976668238639832,0.6987348794937134,0,0.7071068286895752,0.7071068286895752,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1], 24 | "normalized": false 25 | }, 26 | "uv": { 27 | "itemSize": 2, 28 | "type": "Float32Array", 29 | "array": [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,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,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,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,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,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,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,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], 30 | "normalized": false 31 | }, 32 | "color": { 33 | "itemSize": 3, 34 | "type": "Float32Array", 35 | "array": [0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1], 36 | "normalized": false 37 | } 38 | }, 39 | "boundingSphere": { 40 | "center": [-22.18450164794922,-224.2949981689453,0], 41 | "radius": 345.3247205691946 42 | } 43 | } 44 | }], 45 | "materials": [ 46 | { 47 | "uuid": "6C6D57ED-C061-47A5-B273-58DEF6CAB5F0", 48 | "type": "MeshBasicMaterial", 49 | "color": 16777215, 50 | "vertexColors": 2, 51 | "depthFunc": 3, 52 | "depthTest": true, 53 | "depthWrite": true, 54 | "skinning": false, 55 | "morphTargets": false 56 | }], 57 | "object": { 58 | "uuid": "1AD267C0-5A30-4CB0-A601-1F47F83E25D2", 59 | "type": "Mesh", 60 | "name": "church", 61 | "matrix": [0,-0.009999999776482582,6.617444752512802e-26,0,0.009999999776482582,0,4.3711401165325015e-10,0,-4.3711398389767453e-10,0,0.009999998845160007,0,0,2.0225484371185303,0,1], 62 | "geometry": "1241138A-3037-4803-BE0C-B8A22772A673", 63 | "material": "6C6D57ED-C061-47A5-B273-58DEF6CAB5F0" 64 | } 65 | } -------------------------------------------------------------------------------- /public/static/meshes/model.json: -------------------------------------------------------------------------------- 1 | { 2 | "metadata": { 3 | "version": 4.4, 4 | "type": "Object", 5 | "generator": "Object3D.toJSON" 6 | }, 7 | "geometries": [ 8 | { 9 | "uuid": "1241138A-3037-4803-BE0C-B8A22772A673", 10 | "type": "BufferGeometry", 11 | "name": "church", 12 | "data": { 13 | "attributes": { 14 | "position": { 15 | "itemSize": 3, 16 | "type": "Float32Array", 17 | "array": [25.3262996673584,0,-9.125511169433594,-25.3262996673584,0,9.125511169433594,25.3262996673584,0,9.125511169433594,218.9980010986328,0,-20.958200454711914,103.39199829101562,0,20.958200454711914,218.9980010986328,0,20.958200454711914,100.07599639892578,-275.1369934082031,-102.35800170898438,208.79299926757812,-240.48300170898438,-102.35800170898438,208.79299926757812,-275.1369934082031,-102.35800170898438,100.07599639892578,-275.1369934082031,102.35800170898438,208.79299926757812,-240.48300170898438,102.35800170898438,100.07599639892578,-240.48300170898438,102.35800170898438,100.07599639892578,-381.0870056152344,-102.35800170898438,208.79299926757812,-346.4339904785156,-102.35800170898438,208.79299926757812,-381.0870056152344,-102.35800170898438,100.07599639892578,-381.0870056152344,102.35800170898438,208.79299926757812,-346.4339904785156,102.35800170898438,100.07599639892578,-346.4339904785156,102.35800170898438,100.07599639892578,-171.04100036621094,-102.35800170898438,208.79299926757812,-136.38800048828125,-102.35800170898438,208.79299926757812,-171.04100036621094,-102.35800170898438,100.07599639892578,-171.04100036621094,102.35800170898438,208.79299926757812,-136.38800048828125,102.35800170898438,100.07599639892578,-136.38800048828125,102.35800170898438,-42.24689865112305,-3.382430076599121,52.242000579833984,220.59300231933594,-105.09400177001953,52.242000579833984,220.59300231933594,-3.382430076599121,52.242000579833984,-42.24689865112305,-3.382430076599121,-52.242000579833984,220.59300231933594,-3.382430076599121,52.242000579833984,220.59300231933594,-3.382430076599121,-52.242000579833984,-42.24689865112305,-105.09400177001953,-52.242000579833984,220.59300231933594,-3.382430076599121,-52.242000579833984,220.59300231933594,-105.09400177001953,-52.242000579833984,-42.24689865112305,-105.09400177001953,52.242000579833984,220.59300231933594,-105.09400177001953,-52.242000579833984,220.59300231933594,-105.09400177001953,52.242000579833984,-43.45479965209961,-105.09400177001953,52.242000579833984,-264.9620056152344,-58.25590133666992,-4.127120018005371,-43.45479965209961,-105.09400177001953,-52.242000579833984,63.03010177612305,-448.5899963378906,100,-48.504600524902344,-59.08219909667969,0,-48.504600524902344,-448.5899963378906,0,-43.45479965209961,-3.382430076599121,52.242000579833984,-264.9620056152344,-58.25590133666992,-4.127120018005371,-43.45479965209961,-105.09400177001953,52.242000579833984,-43.45479965209961,-3.382430076599121,-52.242000579833984,-264.9620056152344,-58.25590133666992,-4.127120018005371,-43.45479965209961,-3.382430076599121,52.242000579833984,-43.45479965209961,-105.09400177001953,-52.242000579833984,-264.9620056152344,-58.25590133666992,-4.127120018005371,-43.45479965209961,-3.382430076599121,-52.242000579833984,63.03010177612305,-59.08219909667969,100,65.05799865722656,-448.5899963378906,100,65.05799865722656,-59.08219909667969,100,-45.041099548339844,-59.08219909667969,0,63.03010177612305,-59.08219909667969,-100,-48.504600524902344,-59.08219909667969,0,63.03010177612305,-448.5899963378906,-100,65.05799865722656,-59.08219909667969,-100,65.05799865722656,-448.5899963378906,-100,-45.041099548339844,-448.5899963378906,0,63.03010177612305,-448.5899963378906,-100,65.05799865722656,-448.5899963378906,-100,63.03010177612305,-59.08219909667969,-100,-48.504600524902344,-448.5899963378906,0,-48.504600524902344,-59.08219909667969,0,-45.041099548339844,-59.08219909667969,0,63.03010177612305,-59.08219909667969,100,65.05799865722656,-59.08219909667969,100,-45.041099548339844,-448.5899963378906,0,63.03010177612305,-448.5899963378906,100,-48.504600524902344,-448.5899963378906,0,-43.45479965209961,-105.09400177001953,-52.242000579833984,-42.24689865112305,-3.382430076599121,-52.242000579833984,-42.24689865112305,-105.09400177001953,-52.242000579833984,-43.45479965209961,-105.09400177001953,52.242000579833984,-42.24689865112305,-105.09400177001953,-52.242000579833984,-42.24689865112305,-105.09400177001953,52.242000579833984,-43.45479965209961,-3.382430076599121,52.242000579833984,-42.24689865112305,-105.09400177001953,52.242000579833984,-42.24689865112305,-3.382430076599121,52.242000579833984,-43.45479965209961,-3.382430076599121,-52.242000579833984,-42.24689865112305,-3.382430076599121,52.242000579833984,-42.24689865112305,-3.382430076599121,-52.242000579833984,220.59300231933594,-59.08219909667969,0,65.05799865722656,-59.08219909667969,-100,-45.041099548339844,-59.08219909667969,0,65.05799865722656,-59.08219909667969,100,220.59300231933594,-59.08219909667969,0,-45.041099548339844,-59.08219909667969,0,220.59300231933594,-448.5899963378906,100,65.05799865722656,-59.08219909667969,100,65.05799865722656,-448.5899963378906,100,220.59300231933594,-448.5899963378906,0,65.05799865722656,-448.5899963378906,100,-45.041099548339844,-448.5899963378906,0,65.05799865722656,-448.5899963378906,-100,220.59300231933594,-448.5899963378906,0,-45.041099548339844,-448.5899963378906,0,220.59300231933594,-59.08219909667969,-100,65.05799865722656,-448.5899963378906,-100,65.05799865722656,-59.08219909667969,-100,25.3262996673584,0,-9.125511169433594,-25.3262996673584,0,-9.125511169433594,-25.3262996673584,0,9.125511169433594,218.9980010986328,0,-20.958200454711914,103.39199829101562,0,-20.958200454711914,103.39199829101562,0,20.958200454711914,100.07599639892578,-275.1369934082031,-102.35800170898438,100.07599639892578,-240.48300170898438,-102.35800170898438,208.79299926757812,-240.48300170898438,-102.35800170898438,100.07599639892578,-275.1369934082031,102.35800170898438,208.79299926757812,-275.1369934082031,102.35800170898438,208.79299926757812,-240.48300170898438,102.35800170898438,100.07599639892578,-381.0870056152344,-102.35800170898438,100.07599639892578,-346.4339904785156,-102.35800170898438,208.79299926757812,-346.4339904785156,-102.35800170898438,100.07599639892578,-381.0870056152344,102.35800170898438,208.79299926757812,-381.0870056152344,102.35800170898438,208.79299926757812,-346.4339904785156,102.35800170898438,100.07599639892578,-171.04100036621094,-102.35800170898438,100.07599639892578,-136.38800048828125,-102.35800170898438,208.79299926757812,-136.38800048828125,-102.35800170898438,100.07599639892578,-171.04100036621094,102.35800170898438,208.79299926757812,-171.04100036621094,102.35800170898438,208.79299926757812,-136.38800048828125,102.35800170898438,-42.24689865112305,-3.382430076599121,52.242000579833984,-42.24689865112305,-105.09400177001953,52.242000579833984,220.59300231933594,-105.09400177001953,52.242000579833984,-42.24689865112305,-3.382430076599121,-52.242000579833984,-42.24689865112305,-3.382430076599121,52.242000579833984,220.59300231933594,-3.382430076599121,52.242000579833984,-42.24689865112305,-105.09400177001953,-52.242000579833984,-42.24689865112305,-3.382430076599121,-52.242000579833984,220.59300231933594,-3.382430076599121,-52.242000579833984,-42.24689865112305,-105.09400177001953,52.242000579833984,-42.24689865112305,-105.09400177001953,-52.242000579833984,220.59300231933594,-105.09400177001953,-52.242000579833984,63.03010177612305,-448.5899963378906,100,63.03010177612305,-59.08219909667969,100,-48.504600524902344,-59.08219909667969,0,63.03010177612305,-59.08219909667969,100,63.03010177612305,-448.5899963378906,100,65.05799865722656,-448.5899963378906,100,-45.041099548339844,-59.08219909667969,0,65.05799865722656,-59.08219909667969,-100,63.03010177612305,-59.08219909667969,-100,63.03010177612305,-448.5899963378906,-100,63.03010177612305,-59.08219909667969,-100,65.05799865722656,-59.08219909667969,-100,-45.041099548339844,-448.5899963378906,0,-48.504600524902344,-448.5899963378906,0,63.03010177612305,-448.5899963378906,-100,63.03010177612305,-59.08219909667969,-100,63.03010177612305,-448.5899963378906,-100,-48.504600524902344,-448.5899963378906,0,-45.041099548339844,-59.08219909667969,0,-48.504600524902344,-59.08219909667969,0,63.03010177612305,-59.08219909667969,100,-45.041099548339844,-448.5899963378906,0,65.05799865722656,-448.5899963378906,100,63.03010177612305,-448.5899963378906,100,-43.45479965209961,-105.09400177001953,-52.242000579833984,-43.45479965209961,-3.382430076599121,-52.242000579833984,-42.24689865112305,-3.382430076599121,-52.242000579833984,-43.45479965209961,-105.09400177001953,52.242000579833984,-43.45479965209961,-105.09400177001953,-52.242000579833984,-42.24689865112305,-105.09400177001953,-52.242000579833984,-43.45479965209961,-3.382430076599121,52.242000579833984,-43.45479965209961,-105.09400177001953,52.242000579833984,-42.24689865112305,-105.09400177001953,52.242000579833984,-43.45479965209961,-3.382430076599121,-52.242000579833984,-43.45479965209961,-3.382430076599121,52.242000579833984,-42.24689865112305,-3.382430076599121,52.242000579833984,220.59300231933594,-59.08219909667969,0,220.59300231933594,-59.08219909667969,-100,65.05799865722656,-59.08219909667969,-100,65.05799865722656,-59.08219909667969,100,220.59300231933594,-59.08219909667969,100,220.59300231933594,-59.08219909667969,0,220.59300231933594,-448.5899963378906,100,220.59300231933594,-59.08219909667969,100,65.05799865722656,-59.08219909667969,100,220.59300231933594,-448.5899963378906,0,220.59300231933594,-448.5899963378906,100,65.05799865722656,-448.5899963378906,100,65.05799865722656,-448.5899963378906,-100,220.59300231933594,-448.5899963378906,-100,220.59300231933594,-448.5899963378906,0,220.59300231933594,-59.08219909667969,-100,220.59300231933594,-448.5899963378906,-100,65.05799865722656,-448.5899963378906,-100], 18 | "normalized": false 19 | }, 20 | "normal": { 21 | "itemSize": 3, 22 | "type": "Float32Array", 23 | "array": [0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,-0.20687739551067352,-0.9783669114112854,0,-0.20687739551067352,-0.9783669114112854,0,-0.20687739551067352,-0.9783669114112854,0,-0.6675574779510498,0,0.7445582747459412,-0.6675574779510498,0,0.7445582747459412,-0.6675574779510498,0,0.7445582747459412,-0.2466195970773697,0,0.9691123962402344,-0.2466195970773697,0,0.9691123962402344,-0.2466195970773697,0,0.9691123962402344,-0.24045920372009277,0.9706593155860901,0,-0.24045920372009277,0.9706593155860901,0,-0.24045920372009277,0.9706593155860901,0,-0.21226589381694794,0,-0.9772120118141174,-0.21226589381694794,0,-0.9772120118141174,-0.21226589381694794,0,-0.9772120118141174,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,-1,-0.00004875840022577904,0,-1,-0.00004875840022577904,0,-1,-0.00004875840022577904,-0.6675574779510498,0,-0.7445582151412964,-0.6675574779510498,0,-0.7445582151412964,-0.6675574779510498,0,-0.7445582151412964,0,1,-0.0000037622201034537284,0,1,-0.0000037622201034537284,0,1,-0.0000037622201034537284,0,-1,-0.00002255670005979482,0,-1,-0.00002255670005979482,0,-1,-0.00002255670005979482,-0.1378553956747055,-0.6998671293258667,-0.7008438110351562,0,0.7071068286895752,-0.7071068286895752,0,-0.7071068286895752,-0.7071068286895752,-0.14844389259815216,-0.6958308219909668,0.7026975750923157,0,-0.7071068286895752,-0.7071068286895752,0,-0.7071068286895752,0.7071068286895752,-0.15821099281311035,0.6976668238639832,0.6987348794937134,0,-0.7071068286895752,0.7071068286895752,0,0.7071068286895752,0.7071068286895752,-0.14811010658740997,0.7017300724983215,-0.6968774795532227,0,0.7071068286895752,0.7071068286895752,0,0.7071068286895752,-0.7071068286895752,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,-1,-2.941079912943678e-7,0,-1,-2.941079912943678e-7,0,-1,-2.941079912943678e-7,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,-0.6675574779510498,0,0.7445582151412964,-0.6675574779510498,0,0.7445582151412964,-0.6675574779510498,0,0.7445582151412964,0,0,1,0,0,1,0,0,1,0,1,0.0000037622201034537284,0,1,0.0000037622201034537284,0,1,0.0000037622201034537284,0,0,-1,0,0,-1,0,0,-1,0,-1,0.00002255670005979482,0,-1,0.00002255670005979482,0,-1,0.00002255670005979482,-0.6675574779510498,0,-0.7445582747459412,-0.6675574779510498,0,-0.7445582747459412,-0.6675574779510498,0,-0.7445582747459412,0,1,0,0,1,0,0,1,0,0,-1,0.00004875840022577904,0,-1,0.00004875840022577904,0,-1,0.00004875840022577904,-0.1378553956747055,-0.6998671293258667,-0.7008438110351562,-0.14811010658740997,0.7017300724983215,-0.6968774795532227,0,0.7071068286895752,-0.7071068286895752,-0.14844389259815216,-0.6958308219909668,0.7026975750923157,-0.1378553956747055,-0.6998671293258667,-0.7008438110351562,0,-0.7071068286895752,-0.7071068286895752,-0.15821099281311035,0.6976668238639832,0.6987348794937134,-0.14844389259815216,-0.6958308219909668,0.7026975750923157,0,-0.7071068286895752,0.7071068286895752,-0.14811010658740997,0.7017300724983215,-0.6968774795532227,-0.15821099281311035,0.6976668238639832,0.6987348794937134,0,0.7071068286895752,0.7071068286895752,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1], 24 | "normalized": false 25 | }, 26 | "uv": { 27 | "itemSize": 2, 28 | "type": "Float32Array", 29 | "array": [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,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,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,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,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,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,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,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], 30 | "normalized": false 31 | }, 32 | "color": { 33 | "itemSize": 3, 34 | "type": "Float32Array", 35 | "array": [0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,0.6745098233222961,0.686274528503418,0.7647058963775635,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.5176470875740051,0.3960784077644348,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1,1,0.996078372001648,1], 36 | "normalized": false 37 | } 38 | }, 39 | "boundingSphere": { 40 | "center": [-22.18450164794922,-224.2949981689453,0], 41 | "radius": 345.3247205691946 42 | } 43 | } 44 | }], 45 | "materials": [ 46 | { 47 | "uuid": "6C6D57ED-C061-47A5-B273-58DEF6CAB5F0", 48 | "type": "MeshBasicMaterial", 49 | "color": 16777215, 50 | "vertexColors": 2, 51 | "depthFunc": 3, 52 | "depthTest": true, 53 | "depthWrite": true, 54 | "skinning": false, 55 | "morphTargets": false 56 | }], 57 | "object": { 58 | "uuid": "D2B6E3A9-0F63-434C-9B70-E144E71B197F", 59 | "type": "Group", 60 | "name": "church", 61 | "matrix": [1,0,0,0,0,2.220446049250313e-16,-1,0,0,1,2.220446049250313e-16,0,0,0,0,1], 62 | "children": [ 63 | { 64 | "uuid": "1AD267C0-5A30-4CB0-A601-1F47F83E25D2", 65 | "type": "Mesh", 66 | "name": "church", 67 | "matrix": [1.947069838692528e-9,-6.05071566949556e-17,-0.009999999776482582,0,0.009999999776482582,-4.371141226755526e-10,1.947069838692528e-9,0,-4.3711398389767453e-10,-0.009999998845160007,-1.6431298329232593e-16,0,2.538360118865967,-9.616069718276776e-8,2.199899911880493,1], 68 | "geometry": "1241138A-3037-4803-BE0C-B8A22772A673", 69 | "material": "6C6D57ED-C061-47A5-B273-58DEF6CAB5F0" 70 | }] 71 | } 72 | } -------------------------------------------------------------------------------- /resources/blimp.lxo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexanderperrin/threejs-ballooning/f1ee634626bd679980de68685bf8d1a3ca263b69/resources/blimp.lxo -------------------------------------------------------------------------------- /resources/church.c4d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexanderperrin/threejs-ballooning/f1ee634626bd679980de68685bf8d1a3ca263b69/resources/church.c4d -------------------------------------------------------------------------------- /resources/dae/boat01.dae: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Blender User 6 | Blender 2.77.0 commit date:2016-04-05, commit time:18:12, hash:abf6f08 7 | 8 | 2016-11-12T16:23:20 9 | 2016-11-12T16:23:20 10 | 11 | Z_UP 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 0 0 0 1 21 | 22 | 23 | 0 0 0 1 24 | 25 | 26 | 0.8 0.8 0.8 1 27 | 28 | 29 | 0.02 0.02 0.02 1 30 | 31 | 32 | 256 33 | 34 | 35 | 1 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -0.507119 -0.294181 1.34373 -0.314468 0.2524441 1.10834 0.507119 -0.294181 1.34373 0.314468 0.2524441 1.10834 0.507119 -0.294181 -1.34373 0.4366275 0.2524369 -1.25542 -0.507119 -0.294181 -1.34373 -0.3361271 0.2524369 -1.25542 0 5.63914 -0.557931 0 0.82333 -0.528437 0 0.140548 -4.03921 0.542676 2.51335 -2.32923 0.387764 2.43545 -0.523053 0.531553 3.47182 -1.72666 0.413393 3.42404 -0.5281 0 3.19296 1.25992 0 1.17768 3.1711 0 5.6329 -0.509839 0 0.870476 -0.448643 0 2.83871 -0.473935 0 0.879554 -0.513271 -0.03448098 0.820049 -0.508172 0.06896197 0.879554 -0.513271 0.06896197 0.879554 -0.513271 0.05287659 1.19763 3.19889 -0.03448098 0.820049 -0.508172 -0.03448098 0.939059 -0.51837 -0.03448098 0.939059 -0.51837 -0.0183956 1.23863 3.19538 -0.0183956 1.15663 3.20241 0 -0.762282 -0.519348 -0.04999995 -0.762282 -0.432746 0.1 -0.762282 -0.519348 0.1 -0.762282 -0.519348 0.06865 5.64355 -0.519348 -0.04999995 -0.762282 -0.432746 -0.04999995 -0.762282 -0.605951 -0.04999995 -0.762282 -0.605951 -0.01864999 5.64355 -0.569751 -0.01864999 5.64355 -0.468946 -0.106927 -0.115336 3.04463 -0.106927 0.198201 3.04463 0.106927 -0.115336 3.04463 0.106927 0.198201 3.04463 0.106927 -0.115336 -4.08332 0.106927 0.198201 -4.08332 -0.106927 -0.115336 -4.08332 -0.106927 0.198201 -4.08332 1.00627 0.198201 -2.01948 0.658882 -0.567525 -2.01948 -0.658882 -0.567525 -2.01948 -1.00627 0.198201 -2.01948 1.00627 0.198201 1.22898 0.658882 -0.567525 1.22898 -0.658882 -0.567525 1.22898 -1.00627 0.198201 1.22898 1.1645 0.198201 -0.393734 0.762488 -0.660387 -0.393734 -0.762488 -0.660387 -0.393734 -1.1645 0.198201 -0.393734 0 -0.115336 3.04463 0 -0.781668 1.22898 0 -0.874531 -0.393734 0 -0.781668 -2.01948 0 -0.115336 -4.08332 0 0.198201 -4.08332 0 -0.1902199 -1.86347 0 -0.1902199 -0.406798 0 -0.1902199 1.04715 0 0.198201 3.04463 -0.06968998 0.186043 2.98463 0 0.186043 2.98463 0.947622 0.186043 1.2122 0.06968998 0.186043 2.98463 0 0.186043 -4.02332 0.06762397 0.186043 -4.02332 -0.947473 0.186043 -2.00422 -0.06762397 0.186043 -4.02332 0.947473 0.186043 -2.00422 -1.10422 0.186043 -0.393734 1.10422 0.186043 -0.393734 -0.947622 0.186043 1.2122 -0.06244218 -0.1902199 2.62021 0 -0.1902199 2.62021 0.7871567 -0.1902199 1.03212 0.06244218 -0.1902199 2.62021 0 -0.1902199 -3.65891 0.0605911 -0.1902199 -3.65891 -0.8150833 -0.1902199 -1.84979 -0.0605911 -0.1902199 -3.65891 0.7870237 -0.1902199 -1.84979 -0.9555253 -0.1902199 -0.406798 0.9274657 -0.1902199 -0.406798 -0.8215168 -0.1902199 1.03212 0.02189028 5.638108 -0.5568025 0.5534433 3.470788 -1.725531 0.02189028 0.8222976 -0.5273085 0.5645663 2.512318 -2.328102 0.4096543 2.434418 -0.5219245 0.02189028 1.176648 3.172228 0.02189028 0.8694437 -0.4475145 0.4352833 3.423008 -0.5269715 0.02189028 3.191928 1.261049 0.02189028 5.631868 -0.5087105 0.02189028 2.837678 -0.4728065 0.02189028 0.1395156 -4.038081 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 0 0.3955115 0.9184612 0.9353296 0.3504599 0.04833686 0 0.1594891 -0.9871998 -0.9547589 0.2972525 0.008747518 0 1 -3.03217e-6 0.6282994 -0.3925077 0.6716977 -0.6404429 -0.3893625 0.6619894 -0.6550026 -0.4548884 -0.6033642 -0.7338674 -0.05017369 0.6774372 -0.6268568 0.7631233 0.1571415 -0.638042 0.3414834 -0.6901388 -0.6918119 -0.4209224 0.5867033 -0.5987512 0.5045086 -0.6220676 -0.5846826 -0.3989441 -0.7063923 -0.722605 0.1007747 0.683876 -0.6888873 -0.009308457 -0.7248088 -0.7255392 0.438229 0.5306114 -0.520924 0.8048092 -0.284465 -0.5733067 -0.2794355 0.7702177 -0.5728141 -0.5889588 -0.5700979 0 -0.0853613 -0.9963501 -0.499418 0.863727 -0.06750869 0.9999908 3.35711e-4 0.004272639 0.9999908 3.6623e-4 0.004272639 -0.4993931 -0.862638 0.08038872 -0.5005797 0.863059 -0.0674479 -0.5005764 -0.8619547 0.08035713 0 -1 0 -0.4992907 0.007324516 -0.8664036 0.9999881 0.00488305 0 -0.4992907 0.007324516 0.8664036 -0.5006643 0.007324516 -0.8656106 -0.5006643 0.007324516 0.8656106 0 0.7741517 0.6330001 -0.3989859 0.6538267 0.6429005 -0.4298975 -0.5188924 0.7388768 0.7898316 0.5852934 0.183297 0.3989859 0.6538267 0.6429005 0.4298975 -0.5188924 0.7388768 -0.4962102 -0.5149794 -0.6989791 -0.4637626 0.6384518 -0.6142504 0 0.7741517 -0.6330001 -0.7886508 0.5861243 0.1857103 0 1 0 0 -0.6063972 0.795162 -0.6487785 -0.7287085 0.2192503 0.4550701 -0.4953858 -0.7399353 0.4167117 0.649361 -0.6361461 0.7886521 0.591039 -0.1694132 -0.6575973 -0.7217182 -0.2160759 -0.01870834 -0.6037943 -0.7969206 0 1 0 0.6516115 -0.75855 -0.002105772 0.8052116 0.592983 0.00238043 -0.6516112 -0.7585498 0.00225836 0 -1 3.05194e-5 -0.8052118 0.5929831 -0.00225836 0 1 0 0.6532105 -0.731066 -0.1971259 0.00100708 -0.9837667 -0.1794493 -0.7876981 0.5855396 -0.1915073 0 1 0 0.6515899 -0.7254163 0.2218152 -0.003112912 -0.979568 0.2010896 0 1 -1.52931e-7 0.1836622 0.9208749 -0.3438861 0.5594786 0.8104688 -0.1735628 0 0.8772674 -0.4800022 0.5708644 0.8051308 0.1608675 0.1883965 0.9235185 0.3340964 0 0.8772674 0.4800022 0.6242074 0.7812587 -1.22076e-4 -0.1879687 0.9229971 0.335774 -0.5561596 0.8176214 0.1489359 -0.5995163 0.8003622 -9.46091e-4 -0.531554 0.8305512 -0.1662384 -0.1846098 0.9219201 -0.3405623 0 0.9207992 -0.3900372 0.3745639 0.8277761 -0.4177182 0.5716854 0.8092162 -0.1354441 0.4080091 0.8162624 0.4089552 0 0.9207882 0.3900631 0.5699474 0.8113548 0.1298595 0.5847733 0.8111932 0.002410948 -0.4003183 0.8193141 0.4104506 -0.5444023 0.830398 0.1185978 -0.5589184 0.829222 0.001068115 -0.5412639 0.830345 -0.1325158 -0.3905563 0.8222832 -0.4139036 0 0.3955115 0.918461 0.9917871 0.1279003 0 0 0.1594891 -0.9871998 -0.9431394 0.3323974 0 0 1 -3.06713e-6 0.606057 -0.5019854 -0.6170135 0.6731598 0.05838298 0.7371888 0.7742664 0.374712 -0.5100026 0.4539702 0.8553562 0.2495539 0.4680792 -0.5872277 0.6603527 0.5032888 -0.505242 -0.7010214 0.8005555 0.2549289 -0.5423305 0.6757258 -0.09341925 0.7312097 0.7248712 -0.008850634 -0.6888276 0.564696 0.7888287 -0.2426273 0.7189681 0.4456698 0.5333511 0.5263079 -0.3134958 0.7903927 0.5726078 -0.6248267 -0.5307655 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 1 1 0 1 0 0 1 1 0 1 0 0 1 1 0 1 0 0 1 1 0 1 0 0 1 1 0 1 0 0 1 1 0 1 0 0 0.474324 0 0 0 0 0.816845 1 0 0.166063 1 1 1 0.678714 0 0 0.816845 0.166063 1 0.586715 1 0 0 0 1 1 0 0.586715 1 1 1 0.75 0.933013 0 0.5 0.5 0.5 0.333333 1 0 1 0 0 0 0.5 0.75 0.06698727 0.5 0.5 0.75 0.06698727 0.75 0.933013 0.5 0.5 0.666667 1 0.333333 1 0.333333 0 1 1 0.666667 1 0.666667 0 0.75 0.933013 0 0.5 0.5 0.5 0.333333 1 0 1 0 0 0 0.5 0.75 0.06698727 0.5 0.5 0.75 0.06698727 0.75 0.933013 0.5 0.5 0.666667 1 0.333333 1 0.333333 0 1 1 0.666667 1 0.666667 0 0.5 1 0 1 0 0 0.254723 1 0 1 0 0 1 0 1 1 0.5 1 1 0 1 1 0.745277 1 0.5 0.254723 0 0.254723 0.01408529 0.007175624 0.5 1 0 1 0 0.745277 1 0 1 1 0.710458 1 0 0.289542 0 0 0.5 0 0 1 0 0 0.289542 0 0.5 0.991582 0.01260697 0.9927 0 0.710458 0.482377 0 0.482377 1 0.254723 1 0 0.745277 0 0.517623 0.5 0.517623 0.517623 1 0.517623 0 0.745277 0 0.5 0.482377 0.02588409 0.482377 0 0.254723 0.710458 0 0.710458 1 0.482377 1 0 0.517623 0 0.289542 0.5 0.289542 0.289542 1 0.289542 0 0.517623 0 0.5 0.710458 0 0.710458 0.02588409 0.482377 1 0.745277 1 1 0.5 1 1 0.517623 1 0.745277 0.5 0.745277 1 0.289542 1 0.517623 0.5 0.517623 1 0 1 0.289542 0.5 0.289542 0 1 0 0 0.5 0 1 0.710458 0.987393 0.9927 0.5 0.991582 0.974116 0.482377 1 0.710458 0.5 0.710458 1 0.254723 0.974116 0.482377 0.5 0.482377 0.985915 0.007175624 1 0.254723 0.5 0.254723 1 0 1 1 0.5 1 0.01408529 0.007175624 0 0.254723 0 0.254723 0.5 0.008417606 0.01408529 0.007175624 0 0 0 0.710458 0.01260697 0.9927 0 1 0.01260697 0.9927 0.5 0.991582 0.5 1 0 0.254723 0.02588409 0.482377 0 0.482377 0.02588409 0.482377 0 0.710458 0 0.710458 0.5 0.991582 0.987393 0.9927 1 1 0.987393 0.9927 1 0.710458 1 0.710458 1 0.710458 0.974116 0.482377 1 0.482377 0.974116 0.482377 1 0.254723 1 0.254723 1 0.254723 0.985915 0.007175624 1 0 0.985915 0.007175624 0.5 0.008417606 0.5 0 0.5 0.008417606 0.01408529 0.007175624 0.01408529 0.007175624 0.01408529 0.007175624 0 0.254723 0 0.254723 0.01260697 0.9927 0.5 0.991582 0.5 0.991582 0 0.710458 0.01260697 0.9927 0.01260697 0.9927 0 0.254723 0.02588409 0.482377 0.02588409 0.482377 0.02588409 0.482377 0 0.710458 0 0.710458 0.987393 0.9927 1 0.710458 1 0.710458 0.5 0.991582 0.987393 0.9927 0.987393 0.9927 1 0.710458 0.974116 0.482377 0.974116 0.482377 0.974116 0.482377 1 0.254723 1 0.254723 0.985915 0.007175624 0.5 0.008417606 0.5 0.008417606 1 0.254723 0.985915 0.007175624 0.985915 0.007175624 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0.678714 0 0.166063 1 1 0 0.474324 0 0 0.816845 0.678714 0 0 0 0.586715 1 1 0 0.333333 0 0.333333 1 0 0 0.666667 0 0.666667 1 0.333333 0 1 0 1 1 0.666667 0 0.333333 0 0.333333 1 0 0 0.666667 0 0.666667 1 0.333333 0 1 0 1 1 0.666667 0 0.5 0 0.5 1 0 0 0.254723 0 0.254723 1 0 0 0.5 0 1 0 0.5 1 0.745277 0 1 0 0.745277 1 0.5 0.008417606 0.5 0.254723 0.01408529 0.007175624 0.5 0.745277 0.5 1 0 0.745277 0.710458 0 1 0 0.710458 1 0.5 0.289542 0 0.289542 0.5 0 0.289542 1 0 1 0.289542 0 0.5 0.710458 0.5 0.991582 0 0.710458 0.254723 0 0.482377 0 0.254723 1 0.5 0.745277 0 0.745277 0.5 0.517623 0.745277 1 0.517623 1 0.745277 0 0.5 0.254723 0.5 0.482377 0 0.254723 0.482377 0 0.710458 0 0.482377 1 0.5 0.517623 0 0.517623 0.5 0.289542 0.517623 1 0.289542 1 0.517623 0 0.5 0.482377 0.5 0.710458 0.02588409 0.482377 0.5 0.745277 1 0.745277 0.5 1 0.5 0.517623 1 0.517623 0.5 0.745277 0.5 0.289542 1 0.289542 0.5 0.517623 0.5 0 1 0 0.5 0.289542 0.5 1 0 1 0.5 0 0.5 0.710458 1 0.710458 0.5 0.991582 0.5 0.482377 0.974116 0.482377 0.5 0.710458 0.5 0.254723 1 0.254723 0.5 0.482377 0.5 0.008417606 0.985915 0.007175624 0.5 0.254723 0.5 0 1 0 0.5 1 0 0 0.01408529 0.007175624 0 0.254723 0.5 0 0.5 0.008417606 0 0 0 0.710458 0 0.710458 0 1 0 1 0.01260697 0.9927 0.5 1 0 0.254723 0 0.254723 0 0.482377 0 0.482377 0.02588409 0.482377 0 0.710458 0.5 1 0.5 0.991582 1 1 1 1 0.987393 0.9927 1 0.710458 1 0.710458 1 0.710458 1 0.482377 1 0.482377 0.974116 0.482377 1 0.254723 1 0.254723 1 0.254723 1 0 1 0 0.985915 0.007175624 0.5 0 0.5 0.008417606 0.5 0.008417606 0.01408529 0.007175624 0.01408529 0.007175624 0.01408529 0.007175624 0 0.254723 0.01260697 0.9927 0.01260697 0.9927 0.5 0.991582 0 0.710458 0 0.710458 0.01260697 0.9927 0 0.254723 0 0.254723 0.02588409 0.482377 0.02588409 0.482377 0.02588409 0.482377 0 0.710458 0.987393 0.9927 0.987393 0.9927 1 0.710458 0.5 0.991582 0.5 0.991582 0.987393 0.9927 1 0.710458 1 0.710458 0.974116 0.482377 0.974116 0.482377 0.974116 0.482377 1 0.254723 0.985915 0.007175624 0.985915 0.007175624 0.5 0.008417606 1 0.254723 1 0.254723 0.985915 0.007175624 0.474324 0 0 0.816845 0 0 1 0 1 1 0.166063 1 0.678714 0 0.166063 1 0 0.816845 0.586715 1 0 1 0 0 1 0 1 1 0.586715 1 0.678714 0 1 0 0.166063 1 0.474324 0 0.678714 0 0 0.816845 0 0 1 0 0.586715 1 0.586715 1 0 1 0.586715 1 0 0 0 1 0 1 0.678714 0 0.474324 0 0.474324 0 1 0 0 0 0 0 0.166063 1 1 1 1 1 0.166063 1 0 0.816845 0.166063 1 0.678714 0 1 0 0.678714 0 1 0 1 1 1 0 0 0.816845 0 0 0 0.816845 1 0 1 1 1 0 0.474324 0 0 0 0 0 1 1 0.586715 1 1 1 0.586715 1 0 1 0 1 0 0 0 0 0 1 0.678714 0 0.678714 0 0.474324 0 1 0 1 0 0 0 0.166063 1 0.166063 1 1 1 0.166063 1 0 0.816845 0 0.816845 0.678714 0 1 0 1 0 1 0 1 1 1 1 0 0.816845 0 0 0 0 1 0 1 1 1 1 0.474324 0 0.474324 0 0 0 1 1 0.586715 1 0.586715 1 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.6588236 0.6352941 0.6 0.6588236 0.6352941 0.6 0.6588236 0.6352941 0.6 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 1 1 1 1 1 1 1 1 1 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.6588236 0.6352941 0.6 0.6588236 0.6352941 0.6 0.6588236 0.6352941 0.6 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.5647059 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 0.8117647 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 98 |

3 0 0 0 1 0 1 1 0 0 2 2 5 1 3 3 3 1 4 4 2 1 5 5 7 2 6 6 5 2 7 7 4 2 8 8 1 3 9 9 7 3 10 10 6 3 11 11 5 4 12 12 7 4 13 13 1 4 14 14 2 5 15 15 0 6 16 16 6 7 17 17 14 8 18 18 8 9 19 19 13 10 20 20 9 11 21 21 11 12 22 22 10 13 23 23 12 14 24 24 13 10 25 25 11 12 26 26 19 15 27 27 15 16 28 28 17 17 29 29 16 18 30 30 19 15 31 31 18 19 32 32 26 20 33 33 22 20 34 34 20 20 35 35 28 21 36 36 24 22 37 37 23 23 38 38 22 20 39 39 21 20 40 40 20 20 41 41 21 20 42 42 26 20 43 43 20 20 44 44 29 24 45 45 28 21 46 46 27 25 47 47 24 22 48 48 29 24 49 49 25 26 50 50 36 27 51 51 32 27 52 52 30 27 53 53 38 28 54 54 34 29 55 55 33 29 56 56 32 27 57 57 31 27 58 58 30 27 59 59 31 27 60 60 36 27 61 61 30 27 62 62 39 30 63 63 38 28 64 64 37 31 65 65 34 29 66 66 39 30 67 67 35 32 68 68 69 33 69 69 41 34 70 70 40 35 71 71 52 36 72 72 43 37 73 73 42 38 74 74 46 39 75 75 47 40 76 76 65 41 77 77 40 35 78 78 41 34 79 79 55 42 80 80 68 43 81 81 93 43 82 82 82 43 83 83 60 44 84 84 40 35 85 85 54 45 86 86 44 46 87 87 45 47 88 88 48 48 89 89 50 49 90 90 46 39 91 91 64 50 92 92 47 40 93 93 46 39 94 94 50 49 95 95 86 51 96 96 89 51 97 97 88 51 98 98 57 52 99 99 56 53 100 100 52 36 101 101 54 45 102 102 58 54 103 103 62 55 104 104 59 56 105 105 58 54 106 106 54 45 107 107 67 57 108 108 91 57 109 109 93 57 110 110 49 58 111 111 48 48 112 112 56 53 113 113 58 54 114 114 50 49 115 115 63 59 116 116 51 60 117 117 50 49 118 118 58 54 119 119 66 61 120 120 88 61 121 121 91 61 122 122 53 62 123 123 42 38 124 124 60 44 125 125 57 52 126 126 53 62 127 127 61 63 128 128 49 58 129 129 57 52 130 130 62 55 131 131 44 46 132 132 49 58 133 133 63 59 134 134 45 47 135 135 44 46 136 136 64 50 137 137 90 64 138 138 87 64 139 139 86 64 140 140 92 51 141 141 90 51 142 142 66 51 143 143 84 51 144 144 92 51 145 145 67 51 146 146 85 51 147 147 84 51 148 148 68 51 149 149 42 38 150 150 43 37 151 151 69 33 152 152 70 65 153 153 81 66 154 154 55 42 155 155 71 67 156 156 70 65 157 157 41 34 158 158 76 68 159 159 77 69 160 160 47 40 161 161 77 69 162 162 74 70 163 163 65 41 164 164 81 66 165 165 79 71 166 166 59 56 167 167 79 71 168 168 76 68 169 169 51 60 170 170 74 70 171 171 75 72 172 172 45 47 173 173 75 72 174 174 78 73 175 175 48 48 176 176 78 73 177 177 80 74 178 178 56 53 179 179 80 74 180 180 72 75 181 181 52 36 182 182 72 75 183 183 73 76 184 184 43 37 185 185 73 76 186 186 71 67 187 187 69 33 188 188 83 77 189 189 82 78 190 190 70 65 191 191 82 78 192 192 93 79 193 193 81 66 194 194 89 80 195 195 86 81 196 196 74 70 197 197 88 82 198 198 89 80 199 199 77 69 200 200 93 79 201 201 91 83 202 202 79 71 203 203 91 83 204 204 88 82 205 205 76 68 206 206 87 84 207 207 90 85 208 208 78 73 209 209 86 81 210 210 87 84 211 211 75 72 212 212 90 85 213 213 92 86 214 214 80 74 215 215 92 86 216 216 84 87 217 217 72 75 218 218 85 88 219 219 83 77 220 220 71 67 221 221 84 87 222 222 85 88 223 223 73 76 224 224 2 89 225 225 3 89 226 226 0 89 227 227 4 90 228 228 5 90 229 229 2 90 230 230 6 91 231 231 7 91 232 232 4 91 233 233 0 92 234 234 1 92 235 235 6 92 236 236 3 93 237 237 5 93 238 238 1 93 239 239 4 94 240 240 2 5 241 241 6 7 242 242 12 14 243 243 11 12 244 244 9 11 245 245 14 8 246 246 13 10 247 247 12 14 248 248 15 16 249 249 19 15 250 250 16 18 251 251 27 25 252 252 28 21 253 253 23 23 254 254 25 26 255 255 29 24 256 256 27 25 257 257 23 23 258 258 24 22 259 259 25 26 260 260 37 31 261 261 38 28 262 262 33 29 263 263 35 32 264 264 39 30 265 265 37 31 266 266 33 29 267 267 34 29 268 268 35 32 269 269 60 44 270 270 69 33 271 271 40 35 272 272 53 62 273 273 52 36 274 274 42 38 275 275 64 50 276 276 46 39 277 277 65 41 278 278 54 45 279 279 40 35 280 280 55 42 281 281 83 51 282 282 68 51 283 283 82 51 284 284 61 63 285 285 60 44 286 286 54 45 287 287 49 58 288 288 44 46 289 289 48 48 290 290 63 59 291 291 50 49 292 292 64 50 293 293 51 60 294 294 47 40 295 295 50 49 296 296 66 51 297 297 86 51 298 298 88 51 299 299 53 62 300 300 57 52 301 301 52 36 302 302 61 63 303 303 54 45 304 304 62 55 305 305 55 42 306 306 59 56 307 307 54 45 308 308 68 51 309 309 67 51 310 310 93 79 311 311 57 52 312 312 49 58 313 313 56 53 314 314 62 55 315 315 58 54 316 316 63 59 317 317 59 56 318 318 51 60 319 319 58 54 320 320 67 51 321 321 66 51 322 322 91 51 323 323 61 63 324 324 53 62 325 325 60 44 326 326 62 55 327 327 57 52 328 328 61 63 329 329 63 59 330 330 49 58 331 331 62 55 332 332 64 50 333 333 44 46 334 334 63 59 335 335 65 41 336 336 45 47 337 337 64 50 338 338 66 51 339 339 90 51 340 340 86 51 341 341 67 51 342 342 92 51 343 343 66 51 344 344 68 51 345 345 84 51 346 346 67 51 347 347 83 51 348 348 85 51 349 349 68 51 350 350 60 44 351 351 42 38 352 352 69 33 353 353 41 34 354 354 70 65 355 355 55 42 356 356 69 33 357 357 71 67 358 358 41 34 359 359 51 60 360 360 76 68 361 361 47 40 362 362 47 40 363 363 77 69 364 364 65 41 365 365 55 42 366 366 81 66 367 367 59 56 368 368 59 56 369 369 79 71 370 370 51 60 371 371 65 41 372 372 74 70 373 373 45 47 374 374 45 47 375 375 75 72 376 376 48 48 377 377 48 48 378 378 78 73 379 379 56 53 380 380 56 53 381 381 80 74 382 382 52 36 383 383 52 36 384 384 72 75 385 385 43 37 386 386 43 37 387 387 73 76 388 388 69 33 389 389 71 67 390 390 83 77 391 391 70 65 392 392 70 65 393 393 82 78 394 394 81 66 395 395 77 69 396 396 89 80 397 397 74 70 398 398 76 68 399 399 88 82 400 400 77 69 401 401 81 66 402 402 93 79 403 403 79 71 404 404 79 71 405 405 91 83 406 406 76 68 407 407 75 72 408 408 87 84 409 409 78 73 410 410 74 70 411 411 86 81 412 412 75 72 413 413 78 73 414 414 90 85 415 415 80 74 416 416 80 74 417 417 92 86 418 418 72 75 419 419 73 76 420 420 85 88 421 421 71 67 422 422 72 75 423 423 84 87 424 424 73 76 425 425 101 95 426 426 95 96 427 427 94 97 428 428 96 98 429 429 105 99 430 430 97 100 431 431 98 101 432 432 97 100 433 433 95 96 434 434 104 102 435 435 103 103 436 436 102 104 437 437 99 105 438 438 100 106 439 439 104 102 440 440 98 101 441 441 96 98 442 442 97 100 443 443 101 95 444 444 98 101 445 445 95 96 446 446 102 104 447 447 99 105 448 448 104 102 449 449 19 15 450 450 103 103 451 451 104 102 452 452 15 16 453 453 103 103 454 454 17 17 455 455 12 14 456 456 101 95 457 457 14 8 458 458 16 18 459 459 102 104 460 460 15 16 461 461 11 12 462 462 105 99 463 463 10 13 464 464 11 12 465 465 95 96 466 466 97 100 467 467 12 14 468 468 96 98 469 469 98 101 470 470 9 11 471 471 105 99 472 472 96 98 473 473 13 10 474 474 94 97 475 475 95 96 476 476 16 18 477 477 100 106 478 478 99 105 479 479 14 8 480 480 94 97 481 481 8 9 482 482 18 19 483 483 104 102 484 484 100 106 485 485 19 15 486 486 17 17 487 487 103 103 488 488 15 16 489 489 102 104 490 490 103 103 491 491 12 14 492 492 98 101 493 493 101 95 494 494 16 18 495 495 99 105 496 496 102 104 497 497 11 12 498 498 97 100 499 499 105 99 500 500 11 12 501 501 13 10 502 502 95 96 503 503 12 14 504 504 9 11 505 505 96 98 506 506 9 11 507 507 10 13 508 508 105 99 509 509 13 10 510 510 8 9 511 511 94 97 512 512 16 18 513 513 18 19 514 514 100 106 515 515 14 8 516 516 101 95 517 517 94 97 518 518 18 19 519 519 19 15 520 520 104 102 521 521

99 |
100 |
101 |
102 |
103 | 104 | 105 | 106 | 107 | 1 0 0 0 0 -1.62921e-7 -1 0 0 1 -1.62921e-7 0 0 0 0 1 108 | 109 | 1 0 0 0 0 1 0 0.6603963 0 0 1 0.5193479 0 0 0 1 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 |
-------------------------------------------------------------------------------- /resources/dae/church01.dae: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Blender User 6 | Blender 2.77.0 commit date:2016-04-05, commit time:18:12, hash:abf6f08 7 | 8 | 2016-11-13T21:15:54 9 | 2016-11-13T21:15:54 10 | 11 | Z_UP 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 0 0 0 1 21 | 22 | 23 | 0 0 0 1 24 | 25 | 26 | 0.64 0.64 0.64 1 27 | 28 | 29 | 0.5 0.5 0.5 1 30 | 31 | 32 | 50 33 | 34 | 35 | 1 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -25.3263 0 9.125511 25.3263 0 9.125511 -25.3263 0 -9.125511 25.3263 0 -9.125511 103.392 0 20.9582 218.998 0 20.9582 103.392 0 -20.9582 218.998 0 -20.9582 208.793 -240.483 -102.358 100.076 -240.483 -102.358 208.793 -275.137 -102.358 100.076 -275.137 -102.358 208.793 -240.483 102.358 100.076 -240.483 102.358 208.793 -275.137 102.358 100.076 -275.137 102.358 208.793 -346.434 -102.358 100.076 -346.434 -102.358 208.793 -381.087 -102.358 100.076 -381.087 -102.358 208.793 -346.434 102.358 100.076 -346.434 102.358 208.793 -381.087 102.358 100.076 -381.087 102.358 208.793 -136.388 -102.358 100.076 -136.388 -102.358 208.793 -171.041 -102.358 100.076 -171.041 -102.358 208.793 -136.388 102.358 100.076 -136.388 102.358 208.793 -171.041 102.358 100.076 -171.041 102.358 220.593 -105.094 52.242 -43.4548 -105.094 52.242 220.593 -3.38243 52.242 -43.4548 -3.38243 52.242 220.593 -3.38243 -52.242 -43.4548 -3.38243 -52.242 220.593 -105.094 -52.242 -43.4548 -105.094 -52.242 -264.962 -58.2559 -4.12712 220.593 -448.59 100 63.0301 -448.59 100 220.593 -59.0822 100 63.0301 -59.0822 100 220.593 -59.0822 -100 63.0301 -59.0822 -100 220.593 -448.59 -100 63.0301 -448.59 -100 -48.5046 -448.59 0 220.593 -448.59 0 220.593 -59.0822 0 -48.5046 -59.0822 0 -42.2469 -3.38243 -52.242 -42.2469 -105.094 -52.242 -42.2469 -105.094 52.242 -42.2469 -3.38243 52.242 65.058 -59.0822 -100 -45.0411 -59.0822 0 65.058 -59.0822 100 65.058 -448.59 100 -45.0411 -448.59 0 65.058 -448.59 -100 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 0 1 0 0 1 0 0 0 -1 0 0 1 0 1 0 0 -1 0 -0.2068774 -0.9783669 0 -0.6675575 0 0.7445583 -0.2466196 0 0.9691124 -0.2404592 0.9706593 0 -0.2122659 0 -0.977212 0 -1 -4.87584e-5 -0.6675575 0 -0.7445582 0 1 -3.76222e-6 0 -1 -2.25567e-5 -0.1378554 -0.6998671 -0.7008438 0 0.7071068 -0.7071068 0 -0.7071068 -0.7071068 -0.1484439 -0.6958308 0.7026976 0 -0.7071068 0.7071068 -0.158211 0.6976668 0.6987349 0 0.7071068 0.7071068 -0.1481101 0.7017301 -0.6968775 0 1 0 0 -1 -2.94108e-7 -0.6675575 0 0.7445582 0 1 3.76222e-6 0 -1 2.25567e-5 -0.6675575 0 -0.7445583 0 -1 4.87584e-5 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 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 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 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 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 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 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 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 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 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 0.6745098 0.6862745 0.7647059 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.5176471 0.3960784 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 1 0.9960784 1 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 98 |

3 0 0 0 0 0 1 1 1 0 2 2 7 1 3 3 4 1 4 4 5 1 5 5 11 2 6 6 8 2 7 7 10 2 8 8 15 3 9 9 12 3 10 10 13 3 11 11 19 2 12 12 16 2 13 13 18 2 14 14 23 3 15 15 20 3 16 16 21 3 17 17 27 2 18 18 24 2 19 19 26 2 20 20 31 3 21 21 28 3 22 22 29 3 23 23 56 3 24 24 32 3 25 25 34 3 26 26 53 4 27 27 34 4 28 28 36 4 29 29 54 2 30 30 36 2 31 31 38 2 32 32 55 5 33 33 38 5 34 34 32 5 35 35 33 6 36 36 40 6 37 37 39 6 38 38 42 7 39 39 52 7 40 40 49 7 41 41 35 8 42 42 40 8 43 43 33 8 44 44 37 9 45 45 40 9 46 46 35 9 47 47 39 10 48 48 40 10 49 49 37 10 50 50 44 3 51 51 60 3 52 52 59 3 53 53 58 4 54 54 46 4 55 55 52 4 56 56 48 2 57 57 57 2 58 58 62 2 59 59 61 11 60 60 48 11 61 61 62 11 62 62 46 12 63 63 49 12 64 64 52 12 65 65 58 13 66 66 44 13 67 67 59 13 68 68 61 14 69 69 42 14 70 70 49 14 71 71 39 15 72 72 53 16 73 73 54 17 74 74 33 18 75 75 54 17 76 76 55 19 77 77 35 20 78 78 55 19 79 79 56 21 80 80 37 22 81 81 56 21 82 82 53 16 83 83 51 23 84 84 57 23 85 85 58 23 86 86 59 4 87 87 51 4 88 88 58 4 89 89 41 3 90 90 59 3 91 91 60 3 92 92 50 24 93 93 60 24 94 94 61 24 95 95 62 5 96 96 50 5 97 97 61 5 98 98 45 2 99 99 62 2 100 100 57 2 101 101 3 0 102 102 2 0 103 103 0 0 104 104 7 1 105 105 6 1 106 106 4 1 107 107 11 2 108 108 9 2 109 109 8 2 110 110 15 3 111 111 14 3 112 112 12 3 113 113 19 2 114 114 17 2 115 115 16 2 116 116 23 3 117 117 22 3 118 118 20 3 119 119 27 2 120 120 25 2 121 121 24 2 122 122 31 3 123 123 30 3 124 124 28 3 125 125 56 3 126 126 55 3 127 127 32 3 128 128 53 4 129 129 56 4 130 130 34 4 131 131 54 2 132 132 53 2 133 133 36 2 134 134 55 5 135 135 54 5 136 136 38 5 137 137 42 25 138 138 44 25 139 139 52 25 140 140 44 3 141 141 42 3 142 142 60 3 143 143 58 26 144 144 57 26 145 145 46 26 146 146 48 2 147 147 46 2 148 148 57 2 149 149 61 27 150 150 49 27 151 151 48 27 152 152 46 28 153 153 48 28 154 154 49 28 155 155 58 4 156 156 52 4 157 157 44 4 158 158 61 29 159 159 60 29 160 160 42 29 161 161 39 15 162 162 37 22 163 163 53 16 164 164 33 18 165 165 39 15 166 166 54 17 167 167 35 20 168 168 33 18 169 169 55 19 170 170 37 22 171 171 35 20 172 172 56 21 173 173 51 4 174 174 45 4 175 175 57 4 176 176 59 4 177 177 43 4 178 178 51 4 179 179 41 3 180 180 43 3 181 181 59 3 182 182 50 5 183 183 41 5 184 184 60 5 185 185 62 5 186 186 47 5 187 187 50 5 188 188 45 2 189 189 47 2 190 190 62 2 191 191

99 |
100 |
101 |
102 |
103 | 104 | 105 | 106 | 107 | 1.94707e-9 0.01 -4.37114e-10 2.53836 0 -4.37114e-10 -0.009999999 -9.61607e-8 -0.01 1.94707e-9 0 2.1999 0 0 0 1 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 |
-------------------------------------------------------------------------------- /resources/dae/pier01.dae: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Blender User 6 | Blender 2.77.0 commit date:2016-04-05, commit time:18:12, hash:abf6f08 7 | 8 | 2016-11-12T17:17:20 9 | 2016-11-12T17:17:20 10 | 11 | Z_UP 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 0 0 0 1 21 | 22 | 23 | 0 0 0 1 24 | 25 | 26 | 0.8 0.8 0.8 1 27 | 28 | 29 | 0.02 0.02 0.02 1 30 | 31 | 32 | 256 33 | 34 | 35 | 1 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -1 -1.381054 -1 -0.616654 -0.8839959 0.9504018 -1 1.404258 -1 -0.616654 0.01445859 0.9504018 1 -1.381054 -1 0.606172 -0.8839959 0.9386443 1 1.404258 -1 0.606172 0.01445859 0.9386444 -0.03044945 0.01445859 1.489152 -0.03044945 1.404258 -1 -0.03044945 -0.8839959 1.489152 -0.03044945 -1.381054 -1 -1 -1.381054 0.5980882 -1 1.404258 0.5980882 -0.03044945 1.404258 1.489152 1 1.404258 0.5980882 1 -1.381054 0.5980882 -0.03044945 -1.381054 1.489152 -0.04045706 0.01445859 2.018385 -0.04045706 -0.8839959 2.018385 -0.6266617 -0.8839959 1.348702 -0.6266617 0.01445859 1.348702 0.5961644 0.01445859 1.348702 0.5961644 -0.8839959 1.348702 -4.77377 -0.6730466 -0.7250887 -4.77377 0.6962504 -0.7250887 -0.9201492 -0.6730466 -0.7250886 -0.9201492 0.6962504 -0.7250886 -1.097868 1.307128 -1.866773 -1.097868 1.307128 0.5451117 -1.097868 1.507128 -1.866773 -1.097868 1.507128 0.5451117 -0.8978675 1.307128 -1.866773 -0.8978675 1.307128 0.5451117 -0.8978675 1.507128 -1.866773 -0.8978675 1.507128 0.5451117 -1.095511 -1.483392 -1.866773 -1.095511 -1.483392 0.5451117 -1.095511 -1.283391 -1.866773 -1.095511 -1.283391 0.5451117 -0.8955107 -1.483392 -1.866773 -0.8955107 -1.483392 0.5451117 -0.8955107 -1.283391 -1.866773 -0.8955107 -1.283391 0.5451117 -4.737718 -0.6317669 -0.5965046 -4.737718 -0.6317669 -1.866773 -4.737718 -0.7311501 -0.5965046 -4.737718 -0.7311501 -1.866773 -4.798905 -0.6317669 -0.5965046 -4.798905 -0.6317669 -1.866773 -4.798905 -0.7311501 -0.5965046 -4.798905 -0.7311501 -1.866773 -4.738439 0.7548864 -0.5965046 -4.738439 0.7548864 -1.866773 -4.738439 0.6555032 -0.5965046 -4.738439 0.6555032 -1.866773 -4.799626 0.7548864 -0.5965046 -4.799626 0.7548864 -1.866773 -4.799626 0.6555032 -0.5965046 -4.799626 0.6555032 -1.866773 -3.594975 -0.6317669 -0.5965046 -3.594975 -0.6317669 -1.866773 -3.594975 -0.7311501 -0.5965046 -3.594975 -0.7311501 -1.866773 -3.656162 -0.6317669 -0.5965046 -3.656162 -0.6317669 -1.866773 -3.656162 -0.7311501 -0.5965046 -3.656162 -0.7311501 -1.866773 -3.595696 0.7548864 -0.5965046 -3.595696 0.7548864 -1.866773 -3.595696 0.6555032 -0.5965046 -3.595696 0.6555032 -1.866773 -3.656883 0.7548864 -0.5965046 -3.656883 0.7548864 -1.866773 -3.656883 0.6555032 -0.5965046 -3.656883 0.6555032 -1.866773 -2.391988 -0.6317669 -0.5965046 -2.391988 -0.6317669 -1.866773 -2.391988 -0.7311501 -0.5965046 -2.391988 -0.7311501 -1.866773 -2.453176 -0.6317669 -0.5965046 -2.453176 -0.6317669 -1.866773 -2.453176 -0.7311501 -0.5965046 -2.453176 -0.7311501 -1.866773 -2.392709 0.7548864 -0.5965046 -2.392709 0.7548864 -1.866773 -2.392709 0.6555032 -0.5965046 -2.392709 0.6555032 -1.866773 -2.453897 0.7548864 -0.5965046 -2.453897 0.7548864 -1.866773 -2.453897 0.6555032 -0.5965046 -2.453897 0.6555032 -1.866773 -1 -1.381054 0.5907562 -1 1.404258 0.5907562 1 1.404258 0.5907562 1 -1.381054 0.5907562 -0.03044945 -1.381054 1.477732 -0.03044945 1.404258 1.477732 -0.6262063 -0.8839959 1.330579 -0.6262063 0.01445859 1.330579 0.5966197 -0.8839959 1.330045 -0.04000169 -0.8839959 1.994305 -0.04000169 0.01445859 1.994305 0.5966197 0.01445859 1.330045 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | -1 0 0 0 1 0 1 0 0 0 -1 0 0 0 -1 -0.9996846 0 -0.0251165 -0.6766772 0 0.7362799 0.6540952 0 0.7564123 0.6540948 0 0.7564126 -0.6766769 0 0.7362802 -0.6766772 0 0.7362799 0.6540951 1.7605e-7 0.7564124 -0.7524475 0 0.6586523 0.7247711 0 0.6889898 0 -1 -1.69418e-6 0 1 0 0.9997024 0 0.02439707 0 0 1 0 0 1 0.9997024 0 0.02439832 0 1 0 0 1 0 0 -1 0 -0.9996845 0 -0.02511793 0 -1 -3.78147e-7 0 -1 1.59911e-6 -0.9996845 0 -0.02511686 -0.676677 0 0.73628 0.6540951 0 0.7564124 0.6540952 0 0.7564124 -0.6766773 0 0.7362797 -0.6766769 0 0.73628 -0.7524477 0 0.6586522 0.724771 0 0.6889899 0 1 0 0.9997024 0 0.02439707 0 0 1 0.9997024 0 0.02439814 0 1 0 0 1 0 0 -1 3.94128e-7 -0.9996845 0 -0.02511793 0 -1 0 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 1 1 1 1 1 1 1 1 1 1 1 1 0.9960784 0.9960784 0.9960784 0.9960784 0.9960784 0.9960784 1 1 1 1 1 1 1 1 1 0.9960784 0.9960784 0.9960784 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.9960784 0.9960784 0.9960784 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.9960784 0.9960784 0.9960784 0.9960784 0.9960784 0.9960784 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 0.5764706 0.1882353 0.1529412 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.9960784 0.9960784 0.9960784 1 1 1 1 1 1 1 1 1 0.9960784 0.9960784 0.9960784 0.9960784 0.9960784 0.9960784 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.9960784 0.9960784 0.9960784 0.9960784 0.9960784 0.9960784 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.9960784 0.9960784 0.9960784 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 88 |

93 0 0 0 0 1 92 0 2 94 1 3 9 1 4 97 1 5 95 2 6 6 2 7 94 2 8 92 3 9 11 3 10 96 3 11 9 4 12 4 4 13 11 4 14 101 3 15 23 3 16 19 3 17 98 5 18 21 5 19 99 5 20 2 4 21 11 4 22 0 4 23 95 3 24 11 3 25 4 3 26 93 1 27 9 1 28 2 1 29 3 6 30 12 6 31 1 6 32 7 7 33 14 7 34 8 7 35 7 8 36 16 8 37 15 8 38 1 9 39 17 9 40 10 9 41 3 10 42 14 10 43 13 10 44 5 11 45 17 11 46 16 11 47 18 12 48 20 12 49 19 12 50 22 13 51 19 13 52 23 13 53 101 14 54 20 14 55 98 14 56 102 15 57 22 15 58 103 15 59 102 1 60 21 1 61 18 1 62 103 16 63 23 16 64 100 16 65 27 17 66 24 17 67 26 17 68 31 0 69 28 0 70 29 0 71 35 1 72 30 1 73 31 1 74 33 2 75 34 2 76 35 2 77 29 3 78 32 3 79 33 3 80 30 4 81 32 4 82 28 4 83 35 18 84 29 18 85 33 18 86 39 0 87 36 0 88 37 0 89 43 1 90 38 1 91 39 1 92 41 2 93 42 2 94 43 2 95 37 3 96 40 3 97 41 3 98 38 4 99 40 4 100 36 4 101 43 18 102 37 18 103 41 18 104 49 4 105 47 4 106 51 4 107 44 1 108 49 1 109 48 1 110 48 0 111 51 0 112 50 0 113 44 18 114 50 18 115 46 18 116 50 3 117 47 3 118 46 3 119 46 2 120 45 2 121 44 2 122 57 4 123 55 4 124 59 4 125 52 1 126 57 1 127 56 1 128 56 0 129 59 0 130 58 0 131 52 18 132 58 18 133 54 18 134 58 3 135 55 3 136 54 3 137 54 2 138 53 2 139 52 2 140 65 4 141 63 4 142 67 4 143 60 1 144 65 1 145 64 1 146 64 0 147 67 0 148 66 0 149 60 18 150 66 18 151 62 18 152 66 3 153 63 3 154 62 3 155 62 2 156 61 2 157 60 2 158 73 4 159 71 4 160 75 4 161 68 1 162 73 1 163 72 1 164 72 0 165 75 0 166 74 0 167 68 18 168 74 18 169 70 18 170 74 3 171 71 3 172 70 3 173 70 2 174 69 2 175 68 2 176 81 4 177 79 4 178 83 4 179 76 1 180 81 1 181 80 1 182 80 0 183 83 0 184 82 0 185 76 18 186 82 18 187 78 18 188 82 3 189 79 3 190 78 3 191 78 2 192 77 2 193 76 2 194 89 4 195 87 4 196 91 4 197 84 1 198 89 1 199 88 1 200 88 0 201 91 0 202 90 0 203 84 18 204 90 18 205 86 18 206 90 3 207 87 3 208 86 3 209 86 2 210 85 2 211 84 2 212 13 1 213 97 1 214 93 1 215 16 3 216 96 3 217 95 3 218 12 3 219 96 3 220 17 3 221 16 2 222 94 2 223 15 2 224 15 1 225 97 1 226 14 1 227 13 0 228 92 0 229 12 0 230 7 19 231 100 19 232 5 19 233 8 20 234 99 20 235 102 20 236 8 21 237 103 21 238 7 21 239 10 22 240 98 22 241 1 22 242 1 23 243 99 23 244 3 23 245 10 24 246 100 24 247 101 24 248 93 0 249 2 0 250 0 0 251 94 1 252 6 1 253 9 1 254 95 2 255 4 2 256 6 2 257 92 3 258 0 3 259 11 3 260 9 4 261 6 4 262 4 4 263 101 25 264 100 25 265 23 25 266 98 26 267 20 26 268 21 26 269 2 4 270 9 4 271 11 4 272 95 3 273 96 3 274 11 3 275 93 1 276 97 1 277 9 1 278 3 27 279 13 27 280 12 27 281 7 28 282 15 28 283 14 28 284 7 29 285 5 29 286 16 29 287 1 30 288 12 30 289 17 30 290 3 31 291 8 31 292 14 31 293 5 7 294 10 7 295 17 7 296 18 32 297 21 32 298 20 32 299 22 33 300 18 33 301 19 33 302 101 3 303 19 3 304 20 3 305 102 1 306 18 1 307 22 1 308 102 34 309 99 34 310 21 34 311 103 35 312 22 35 313 23 35 314 27 36 315 25 36 316 24 36 317 31 0 318 30 0 319 28 0 320 35 1 321 34 1 322 30 1 323 33 2 324 32 2 325 34 2 326 29 3 327 28 3 328 32 3 329 30 4 330 34 4 331 32 4 332 35 18 333 31 18 334 29 18 335 39 0 336 38 0 337 36 0 338 43 1 339 42 1 340 38 1 341 41 2 342 40 2 343 42 2 344 37 3 345 36 3 346 40 3 347 38 4 348 42 4 349 40 4 350 43 18 351 39 18 352 37 18 353 49 4 354 45 4 355 47 4 356 44 1 357 45 1 358 49 1 359 48 0 360 49 0 361 51 0 362 44 18 363 48 18 364 50 18 365 50 3 366 51 3 367 47 3 368 46 2 369 47 2 370 45 2 371 57 4 372 53 4 373 55 4 374 52 1 375 53 1 376 57 1 377 56 0 378 57 0 379 59 0 380 52 18 381 56 18 382 58 18 383 58 3 384 59 3 385 55 3 386 54 2 387 55 2 388 53 2 389 65 4 390 61 4 391 63 4 392 60 1 393 61 1 394 65 1 395 64 0 396 65 0 397 67 0 398 60 18 399 64 18 400 66 18 401 66 3 402 67 3 403 63 3 404 62 2 405 63 2 406 61 2 407 73 4 408 69 4 409 71 4 410 68 1 411 69 1 412 73 1 413 72 0 414 73 0 415 75 0 416 68 18 417 72 18 418 74 18 419 74 3 420 75 3 421 71 3 422 70 2 423 71 2 424 69 2 425 81 4 426 77 4 427 79 4 428 76 1 429 77 1 430 81 1 431 80 0 432 81 0 433 83 0 434 76 18 435 80 18 436 82 18 437 82 3 438 83 3 439 79 3 440 78 2 441 79 2 442 77 2 443 89 4 444 85 4 445 87 4 446 84 1 447 85 1 448 89 1 449 88 0 450 89 0 451 91 0 452 84 18 453 88 18 454 90 18 455 90 3 456 91 3 457 87 3 458 86 2 459 87 2 460 85 2 461 13 1 462 14 1 463 97 1 464 16 3 465 17 3 466 96 3 467 12 3 468 92 3 469 96 3 470 16 2 471 95 2 472 94 2 473 15 1 474 94 1 475 97 1 476 13 0 477 93 0 478 92 0 479 7 37 480 103 37 481 100 37 482 8 38 483 3 38 484 99 38 485 8 39 486 102 39 487 103 39 488 10 40 489 101 40 490 98 40 491 1 41 492 98 41 493 99 41 494 10 42 495 5 42 496 100 42 497

89 |
90 |
91 |
92 |
93 | 94 | 95 | 96 | 97 | 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 |
-------------------------------------------------------------------------------- /resources/dae/tree.dae: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | modo 1001 [Build 109580], Mac OS X Version 10.11.6 (Build 15G1004) (Version 10.11.6 (Build 15G1004)) 6 | 7 | Plug-in: [Build 109580]; 8 | Use Absolute Path: No; 9 | Merge Reference Items: No; 10 | Save Hidden Items: Yes; 11 | Save Cameras: Yes; 12 | Save Lights: Yes; 13 | Save Locators: Yes; 14 | Save Triangles as Triangles: No; 15 | Order Vertex Maps Alphabetically: Yes; 16 | Bake Matrices: No; 17 | Save Vertex Normals: Yes; 18 | Save UV Texture Coordinates: Yes; 19 | Save Vertex Colors: Yes; 20 | Save Vertex Weights: Yes; 21 | Save Animation: Yes; 22 | Sample Animation: No; 23 | Sample Animation Start: 0; 24 | Sample Animation End: 120; 25 | Save modo Profile: Yes; 26 | Save Maya Profile: Yes; 27 | Save 3ds Max Profile: Yes; 28 | Formatted Arrays: Yes; 29 | 30 | file:///Users/alexanderperrin/Projects/flight/resources/tree.lxo 31 | 32 | 2016-10-30T03:14:55Z 33 | 2016-10-30T03:14:55Z 34 | Y_UP 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 0.48 0.48 0.48 1 48 | 49 | 50 | 0.04 0.04 0.04 1 51 | 52 | 53 | 256 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | -0.114694 2.17672 -2.03989 66 | -1.74518 2.16815 -1.36644 67 | -2.29039 2.16101 0.223067 68 | -1.42802 2.16061 1.82219 69 | 0.300392 2.17083 2.37456 70 | 1.90843 2.18579 1.61598 71 | 2.46757 2.19395 0.054564 72 | 1.67221 2.18817 -1.41259 73 | 0.266709 4.24726 -3.38642 74 | -2.5391 4.08501 -2.59005 75 | -3.80202 3.96171 -0.0885428 76 | -2.78222 3.94221 2.69164 77 | -0.153397 4.04903 3.90675 78 | 2.57438 4.22851 2.96148 79 | 3.84001 4.37012 0.509051 80 | 2.96066 4.37477 -2.02039 81 | -4.90481 7.00973 -0.635486 82 | -2.84196 7.09655 -3.74203 83 | 0.931792 7.23515 -4.38757 84 | 4.13706 7.34659 -2.24891 85 | 4.84555 7.34799 1.18643 86 | 2.81159 7.24705 4.25354 87 | -0.840735 7.11517 5.1171 88 | -4.03563 7.01916 3.15518 89 | -1.45995 10.7494 5.14537 90 | -4.40823 10.7095 2.74527 91 | -4.77498 10.6813 -1.24616 92 | -2.2317 10.6847 -4.18885 93 | 1.69921 10.7191 -4.38023 94 | 4.60296 10.7647 -1.81404 95 | 4.81141 10.7861 1.82197 96 | 2.30664 10.7779 4.72463 97 | -1.73194 14.5921 4.36564 98 | -3.99371 14.6357 1.89815 99 | -3.82299 14.6241 -1.6506 100 | -1.22343 14.56 -3.9789 101 | 2.26415 14.4834 -3.72254 102 | 4.47172 14.4429 -1.13285 103 | 4.16819 14.4601 2.16001 104 | 1.58461 14.522 4.44995 105 | -3.29519 18.1168 1.15839 106 | -2.78697 18.1617 -1.73382 107 | -0.405627 18.1121 -3.42767 108 | 2.46827 17.9971 -2.92014 109 | 4.04332 17.8869 -0.567531 110 | 3.4368 17.848 2.20116 111 | 1.03142 17.8976 3.86827 112 | -1.69983 18.0056 3.4453 113 | -2.38368 21.2896 0.664578 114 | -1.83107 21.3315 -1.42772 115 | 0.0422468 21.3195 -2.54998 116 | 2.15275 21.257 -2.01869 117 | 3.17595 21.1809 -0.182976 118 | 2.54306 21.1385 1.85564 119 | 0.650891 21.1528 2.94736 120 | -1.34708 21.2148 2.45835 121 | 0.246808 24.0236 -1.21571 122 | 1.31247 24.0089 -0.90045 123 | 1.7868 23.9762 0.0558336 124 | 1.41095 23.949 1.07739 125 | 0.427297 23.9406 1.58823 126 | -0.581444 23.954 1.2984 127 | -1.07209 23.9819 0.362658 128 | -0.740234 24.0101 -0.686355 129 | 0.34121 26.801 0.197811 130 | -0.0333804 1.47695 -1.157 131 | -1.01167 1.4718 -0.752928 132 | -1.3388 1.46752 0.200775 133 | -0.821375 1.46728 1.16025 134 | 0.215671 1.47341 1.49167 135 | 1.1805 1.48239 1.03652 136 | 1.51598 1.48728 0.0996727 137 | 1.03876 1.48381 -0.780619 138 | 0 -1.24 -0.7 139 | -0.494975 -1.24 -0.494975 140 | -0.7 -1.24 0 141 | -0.494975 -1.24 0.494975 142 | 0 -1.24 0.7 143 | 0.494975 -1.24 0.494975 144 | 0.7 -1.24 0 145 | 0.494975 -1.24 -0.494975 146 | 0 2.02 -0.7 147 | -0.494975 2.02 -0.494975 148 | -0.7 2.02 0 149 | -0.494975 2.02 0.494975 150 | 0 2.02 0.7 151 | 0.494975 2.02 0.494975 152 | 0.7 2.02 0 153 | 0.494975 2.02 -0.494975 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | -0.367974 -0.479155 -0.796872 166 | -0.79974 -0.511879 -0.31368 167 | -0.628153 -0.586258 0.51159 168 | -0.183088 -0.660604 0.728067 169 | 0.196489 -0.721225 0.664249 170 | 0.703129 -0.683916 0.1946 171 | 0.642289 -0.545163 -0.53876 172 | 0.378037 -0.56022 -0.73705 173 | -0.760748 -0.572242 -0.30627 174 | -0.324129 -0.617571 -0.716622 175 | 0.40389 -0.435429 -0.804534 176 | 0.73419 -0.355498 -0.578434 177 | 0.842884 -0.475754 0.251406 178 | 0.239208 -0.433479 0.868836 179 | -0.200159 -0.549532 0.811142 180 | -0.586735 -0.653253 0.478543 181 | -0.275974 -0.380489 0.882647 182 | -0.914286 -0.29738 0.275038 183 | -0.871716 -0.0091405 -0.489926 184 | -0.0190297 -0.404638 -0.914279 185 | 0.591056 -0.151934 -0.792192 186 | 0.89276 -0.119264 -0.434461 187 | 0.794899 -0.16688 0.583341 188 | 0.240819 -0.0963227 0.965779 189 | -0.54981 0.142454 0.823053 190 | -0.978332 0.190569 -0.0809342 191 | -0.838537 0.327044 -0.435773 192 | 0.265747 -0.105767 -0.958223 193 | 0.642331 -0.283137 -0.71221 194 | 0.971672 -0.0628388 -0.227828 195 | 0.673356 0.207158 0.709702 196 | 0.340461 0.132274 0.930908 197 | -0.901639 0.298639 -0.312828 198 | -0.872217 0.170597 -0.458404 199 | 0.195866 0.322005 -0.926255 200 | 0.858419 0.240523 -0.453063 201 | 0.931433 0.100632 0.349721 202 | 0.67023 0.192945 0.716633 203 | 0.12277 0.101411 0.98724 204 | -0.77566 0.332272 0.536607 205 | -0.976339 0.0830761 -0.199649 206 | -0.527235 0.303344 -0.793729 207 | 0.415884 0.245246 -0.875725 208 | 0.870912 0.131018 -0.473653 209 | 0.876103 0.0592094 0.478474 210 | 0.661793 0.0145185 0.749546 211 | -0.319926 0.261861 0.910536 212 | -0.874253 0.31793 0.366881 213 | 0.410346 0.179957 -0.893997 214 | 0.89571 0.262806 -0.35866 215 | 0.839987 0.287922 0.459916 216 | 0.426948 0.230877 0.874306 217 | -0.439294 0.254823 0.861444 218 | -0.842477 0.0498319 0.536423 219 | -0.848922 0.0222785 -0.528048 220 | -0.519314 -0.060697 -0.852425 221 | 0.711436 0.621166 0.328652 222 | 0.296991 0.550198 0.780435 223 | -0.277898 0.466254 0.839869 224 | -0.804707 0.400685 0.438063 225 | -0.826467 0.393711 -0.402421 226 | -0.367159 0.446228 -0.816134 227 | 0.347307 0.556777 -0.754571 228 | 0.726286 0.625463 -0.285139 229 | -0.00903199 -0.784063 -0.620616 230 | -0.423974 -0.807654 -0.409806 231 | -0.587436 -0.80769 0.0505482 232 | -0.386838 -0.791004 0.473993 233 | 0.0445213 -0.786005 0.616615 234 | 0.448086 -0.797126 0.404733 235 | 0.594034 -0.802996 -0.0481832 236 | 0.401617 -0.784754 -0.472085 237 | 0 -1 0 238 | -0.382683 0 -0.92388 239 | -0.92388 0 -0.382683 240 | -0.92388 0 0.382683 241 | -0.382683 0 0.92388 242 | 0.382683 0 0.92388 243 | 0.92388 0 0.382683 244 | 0.92388 0 -0.382683 245 | 0.382683 0 -0.92388 246 | 0 1 0 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 0 0.5 259 | 0 0 260 | 0.125 0 261 | 0.125 0.5 262 | 0.25 0 263 | 0.25 0.5 264 | 0.375 0 265 | 0.375 0.5 266 | 0.5 0 267 | 0.5 0.5 268 | 0.625 0 269 | 0.625 0.5 270 | 0.75 0 271 | 0.75 0.5 272 | 0.875 0 273 | 0.875 0.5 274 | 1 0 275 | 1 0.5 276 | 1 1 277 | 0 1 278 | 0.5 1 279 | 0.98097 0.654329 280 | 0.98097 0.845671 281 | 0.845671 0.98097 282 | 0.654329 0.98097 283 | 0.51903 0.845671 284 | 0.51903 0.654329 285 | 0.654329 0.51903 286 | 0.845671 0.51903 287 | 0.48097 0.845671 288 | 0.345671 0.98097 289 | 0.154329 0.98097 290 | 0.0190301 0.845671 291 | 0.0190301 0.654329 292 | 0.154329 0.51903 293 | 0.345671 0.51903 294 | 0.48097 0.654329 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 0.320638 0.380634 0.135941 1.24537 306 | 0.295108 0.350326 0.125116 1.41374 307 | 0.29472 0.349865 0.124952 1.4163 308 | 0.318156 0.377688 0.134889 1.26173 309 | 0.294538 0.349649 0.124875 1.4175 310 | 0.316421 0.375629 0.134153 1.27318 311 | 0.294682 0.349821 0.124936 1.41655 312 | 0.316358 0.375553 0.134126 1.27359 313 | 0.295107 0.350325 0.125116 1.41375 314 | 0.318127 0.377654 0.134876 1.26192 315 | 0.29557 0.350874 0.125312 1.4107 316 | 0.320807 0.380835 0.136012 1.24425 317 | 0.295767 0.351108 0.125396 1.4094 318 | 0.322767 0.383163 0.136844 1.23132 319 | 0.295558 0.350861 0.125307 1.41077 320 | 0.322672 0.38305 0.136803 1.23195 321 | 0.353715 0.419903 0.149965 1.02721 322 | 0.35514 0.421594 0.150569 1.01781 323 | 0.357498 0.424394 0.151569 1.00226 324 | 0.359424 0.42668 0.152386 0.989556 325 | 0.359564 0.426846 0.152445 0.988633 326 | 0.35797 0.424954 0.151769 0.999144 327 | 0.355716 0.422278 0.150813 1.01401 328 | 0.353982 0.420219 0.150078 1.02545 329 | 0.400303 0.47521 0.169718 0.719944 330 | 0.399301 0.47402 0.169293 0.726554 331 | 0.398891 0.473534 0.169119 0.729257 332 | 0.399373 0.474106 0.169324 0.726078 333 | 0.400478 0.475418 0.169792 0.718791 334 | 0.401542 0.476681 0.170243 0.711775 335 | 0.40184 0.477035 0.170369 0.709809 336 | 0.401306 0.4764 0.170143 0.713331 337 | 0.447514 0.531258 0.189735 0.408569 338 | 0.447659 0.531429 0.189796 0.407617 339 | 0.447545 0.531294 0.189748 0.408366 340 | 0.447207 0.530892 0.189604 0.410598 341 | 0.446869 0.530492 0.189461 0.412822 342 | 0.446753 0.530354 0.189412 0.413587 343 | 0.446913 0.530543 0.18948 0.412537 344 | 0.447227 0.530916 0.189613 0.410466 345 | 0.49059 0.582395 0.207998 0.12447 346 | 0.49123 0.583156 0.20827 0.120247 347 | 0.491033 0.582922 0.208186 0.121545 348 | 0.490116 0.581833 0.207797 0.127596 349 | 0.489034 0.580549 0.207339 0.134729 350 | 0.488451 0.579856 0.207092 0.138576 351 | 0.488644 0.580086 0.207174 0.137301 352 | 0.489499 0.581101 0.207536 0.131661 353 | 0.509462 0.6048 0.216 3.0456 354 | 0.291127 0.3456 0.123429 1.44 355 | 0.27451 0.168963 0.0495673 1 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 0.382513 369 | 1 370 | 0.388933 371 | 0.388651 372 | 0.384866 373 | 0.387082 374 | 0.39403 375 | 0.390349 376 | 0.380323 377 | 0 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 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 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 8 4 4 4 4 4 4 4 4 8 395 |

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

396 |
397 | 398 | 399 | default 400 | 0 401 | false 402 | 0.05 403 | 404 | 405 |
406 |
407 |
408 | 409 | 410 | 411 | 412 | 0 0 0 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 1 422 | 120 423 | 300 424 | pixels 425 | 1 426 | 32 427 | 32 428 | hilbert 429 | false 430 | false 431 | 0 432 | 1 433 | 0 434 | 1 435 | s8 436 | gaussian 437 | 0.25 438 | 0.1 439 | false 440 | true 441 | 8 442 | 8 443 | 0.001 444 | false 445 | 10 446 | true 447 | 1 448 | 4 449 | 0.0001 450 | true 451 | 0 452 | 1 1 1 453 | true 454 | all 455 | 64 456 | 1 457 | 0 458 | 1 459 | false 460 | true 461 | 256 462 | true 463 | 2.5 464 | 6 465 | 1 466 | both 467 | false 468 | false 469 | 470 | false 471 | 472 | false 473 | 100000 474 | 32 475 | refraction 476 | 477 | 478 | 479 | 480 | 481 | 482 | 1 483 | true 484 | true 485 | true 486 | true 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 24 508 | 0 509 | 5 510 | 0 511 | 5 512 | frames 513 | 514 | 515 | 516 | 517 | 24 518 | 519 | 520 | 521 | 522 | 0 523 | 5 524 | 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 24 533 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 |
542 | -------------------------------------------------------------------------------- /resources/pier.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexanderperrin/threejs-ballooning/f1ee634626bd679980de68685bf8d1a3ca263b69/resources/pier.blend -------------------------------------------------------------------------------- /resources/plane.lxo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexanderperrin/threejs-ballooning/f1ee634626bd679980de68685bf8d1a3ca263b69/resources/plane.lxo -------------------------------------------------------------------------------- /resources/tree.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexanderperrin/threejs-ballooning/f1ee634626bd679980de68685bf8d1a3ca263b69/resources/tree.fbx -------------------------------------------------------------------------------- /resources/tree.lxo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexanderperrin/threejs-ballooning/f1ee634626bd679980de68685bf8d1a3ca263b69/resources/tree.lxo -------------------------------------------------------------------------------- /src/ImprovedNoise.js: -------------------------------------------------------------------------------- 1 | // http://mrl.nyu.edu/~perlin/noise/ 2 | 3 | var ImprovedNoise = function () { 4 | 5 | var p = [ 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10, 6 | 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56, 87, 7 | 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211, 8 | 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208, 9 | 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226, 250, 124, 123, 5, 10 | 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, 170, 213, 119, 11 | 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232, 12 | 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249, 13 | 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205, 14 | 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180 ]; 15 | 16 | for ( var i = 0; i < 256; i++ ) { 17 | 18 | p[ 256 + i ] = p[ i ]; 19 | 20 | } 21 | 22 | function fade( t ) { 23 | 24 | return t * t * t * ( t * ( t * 6 - 15 ) + 10 ); 25 | 26 | } 27 | 28 | function lerp( t, a, b ) { 29 | 30 | return a + t * ( b - a ); 31 | 32 | } 33 | 34 | function grad( hash, x, y, z ) { 35 | 36 | var h = hash & 15; 37 | var u = h < 8 ? x : y, 38 | v = h < 4 ? y : h === 12 || h === 14 ? x : z; 39 | return ( ( h & 1 ) === 0 ? u : -u ) + ( ( h & 2 ) === 0 ? v : -v ); 40 | 41 | } 42 | 43 | return { 44 | 45 | noise: function ( x, y, z ) { 46 | 47 | var floorX = ~~x, 48 | floorY = ~~y, 49 | floorZ = ~~z; 50 | 51 | var X = floorX & 255, 52 | Y = floorY & 255, 53 | Z = floorZ & 255; 54 | 55 | x -= floorX; 56 | y -= floorY; 57 | z -= floorZ; 58 | 59 | var xMinus1 = x - 1, 60 | yMinus1 = y - 1, 61 | zMinus1 = z - 1; 62 | 63 | var u = fade( x ), 64 | v = fade( y ), 65 | w = fade( z ); 66 | 67 | var A = p[ X ] + Y, 68 | AA = p[ A ] + Z, 69 | AB = p[ A + 1 ] + Z, 70 | B = p[ X + 1 ] + Y, 71 | BA = p[ B ] + Z, 72 | BB = p[ B + 1 ] + Z; 73 | 74 | return lerp( w, lerp( v, lerp( u, grad( p[ AA ], x, y, z ), 75 | grad( p[ BA ], xMinus1, y, z ) ), 76 | lerp( u, grad( p[ AB ], x, yMinus1, z ), 77 | grad( p[ BB ], xMinus1, yMinus1, z ) ) ), 78 | lerp( v, lerp( u, grad( p[ AA + 1 ], x, y, zMinus1 ), 79 | grad( p[ BA + 1 ], xMinus1, y, z - 1 ) ), 80 | lerp( u, grad( p[ AB + 1 ], x, yMinus1, zMinus1 ), 81 | grad( p[ BB + 1 ], xMinus1, yMinus1, zMinus1 ) ) ) ); 82 | 83 | } 84 | }; 85 | }; 86 | 87 | export default ImprovedNoise; 88 | -------------------------------------------------------------------------------- /src/classes/bird.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019 Alexander Perrin contact@alexperrin.com 2 | 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in all 11 | // copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | // SOFTWARE. 20 | 21 | const FLIGHT_SPEED = 30; 22 | const FLOCK_DIST = 16; 23 | const PLAYER_SEP_DIST = 80; 24 | const SEPARATION_FORCE = 100; 25 | 26 | class Bird extends THREE.Mesh { 27 | constructor() { 28 | let geometry = new THREE.Geometry(); 29 | geometry.vertices.push( 30 | new THREE.Vector3(0, 0, 0.5), 31 | new THREE.Vector3(1.2, 0, 0), 32 | new THREE.Vector3(0, 0, -0.5), 33 | new THREE.Vector3(0, 0, -0.5), 34 | new THREE.Vector3(-1.2, 0, 0), 35 | new THREE.Vector3(0, 0, 0.5), 36 | ); 37 | geometry.faces.push(new THREE.Face3(0, 1, 2)); 38 | geometry.faces.push(new THREE.Face3(3, 4, 5)); 39 | geometry.computeBoundingSphere(); 40 | super( 41 | geometry, 42 | new THREE.MeshBasicMaterial({ 43 | color: 0xffffff, 44 | }), 45 | ); 46 | this.velocity = new THREE.Vector3(0, 0, FLIGHT_SPEED); 47 | } 48 | 49 | update(dt, center, player) { 50 | this.velocity.z = FLIGHT_SPEED; 51 | // Add veloctity 52 | this.position.add(this.velocity.clone().multiplyScalar(dt)); 53 | 54 | let balloonPos = player.position.clone(); 55 | balloonPos.y += 16; 56 | 57 | // Difference between player and this position 58 | let pv = balloonPos.sub(this.position); 59 | let pDist = pv.lengthSq(); 60 | let pvN = pv.clone().normalize(); 61 | // this.position.x += dt * Math.sin( this.position.z / 10 ) * 2; 62 | if (Math.sqrt(pDist) < PLAYER_SEP_DIST) { 63 | // Separate from player 64 | let force = 1.0 / (pDist * 0.02); 65 | // window.flight.debug.drawRay( this.position, pvN.multiplyScalar( -force ), new THREE.Color( 0x00ff00 ) ); 66 | let separation = pvN.multiplyScalar(-force * SEPARATION_FORCE * dt); 67 | this.position.add(new THREE.Vector3(separation.x, separation.y, 0)); 68 | } else { 69 | // Difference between center and this position 70 | let v = center.clone().sub(this.position); 71 | // Distance to center 72 | let dist = v.length(); 73 | let vN = v.clone().normalize(); 74 | if (dist > FLOCK_DIST) { 75 | this.position.add(vN.multiplyScalar(dt)); 76 | } 77 | } 78 | // Do some flappin 79 | let geo = this.geometry; 80 | geo.vertices[1].y = Math.sin(this.position.z * 0.65); 81 | geo.vertices[4].y = Math.sin(this.position.z * 0.65); 82 | geo.verticesNeedUpdate = true; 83 | } 84 | } 85 | 86 | export default Bird; 87 | -------------------------------------------------------------------------------- /src/classes/heightmap.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019 Alexander Perrin contact@alexperrin.com 2 | 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in all 11 | // copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | // SOFTWARE. 20 | 21 | import ImprovedNoise from '../ImprovedNoise'; 22 | 23 | const VALLEY_01_SCALE = 0.025; 24 | const VALLEY_02_SCALE = 0.01; 25 | const VALLEY_01_MULT = 1.0; 26 | const VALLEY_02_MULT = 0.5; 27 | const HEIGHT_MULT = 10.0; 28 | const RIVER_WIDTH = 100.0; 29 | 30 | class Heightmap { 31 | 32 | constructor( opts ) { 33 | this.noise = new ImprovedNoise(); 34 | this.scale = opts.hasOwnProperty( 'scale' ) ? opts.scale : 100; 35 | this.height = opts.hasOwnProperty( 'height' ) ? opts.height : 0; 36 | this.noiseOffset = opts.hasOwnProperty( 'noiseOffset' ) ? opts.noiseOffset : 0; 37 | this.rScale = 1 / this.scale; 38 | } 39 | 40 | lerp( from, to, t ) { 41 | return ( 1 - t ) * from + t * to; 42 | } 43 | 44 | clamp( val, min, max ) { 45 | let t = val < min ? min : val; 46 | return t > max ? max : t; 47 | } 48 | 49 | getHeight( x, y ) { 50 | let n1 = this.clamp( this.perlinNoise( x, y, 0.5 ) + 0.2, 0, 1 ); 51 | let n2 = this.perlinNoise( x, y, 2 ); 52 | let height = n1 + n2; 53 | height *= this.clamp( Math.pow( height + 0.5, 5 ), 0, 1 ); 54 | height = this.lerp( height, this.step( height, 5 ), this.perlinNoise( x, 0.2, 1 ) ); 55 | height *= 0.3; 56 | height *= Math.pow( Math.abs( VALLEY_01_SCALE * x ), 2 ) * VALLEY_01_MULT + 0.5; 57 | height += Math.pow( Math.abs( VALLEY_02_SCALE * x ), 2 ) * VALLEY_02_MULT; 58 | 59 | // River 60 | let river = RIVER_WIDTH / Math.abs( x - ( this.perlinNoise( x, y, 0.5 ) - 0.5 ) * 200 ); 61 | height -= 0.5 * this.clamp( river, 0, 5 ); 62 | 63 | return height * HEIGHT_MULT; 64 | } 65 | 66 | perlinNoise( x, y, frequency ) { 67 | x += this.noiseOffset.x; 68 | y += this.noiseOffset.y; 69 | x = x < 0 ? 0 : x; 70 | y = y < 0 ? 0 : y; 71 | return this.noise.noise( x * this.rScale * frequency, 0, y * this.rScale * frequency ) + 0.5; 72 | } 73 | 74 | step( height, steps ) { 75 | return Math.floor( height * steps ) / steps; 76 | } 77 | } 78 | 79 | export default Heightmap; 80 | -------------------------------------------------------------------------------- /src/classes/mathf.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019 Alexander Perrin contact@alexperrin.com 2 | 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in all 11 | // copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | // SOFTWARE. 20 | 21 | import SeedRandom from 'seedrandom'; 22 | 23 | let rnd = new SeedRandom( 'gh3jf023ja84' ); 24 | let rnd2 = new SeedRandom( 'aowjdiao8q2u' ); 25 | let count = 0; 26 | 27 | class Mathf { 28 | static clamp( num, min, max ) { 29 | return num < min ? min : num > max ? max : num; 30 | } 31 | 32 | static getCount() { 33 | return count; 34 | } 35 | 36 | static lerp( from, to, t ) { 37 | return from + t * ( to - from ); 38 | } 39 | 40 | static inverseLerp( from, to, t ) { 41 | let v = from; 42 | if ( t <= from ) { 43 | v = from; 44 | } else if ( t >= to ) { 45 | v = to; 46 | } 47 | v = ( t - from ) / ( to - from ); 48 | return v; 49 | } 50 | 51 | static randRange( min, max ) { 52 | return rnd.quick() * ( max - min ) + min; 53 | } 54 | 55 | static randRange2( min, max ) { 56 | return rnd2.quick() * ( max - min ) + min; 57 | } 58 | 59 | static moveTowards( current, target, maxDelta ) { 60 | let delta = target - current; 61 | if ( Math.abs( delta ) > maxDelta ) { 62 | delta = maxDelta * Math.sign( delta ); 63 | } 64 | return current + delta; 65 | } 66 | } 67 | 68 | export default Mathf; 69 | -------------------------------------------------------------------------------- /src/classes/player.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019 Alexander Perrin contact@alexperrin.com 2 | 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in all 11 | // copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | // SOFTWARE. 20 | 21 | import Mathf from "./mathf"; 22 | 23 | const FLIGHT_SPEED = 12; 24 | const BANK_SPEED = 0.5; 25 | const SPIN_SPEED = 1; 26 | const SIDEWAYS_SPEED = 5; 27 | const FLAG_ADJUST_SPEED = 55; 28 | const SCARF_SEG_DIST = 0.3; 29 | 30 | class Player extends THREE.Object3D { 31 | constructor() { 32 | super(); 33 | this.angularVelocity = new THREE.Vector3(); 34 | this.bankVelocity = 0.0; 35 | this.velocity = new THREE.Vector3(); 36 | this.bankVelocity = 0.0; 37 | this.rotation.set(0, 0, 0, "ZXY"); 38 | this.scarf = null; 39 | this.spin = 0.0; 40 | this.gridPos = { 41 | x: 0, 42 | y: 0, 43 | }; 44 | this.initScarf(); 45 | } 46 | 47 | initScarf() { 48 | let geometry = new THREE.Geometry(); 49 | for (let i = 0; i < 20; ++i) { 50 | geometry.vertices.push( 51 | new THREE.Vector3( 52 | this.position.x, 53 | this.position.y, 54 | this.position.z + i * SCARF_SEG_DIST, 55 | ), 56 | ); 57 | } 58 | let line = new THREE.MeshLine(); 59 | let material = new THREE.MeshLineMaterial({ 60 | color: new THREE.Color(0x663322), 61 | }); 62 | line.setGeometry(geometry, function(v) { 63 | return 0.3; 64 | }); 65 | let mesh = new THREE.Mesh(line.geometry, material); // this syntax could definitely be improved! 66 | this.scarf = line; 67 | window.flight.scene.add(mesh); 68 | } 69 | 70 | update() { 71 | let dt = window.flight.deltaTime; 72 | let input = window.flight.input; 73 | 74 | // Twist 75 | this.angularVelocity.y += dt * input.x * SPIN_SPEED; 76 | this.rotation.y += this.angularVelocity.y * dt; 77 | this.rotation.y += dt * 0.1; 78 | this.angularVelocity.y -= this.angularVelocity.y * dt; 79 | 80 | // Move left and right 81 | this.velocity.x += dt * -input.x * SIDEWAYS_SPEED; 82 | this.position.add(this.velocity.clone().multiplyScalar(dt)); 83 | this.velocity.x -= this.velocity.x * dt * 0.3; 84 | 85 | // Move forward 86 | this.position.z += dt * FLIGHT_SPEED; 87 | 88 | // Bank 89 | this.bankVelocity += input.x * BANK_SPEED * dt; 90 | this.bankVelocity -= this.bankVelocity * dt; 91 | this.rotation.z += this.bankVelocity * dt; 92 | this.rotation.z -= 93 | Math.sign(this.rotation.z) * Math.pow(this.rotation.z, 2) * dt * 5; 94 | 95 | // Positions array is interleved vector3 96 | let positions = this.scarf.positions; 97 | let numPoints = positions.length; 98 | for (let i = 0; i < numPoints; i += 3) { 99 | if (i === 0) { 100 | // Position first scarf point at balloon position 101 | positions[i] = this.position.x; 102 | positions[i + 1] = this.position.y - 3; 103 | positions[i + 2] = this.position.z; 104 | } else { 105 | // i - 3 for previous point 106 | positions[i] = Mathf.moveTowards( 107 | positions[i], 108 | positions[i - 3], 109 | (FLAG_ADJUST_SPEED / numPoints) * 110 | Math.abs(positions[i] - positions[i - 3]), 111 | ); 112 | positions[i + 1] = positions[i - 2]; 113 | if (Math.abs(positions[i + 2] - positions[i - 1]) > SCARF_SEG_DIST) { 114 | positions[i + 2] += 115 | positions[i - 1] - positions[i + 2] - SCARF_SEG_DIST; 116 | } 117 | positions[i] += (Math.sin(positions[i + 2] * 0.2) * 0.3) / (i + 1); 118 | } 119 | } 120 | this.scarf.process(); 121 | this.scarf.geometry.computeBoundingBox(); 122 | this.scarf.geometry.computeBoundingSphere(); 123 | } 124 | } 125 | 126 | export default Player; 127 | -------------------------------------------------------------------------------- /src/classes/random.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019 Alexander Perrin contact@alexperrin.com 2 | 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in all 11 | // copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | // SOFTWARE. 20 | 21 | import SeedRandom from 'seedrandom'; 22 | 23 | class Random { 24 | constructor( seed ) { 25 | this.seed = seed; 26 | this.generator = new SeedRandom( seed ); 27 | } 28 | 29 | range( min, max ) { 30 | return this.generator.quick() * ( max - min ) + min; 31 | } 32 | } 33 | 34 | export default Random; 35 | -------------------------------------------------------------------------------- /src/classes/terrain-patch.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019 Alexander Perrin contact@alexperrin.com 2 | 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to deal 5 | // in the Software without restriction, including without limitation the rights 6 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | // copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | 10 | // The above copyright notice and this permission notice shall be included in all 11 | // copies or substantial portions of the Software. 12 | 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | // SOFTWARE. 20 | 21 | import Mathf from "./mathf"; 22 | 23 | const SEGS_X = 8; 24 | const SEGS_Y = 8; 25 | const VERTS_X = SEGS_X + 1; 26 | 27 | class TerrainPatch extends THREE.Mesh { 28 | constructor(opts) { 29 | super(); 30 | this.objects = []; 31 | this.width = opts.hasOwnProperty("width") ? opts.width : 0; 32 | this.height = opts.hasOwnProperty("height") ? opts.height : 0; 33 | this.heightmap = opts.hasOwnProperty("heightmap") 34 | ? opts.heightmap 35 | : undefined; 36 | this.debug = opts.hasOwnProperty("debug") ? opts.debug : false; 37 | let position = opts.hasOwnProperty("position") 38 | ? opts.position 39 | : new THREE.Vector3(); 40 | this.position.set(position.x, position.y, position.z); 41 | this.material = opts.hasOwnProperty("material") ? opts.material : undefined; 42 | this.verts = null; 43 | this.verts3 = []; 44 | this.normals = []; 45 | this.geometry = this.createGeometry(); 46 | this.geometry.computeBoundingBox(); 47 | this.geometry.computeBoundingSphere(); 48 | this.scatters = []; 49 | 50 | this.axisHelper = null; 51 | this.boundingBoxHelper = null; 52 | 53 | // Add debug helpers 54 | if (this.debug) { 55 | this.boundingBoxHelper = new THREE.BoundingBoxHelper(this, 0xffaa00); 56 | this.boundingBoxHelper.update(); 57 | this.axisHelper = new THREE.AxisHelper(this.width / 2); 58 | this.axisHelper.position.copy(this.position); 59 | window.flight.scene.add(this.axisHelper); 60 | window.flight.scene.add(this.boundingBoxHelper); 61 | } 62 | } 63 | 64 | /** 65 | * @description Rebuilds the terrain heightmap and scatter geometry. 66 | */ 67 | rebuild(scene) { 68 | let vertsX = SEGS_X + 1; 69 | let vertsY = SEGS_Y + 1; 70 | let v = 0; 71 | for (let i = 0; i < vertsY; ++i) { 72 | for (let j = 0; j < vertsX; ++j, v += 3) { 73 | this.verts[v + 1] = 0.0; 74 | let noise = this.heightmap.getHeight( 75 | this.verts[v] + this.position.x, 76 | this.verts[v + 2] + this.position.z, 77 | ); 78 | this.verts[v + 1] = noise; 79 | } 80 | } 81 | this.geometry.attributes.position.needsUpdate = true; 82 | this.geometry.computeBoundingBox(); 83 | this.geometry.computeBoundingSphere(); 84 | this.geometry.computeVertexNormals(); 85 | 86 | // Regenerate scatter 87 | this.scatters.forEach(v => { 88 | scene.remove(v.scatterMesh); 89 | v.scatterMesh.geometry.dispose(); 90 | v.scatterMesh = this.createScatterGeometry(v.opts); 91 | window.flight.scene.add(v.scatterMesh); 92 | }); 93 | 94 | if (this.debug) { 95 | this.boundingBoxHelper.update(); 96 | this.axisHelper.position.copy(this.position); 97 | } 98 | } 99 | 100 | /** 101 | * Returns normal and position data as nice object array. 102 | */ 103 | getNiceHeightmapData() { 104 | let vertsX = SEGS_X + 1; 105 | let vertsY = SEGS_Y + 1; 106 | let v = 0; 107 | let points = []; 108 | let norms = this.geometry.attributes.normal.array; 109 | for (let i = 0; i < vertsY; ++i) { 110 | for (let j = 0; j < vertsX; ++j, v += 3) { 111 | points.push({ 112 | position: new THREE.Vector3( 113 | this.verts[v] + this.position.x, 114 | this.verts[v + 1] + this.position.y, 115 | this.verts[v + 2] + this.position.z, 116 | ), 117 | normal: new THREE.Vector3(norms[v], norms[v + 1], norms[v + 2]), 118 | }); 119 | } 120 | } 121 | return points; 122 | } 123 | 124 | /** 125 | * @description Adds a mesh to scatter on to the terrain. 126 | */ 127 | addScatterObject(opts) { 128 | let scatterMesh = this.createScatterGeometry(opts); 129 | 130 | // Store data for terrain to be able to rebuild scatter when regenerated 131 | this.scatters.push({ 132 | scatterMesh: scatterMesh, // The batched scatter mesh 133 | opts: opts, 134 | }); 135 | 136 | window.flight.scene.add(scatterMesh); 137 | } 138 | 139 | /** 140 | * @description Creates the scatter geometry mesh. 141 | */ 142 | createScatterGeometry(opts) { 143 | let mesh = opts.hasOwnProperty("mesh") ? opts.mesh : null; 144 | let count = opts.hasOwnProperty("count") ? opts.count : 0; 145 | let minSize = opts.hasOwnProperty("minSize") ? opts.minSize : null; 146 | let maxSize = opts.hasOwnProperty("maxSize") ? opts.maxSize : null; 147 | let minHeight = opts.hasOwnProperty("minHeight") ? opts.minHeight : 0; 148 | let maxHeight = opts.hasOwnProperty("maxHeight") ? opts.maxHeight : 128; 149 | let lockXZScale = opts.hasOwnProperty("lockXZScale") 150 | ? opts.lockXZScale 151 | : false; 152 | let maxSlope = opts.hasOwnProperty("maxSlope") ? opts.maxSlope : 0; 153 | 154 | let meshGeo = mesh.geometry; 155 | let vertCount = meshGeo.attributes.position.count; 156 | 157 | let matrix = new THREE.Matrix4(); 158 | let rotation = new THREE.Quaternion(); 159 | let position = new THREE.Vector3(); 160 | let scale = new THREE.Vector3(); 161 | 162 | // Scatter geometry 163 | let geometry = new THREE.BufferGeometry(); 164 | 165 | // Vertex positions 166 | let posAttrib = new THREE.Float32Attribute( 167 | new Float32Array( 168 | vertCount * meshGeo.attributes.position.itemSize * count, 169 | ), 170 | meshGeo.attributes.position.itemSize, 171 | ); 172 | 173 | // Vertex normals 174 | let normAttrib = new THREE.Float32Attribute( 175 | new Float32Array( 176 | vertCount * meshGeo.attributes.position.itemSize * count, 177 | ), 178 | meshGeo.attributes.position.itemSize, 179 | ); 180 | 181 | // Vertex colours 182 | let colorAttrib = new THREE.Float32Attribute( 183 | new Float32Array(vertCount * meshGeo.attributes.color.itemSize * count), 184 | meshGeo.attributes.color.itemSize, 185 | ); 186 | 187 | geometry.addAttribute("position", posAttrib); 188 | geometry.addAttribute("normal", normAttrib); 189 | geometry.addAttribute("color", colorAttrib); 190 | 191 | let size; 192 | let sway = 0.05; 193 | 194 | // Create individual objects for the scatter 195 | for (let i = 0; i < count; ++i) { 196 | let coord = { 197 | x: Mathf.randRange(this.position.x, this.position.x + this.width), 198 | y: 0, 199 | z: Mathf.randRange(this.position.z, this.position.z + this.height), 200 | }; 201 | 202 | let pos = this.getPosition(coord); 203 | let normal = this.getNormal(coord); 204 | 205 | // Min height for spawn 206 | if (pos.y < minHeight || pos.y > maxHeight || normal.y < maxSlope) { 207 | continue; 208 | } 209 | 210 | position.set(pos.x, pos.y, pos.z); 211 | 212 | rotation.setFromEuler( 213 | new THREE.Euler( 214 | Mathf.randRange(-sway, sway), 215 | Mathf.randRange(0, Math.PI * 2), 216 | Mathf.randRange(-sway, sway), 217 | THREE.Euler.DefaultOrder, 218 | ), 219 | ); 220 | 221 | let pScale = Mathf.lerp( 222 | 0.5, 223 | 1.0, 224 | this.heightmap.perlinNoise( 225 | pos.x + this.position.x, 226 | pos.z + this.position.z, 227 | 3, 228 | ), 229 | ); 230 | 231 | let xScale = Mathf.randRange(minSize.x, maxSize.x); 232 | size = { 233 | x: xScale, 234 | y: Mathf.randRange(minSize.y, maxSize.y), 235 | z: lockXZScale ? xScale : Mathf.randRange(minSize.z, maxSize.z), 236 | }; 237 | 238 | scale.set(size.x * pScale, size.y * pScale, size.z * pScale); 239 | matrix.compose( 240 | position, 241 | rotation, 242 | scale, 243 | ); 244 | meshGeo.applyMatrix(matrix); 245 | geometry.merge(meshGeo, i * vertCount); 246 | meshGeo.applyMatrix(matrix.getInverse(matrix)); 247 | } 248 | 249 | let scatterMesh = new THREE.Mesh(geometry, mesh.material); 250 | scatterMesh.castShadow = true; // mesh.castShadow; 251 | return scatterMesh; 252 | } 253 | 254 | /** 255 | * @description Gets an object space position on the landscape based on world coordinates. 256 | * @returns {Vector3} The position. 257 | */ 258 | getPosition(coord) { 259 | let localCoord = { 260 | x: (coord.x - this.position.x) / this.width, 261 | y: (coord.z - this.position.z) / this.height, 262 | }; 263 | 264 | // Base vertex index 265 | let ix1 = Math.floor(localCoord.x * SEGS_X); 266 | let iy1 = Math.floor(localCoord.y * SEGS_Y); 267 | 268 | let i1 = (VERTS_X * iy1 + ix1) * 3; // Bottom right 269 | let i2 = i1 + 3; // Bottom left 270 | let i3 = i1 + VERTS_X * 3; // Top right 271 | let i4 = i3 + 3; // Top left 272 | 273 | // Grid index interpolant time values collected from remainder 274 | let rx1 = localCoord.x * SEGS_X - ix1; 275 | let ry1 = localCoord.y * SEGS_Y - iy1; 276 | 277 | let h1, h2, h; 278 | 279 | // Interpolate heights of each vert using bilinear interpolation 280 | h1 = Mathf.lerp(this.verts[i1 + 1], this.verts[i2 + 1], rx1); // Bottom left to bottom right 281 | h2 = Mathf.lerp(this.verts[i3 + 1], this.verts[i4 + 1], rx1); // Top left to top right 282 | h = Mathf.lerp(h1, h2, ry1); 283 | 284 | return new THREE.Vector3(coord.x, h, coord.z); 285 | } 286 | 287 | /** 288 | * {bool} Does this terrain patch contains a given world position? 289 | */ 290 | containsWorldPosition(coord) { 291 | let localCoord = { 292 | x: (coord.x - this.position.x) / this.width, 293 | y: (coord.z - this.position.z) / this.height, 294 | }; 295 | return ( 296 | localCoord.x <= 1.0 && 297 | localCoord.x >= 0 && 298 | localCoord.y <= 1 && 299 | localCoord.y >= 0 300 | ); 301 | } 302 | 303 | /** 304 | * Gets the normal of the terrain at the given world coordinates. 305 | * @return {Vector3} The normal. 306 | */ 307 | getNormal(coord) { 308 | let localCoord = { 309 | x: (coord.x - this.position.x) / this.width, 310 | y: (coord.z - this.position.z) / this.height, 311 | }; 312 | 313 | // Base vertex index 314 | let ix1 = Math.floor(localCoord.x * SEGS_X); 315 | let iy1 = Math.floor(localCoord.y * SEGS_Y); 316 | 317 | let i1 = (VERTS_X * iy1 + ix1) * 3; // Bottom right 318 | let i2 = i1 + 3; // Bottom left 319 | let i3 = i1 + VERTS_X * 3; // Top right 320 | let i4 = i3 + 3; // Top left 321 | 322 | // Grid index interpolant time values collected from remainder 323 | let rx1 = localCoord.x * SEGS_X - ix1; 324 | let ry1 = localCoord.y * SEGS_Y - iy1; 325 | 326 | let norms = this.geometry.attributes.normal.array; 327 | 328 | // Interpolate heights of each vert using bilinear interpolation 329 | let v1 = new THREE.Vector3(); 330 | v1.lerpVectors( 331 | new THREE.Vector3(norms[i1], norms[i1 + 1], norms[i1 + 2]), 332 | new THREE.Vector3(norms[i2], norms[i2 + 1], norms[i2 + 2]), 333 | rx1, 334 | ); 335 | let v2 = new THREE.Vector3(); 336 | v2.lerpVectors( 337 | new THREE.Vector3(norms[i3], norms[i3 + 1], norms[i3 + 2]), 338 | new THREE.Vector3(norms[i4], norms[i4 + 1], norms[i4 + 2]), 339 | rx1, 340 | ); 341 | let n = new THREE.Vector3(); 342 | n.lerpVectors(v1, v2, ry1); 343 | return n; 344 | } 345 | 346 | /** 347 | * Creates terrain geometry data and heightmap. 348 | */ 349 | createGeometry() { 350 | let geo = new THREE.BufferGeometry(); 351 | let vertsX = SEGS_X + 1; 352 | let vertsY = SEGS_Y + 1; 353 | 354 | this.verts = new Float32Array(vertsX * vertsY * 3); 355 | this.uvs = new Float32Array(vertsX * vertsY * 2); 356 | let v = 0; 357 | let uv = 0; 358 | let stepX = this.width / SEGS_X; 359 | let stepY = this.height / SEGS_Y; 360 | for (let j = 0; j < vertsY; ++j) { 361 | for (let i = 0; i < vertsX; ++i, v += 3, uv += 2) { 362 | let pos = { 363 | x: i * stepX, 364 | y: 0, 365 | z: j * stepY, 366 | }; 367 | let noise = this.heightmap.getHeight( 368 | pos.x + this.position.x, 369 | pos.z + this.position.z, 370 | ); 371 | pos.y = noise; 372 | if (pos.y < -15) { 373 | // let helper = new THREE.AxisHelper( 10 ); 374 | // helper.position.set( pos.x + this.position.x, -15, pos.z + this.position.z ); 375 | // window.flight.scene.add( helper ); 376 | } 377 | this.verts[v] = pos.x; 378 | this.verts[v + 1] = pos.y; 379 | this.verts[v + 2] = pos.z; 380 | this.uvs[uv] = i / (vertsX - 1); 381 | this.uvs[uv + 1] = j / (vertsY - 1); 382 | } 383 | } 384 | 385 | let indices = new Uint32Array(SEGS_X * SEGS_Y * 6); 386 | 387 | for (let i = 0, t = 0, j = 0, v = 0; i < SEGS_Y; ++i, v = i * vertsX) { 388 | for (j = 0; j < SEGS_X; ++j, t += 6, v++) { 389 | indices[t] = v; 390 | indices[t + 1] = v + vertsX; 391 | indices[t + 2] = v + vertsX + 1; 392 | indices[t + 3] = v; 393 | indices[t + 4] = v + vertsX + 1; 394 | indices[t + 5] = v + 1; 395 | } 396 | } 397 | 398 | geo.addAttribute("position", new THREE.BufferAttribute(this.verts, 3)); 399 | geo.addAttribute("uv", new THREE.BufferAttribute(this.uvs, 2)); 400 | geo.setIndex(new THREE.BufferAttribute(indices, 1)); 401 | geo.computeVertexNormals(); 402 | return geo; 403 | } 404 | } 405 | 406 | export default TerrainPatch; 407 | -------------------------------------------------------------------------------- /src/shaders/landscape_frag.glsl: -------------------------------------------------------------------------------- 1 | #define PHONG 2 | 3 | uniform vec3 cliffColor; 4 | uniform vec3 grassColor; 5 | uniform vec3 sandColor; 6 | uniform vec3 emissive; 7 | uniform vec3 specular; 8 | uniform vec3 xFogColor; 9 | uniform float shininess; 10 | uniform float opacity; 11 | uniform float steps; 12 | uniform float threshold; 13 | uniform sampler2D map; 14 | uniform float waterHeight; 15 | 16 | varying vec3 vWorldNormal; 17 | varying vec3 vWorldPos; 18 | 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #include 38 | #include 39 | #include 40 | 41 | void main() { 42 | 43 | #include 44 | 45 | float y = floor((vWorldNormal.y) * steps + threshold) / steps; 46 | vec3 c = mix(sandColor, grassColor, clamp(floor(vWorldPos.y - waterHeight), 0.01, 0.99)); 47 | c = mix(cliffColor, c, y); 48 | vec4 diffuseColor = vec4( c, opacity ); 49 | ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); 50 | vec3 totalEmissiveRadiance = emissive; 51 | 52 | #include 53 | #include 54 | #include 55 | #include 56 | #include 57 | #include 58 | #include 59 | #include 60 | #include 61 | 62 | // accumulation 63 | #include 64 | #include 65 | 66 | // modulation 67 | #include 68 | 69 | vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; 70 | float dot = pow(saturate(1.0 - dot(normalize(vViewPosition), normal)), 5.0); 71 | outgoingLight += vec3(0.8 * dot, dot, 0.7 * dot); 72 | 73 | #include 74 | 75 | gl_FragColor = vec4( outgoingLight, diffuseColor.a ); 76 | 77 | #include 78 | #include 79 | #include 80 | #include 81 | 82 | c = gl_FragColor.rgb; 83 | gl_FragColor = mix(vec4(c, 1), vec4(xFogColor, 1), clamp((abs(vWorldPos.x) - 128.0) / 32.0, 0.0, 1.0)); 84 | } 85 | -------------------------------------------------------------------------------- /src/shaders/landscape_vert.glsl: -------------------------------------------------------------------------------- 1 | #define PHONG 2 | 3 | varying vec3 vViewPosition; 4 | varying vec3 vWorldNormal; 5 | varying vec3 vWorldPos; 6 | 7 | #ifndef FLAT_SHADED 8 | 9 | varying vec3 vNormal; 10 | 11 | #endif 12 | 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | 21 | void main() { 22 | 23 | #include 24 | #include 25 | #include 26 | 27 | #include 28 | #include 29 | 30 | #ifndef FLAT_SHADED // Normal computed with derivatives when FLAT_SHADED 31 | 32 | vNormal = normalize( transformedNormal ); 33 | 34 | #endif 35 | 36 | #include 37 | #include 38 | #include 39 | #include 40 | 41 | vViewPosition = - mvPosition.xyz; 42 | vWorldNormal = normal; 43 | 44 | #include 45 | #include 46 | #include 47 | 48 | vWorldPos = worldPosition.xyz; 49 | 50 | } 51 | -------------------------------------------------------------------------------- /src/shaders/standard_frag.glsl: -------------------------------------------------------------------------------- 1 | #define PHONG 2 | 3 | uniform vec3 diffuse; 4 | uniform vec3 emissive; 5 | uniform vec3 specular; 6 | uniform float shininess; 7 | uniform float opacity; 8 | uniform vec3 xFogColor; 9 | 10 | varying vec3 vWorldPos; 11 | 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | 34 | void main() { 35 | 36 | #include 37 | 38 | vec4 diffuseColor = vec4( diffuse, opacity ); 39 | ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); 40 | vec3 totalEmissiveRadiance = emissive; 41 | 42 | #include 43 | #include 44 | #include 45 | #include 46 | #include 47 | #include 48 | #include 49 | #include 50 | #include 51 | 52 | // accumulation 53 | #include 54 | #include 55 | 56 | // modulation 57 | #include 58 | 59 | vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; 60 | 61 | #include 62 | 63 | gl_FragColor = vec4( outgoingLight, diffuseColor.a ); 64 | 65 | #include 66 | #include 67 | #include 68 | #include 69 | 70 | vec3 c = gl_FragColor.rgb; 71 | gl_FragColor = mix(vec4(c, 1), vec4(xFogColor, 1), clamp((abs(vWorldPos.x) - 128.0) / 32.0, 0.0, 1.0)); 72 | } 73 | -------------------------------------------------------------------------------- /src/shaders/standard_vert.glsl: -------------------------------------------------------------------------------- 1 | #define PHONG 2 | 3 | varying vec3 vViewPosition; 4 | varying vec3 vWorldPos; 5 | 6 | #ifndef FLAT_SHADED 7 | 8 | varying vec3 vNormal; 9 | 10 | #endif 11 | 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | 24 | void main() { 25 | 26 | #include 27 | #include 28 | #include 29 | 30 | #include 31 | #include 32 | #include 33 | #include 34 | #include 35 | 36 | #ifndef FLAT_SHADED // Normal computed with derivatives when FLAT_SHADED 37 | 38 | vNormal = normalize( transformedNormal ); 39 | 40 | #endif 41 | 42 | #include 43 | #include 44 | #include 45 | #include 46 | #include 47 | #include 48 | #include 49 | 50 | vViewPosition = - mvPosition.xyz; 51 | 52 | #include 53 | #include 54 | #include 55 | 56 | vWorldPos = worldPosition.xyz; 57 | 58 | } 59 | -------------------------------------------------------------------------------- /webpack.common.js: -------------------------------------------------------------------------------- 1 | const path = require("path"); 2 | const HtmlWebpackPlugin = require("html-webpack-plugin"); 3 | const CleanWebpackPlugin = require("clean-webpack-plugin"); 4 | const webpack = require("webpack"); 5 | 6 | module.exports = { 7 | entry: { 8 | app: "./src/index.js", 9 | }, 10 | output: { 11 | filename: "[name].bundle.js", 12 | path: path.resolve(__dirname, "dist"), 13 | }, 14 | plugins: [ 15 | new CleanWebpackPlugin(["dist"]), 16 | new HtmlWebpackPlugin({ 17 | template: "./public/index.html", 18 | minify: true, 19 | }), 20 | new webpack.ProvidePlugin({ 21 | THREE: "three", 22 | }), 23 | new webpack.HotModuleReplacementPlugin(), 24 | ], 25 | module: { 26 | rules: [ 27 | { 28 | test: /\.css$/, 29 | use: ["style-loader", "css-loader"], 30 | }, 31 | { 32 | test: /\.glsl$/, 33 | use: ["webpack-glsl-loader"], 34 | }, 35 | ], 36 | }, 37 | }; 38 | -------------------------------------------------------------------------------- /webpack.dev.js: -------------------------------------------------------------------------------- 1 | const merge = require("webpack-merge"); 2 | const common = require("./webpack.common.js"); 3 | 4 | module.exports = merge(common, { 5 | mode: "development", 6 | devtool: "inline-source-map", 7 | devServer: { 8 | contentBase: "./public", 9 | hot: true, 10 | }, 11 | }); 12 | -------------------------------------------------------------------------------- /webpack.prod.js: -------------------------------------------------------------------------------- 1 | const merge = require("webpack-merge"); 2 | const common = require("./webpack.common.js"); 3 | const MinifyPlugin = require("babel-minify-webpack-plugin"); 4 | const CopyWebpackPlugin = require("copy-webpack-plugin"); 5 | 6 | module.exports = merge(common, { 7 | mode: "production", 8 | plugins: [ 9 | new MinifyPlugin(), 10 | new CopyWebpackPlugin([{ from: "public", ignore: ["index.html"] }]), 11 | ], 12 | }); 13 | --------------------------------------------------------------------------------