├── .gitattributes ├── .gitignore ├── README.md ├── package-lock.json ├── package.json ├── public ├── building1.bin ├── building1.gltf ├── building1Textures │ ├── material_0_baseColor.png │ ├── material_1_baseColor.png │ ├── material_2_baseColor.png │ ├── material_3_baseColor.png │ ├── material_4_baseColor.png │ ├── material_5_emissive.png │ └── material_6_baseColor.png ├── building2.bin ├── building2.gltf ├── building2Textures │ ├── Material_baseColor.png │ ├── Material_metallicRoughness.png │ ├── Material_normal.png │ ├── brick_house_baseColor.png │ ├── brick_house_metallicRoughness.png │ ├── door1_baseColor.png │ ├── door1_metallicRoughness.png │ ├── door1_normal.png │ ├── house_micsamo_baseColor.png │ ├── house_micsamo_metallicRoughness.png │ ├── house_micsamo_normal.png │ ├── initialShadingGroup_baseColor.png │ ├── initialShadingGroup_metallicRoughness.png │ ├── initialShadingGroup_normal.png │ ├── lambert1_baseColor.png │ ├── lambert1_metallicRoughness.png │ ├── lambert1_normal.png │ ├── material.003_baseColor.png │ ├── material.003_metallicRoughness.png │ ├── meterial_house_baseColor.png │ ├── meterial_house_normal.png │ ├── screen-billboard_baseColor.jpeg │ ├── trash_material_baseColor.jpeg │ ├── trash_material_metallicRoughness.png │ ├── trash_material_normal.png │ ├── up_house_baseColor.jpeg │ ├── wall_house_baseColor.png │ ├── wall_house_metallicRoughness.png │ └── wall_house_normal.png ├── building3.bin ├── building3.gltf ├── building4.bin ├── building4.gltf ├── building4Textures │ └── Material_baseColor.png ├── building6.bin ├── building6.gltf ├── building6Textures │ ├── build_01_baseColor.jpeg │ ├── concrete_02_baseColor.jpeg │ ├── concrete_baseColor.jpeg │ ├── concrete_fine_baseColor.jpeg │ └── rooftop_01_baseColor.jpeg ├── favicon.ico ├── grass1.bin ├── grass1.gltf ├── grass1Textures │ └── material_0_baseColor.jpeg ├── index.html ├── license.txt ├── logo192.png ├── logo512.png ├── manifest.json ├── roadCrossing.bin ├── roadCrossing.gltf ├── roadCrossingTextures │ └── RoadTExtue6_baseColor.jpeg ├── roadStraight.bin ├── roadStraight.gltf ├── roadStraightTextures │ └── Road_Text1_baseColor.jpeg ├── robots.txt ├── water.bin ├── water.gltf └── waterTextures │ └── Scene_-_Root_baseColor.png └── src ├── App.css ├── App.js ├── App.test.js ├── Assets ├── JSXModels │ ├── Building1.js │ ├── Building2.js │ ├── Building3.js │ ├── Building4.js │ ├── Building6.js │ ├── Grass1.js │ ├── RoadCrossing.js │ ├── RoadStraight.js │ └── Water.js └── Textures │ └── road_texture.jpg ├── Components └── City │ ├── City.scss │ └── index.jsx ├── index.css ├── index.js ├── logo.svg ├── reportWebVitals.js ├── setupTests.js └── utility └── functions.js /.gitattributes: -------------------------------------------------------------------------------- 1 | *.bin filter=lfs diff=lfs merge=lfs -text 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Getting Started with Create React App 2 | 3 | This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). 4 | 5 | ## Available Scripts 6 | 7 | In the project directory, you can run: 8 | 9 | ### `npm start` 10 | 11 | Runs the app in the development mode.\ 12 | Open [http://localhost:3000](http://localhost:3000) to view it in the browser. 13 | 14 | The page will reload if you make edits.\ 15 | You will also see any lint errors in the console. 16 | 17 | ### `npm test` 18 | 19 | Launches the test runner in the interactive watch mode.\ 20 | See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. 21 | 22 | ### `npm run build` 23 | 24 | Builds the app for production to the `build` folder.\ 25 | It correctly bundles React in production mode and optimizes the build for the best performance. 26 | 27 | The build is minified and the filenames include the hashes.\ 28 | Your app is ready to be deployed! 29 | 30 | See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. 31 | 32 | ### `npm run eject` 33 | 34 | **Note: this is a one-way operation. Once you `eject`, you can’t go back!** 35 | 36 | If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. 37 | 38 | Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. 39 | 40 | You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. 41 | 42 | ## Learn More 43 | 44 | You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). 45 | 46 | To learn React, check out the [React documentation](https://reactjs.org/). 47 | 48 | ### Code Splitting 49 | 50 | This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting) 51 | 52 | ### Analyzing the Bundle Size 53 | 54 | This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size) 55 | 56 | ### Making a Progressive Web App 57 | 58 | This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app) 59 | 60 | ### Advanced Configuration 61 | 62 | This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration) 63 | 64 | ### Deployment 65 | 66 | This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment) 67 | 68 | ### `npm run build` fails to minify 69 | 70 | This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify) 71 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "city_simulation", 3 | "version": "0.1.0", 4 | "private": true, 5 | "homepage": " https://excalibur79.github.io/ThreeJS-City-Generator/", 6 | "dependencies": { 7 | "@react-three/drei": "^5.2.1", 8 | "@react-three/fiber": "^6.2.2", 9 | "@testing-library/jest-dom": "^5.12.0", 10 | "@testing-library/react": "^11.2.7", 11 | "@testing-library/user-event": "^12.8.3", 12 | "gh-pages": "^2.0.1", 13 | "react": "^17.0.2", 14 | "react-dom": "^17.0.2", 15 | "react-scripts": "4.0.3", 16 | "sass": "^1.34.0", 17 | "three": "^0.128.0", 18 | "web-vitals": "^1.1.2" 19 | }, 20 | "scripts": { 21 | "start": "react-scripts start", 22 | "build": "react-scripts build", 23 | "test": "react-scripts test", 24 | "eject": "react-scripts eject", 25 | "predeploy": "npm run build", 26 | "deploy": "gh-pages -d build" 27 | }, 28 | "eslintConfig": { 29 | "extends": [ 30 | "react-app", 31 | "react-app/jest" 32 | ] 33 | }, 34 | "browserslist": { 35 | "production": [ 36 | ">0.2%", 37 | "not dead", 38 | "not op_mini all" 39 | ], 40 | "development": [ 41 | "last 1 chrome version", 42 | "last 1 firefox version", 43 | "last 1 safari version" 44 | ] 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /public/building1.bin: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:1bf54a899c3d9471fb56aa858a844a53b7a6dd85b2ae92be5fe14bd2b841fc5a 3 | size 54648 4 | -------------------------------------------------------------------------------- /public/building1.gltf: -------------------------------------------------------------------------------- 1 | { 2 | "accessors": [ 3 | { 4 | "bufferView": 2, 5 | "componentType": 5126, 6 | "count": 55, 7 | "max": [0.16250920295715332, 0.2514600157737732, -0.005079994909465313], 8 | "min": [0.0, 0.0634492039680481, -0.02539999969303608], 9 | "type": "VEC3" 10 | }, 11 | { 12 | "bufferView": 2, 13 | "byteOffset": 660, 14 | "componentType": 5126, 15 | "count": 55, 16 | "max": [0.0, 0.0, 0.0], 17 | "min": [0.0, -1.0, -1.0], 18 | "type": "VEC3" 19 | }, 20 | { 21 | "bufferView": 1, 22 | "componentType": 5126, 23 | "count": 55, 24 | "max": [0.30664101243019104, 0.5], 25 | "min": [0.30664101243019104, 0.5], 26 | "type": "VEC2" 27 | }, 28 | { 29 | "bufferView": 0, 30 | "componentType": 5125, 31 | "count": 102, 32 | "type": "SCALAR" 33 | }, 34 | { 35 | "bufferView": 2, 36 | "byteOffset": 1320, 37 | "componentType": 5126, 38 | "count": 8, 39 | "max": [0.1092200055718422, 0.12186920642852783, -0.030530791729688644], 40 | "min": [0.05582920461893082, 0.05079999938607216, -0.030530791729688644], 41 | "type": "VEC3" 42 | }, 43 | { 44 | "bufferView": 2, 45 | "byteOffset": 1416, 46 | "componentType": 5126, 47 | "count": 8, 48 | "max": [0.0, 0.0, 1.0], 49 | "min": [0.0, 0.0, 0.9999999403953552], 50 | "type": "VEC3" 51 | }, 52 | { 53 | "bufferView": 1, 54 | "byteOffset": 440, 55 | "componentType": 5126, 56 | "count": 8, 57 | "max": [1.0, 0.8333333730697632], 58 | "min": [0.0, -0.16666674613952637], 59 | "type": "VEC2" 60 | }, 61 | { 62 | "bufferView": 0, 63 | "byteOffset": 408, 64 | "componentType": 5125, 65 | "count": 12, 66 | "type": "SCALAR" 67 | }, 68 | { 69 | "bufferView": 2, 70 | "byteOffset": 1512, 71 | "componentType": 5126, 72 | "count": 39, 73 | "max": [0.16250920295715332, 0.23368000984191895, -0.015290793962776661], 74 | "min": [0.005080000031739473, 0.12700000405311584, -0.030530791729688644], 75 | "type": "VEC3" 76 | }, 77 | { 78 | "bufferView": 2, 79 | "byteOffset": 1980, 80 | "componentType": 5126, 81 | "count": 39, 82 | "max": [0.0, -1.0, 0.0], 83 | "min": [0.0, -1.0, 0.0], 84 | "type": "VEC3" 85 | }, 86 | { 87 | "bufferView": 1, 88 | "byteOffset": 504, 89 | "componentType": 5126, 90 | "count": 39, 91 | "max": [0.0, 0.0], 92 | "min": [0.0, 0.0], 93 | "type": "VEC2" 94 | }, 95 | { 96 | "bufferView": 0, 97 | "byteOffset": 456, 98 | "componentType": 5125, 99 | "count": 63, 100 | "type": "SCALAR" 101 | }, 102 | { 103 | "bufferView": 2, 104 | "byteOffset": 2448, 105 | "componentType": 5126, 106 | "count": 336, 107 | "max": [0.16250920295715332, 0.2540000081062317, -5.079631591797806e-5], 108 | "min": [0.0, 0.05079999938607216, -0.16256000101566315], 109 | "type": "VEC3" 110 | }, 111 | { 112 | "bufferView": 2, 113 | "byteOffset": 6480, 114 | "componentType": 5126, 115 | "count": 336, 116 | "max": [1.0, 0.0, 1.0], 117 | "min": [-1.0, -1.0, -1.0], 118 | "type": "VEC3" 119 | }, 120 | { 121 | "bufferView": 1, 122 | "byteOffset": 816, 123 | "componentType": 5126, 124 | "count": 336, 125 | "max": [3.8381142616271973, 1.0022413730621338], 126 | "min": [-0.14732372760772705, -2.290052652359009], 127 | "type": "VEC2" 128 | }, 129 | { 130 | "bufferView": 0, 131 | "byteOffset": 708, 132 | "componentType": 5125, 133 | "count": 1032, 134 | "type": "SCALAR" 135 | }, 136 | { 137 | "bufferView": 2, 138 | "byteOffset": 10512, 139 | "componentType": 5126, 140 | "count": 23, 141 | "max": [0.12192000448703766, 0.12700000405311584, -0.015290793962776661], 142 | "min": [0.0, 0.12186920642852783, -0.030530791729688644], 143 | "type": "VEC3" 144 | }, 145 | { 146 | "bufferView": 2, 147 | "byteOffset": 10788, 148 | "componentType": 5126, 149 | "count": 23, 150 | "max": [0.0, -0.9999999403953552, 0.0], 151 | "min": [0.0, -1.0, 0.0], 152 | "type": "VEC3" 153 | }, 154 | { 155 | "bufferView": 1, 156 | "byteOffset": 3504, 157 | "componentType": 5126, 158 | "count": 23, 159 | "max": [0.0, 0.0], 160 | "min": [0.0, 0.0], 161 | "type": "VEC2" 162 | }, 163 | { 164 | "bufferView": 0, 165 | "byteOffset": 4836, 166 | "componentType": 5125, 167 | "count": 45, 168 | "type": "SCALAR" 169 | }, 170 | { 171 | "bufferView": 2, 172 | "byteOffset": 11064, 173 | "componentType": 5126, 174 | "count": 60, 175 | "max": [0.12948919832706451, 0.12700000405311584, -5.079631591797806e-5], 176 | "min": [0.03302000090479851, 0.05079999938607216, -0.030530791729688644], 177 | "type": "VEC3" 178 | }, 179 | { 180 | "bufferView": 2, 181 | "byteOffset": 11784, 182 | "componentType": 5126, 183 | "count": 60, 184 | "max": [1.0, 0.0, 1.0], 185 | "min": [-1.0, 0.0, 0.0], 186 | "type": "VEC3" 187 | }, 188 | { 189 | "bufferView": 1, 190 | "byteOffset": 3688, 191 | "componentType": 5126, 192 | "count": 60, 193 | "max": [1.105867862701416, 1.0], 194 | "min": [-5.960464477539063e-8, -0.10584366321563721], 195 | "type": "VEC2" 196 | }, 197 | { 198 | "bufferView": 0, 199 | "byteOffset": 5016, 200 | "componentType": 5125, 201 | "count": 126, 202 | "type": "SCALAR" 203 | }, 204 | { 205 | "bufferView": 2, 206 | "byteOffset": 12504, 207 | "componentType": 5126, 208 | "count": 281, 209 | "max": [0.16250920295715332, 0.2514600157737732, -5.079631591797806e-5], 210 | "min": [0.0, 0.055879998952150345, -0.030530791729688644], 211 | "type": "VEC3" 212 | }, 213 | { 214 | "bufferView": 2, 215 | "byteOffset": 15876, 216 | "componentType": 5126, 217 | "count": 281, 218 | "max": [0.0, 1.0, 0.0], 219 | "min": [0.0, -1.0, 0.0], 220 | "type": "VEC3" 221 | }, 222 | { 223 | "bufferView": 1, 224 | "byteOffset": 4168, 225 | "componentType": 5126, 226 | "count": 281, 227 | "max": [0.0, 0.0], 228 | "min": [0.0, 0.0], 229 | "type": "VEC2" 230 | }, 231 | { 232 | "bufferView": 0, 233 | "byteOffset": 5520, 234 | "componentType": 5125, 235 | "count": 705, 236 | "type": "SCALAR" 237 | }, 238 | { 239 | "bufferView": 2, 240 | "byteOffset": 19248, 241 | "componentType": 5126, 242 | "count": 481, 243 | "max": [0.16250920295715332, 0.2540000081062317, -5.079631591797806e-5], 244 | "min": [0.0, 0.05079999938607216, -0.16256000101566315], 245 | "type": "VEC3" 246 | }, 247 | { 248 | "bufferView": 2, 249 | "byteOffset": 25020, 250 | "componentType": 5126, 251 | "count": 481, 252 | "max": [1.0, 1.0, 1.0], 253 | "min": [-1.0, 0.0, -0.9999999403953552], 254 | "type": "VEC3" 255 | }, 256 | { 257 | "bufferView": 1, 258 | "byteOffset": 6416, 259 | "componentType": 5126, 260 | "count": 481, 261 | "max": [1.0012407302856445, 1.5], 262 | "min": [-0.0012406706809997559, -0.009804010391235352], 263 | "type": "VEC2" 264 | }, 265 | { 266 | "bufferView": 0, 267 | "byteOffset": 8340, 268 | "componentType": 5125, 269 | "count": 933, 270 | "type": "SCALAR" 271 | }, 272 | { 273 | "bufferView": 2, 274 | "byteOffset": 30792, 275 | "componentType": 5126, 276 | "count": 32, 277 | "max": [0.15748000144958496, 0.23368000984191895, -0.030530791729688644], 278 | "min": [0.005080000031739473, 0.1473200023174286, -0.030530791729688644], 279 | "type": "VEC3" 280 | }, 281 | { 282 | "bufferView": 2, 283 | "byteOffset": 31176, 284 | "componentType": 5126, 285 | "count": 32, 286 | "max": [0.0, 0.0, 1.0], 287 | "min": [0.0, 0.0, 0.9999999403953552], 288 | "type": "VEC3" 289 | }, 290 | { 291 | "bufferView": 1, 292 | "byteOffset": 10264, 293 | "componentType": 5126, 294 | "count": 32, 295 | "max": [1.0000001192092896, 1.5], 296 | "min": [-5.960464477539063e-8, 0.5], 297 | "type": "VEC2" 298 | }, 299 | { 300 | "bufferView": 0, 301 | "byteOffset": 12072, 302 | "componentType": 5125, 303 | "count": 48, 304 | "type": "SCALAR" 305 | }, 306 | { 307 | "bufferView": 2, 308 | "byteOffset": 31560, 309 | "componentType": 5126, 310 | "count": 8, 311 | "max": [0.12192000448703766, 0.12186920642852783, -0.030530791729688644], 312 | "min": [0.04058919847011566, 0.05079999938607216, -0.030530791729688644], 313 | "type": "VEC3" 314 | }, 315 | { 316 | "bufferView": 2, 317 | "byteOffset": 31656, 318 | "componentType": 5126, 319 | "count": 8, 320 | "max": [0.0, 0.0, 1.0], 321 | "min": [0.0, 0.0, 1.0], 322 | "type": "VEC3" 323 | }, 324 | { 325 | "bufferView": 1, 326 | "byteOffset": 10520, 327 | "componentType": 5126, 328 | "count": 8, 329 | "max": [1.0, 0.8333333730697632], 330 | "min": [-5.960464477539063e-7, -0.16666674613952637], 331 | "type": "VEC2" 332 | }, 333 | { 334 | "bufferView": 0, 335 | "byteOffset": 12264, 336 | "componentType": 5125, 337 | "count": 12, 338 | "type": "SCALAR" 339 | } 340 | ], 341 | "asset": { 342 | "extras": { 343 | "author": "tl0615 (https://sketchfab.com/tl0615)", 344 | "license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)", 345 | "source": "https://sketchfab.com/3d-models/low-poly-brick-building-a0cc89d6d7d94effaea4f267f02685ef", 346 | "title": "Low Poly Brick Building" 347 | }, 348 | "generator": "Sketchfab-10.50.0", 349 | "version": "2.0" 350 | }, 351 | "bufferViews": [ 352 | { 353 | "buffer": 0, 354 | "byteLength": 12312, 355 | "name": "floatBufferViews", 356 | "target": 34963 357 | }, 358 | { 359 | "buffer": 0, 360 | "byteLength": 10584, 361 | "byteOffset": 12312, 362 | "byteStride": 8, 363 | "name": "floatBufferViews", 364 | "target": 34962 365 | }, 366 | { 367 | "buffer": 0, 368 | "byteLength": 31752, 369 | "byteOffset": 22896, 370 | "byteStride": 12, 371 | "name": "floatBufferViews", 372 | "target": 34962 373 | } 374 | ], 375 | "buffers": [ 376 | { 377 | "byteLength": 54648, 378 | "uri": "building1.bin" 379 | } 380 | ], 381 | "images": [ 382 | { 383 | "uri": "building1Textures/material_0_baseColor.png" 384 | }, 385 | { 386 | "uri": "building1Textures/material_5_emissive.png" 387 | }, 388 | { 389 | "uri": "building1Textures/material_6_baseColor.png" 390 | }, 391 | { 392 | "uri": "building1Textures/material_1_baseColor.png" 393 | }, 394 | { 395 | "uri": "building1Textures/material_2_baseColor.png" 396 | }, 397 | { 398 | "uri": "building1Textures/material_3_baseColor.png" 399 | }, 400 | { 401 | "uri": "building1Textures/material_4_baseColor.png" 402 | } 403 | ], 404 | "materials": [ 405 | { 406 | "name": "material_0", 407 | "pbrMetallicRoughness": { 408 | "baseColorTexture": { 409 | "index": 0 410 | }, 411 | "metallicFactor": 0.0 412 | } 413 | }, 414 | { 415 | "emissiveFactor": [1.0, 1.0, 1.0], 416 | "emissiveTexture": { 417 | "index": 1 418 | }, 419 | "name": "material_5", 420 | "pbrMetallicRoughness": { 421 | "baseColorFactor": [ 422 | 0.03105855034348466, 0.013864017641819383, 0.0018348376739857103, 1.0 423 | ], 424 | "metallicFactor": 0.0, 425 | "roughnessFactor": 0.043702764654737325 426 | } 427 | }, 428 | { 429 | "emissiveFactor": [1.0, 1.0, 1.0], 430 | "emissiveTexture": { 431 | "index": 3 432 | }, 433 | "name": "material_6", 434 | "pbrMetallicRoughness": { 435 | "baseColorTexture": { 436 | "index": 2 437 | }, 438 | "metallicFactor": 0.0 439 | } 440 | }, 441 | { 442 | "name": "material_1", 443 | "pbrMetallicRoughness": { 444 | "baseColorTexture": { 445 | "index": 4 446 | }, 447 | "metallicFactor": 0.0 448 | } 449 | }, 450 | { 451 | "name": "material_2", 452 | "pbrMetallicRoughness": { 453 | "baseColorTexture": { 454 | "index": 5 455 | }, 456 | "metallicFactor": 0.0 457 | } 458 | }, 459 | { 460 | "name": "material_3", 461 | "pbrMetallicRoughness": { 462 | "baseColorTexture": { 463 | "index": 6 464 | }, 465 | "metallicFactor": 0.0 466 | } 467 | }, 468 | { 469 | "name": "material_4", 470 | "pbrMetallicRoughness": { 471 | "baseColorTexture": { 472 | "index": 7 473 | }, 474 | "metallicFactor": 0.0 475 | } 476 | } 477 | ], 478 | "meshes": [ 479 | { 480 | "name": "Object_0", 481 | "primitives": [ 482 | { 483 | "attributes": { 484 | "NORMAL": 1, 485 | "POSITION": 0, 486 | "TEXCOORD_0": 2 487 | }, 488 | "indices": 3, 489 | "material": 0, 490 | "mode": 4 491 | } 492 | ] 493 | }, 494 | { 495 | "name": "Object_1", 496 | "primitives": [ 497 | { 498 | "attributes": { 499 | "NORMAL": 5, 500 | "POSITION": 4, 501 | "TEXCOORD_0": 6 502 | }, 503 | "indices": 7, 504 | "material": 3, 505 | "mode": 4 506 | } 507 | ] 508 | }, 509 | { 510 | "name": "Object_2", 511 | "primitives": [ 512 | { 513 | "attributes": { 514 | "NORMAL": 9, 515 | "POSITION": 8, 516 | "TEXCOORD_0": 10 517 | }, 518 | "indices": 11, 519 | "material": 4, 520 | "mode": 4 521 | } 522 | ] 523 | }, 524 | { 525 | "name": "Object_3", 526 | "primitives": [ 527 | { 528 | "attributes": { 529 | "NORMAL": 13, 530 | "POSITION": 12, 531 | "TEXCOORD_0": 14 532 | }, 533 | "indices": 15, 534 | "material": 4, 535 | "mode": 4 536 | } 537 | ] 538 | }, 539 | { 540 | "name": "Object_4", 541 | "primitives": [ 542 | { 543 | "attributes": { 544 | "NORMAL": 17, 545 | "POSITION": 16, 546 | "TEXCOORD_0": 18 547 | }, 548 | "indices": 19, 549 | "material": 5, 550 | "mode": 4 551 | } 552 | ] 553 | }, 554 | { 555 | "name": "Object_5", 556 | "primitives": [ 557 | { 558 | "attributes": { 559 | "NORMAL": 21, 560 | "POSITION": 20, 561 | "TEXCOORD_0": 22 562 | }, 563 | "indices": 23, 564 | "material": 5, 565 | "mode": 4 566 | } 567 | ] 568 | }, 569 | { 570 | "name": "Object_6", 571 | "primitives": [ 572 | { 573 | "attributes": { 574 | "NORMAL": 25, 575 | "POSITION": 24, 576 | "TEXCOORD_0": 26 577 | }, 578 | "indices": 27, 579 | "material": 6, 580 | "mode": 4 581 | } 582 | ] 583 | }, 584 | { 585 | "name": "Object_7", 586 | "primitives": [ 587 | { 588 | "attributes": { 589 | "NORMAL": 29, 590 | "POSITION": 28, 591 | "TEXCOORD_0": 30 592 | }, 593 | "indices": 31, 594 | "material": 6, 595 | "mode": 4 596 | } 597 | ] 598 | }, 599 | { 600 | "name": "Object_8", 601 | "primitives": [ 602 | { 603 | "attributes": { 604 | "NORMAL": 33, 605 | "POSITION": 32, 606 | "TEXCOORD_0": 34 607 | }, 608 | "indices": 35, 609 | "material": 1, 610 | "mode": 4 611 | } 612 | ] 613 | }, 614 | { 615 | "name": "Object_9", 616 | "primitives": [ 617 | { 618 | "attributes": { 619 | "NORMAL": 37, 620 | "POSITION": 36, 621 | "TEXCOORD_0": 38 622 | }, 623 | "indices": 39, 624 | "material": 2, 625 | "mode": 4 626 | } 627 | ] 628 | } 629 | ], 630 | "nodes": [ 631 | { 632 | "children": [1], 633 | "matrix": [ 634 | -1.8503717641774574e-14, 5.102695374826766e-15, -83.33333587646484, 0.0, 635 | -83.33333587646484, 1.3401022266947803e-14, 1.8503717641774577e-14, 0.0, 636 | 1.3401022266947808e-14, 83.33333587646484, 5.102695374826766e-15, 0.0, 637 | 1.2831742763519287, -2.070600366517104e-8, -1.609203577041626, 1.0 638 | ], 639 | "name": "Sketchfab_model" 640 | }, 641 | { 642 | "children": [2], 643 | "name": "root" 644 | }, 645 | { 646 | "children": [3], 647 | "matrix": [ 648 | 1.0, 0.0, 0.0, 0.0, 0.0, 2.220446049250313e-16, 1.0, 0.0, 0.0, -1.0, 649 | 2.220446049250313e-16, 0.0, 0.0, 0.0, 0.0, 1.0 650 | ], 651 | "name": "GLTF_SceneRootNode" 652 | }, 653 | { 654 | "children": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13], 655 | "matrix": [ 656 | 0.0007620241958647966, -1.1733277460734826e-8, 0.3936999440193176, 0.0, 657 | 2.0288614450691966e-6, 0.3936985731124878, -5.01444162637199e-7, 0.0, 658 | -0.3936988413333893, 2.3325756046688184e-6, 0.0007615162176080048, 0.0, 659 | -0.1950855553150177, -0.019999995827674866, -1.4781074523925781, 1.0 660 | ], 661 | "name": "_0" 662 | }, 663 | { 664 | "mesh": 0, 665 | "name": "Object_4" 666 | }, 667 | { 668 | "mesh": 1, 669 | "name": "Object_5" 670 | }, 671 | { 672 | "mesh": 2, 673 | "name": "Object_6" 674 | }, 675 | { 676 | "mesh": 3, 677 | "name": "Object_7" 678 | }, 679 | { 680 | "mesh": 4, 681 | "name": "Object_8" 682 | }, 683 | { 684 | "mesh": 5, 685 | "name": "Object_9" 686 | }, 687 | { 688 | "mesh": 6, 689 | "name": "Object_10" 690 | }, 691 | { 692 | "mesh": 7, 693 | "name": "Object_11" 694 | }, 695 | { 696 | "mesh": 8, 697 | "name": "Object_12" 698 | }, 699 | { 700 | "mesh": 9, 701 | "name": "Object_13" 702 | } 703 | ], 704 | "samplers": [ 705 | { 706 | "magFilter": 9729, 707 | "minFilter": 9729, 708 | "wrapS": 10497, 709 | "wrapT": 10497 710 | }, 711 | { 712 | "magFilter": 9729, 713 | "minFilter": 9987, 714 | "wrapS": 10497, 715 | "wrapT": 10497 716 | } 717 | ], 718 | "scene": 0, 719 | "scenes": [ 720 | { 721 | "name": "Sketchfab_Scene", 722 | "nodes": [0] 723 | } 724 | ], 725 | "textures": [ 726 | { 727 | "sampler": 0, 728 | "source": 0 729 | }, 730 | { 731 | "sampler": 1, 732 | "source": 1 733 | }, 734 | { 735 | "sampler": 0, 736 | "source": 2 737 | }, 738 | { 739 | "sampler": 1, 740 | "source": 2 741 | }, 742 | { 743 | "sampler": 0, 744 | "source": 3 745 | }, 746 | { 747 | "sampler": 0, 748 | "source": 4 749 | }, 750 | { 751 | "sampler": 0, 752 | "source": 5 753 | }, 754 | { 755 | "sampler": 0, 756 | "source": 6 757 | } 758 | ] 759 | } 760 | -------------------------------------------------------------------------------- /public/building1Textures/material_0_baseColor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building1Textures/material_0_baseColor.png -------------------------------------------------------------------------------- /public/building1Textures/material_1_baseColor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building1Textures/material_1_baseColor.png -------------------------------------------------------------------------------- /public/building1Textures/material_2_baseColor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building1Textures/material_2_baseColor.png -------------------------------------------------------------------------------- /public/building1Textures/material_3_baseColor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building1Textures/material_3_baseColor.png -------------------------------------------------------------------------------- /public/building1Textures/material_4_baseColor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building1Textures/material_4_baseColor.png -------------------------------------------------------------------------------- /public/building1Textures/material_5_emissive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building1Textures/material_5_emissive.png -------------------------------------------------------------------------------- /public/building1Textures/material_6_baseColor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building1Textures/material_6_baseColor.png -------------------------------------------------------------------------------- /public/building2.bin: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e92f688f008cd4e3f046d3eb9ce0850ed043b6cdb1a0024a9251915ebf78fde8 3 | size 14892544 4 | -------------------------------------------------------------------------------- /public/building2Textures/Material_baseColor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/Material_baseColor.png -------------------------------------------------------------------------------- /public/building2Textures/Material_metallicRoughness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/Material_metallicRoughness.png -------------------------------------------------------------------------------- /public/building2Textures/Material_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/Material_normal.png -------------------------------------------------------------------------------- /public/building2Textures/brick_house_baseColor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/brick_house_baseColor.png -------------------------------------------------------------------------------- /public/building2Textures/brick_house_metallicRoughness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/brick_house_metallicRoughness.png -------------------------------------------------------------------------------- /public/building2Textures/door1_baseColor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/door1_baseColor.png -------------------------------------------------------------------------------- /public/building2Textures/door1_metallicRoughness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/door1_metallicRoughness.png -------------------------------------------------------------------------------- /public/building2Textures/door1_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/door1_normal.png -------------------------------------------------------------------------------- /public/building2Textures/house_micsamo_baseColor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/house_micsamo_baseColor.png -------------------------------------------------------------------------------- /public/building2Textures/house_micsamo_metallicRoughness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/house_micsamo_metallicRoughness.png -------------------------------------------------------------------------------- /public/building2Textures/house_micsamo_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/house_micsamo_normal.png -------------------------------------------------------------------------------- /public/building2Textures/initialShadingGroup_baseColor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/initialShadingGroup_baseColor.png -------------------------------------------------------------------------------- /public/building2Textures/initialShadingGroup_metallicRoughness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/initialShadingGroup_metallicRoughness.png -------------------------------------------------------------------------------- /public/building2Textures/initialShadingGroup_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/initialShadingGroup_normal.png -------------------------------------------------------------------------------- /public/building2Textures/lambert1_baseColor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/lambert1_baseColor.png -------------------------------------------------------------------------------- /public/building2Textures/lambert1_metallicRoughness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/lambert1_metallicRoughness.png -------------------------------------------------------------------------------- /public/building2Textures/lambert1_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/lambert1_normal.png -------------------------------------------------------------------------------- /public/building2Textures/material.003_baseColor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/material.003_baseColor.png -------------------------------------------------------------------------------- /public/building2Textures/material.003_metallicRoughness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/material.003_metallicRoughness.png -------------------------------------------------------------------------------- /public/building2Textures/meterial_house_baseColor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/meterial_house_baseColor.png -------------------------------------------------------------------------------- /public/building2Textures/meterial_house_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/meterial_house_normal.png -------------------------------------------------------------------------------- /public/building2Textures/screen-billboard_baseColor.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/screen-billboard_baseColor.jpeg -------------------------------------------------------------------------------- /public/building2Textures/trash_material_baseColor.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/trash_material_baseColor.jpeg -------------------------------------------------------------------------------- /public/building2Textures/trash_material_metallicRoughness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/trash_material_metallicRoughness.png -------------------------------------------------------------------------------- /public/building2Textures/trash_material_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/trash_material_normal.png -------------------------------------------------------------------------------- /public/building2Textures/up_house_baseColor.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/up_house_baseColor.jpeg -------------------------------------------------------------------------------- /public/building2Textures/wall_house_baseColor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/wall_house_baseColor.png -------------------------------------------------------------------------------- /public/building2Textures/wall_house_metallicRoughness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/wall_house_metallicRoughness.png -------------------------------------------------------------------------------- /public/building2Textures/wall_house_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building2Textures/wall_house_normal.png -------------------------------------------------------------------------------- /public/building3.bin: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e37e10127220af38b22f0ba75719098b0a64f1ead9c46c7da1f9adbfb9888bf4 3 | size 1559812 4 | -------------------------------------------------------------------------------- /public/building3.gltf: -------------------------------------------------------------------------------- 1 | { 2 | "accessors": [ 3 | { 4 | "bufferView": 2, 5 | "componentType": 5126, 6 | "count": 955, 7 | "max": [-14.398550033569336, 5.0996599197387695, 1.8323745727539062], 8 | "min": [-20.403720855712891, -7.4752826690673828, -6.8775496482849121], 9 | "type": "VEC3" 10 | }, 11 | { 12 | "bufferView": 2, 13 | "byteOffset": 11460, 14 | "componentType": 5126, 15 | "count": 955, 16 | "max": [0.9982534646987915, 1, 0.99628591537475586], 17 | "min": [-0.99591684341430664, -1, -0.99936264753341675], 18 | "type": "VEC3" 19 | }, 20 | { 21 | "bufferView": 1, 22 | "componentType": 5126, 23 | "count": 955, 24 | "max": [0.875, 1], 25 | "min": [0, 0], 26 | "type": "VEC2" 27 | }, 28 | { 29 | "bufferView": 1, 30 | "byteOffset": 7640, 31 | "componentType": 5126, 32 | "count": 955, 33 | "max": [1, 1], 34 | "min": [-5.5511151231257827e-17, -0.021271616220474243], 35 | "type": "VEC2" 36 | }, 37 | { 38 | "bufferView": 0, 39 | "componentType": 5125, 40 | "count": 1659, 41 | "max": [954], 42 | "min": [0], 43 | "type": "SCALAR" 44 | }, 45 | { 46 | "bufferView": 2, 47 | "byteOffset": 22920, 48 | "componentType": 5126, 49 | "count": 2088, 50 | "max": [-3.491175651550293, 7.0949711799621582, -0.77572059631347656], 51 | "min": [-11.879817962646484, 4.6782317161560059, -3.6468935012817383], 52 | "type": "VEC3" 53 | }, 54 | { 55 | "bufferView": 2, 56 | "byteOffset": 47976, 57 | "componentType": 5126, 58 | "count": 2088, 59 | "max": [0.99387532472610474, 1, 0.99999982118606567], 60 | "min": [-0.99387294054031372, -0.99996930360794067, -0.9996609091758728], 61 | "type": "VEC3" 62 | }, 63 | { 64 | "bufferView": 1, 65 | "byteOffset": 15280, 66 | "componentType": 5126, 67 | "count": 2088, 68 | "max": [1, 1.0000001192092896], 69 | "min": [0, 0], 70 | "type": "VEC2" 71 | }, 72 | { 73 | "bufferView": 1, 74 | "byteOffset": 31984, 75 | "componentType": 5126, 76 | "count": 2088, 77 | "max": [0.37859675288200378, 0.64428257942199707], 78 | "min": [0, 0], 79 | "type": "VEC2" 80 | }, 81 | { 82 | "bufferView": 0, 83 | "byteOffset": 6636, 84 | "componentType": 5125, 85 | "count": 3471, 86 | "max": [2087], 87 | "min": [0], 88 | "type": "SCALAR" 89 | }, 90 | { 91 | "bufferView": 2, 92 | "byteOffset": 73032, 93 | "componentType": 5126, 94 | "count": 4715, 95 | "max": [0.53286266326904297, 5.4268455505371094, 3.1636972427368164], 96 | "min": [-18.81781005859375, -7.2601051330566406, -6.8775496482849121], 97 | "type": "VEC3" 98 | }, 99 | { 100 | "bufferView": 2, 101 | "byteOffset": 129612, 102 | "componentType": 5126, 103 | "count": 4715, 104 | "max": [0.99409234523773193, 1, 0.99902051687240601], 105 | "min": [-0.99387937784194946, -1, -0.99983340501785278], 106 | "type": "VEC3" 107 | }, 108 | { 109 | "bufferView": 1, 110 | "byteOffset": 48688, 111 | "componentType": 5126, 112 | "count": 4715, 113 | "max": [1, 1.0000001192092896], 114 | "min": [0, 0], 115 | "type": "VEC2" 116 | }, 117 | { 118 | "bufferView": 1, 119 | "byteOffset": 86408, 120 | "componentType": 5126, 121 | "count": 4715, 122 | "max": [1.0000001192092896, 0.82978582382202148], 123 | "min": [-5.5511151231257827e-17, 0], 124 | "type": "VEC2" 125 | }, 126 | { 127 | "bufferView": 0, 128 | "byteOffset": 20520, 129 | "componentType": 5125, 130 | "count": 9795, 131 | "max": [4714], 132 | "min": [0], 133 | "type": "SCALAR" 134 | }, 135 | { 136 | "bufferView": 2, 137 | "byteOffset": 186192, 138 | "componentType": 5126, 139 | "count": 24980, 140 | "max": [-3.2894563674926758, 5.7123041152954102, 2.6563010215759277], 141 | "min": [-20.263071060180664, -6.7670383453369141, -5.6247906684875488], 142 | "type": "VEC3" 143 | }, 144 | { 145 | "bufferView": 2, 146 | "byteOffset": 485952, 147 | "componentType": 5126, 148 | "count": 24980, 149 | "max": [0.99998629093170166, 1, 0.99542856216430664], 150 | "min": [-0.99999624490737915, -1, -0.99997794628143311], 151 | "type": "VEC3" 152 | }, 153 | { 154 | "bufferView": 1, 155 | "byteOffset": 124128, 156 | "componentType": 5126, 157 | "count": 24980, 158 | "max": [0.98918026685714722, 1.0000002384185791], 159 | "min": [-0.010295534506440163, 0], 160 | "type": "VEC2" 161 | }, 162 | { 163 | "bufferView": 1, 164 | "byteOffset": 323968, 165 | "componentType": 5126, 166 | "count": 24980, 167 | "max": [0.90944492816925049, 0.76421856880187988], 168 | "min": [0, 0], 169 | "type": "VEC2" 170 | }, 171 | { 172 | "bufferView": 0, 173 | "byteOffset": 59700, 174 | "componentType": 5125, 175 | "count": 45054, 176 | "max": [24979], 177 | "min": [0], 178 | "type": "SCALAR" 179 | }, 180 | { 181 | "bufferView": 2, 182 | "byteOffset": 785712, 183 | "componentType": 5126, 184 | "count": 224, 185 | "max": [-0.19988250732421875, 4.572662353515625, 2.4012455940246582], 186 | "min": [-17.005928039550781, -4.9743204116821289, -5.2566499710083008], 187 | "type": "VEC3" 188 | }, 189 | { 190 | "bufferView": 2, 191 | "byteOffset": 788400, 192 | "componentType": 5126, 193 | "count": 224, 194 | "max": [2.9657462619070429e-6, 1, 0.98778730630874634], 195 | "min": [-0.10985691100358963, 0.1104893758893013, -2.7160219815414166e-6], 196 | "type": "VEC3" 197 | }, 198 | { 199 | "bufferView": 1, 200 | "byteOffset": 523808, 201 | "componentType": 5126, 202 | "count": 224, 203 | "max": [0.85523957014083862, 1], 204 | "min": [0.19662010669708252, 0.11087413877248764], 205 | "type": "VEC2" 206 | }, 207 | { 208 | "bufferView": 1, 209 | "byteOffset": 525600, 210 | "componentType": 5126, 211 | "count": 224, 212 | "max": [0, 0], 213 | "min": [0, 0], 214 | "type": "VEC2" 215 | }, 216 | { 217 | "bufferView": 0, 218 | "byteOffset": 239916, 219 | "componentType": 5125, 220 | "count": 354, 221 | "max": [223], 222 | "min": [0], 223 | "type": "SCALAR" 224 | } 225 | ], 226 | "asset": { 227 | "extras": { 228 | "author": "LUX4D (https://sketchfab.com/LUX4D)", 229 | "license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)", 230 | "source": "https://sketchfab.com/3d-models/schillerplatz-18-mainz-0af5fa67a7c149dbb9e369b94e550756", 231 | "title": "Schillerplatz 18 Mainz" 232 | }, 233 | "generator": "Sketchfab-10.10.1-rc1", 234 | "version": "2.0" 235 | }, 236 | "bufferViews": [ 237 | { 238 | "buffer": 0, 239 | "byteLength": 241332, 240 | "byteOffset": 0, 241 | "name": "floatBufferViews", 242 | "target": 34963 243 | }, 244 | { 245 | "buffer": 0, 246 | "byteLength": 527392, 247 | "byteOffset": 241332, 248 | "byteStride": 8, 249 | "name": "floatBufferViews", 250 | "target": 34962 251 | }, 252 | { 253 | "buffer": 0, 254 | "byteLength": 791088, 255 | "byteOffset": 768724, 256 | "byteStride": 12, 257 | "name": "floatBufferViews", 258 | "target": 34962 259 | } 260 | ], 261 | "buffers": [ 262 | { 263 | "byteLength": 1559812, 264 | "uri": "building3.bin" 265 | } 266 | ], 267 | "materials": [ 268 | { 269 | "doubleSided": true, 270 | "emissiveFactor": [0, 0, 0], 271 | "name": "main", 272 | "pbrMetallicRoughness": { 273 | "baseColorFactor": [ 274 | 0.26077299999999998, 0.18215100000000001, 0.19907900000000001, 1 275 | ], 276 | "metallicFactor": 0, 277 | "roughnessFactor": 0.83333299999999999 278 | } 279 | }, 280 | { 281 | "doubleSided": true, 282 | "emissiveFactor": [0, 0, 0], 283 | "name": "rahmen", 284 | "pbrMetallicRoughness": { 285 | "baseColorFactor": [ 286 | 0.141012, 0.082618800000000006, 0.095305399999999998, 1 287 | ], 288 | "metallicFactor": 0, 289 | "roughnessFactor": 0.83333299999999999 290 | } 291 | }, 292 | { 293 | "alphaMode": "BLEND", 294 | "doubleSided": true, 295 | "emissiveFactor": [ 296 | 0.0020904000000000001, 0.0020904000000000001, 0.0020904000000000001 297 | ], 298 | "name": "fenster", 299 | "pbrMetallicRoughness": { 300 | "baseColorFactor": [ 301 | 0.80000000000000004, 0.80000000000000004, 0.80000000000000004, 302 | 0.73662574005352166 303 | ], 304 | "metallicFactor": 0.34722008613465621, 305 | "roughnessFactor": 0.093794378401166001 306 | } 307 | }, 308 | { 309 | "doubleSided": true, 310 | "emissiveFactor": [0, 0, 0], 311 | "name": "dach", 312 | "pbrMetallicRoughness": { 313 | "baseColorFactor": [ 314 | 0.0122168, 0.0062839999999999997, 0.010182399999999999, 1 315 | ], 316 | "metallicFactor": 0, 317 | "roughnessFactor": 0.95925899999999997 318 | } 319 | }, 320 | { 321 | "doubleSided": true, 322 | "emissiveFactor": [0, 0, 0], 323 | "name": "metal", 324 | "pbrMetallicRoughness": { 325 | "baseColorFactor": [ 326 | 0.214034, 0.17663000000000001, 0.20025000000000001, 1 327 | ], 328 | "metallicFactor": 1, 329 | "roughnessFactor": 0.5 330 | } 331 | } 332 | ], 333 | "meshes": [ 334 | { 335 | "primitives": [ 336 | { 337 | "attributes": { 338 | "NORMAL": 1, 339 | "POSITION": 0, 340 | "TEXCOORD_0": 2, 341 | "TEXCOORD_1": 3 342 | }, 343 | "indices": 4, 344 | "material": 3, 345 | "mode": 4 346 | } 347 | ] 348 | }, 349 | { 350 | "primitives": [ 351 | { 352 | "attributes": { 353 | "NORMAL": 6, 354 | "POSITION": 5, 355 | "TEXCOORD_0": 7, 356 | "TEXCOORD_1": 8 357 | }, 358 | "indices": 9, 359 | "material": 4, 360 | "mode": 4 361 | } 362 | ] 363 | }, 364 | { 365 | "primitives": [ 366 | { 367 | "attributes": { 368 | "NORMAL": 11, 369 | "POSITION": 10, 370 | "TEXCOORD_0": 12, 371 | "TEXCOORD_1": 13 372 | }, 373 | "indices": 14, 374 | "material": 0, 375 | "mode": 4 376 | } 377 | ] 378 | }, 379 | { 380 | "primitives": [ 381 | { 382 | "attributes": { 383 | "NORMAL": 16, 384 | "POSITION": 15, 385 | "TEXCOORD_0": 17, 386 | "TEXCOORD_1": 18 387 | }, 388 | "indices": 19, 389 | "material": 1, 390 | "mode": 4 391 | } 392 | ] 393 | }, 394 | { 395 | "primitives": [ 396 | { 397 | "attributes": { 398 | "NORMAL": 21, 399 | "POSITION": 20, 400 | "TEXCOORD_0": 22, 401 | "TEXCOORD_1": 23 402 | }, 403 | "indices": 24, 404 | "material": 2, 405 | "mode": 4 406 | } 407 | ] 408 | } 409 | ], 410 | "nodes": [ 411 | { 412 | "children": [1], 413 | "name": "RootNode (gltf orientation matrix)", 414 | "rotation": [-0.70710678118654746, -0, -0, 0.70710678118654757] 415 | }, 416 | { 417 | "children": [2], 418 | "name": "RootNode (model correction matrix)" 419 | }, 420 | { 421 | "children": [3], 422 | "name": "root" 423 | }, 424 | { 425 | "children": [4], 426 | "matrix": [ 427 | 1, 0, 0, 0, 0, 2.2204460492503131e-16, 1, 0, 0, -1, 428 | 2.2204460492503131e-16, 0, 0, 0, 0, 1 429 | ], 430 | "name": "GLTF_SceneRootNode" 431 | }, 432 | { 433 | "children": [5, 6, 7, 8, 9], 434 | "matrix": [ 435 | 0.11053087483069268, -0.99387269089615327, -3.5169717027550007e-8, 0, 436 | 2.3645107325886983e-5, 2.5942403939493985e-6, 0.99999999971708942, 0, 437 | -0.99387269061488492, -0.11053087480025398, 2.3786970104744398e-5, 0, 438 | 1.3283119201660156, 0, 0.31513795256614685, 1 439 | ], 440 | "name": "Haus_0" 441 | }, 442 | { 443 | "mesh": 0, 444 | "name": "" 445 | }, 446 | { 447 | "mesh": 1, 448 | "name": "" 449 | }, 450 | { 451 | "mesh": 2, 452 | "name": "" 453 | }, 454 | { 455 | "mesh": 3, 456 | "name": "" 457 | }, 458 | { 459 | "mesh": 4, 460 | "name": "" 461 | } 462 | ], 463 | "scene": 0, 464 | "scenes": [ 465 | { 466 | "name": "OSG_Scene", 467 | "nodes": [0] 468 | } 469 | ] 470 | } 471 | -------------------------------------------------------------------------------- /public/building4.bin: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f27775e39a3d500de5cf83541223aab8b9d3239f46bde0f927a8a9f73db651ba 3 | size 43324 4 | -------------------------------------------------------------------------------- /public/building4.gltf: -------------------------------------------------------------------------------- 1 | { 2 | "accessors": [ 3 | { 4 | "bufferView": 2, 5 | "componentType": 5126, 6 | "count": 1070, 7 | "max": [1.0834944248199463, 4.0199999809265137, 1.0554978847503662], 8 | "min": [-1.0748860836029053, -9.3132257461547852e-9, -1.0551422834396362], 9 | "type": "VEC3" 10 | }, 11 | { 12 | "bufferView": 2, 13 | "byteOffset": 12840, 14 | "componentType": 5126, 15 | "count": 1070, 16 | "max": [1, 1, 1], 17 | "min": [-1, -1, -1], 18 | "type": "VEC3" 19 | }, 20 | { 21 | "bufferView": 1, 22 | "componentType": 5126, 23 | "count": 1070, 24 | "max": [1, 1], 25 | "min": [0, 0], 26 | "type": "VEC2" 27 | }, 28 | { 29 | "bufferView": 0, 30 | "componentType": 5125, 31 | "count": 2271, 32 | "max": [1069], 33 | "min": [0], 34 | "type": "SCALAR" 35 | } 36 | ], 37 | "asset": { 38 | "extras": { 39 | "author": "bean(alwayshasbean) (https://sketchfab.com/alwayshasbean)", 40 | "license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)", 41 | "source": "https://sketchfab.com/3d-models/9-storey-residential-building-4407c6bd0d944a9c8ad0b9c08e65a1da", 42 | "title": "9 storey residential building" 43 | }, 44 | "generator": "Sketchfab-10.1.0", 45 | "version": "2.0" 46 | }, 47 | "bufferViews": [ 48 | { 49 | "buffer": 0, 50 | "byteLength": 9084, 51 | "byteOffset": 0, 52 | "name": "floatBufferViews", 53 | "target": 34963 54 | }, 55 | { 56 | "buffer": 0, 57 | "byteLength": 8560, 58 | "byteOffset": 9084, 59 | "byteStride": 8, 60 | "name": "floatBufferViews", 61 | "target": 34962 62 | }, 63 | { 64 | "buffer": 0, 65 | "byteLength": 25680, 66 | "byteOffset": 17644, 67 | "byteStride": 12, 68 | "name": "floatBufferViews", 69 | "target": 34962 70 | } 71 | ], 72 | "buffers": [ 73 | { 74 | "byteLength": 43324, 75 | "uri": "building4.bin" 76 | } 77 | ], 78 | "images": [ 79 | { 80 | "uri": "building4Textures/Material_baseColor.png" 81 | } 82 | ], 83 | "materials": [ 84 | { 85 | "doubleSided": true, 86 | "emissiveFactor": [0, 0, 0], 87 | "name": "Material", 88 | "pbrMetallicRoughness": { 89 | "baseColorFactor": [ 90 | 0.39084113120000002, 0.39084113120000002, 0.39084113120000002, 1 91 | ], 92 | "baseColorTexture": { 93 | "index": 0, 94 | "texCoord": 0 95 | }, 96 | "metallicFactor": 0, 97 | "roughnessFactor": 1 98 | } 99 | } 100 | ], 101 | "meshes": [ 102 | { 103 | "primitives": [ 104 | { 105 | "attributes": { 106 | "NORMAL": 1, 107 | "POSITION": 0, 108 | "TEXCOORD_0": 2 109 | }, 110 | "indices": 3, 111 | "material": 0, 112 | "mode": 4 113 | } 114 | ] 115 | } 116 | ], 117 | "nodes": [ 118 | { 119 | "children": [1], 120 | "name": "RootNode (gltf orientation matrix)", 121 | "rotation": [-0.70710678118654746, -0, -0, 0.70710678118654757] 122 | }, 123 | { 124 | "children": [2], 125 | "name": "RootNode (model correction matrix)" 126 | }, 127 | { 128 | "children": [3], 129 | "name": "root" 130 | }, 131 | { 132 | "children": [4], 133 | "matrix": [ 134 | 1, 0, 0, 0, 0, 2.2204460492503131e-16, 1, 0, 0, -1, 135 | 2.2204460492503131e-16, 0, 0, 0, 0, 1 136 | ], 137 | "name": "GLTF_SceneRootNode" 138 | }, 139 | { 140 | "children": [5], 141 | "matrix": [ 142 | 6.5790066719055176, 0, 0, 0, 0, 7.0696511268615723, 0, 0, 0, 0, 143 | 7.1068487167358398, 0, 0, 0, 0, 1 144 | ], 145 | "name": "Cube_0" 146 | }, 147 | { 148 | "mesh": 0, 149 | "name": "" 150 | } 151 | ], 152 | "samplers": [ 153 | { 154 | "magFilter": 9729, 155 | "minFilter": 9987, 156 | "wrapS": 10497, 157 | "wrapT": 10497 158 | } 159 | ], 160 | "scene": 0, 161 | "scenes": [ 162 | { 163 | "name": "OSG_Scene", 164 | "nodes": [0] 165 | } 166 | ], 167 | "textures": [ 168 | { 169 | "sampler": 0, 170 | "source": 0 171 | } 172 | ] 173 | } 174 | -------------------------------------------------------------------------------- /public/building4Textures/Material_baseColor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building4Textures/Material_baseColor.png -------------------------------------------------------------------------------- /public/building6.bin: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:84d56faef5f77d1e480d6de2abe4e5163f26473d6fdd96a493ab720961804f69 3 | size 759808 4 | -------------------------------------------------------------------------------- /public/building6Textures/build_01_baseColor.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building6Textures/build_01_baseColor.jpeg -------------------------------------------------------------------------------- /public/building6Textures/concrete_02_baseColor.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building6Textures/concrete_02_baseColor.jpeg -------------------------------------------------------------------------------- /public/building6Textures/concrete_baseColor.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building6Textures/concrete_baseColor.jpeg -------------------------------------------------------------------------------- /public/building6Textures/concrete_fine_baseColor.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building6Textures/concrete_fine_baseColor.jpeg -------------------------------------------------------------------------------- /public/building6Textures/rooftop_01_baseColor.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/building6Textures/rooftop_01_baseColor.jpeg -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/favicon.ico -------------------------------------------------------------------------------- /public/grass1.bin: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:01f9e2ed2632ab430c2aca85849bc10f4bef62a25ea628c34dccab30e978b6bb 3 | size 100968816 4 | -------------------------------------------------------------------------------- /public/grass1.gltf: -------------------------------------------------------------------------------- 1 | { 2 | "accessors": [ 3 | { 4 | "bufferView": 2, 5 | "componentType": 5126, 6 | "count": 65532, 7 | "max": [12.696409225463867, 2.4408409595489502, 16.027275085449219], 8 | "min": [0.1402897834777832, 0, 0.023199081420898438], 9 | "type": "VEC3" 10 | }, 11 | { 12 | "bufferView": 2, 13 | "byteOffset": 786384, 14 | "componentType": 5126, 15 | "count": 65532, 16 | "max": [0.99994271993637085, 0.99999946355819702, 0.99993789196014404], 17 | "min": [-0.99999654293060303, -0.99993914365768433, -0.99999129772186279], 18 | "type": "VEC3" 19 | }, 20 | { 21 | "bufferView": 3, 22 | "componentType": 5126, 23 | "count": 65532, 24 | "max": [0.99999040365219116, 0.99996083974838257, 0.99995970726013184, 1], 25 | "min": [ 26 | -0.99998730421066284, -0.99983257055282593, -0.99999982118606567, -1 27 | ], 28 | "type": "VEC4" 29 | }, 30 | { 31 | "bufferView": 1, 32 | "componentType": 5126, 33 | "count": 65532, 34 | "max": [0.99810999631881714, 1.0000159740447998], 35 | "min": [0.0004619999963324517, 0.003860000055283308], 36 | "type": "VEC2" 37 | }, 38 | { 39 | "bufferView": 0, 40 | "componentType": 5125, 41 | "count": 281739, 42 | "max": [65531], 43 | "min": [0], 44 | "type": "SCALAR" 45 | }, 46 | { 47 | "bufferView": 2, 48 | "byteOffset": 1572768, 49 | "componentType": 5126, 50 | "count": 65532, 51 | "max": [12.591320991516113, 2.3323421478271484, 16.098903656005859], 52 | "min": [0.072212696075439453, 0.097221016883850098, 0], 53 | "type": "VEC3" 54 | }, 55 | { 56 | "bufferView": 2, 57 | "byteOffset": 2359152, 58 | "componentType": 5126, 59 | "count": 65532, 60 | "max": [0.99990975856781006, 0.99999648332595825, 0.99908101558685303], 61 | "min": [-0.99983948469161987, -0.99553221464157104, -0.99993723630905151], 62 | "type": "VEC3" 63 | }, 64 | { 65 | "bufferView": 3, 66 | "byteOffset": 1048512, 67 | "componentType": 5126, 68 | "count": 65532, 69 | "max": [0.9999881386756897, 0.99995130300521851, 0.99989205598831177, 1], 70 | "min": [ 71 | -0.99998378753662109, -0.99995005130767822, -0.99996763467788696, -1 72 | ], 73 | "type": "VEC4" 74 | }, 75 | { 76 | "bufferView": 1, 77 | "byteOffset": 524256, 78 | "componentType": 5126, 79 | "count": 65532, 80 | "max": [0.99573898315429688, 0.99874800443649292], 81 | "min": [0.00083099998300895095, 0.0039429999887943268], 82 | "type": "VEC2" 83 | }, 84 | { 85 | "bufferView": 0, 86 | "byteOffset": 1126956, 87 | "componentType": 5125, 88 | "count": 296361, 89 | "max": [65531], 90 | "min": [0], 91 | "type": "SCALAR" 92 | }, 93 | { 94 | "bufferView": 2, 95 | "byteOffset": 3145536, 96 | "componentType": 5126, 97 | "count": 65532, 98 | "max": [12.907371520996094, 2.4299988746643066, 16.273704528808594], 99 | "min": [ 100 | 0.052960872650146484, 0.097622990608215332, 0.0093173980712890625 101 | ], 102 | "type": "VEC3" 103 | }, 104 | { 105 | "bufferView": 2, 106 | "byteOffset": 3931920, 107 | "componentType": 5126, 108 | "count": 65532, 109 | "max": [0.99985760450363159, 0.99999779462814331, 0.9990200400352478], 110 | "min": [-0.99988985061645508, -0.99830198287963867, -0.99987977743148804], 111 | "type": "VEC3" 112 | }, 113 | { 114 | "bufferView": 3, 115 | "byteOffset": 2097024, 116 | "componentType": 5126, 117 | "count": 65532, 118 | "max": [0.99994480609893799, 0.9999164342880249, 0.99998503923416138, 1], 119 | "min": [ 120 | -0.99999856948852539, -0.99995803833007812, -0.9999968409538269, -1 121 | ], 122 | "type": "VEC4" 123 | }, 124 | { 125 | "bufferView": 1, 126 | "byteOffset": 1048512, 127 | "componentType": 5126, 128 | "count": 65532, 129 | "max": [0.99688297510147095, 0.99884402751922607], 130 | "min": [0.00043099999311380088, 0.00597799988463521], 131 | "type": "VEC2" 132 | }, 133 | { 134 | "bufferView": 0, 135 | "byteOffset": 2312400, 136 | "componentType": 5125, 137 | "count": 288369, 138 | "max": [65531], 139 | "min": [0], 140 | "type": "SCALAR" 141 | }, 142 | { 143 | "bufferView": 2, 144 | "byteOffset": 4718304, 145 | "componentType": 5126, 146 | "count": 65532, 147 | "max": [12.658705711364746, 2.4244949817657471, 16.271335601806641], 148 | "min": [0.063205718994140625, 0.12743794918060303, 0.017354011535644531], 149 | "type": "VEC3" 150 | }, 151 | { 152 | "bufferView": 2, 153 | "byteOffset": 5504688, 154 | "componentType": 5126, 155 | "count": 65532, 156 | "max": [0.99998205900192261, 0.99999850988388062, 0.99979090690612793], 157 | "min": [-0.99969953298568726, -0.99824804067611694, -0.999900221824646], 158 | "type": "VEC3" 159 | }, 160 | { 161 | "bufferView": 3, 162 | "byteOffset": 3145536, 163 | "componentType": 5126, 164 | "count": 65532, 165 | "max": [0.99997258186340332, 0.99992609024047852, 0.99999845027923584, 1], 166 | "min": [ 167 | -0.99999815225601196, -0.99999445676803589, -0.9999854564666748, -1 168 | ], 169 | "type": "VEC4" 170 | }, 171 | { 172 | "bufferView": 1, 173 | "byteOffset": 1572768, 174 | "componentType": 5126, 175 | "count": 65532, 176 | "max": [0.99576598405838013, 0.99850499629974365], 177 | "min": [0.00053800002206116915, 0.0039059999398887157], 178 | "type": "VEC2" 179 | }, 180 | { 181 | "bufferView": 0, 182 | "byteOffset": 3465876, 183 | "componentType": 5125, 184 | "count": 285681, 185 | "max": [65531], 186 | "min": [0], 187 | "type": "SCALAR" 188 | }, 189 | { 190 | "bufferView": 2, 191 | "byteOffset": 6291072, 192 | "componentType": 5126, 193 | "count": 65532, 194 | "max": [12.811294555664062, 2.3980021476745605, 16.253116607666016], 195 | "min": [0.26286792755126953, 0.11113202571868896, 0.0045633316040039062], 196 | "type": "VEC3" 197 | }, 198 | { 199 | "bufferView": 2, 200 | "byteOffset": 7077456, 201 | "componentType": 5126, 202 | "count": 65532, 203 | "max": [0.99981230497360229, 0.99999654293060303, 0.99980300664901733], 204 | "min": [-0.99994868040084839, -0.99998146295547485, -0.99993610382080078], 205 | "type": "VEC3" 206 | }, 207 | { 208 | "bufferView": 3, 209 | "byteOffset": 4194048, 210 | "componentType": 5126, 211 | "count": 65532, 212 | "max": [0.99998456239700317, 0.99978303909301758, 0.99996078014373779, 1], 213 | "min": [ 214 | -0.99999910593032837, -0.99999541044235229, -0.9999968409538269, -1 215 | ], 216 | "type": "VEC4" 217 | }, 218 | { 219 | "bufferView": 1, 220 | "byteOffset": 2097024, 221 | "componentType": 5126, 222 | "count": 65532, 223 | "max": [0.99739998579025269, 0.99924999475479126], 224 | "min": [0.00058499997248873115, 0.0052590002305805683], 225 | "type": "VEC2" 226 | }, 227 | { 228 | "bufferView": 0, 229 | "byteOffset": 4608600, 230 | "componentType": 5125, 231 | "count": 281928, 232 | "max": [65531], 233 | "min": [0], 234 | "type": "SCALAR" 235 | }, 236 | { 237 | "bufferView": 2, 238 | "byteOffset": 7863840, 239 | "componentType": 5126, 240 | "count": 65532, 241 | "max": [12.891626358032227, 2.3808531761169434, 16.214725494384766], 242 | "min": [0.06285858154296875, 0.15687000751495361, 0.040165901184082031], 243 | "type": "VEC3" 244 | }, 245 | { 246 | "bufferView": 2, 247 | "byteOffset": 8650224, 248 | "componentType": 5126, 249 | "count": 65532, 250 | "max": [0.99998974800109863, 0.99999791383743286, 0.99963259696960449], 251 | "min": [-0.99979627132415771, -0.99295222759246826, -0.99986642599105835], 252 | "type": "VEC3" 253 | }, 254 | { 255 | "bufferView": 3, 256 | "byteOffset": 5242560, 257 | "componentType": 5126, 258 | "count": 65532, 259 | "max": [0.99999123811721802, 0.99999219179153442, 0.99999070167541504, 1], 260 | "min": [ 261 | -0.99998331069946289, -0.99975705146789551, -0.99998205900192261, -1 262 | ], 263 | "type": "VEC4" 264 | }, 265 | { 266 | "bufferView": 1, 267 | "byteOffset": 2621280, 268 | "componentType": 5126, 269 | "count": 65532, 270 | "max": [0.99737101793289185, 0.99946200847625732], 271 | "min": [0.00072900002123787999, 0.0039249998517334461], 272 | "type": "VEC2" 273 | }, 274 | { 275 | "bufferView": 0, 276 | "byteOffset": 5736312, 277 | "componentType": 5125, 278 | "count": 275472, 279 | "max": [65531], 280 | "min": [0], 281 | "type": "SCALAR" 282 | }, 283 | { 284 | "bufferView": 2, 285 | "byteOffset": 9436608, 286 | "componentType": 5126, 287 | "count": 65532, 288 | "max": [12.706875801086426, 2.3579709529876709, 16.148265838623047], 289 | "min": [0.14293575286865234, 0.14574801921844482, 0.087609291076660156], 290 | "type": "VEC3" 291 | }, 292 | { 293 | "bufferView": 2, 294 | "byteOffset": 10222992, 295 | "componentType": 5126, 296 | "count": 65532, 297 | "max": [0.99992406368255615, 0.99999779462814331, 0.99996352195739746], 298 | "min": [-0.99987930059432983, -0.99918633699417114, -0.99997895956039429], 299 | "type": "VEC3" 300 | }, 301 | { 302 | "bufferView": 3, 303 | "byteOffset": 6291072, 304 | "componentType": 5126, 305 | "count": 65532, 306 | "max": [0.9999624490737915, 0.99953049421310425, 0.99998843669891357, 1], 307 | "min": [ 308 | -0.99998664855957031, -0.99990344047546387, -0.99991756677627563, -1 309 | ], 310 | "type": "VEC4" 311 | }, 312 | { 313 | "bufferView": 1, 314 | "byteOffset": 3145536, 315 | "componentType": 5126, 316 | "count": 65532, 317 | "max": [0.99728101491928101, 0.9992709755897522], 318 | "min": [0.00059499999042600393, 0.0045320000499486923], 319 | "type": "VEC2" 320 | }, 321 | { 322 | "bufferView": 0, 323 | "byteOffset": 6838200, 324 | "componentType": 5125, 325 | "count": 274377, 326 | "max": [65531], 327 | "min": [0], 328 | "type": "SCALAR" 329 | }, 330 | { 331 | "bufferView": 2, 332 | "byteOffset": 11009376, 333 | "componentType": 5126, 334 | "count": 65532, 335 | "max": [12.707287788391113, 2.4162478446960449, 16.206844329833984], 336 | "min": [0.10208892822265625, 0.17732501029968262, 0.041761398315429688], 337 | "type": "VEC3" 338 | }, 339 | { 340 | "bufferView": 2, 341 | "byteOffset": 11795760, 342 | "componentType": 5126, 343 | "count": 65532, 344 | "max": [0.9998815655708313, 0.99998819828033447, 0.99994546175003052], 345 | "min": [-0.99997544288635254, -0.99907219409942627, -0.9998210072517395], 346 | "type": "VEC3" 347 | }, 348 | { 349 | "bufferView": 3, 350 | "byteOffset": 7339584, 351 | "componentType": 5126, 352 | "count": 65532, 353 | "max": [0.99998646974563599, 0.99991965293884277, 0.99995875358581543, 1], 354 | "min": [ 355 | -0.99999505281448364, -0.99963760375976562, -0.99999624490737915, -1 356 | ], 357 | "type": "VEC4" 358 | }, 359 | { 360 | "bufferView": 1, 361 | "byteOffset": 3669792, 362 | "componentType": 5126, 363 | "count": 65532, 364 | "max": [0.99776798486709595, 0.99901801347732544], 365 | "min": [0.00066100002732127905, 0.0045570000074803829], 366 | "type": "VEC2" 367 | }, 368 | { 369 | "bufferView": 0, 370 | "byteOffset": 7935708, 371 | "componentType": 5125, 372 | "count": 275880, 373 | "max": [65531], 374 | "min": [0], 375 | "type": "SCALAR" 376 | }, 377 | { 378 | "bufferView": 2, 379 | "byteOffset": 12582144, 380 | "componentType": 5126, 381 | "count": 65533, 382 | "max": [12.932615280151367, 2.3879799842834473, 16.160425186157227], 383 | "min": [0.027992725372314453, 0.20154905319213867, 0.097702980041503906], 384 | "type": "VEC3" 385 | }, 386 | { 387 | "bufferView": 2, 388 | "byteOffset": 13368540, 389 | "componentType": 5126, 390 | "count": 65533, 391 | "max": [0.99957340955734253, 0.99999767541885376, 0.99995744228363037], 392 | "min": [-0.99993860721588135, -0.998524010181427, -0.99994927644729614], 393 | "type": "VEC3" 394 | }, 395 | { 396 | "bufferView": 3, 397 | "byteOffset": 8388096, 398 | "componentType": 5126, 399 | "count": 65533, 400 | "max": [0.99997198581695557, 0.99998801946640015, 0.99999111890792847, 1], 401 | "min": [ 402 | -0.99999576807022095, -0.99998641014099121, -0.9999968409538269, -1 403 | ], 404 | "type": "VEC4" 405 | }, 406 | { 407 | "bufferView": 1, 408 | "byteOffset": 4194048, 409 | "componentType": 5126, 410 | "count": 65533, 411 | "max": [0.99596899747848511, 0.99962997436523438], 412 | "min": [0.00085499999113380909, 0.003607999999076128], 413 | "type": "VEC2" 414 | }, 415 | { 416 | "bufferView": 0, 417 | "byteOffset": 9039228, 418 | "componentType": 5125, 419 | "count": 268215, 420 | "max": [65532], 421 | "min": [0], 422 | "type": "SCALAR" 423 | }, 424 | { 425 | "bufferView": 2, 426 | "byteOffset": 14154936, 427 | "componentType": 5126, 428 | "count": 65533, 429 | "max": [12.779457092285156, 2.4227030277252197, 16.189647674560547], 430 | "min": [0.051913738250732422, 0.16170001029968262, 0.029998779296875], 431 | "type": "VEC3" 432 | }, 433 | { 434 | "bufferView": 2, 435 | "byteOffset": 14941332, 436 | "componentType": 5126, 437 | "count": 65533, 438 | "max": [0.99978125095367432, 0.99999183416366577, 0.99963259696960449], 439 | "min": [-0.99997270107269287, -0.99013411998748779, -0.99994558095932007], 440 | "type": "VEC3" 441 | }, 442 | { 443 | "bufferView": 3, 444 | "byteOffset": 9436624, 445 | "componentType": 5126, 446 | "count": 65533, 447 | "max": [0.99998807907104492, 0.99988061189651489, 0.99995779991149902, 1], 448 | "min": [ 449 | -0.99998068809509277, -0.99999207258224487, -0.99999487400054932, -1 450 | ], 451 | "type": "VEC4" 452 | }, 453 | { 454 | "bufferView": 1, 455 | "byteOffset": 4718312, 456 | "componentType": 5126, 457 | "count": 65533, 458 | "max": [0.99689197540283203, 0.99985200166702271], 459 | "min": [0.00075399997876957059, 0.0037499999161809683], 460 | "type": "VEC2" 461 | }, 462 | { 463 | "bufferView": 0, 464 | "byteOffset": 10112088, 465 | "componentType": 5125, 466 | "count": 269856, 467 | "max": [65532], 468 | "min": [0], 469 | "type": "SCALAR" 470 | }, 471 | { 472 | "bufferView": 2, 473 | "byteOffset": 15727728, 474 | "componentType": 5126, 475 | "count": 65532, 476 | "max": [12.671640396118164, 2.3523759841918945, 16.038681030273438], 477 | "min": [0.2062687873840332, 0.21777498722076416, 0.16107988357543945], 478 | "type": "VEC3" 479 | }, 480 | { 481 | "bufferView": 2, 482 | "byteOffset": 16514112, 483 | "componentType": 5126, 484 | "count": 65532, 485 | "max": [0.99977487325668335, 0.99999791383743286, 0.99992424249649048], 486 | "min": [-0.99981188774108887, -0.99754458665847778, -0.99994558095932007], 487 | "type": "VEC3" 488 | }, 489 | { 490 | "bufferView": 3, 491 | "byteOffset": 10485152, 492 | "componentType": 5126, 493 | "count": 65532, 494 | "max": [0.99997800588607788, 0.99991309642791748, 0.99995362758636475, 1], 495 | "min": [ 496 | -0.99997711181640625, -0.99991166591644287, -0.99999892711639404, -1 497 | ], 498 | "type": "VEC4" 499 | }, 500 | { 501 | "bufferView": 1, 502 | "byteOffset": 5242576, 503 | "componentType": 5126, 504 | "count": 65532, 505 | "max": [0.99673300981521606, 0.99904602766036987], 506 | "min": [0.00069499999517574906, 0.0038379998877644539], 507 | "type": "VEC2" 508 | }, 509 | { 510 | "bufferView": 0, 511 | "byteOffset": 11191512, 512 | "componentType": 5125, 513 | "count": 276039, 514 | "max": [65531], 515 | "min": [0], 516 | "type": "SCALAR" 517 | }, 518 | { 519 | "bufferView": 2, 520 | "byteOffset": 17300496, 521 | "componentType": 5126, 522 | "count": 65532, 523 | "max": [12.748421669006348, 2.3937690258026123, 16.100048065185547], 524 | "min": [0, 0.21243095397949219, 0.21911191940307617], 525 | "type": "VEC3" 526 | }, 527 | { 528 | "bufferView": 2, 529 | "byteOffset": 18086880, 530 | "componentType": 5126, 531 | "count": 65532, 532 | "max": [0.99998509883880615, 0.99999040365219116, 0.99963259696960449], 533 | "min": [-0.99992722272872925, -0.99938517808914185, -0.99993818998336792], 534 | "type": "VEC3" 535 | }, 536 | { 537 | "bufferView": 3, 538 | "byteOffset": 11533664, 539 | "componentType": 5126, 540 | "count": 65532, 541 | "max": [0.99998283386230469, 0.9997527003288269, 0.99998778104782104, 1], 542 | "min": [ 543 | -0.9999963641166687, -0.99995100498199463, -0.99998414516448975, -1 544 | ], 545 | "type": "VEC4" 546 | }, 547 | { 548 | "bufferView": 1, 549 | "byteOffset": 5766832, 550 | "componentType": 5126, 551 | "count": 65532, 552 | "max": [0.99505901336669922, 0.99988698959350586], 553 | "min": [0.00078699999721720815, 0.0042409999296069145], 554 | "type": "VEC2" 555 | }, 556 | { 557 | "bufferView": 0, 558 | "byteOffset": 12295668, 559 | "componentType": 5125, 560 | "count": 265092, 561 | "max": [65531], 562 | "min": [0], 563 | "type": "SCALAR" 564 | }, 565 | { 566 | "bufferView": 2, 567 | "byteOffset": 18873264, 568 | "componentType": 5126, 569 | "count": 65532, 570 | "max": [12.737428665161133, 2.537147045135498, 16.056188583374023], 571 | "min": [0.11093997955322266, 0.22071194648742676, 0.13158035278320312], 572 | "type": "VEC3" 573 | }, 574 | { 575 | "bufferView": 2, 576 | "byteOffset": 19659648, 577 | "componentType": 5126, 578 | "count": 65532, 579 | "max": [0.9999997615814209, 0.99999898672103882, 0.99996352195739746], 580 | "min": [-0.9998595118522644, -0.99256658554077148, -0.99966722726821899], 581 | "type": "VEC3" 582 | }, 583 | { 584 | "bufferView": 3, 585 | "byteOffset": 12582176, 586 | "componentType": 5126, 587 | "count": 65532, 588 | "max": [0.99999451637268066, 0.99979978799819946, 0.99998766183853149, 1], 589 | "min": [ 590 | -0.99992966651916504, -0.99993818998336792, -0.9999697208404541, -1 591 | ], 592 | "type": "VEC4" 593 | }, 594 | { 595 | "bufferView": 1, 596 | "byteOffset": 6291088, 597 | "componentType": 5126, 598 | "count": 65532, 599 | "max": [0.99640101194381714, 0.99943602085113525], 600 | "min": [0.00072399998316541314, 0.0043429997749626637], 601 | "type": "VEC2" 602 | }, 603 | { 604 | "bufferView": 0, 605 | "byteOffset": 13356036, 606 | "componentType": 5125, 607 | "count": 269400, 608 | "max": [65531], 609 | "min": [0], 610 | "type": "SCALAR" 611 | }, 612 | { 613 | "bufferView": 2, 614 | "byteOffset": 20446032, 615 | "componentType": 5126, 616 | "count": 65533, 617 | "max": [12.939168930053711, 2.4328579902648926, 16.056751251220703], 618 | "min": [0.017018795013427734, 0.20142996311187744, 0.017534255981445312], 619 | "type": "VEC3" 620 | }, 621 | { 622 | "bufferView": 2, 623 | "byteOffset": 21232428, 624 | "componentType": 5126, 625 | "count": 65533, 626 | "max": [0.9998810887336731, 0.99999827146530151, 0.99938720464706421], 627 | "min": [-0.99997270107269287, -0.99929803609848022, -0.99996393918991089], 628 | "type": "VEC3" 629 | }, 630 | { 631 | "bufferView": 3, 632 | "byteOffset": 13630688, 633 | "componentType": 5126, 634 | "count": 65533, 635 | "max": [0.99999481439590454, 0.99994033575057983, 0.99997657537460327, 1], 636 | "min": [ 637 | -0.99999856948852539, -0.99990099668502808, -0.9999697208404541, -1 638 | ], 639 | "type": "VEC4" 640 | }, 641 | { 642 | "bufferView": 1, 643 | "byteOffset": 6815344, 644 | "componentType": 5126, 645 | "count": 65533, 646 | "max": [0.99736499786376953, 0.99968600273132324], 647 | "min": [0.00063700001919642091, 0.0036470000632107258], 648 | "type": "VEC2" 649 | }, 650 | { 651 | "bufferView": 0, 652 | "byteOffset": 14433636, 653 | "componentType": 5125, 654 | "count": 260181, 655 | "max": [65532], 656 | "min": [0], 657 | "type": "SCALAR" 658 | }, 659 | { 660 | "bufferView": 2, 661 | "byteOffset": 22018824, 662 | "componentType": 5126, 663 | "count": 65532, 664 | "max": [12.888095855712891, 2.4222240447998047, 16.247236251831055], 665 | "min": [0.20418691635131836, 0.24165701866149902, 0.099885940551757812], 666 | "type": "VEC3" 667 | }, 668 | { 669 | "bufferView": 2, 670 | "byteOffset": 22805208, 671 | "componentType": 5126, 672 | "count": 65532, 673 | "max": [0.99987661838531494, 0.99999892711639404, 0.99994546175003052], 674 | "min": [-0.99999260902404785, -0.99963068962097168, -0.99987936019897461], 675 | "type": "VEC3" 676 | }, 677 | { 678 | "bufferView": 3, 679 | "byteOffset": 14679216, 680 | "componentType": 5126, 681 | "count": 65532, 682 | "max": [0.9999956488609314, 0.99991267919540405, 0.99999535083770752, 1], 683 | "min": [ 684 | -0.9999995231628418, -0.99990361928939819, -0.99999094009399414, -1 685 | ], 686 | "type": "VEC4" 687 | }, 688 | { 689 | "bufferView": 1, 690 | "byteOffset": 7339608, 691 | "componentType": 5126, 692 | "count": 65532, 693 | "max": [0.99720597267150879, 0.99947100877761841], 694 | "min": [0.00068499997723847628, 0.0039519998244941235], 695 | "type": "VEC2" 696 | }, 697 | { 698 | "bufferView": 0, 699 | "byteOffset": 15474360, 700 | "componentType": 5125, 701 | "count": 259626, 702 | "max": [65531], 703 | "min": [0], 704 | "type": "SCALAR" 705 | }, 706 | { 707 | "bufferView": 2, 708 | "byteOffset": 23591592, 709 | "componentType": 5126, 710 | "count": 65532, 711 | "max": [12.965604782104492, 2.5072040557861328, 16.175180435180664], 712 | "min": [0.0050005912780761719, 0.26231896877288818, 0.033879280090332031], 713 | "type": "VEC3" 714 | }, 715 | { 716 | "bufferView": 2, 717 | "byteOffset": 24377976, 718 | "componentType": 5126, 719 | "count": 65532, 720 | "max": [0.99994313716888428, 0.99999457597732544, 0.9992402195930481], 721 | "min": [-0.99949920177459717, -0.99434977769851685, -0.99994844198226929], 722 | "type": "VEC3" 723 | }, 724 | { 725 | "bufferView": 3, 726 | "byteOffset": 15727728, 727 | "componentType": 5126, 728 | "count": 65532, 729 | "max": [0.9999699592590332, 0.99982476234436035, 0.99997657537460327, 1], 730 | "min": [ 731 | -0.99999755620956421, -0.99996078014373779, -0.99999964237213135, -1 732 | ], 733 | "type": "VEC4" 734 | }, 735 | { 736 | "bufferView": 1, 737 | "byteOffset": 7863864, 738 | "componentType": 5126, 739 | "count": 65532, 740 | "max": [0.99788099527359009, 0.99918597936630249], 741 | "min": [0.00042600001324899495, 0.0038540000095963478], 742 | "type": "VEC2" 743 | }, 744 | { 745 | "bufferView": 0, 746 | "byteOffset": 16512864, 747 | "componentType": 5125, 748 | "count": 269409, 749 | "max": [65531], 750 | "min": [0], 751 | "type": "SCALAR" 752 | }, 753 | { 754 | "bufferView": 2, 755 | "byteOffset": 25164360, 756 | "componentType": 5126, 757 | "count": 65532, 758 | "max": [12.944147109985352, 2.4918761253356934, 16.279809951782227], 759 | "min": [0.0064849853515625, 0.19911098480224609, 3.910064697265625e-5], 760 | "type": "VEC3" 761 | }, 762 | { 763 | "bufferView": 2, 764 | "byteOffset": 25950744, 765 | "componentType": 5126, 766 | "count": 65532, 767 | "max": [0.99994313716888428, 0.99999791383743286, 0.99988299608230591], 768 | "min": [-0.99976259469985962, -0.99954915046691895, -0.99983370304107666], 769 | "type": "VEC3" 770 | }, 771 | { 772 | "bufferView": 3, 773 | "byteOffset": 16776240, 774 | "componentType": 5126, 775 | "count": 65532, 776 | "max": [0.9999966025352478, 0.99998742341995239, 0.99999499320983887, 1], 777 | "min": [ 778 | -0.99998313188552856, -0.99995863437652588, -0.99997758865356445, -1 779 | ], 780 | "type": "VEC4" 781 | }, 782 | { 783 | "bufferView": 1, 784 | "byteOffset": 8388120, 785 | "componentType": 5126, 786 | "count": 65532, 787 | "max": [0.99596297740936279, 0.99953502416610718], 788 | "min": [0.0005300000193528831, 0.0039059999398887157], 789 | "type": "VEC2" 790 | }, 791 | { 792 | "bufferView": 0, 793 | "byteOffset": 17590500, 794 | "componentType": 5125, 795 | "count": 250875, 796 | "max": [65531], 797 | "min": [0], 798 | "type": "SCALAR" 799 | }, 800 | { 801 | "bufferView": 2, 802 | "byteOffset": 26737128, 803 | "componentType": 5126, 804 | "count": 65532, 805 | "max": [12.925798416137695, 2.5646891593933105, 16.080657958984375], 806 | "min": [0.010756969451904297, 0.2547910213470459, 0.13154220581054688], 807 | "type": "VEC3" 808 | }, 809 | { 810 | "bufferView": 2, 811 | "byteOffset": 27523512, 812 | "componentType": 5126, 813 | "count": 65532, 814 | "max": [0.99966174364089966, 0.99999696016311646, 0.99988299608230591], 815 | "min": [-0.9999663233757019, -0.99860560894012451, -0.99973291158676147], 816 | "type": "VEC3" 817 | }, 818 | { 819 | "bufferView": 3, 820 | "byteOffset": 17824752, 821 | "componentType": 5126, 822 | "count": 65532, 823 | "max": [0.99999755620956421, 0.99996942281723022, 0.99998974800109863, 1], 824 | "min": [ 825 | -0.99997836351394653, -0.99981063604354858, -0.99998271465301514, -1 826 | ], 827 | "type": "VEC4" 828 | }, 829 | { 830 | "bufferView": 1, 831 | "byteOffset": 8912376, 832 | "componentType": 5126, 833 | "count": 65532, 834 | "max": [0.99634099006652832, 0.99970799684524536], 835 | "min": [6.5000000176951289e-5, 0.0056159999221563339], 836 | "type": "VEC2" 837 | }, 838 | { 839 | "bufferView": 0, 840 | "byteOffset": 18594000, 841 | "componentType": 5125, 842 | "count": 256986, 843 | "max": [65531], 844 | "min": [0], 845 | "type": "SCALAR" 846 | }, 847 | { 848 | "bufferView": 2, 849 | "byteOffset": 28309896, 850 | "componentType": 5126, 851 | "count": 65532, 852 | "max": [12.966015815734863, 2.5643711090087891, 16.179588317871094], 853 | "min": [0.074702739715576172, 0.29869699478149414, 0.37503576278686523], 854 | "type": "VEC3" 855 | }, 856 | { 857 | "bufferView": 2, 858 | "byteOffset": 29096280, 859 | "componentType": 5126, 860 | "count": 65532, 861 | "max": [0.99988502264022827, 0.99999892711639404, 0.99998664855957031], 862 | "min": [-0.99987930059432983, -0.99344003200531006, -0.99992883205413818], 863 | "type": "VEC3" 864 | }, 865 | { 866 | "bufferView": 3, 867 | "byteOffset": 18873264, 868 | "componentType": 5126, 869 | "count": 65532, 870 | "max": [0.99999803304672241, 0.99936550855636597, 0.99998313188552856, 1], 871 | "min": [ 872 | -0.99996328353881836, -0.99946320056915283, -0.99997270107269287, -1 873 | ], 874 | "type": "VEC4" 875 | }, 876 | { 877 | "bufferView": 1, 878 | "byteOffset": 9436632, 879 | "componentType": 5126, 880 | "count": 65532, 881 | "max": [0.9963110089302063, 0.99973201751708984], 882 | "min": [0.00042799999937415123, 0.0038079998921602964], 883 | "type": "VEC2" 884 | }, 885 | { 886 | "bufferView": 0, 887 | "byteOffset": 19621944, 888 | "componentType": 5125, 889 | "count": 251355, 890 | "max": [65531], 891 | "min": [0], 892 | "type": "SCALAR" 893 | }, 894 | { 895 | "bufferView": 2, 896 | "byteOffset": 29882664, 897 | "componentType": 5126, 898 | "count": 65532, 899 | "max": [12.97071361541748, 2.564457893371582, 16.212116241455078], 900 | "min": [0.00179290771484375, 0.25315296649932861, 0.027148246765136719], 901 | "type": "VEC3" 902 | }, 903 | { 904 | "bufferView": 2, 905 | "byteOffset": 30669048, 906 | "componentType": 5126, 907 | "count": 65532, 908 | "max": [0.99987053871154785, 0.99998831748962402, 0.99983870983123779], 909 | "min": [-0.99999260902404785, -0.99846643209457397, -0.99992841482162476], 910 | "type": "VEC3" 911 | }, 912 | { 913 | "bufferView": 3, 914 | "byteOffset": 19921776, 915 | "componentType": 5126, 916 | "count": 65532, 917 | "max": [0.99993658065795898, 0.99984979629516602, 0.99999105930328369, 1], 918 | "min": [ 919 | -0.99995511770248413, -0.99989235401153564, -0.99998784065246582, -1 920 | ], 921 | "type": "VEC4" 922 | }, 923 | { 924 | "bufferView": 1, 925 | "byteOffset": 9960888, 926 | "componentType": 5126, 927 | "count": 65532, 928 | "max": [0.99665200710296631, 0.99957001209259033], 929 | "min": [0.00057999999262392521, 0.0039249998517334461], 930 | "type": "VEC2" 931 | }, 932 | { 933 | "bufferView": 0, 934 | "byteOffset": 20627364, 935 | "componentType": 5125, 936 | "count": 239091, 937 | "max": [65531], 938 | "min": [0], 939 | "type": "SCALAR" 940 | }, 941 | { 942 | "bufferView": 2, 943 | "byteOffset": 31455432, 944 | "componentType": 5126, 945 | "count": 65532, 946 | "max": [12.913694381713867, 2.5656118392944336, 16.213138580322266], 947 | "min": [0.033803939819335938, 0.29199099540710449, 0.055060386657714844], 948 | "type": "VEC3" 949 | }, 950 | { 951 | "bufferView": 2, 952 | "byteOffset": 32241816, 953 | "componentType": 5126, 954 | "count": 65532, 955 | "max": [0.99997192621231079, 0.99999690055847168, 0.99981826543807983], 956 | "min": [-0.99989300966262817, -0.9984772801399231, -0.99989610910415649], 957 | "type": "VEC3" 958 | }, 959 | { 960 | "bufferView": 3, 961 | "byteOffset": 20970288, 962 | "componentType": 5126, 963 | "count": 65532, 964 | "max": [0.99996191263198853, 0.9998859167098999, 0.99996089935302734, 1], 965 | "min": [ 966 | -0.99997663497924805, -0.99989712238311768, -0.99996578693389893, -1 967 | ], 968 | "type": "VEC4" 969 | }, 970 | { 971 | "bufferView": 1, 972 | "byteOffset": 10485144, 973 | "componentType": 5126, 974 | "count": 65532, 975 | "max": [0.99695301055908203, 0.99947601556777954], 976 | "min": [0.00054600002476945519, 0.0036500000860542059], 977 | "type": "VEC2" 978 | }, 979 | { 980 | "bufferView": 0, 981 | "byteOffset": 21583728, 982 | "componentType": 5125, 983 | "count": 243114, 984 | "max": [65531], 985 | "min": [0], 986 | "type": "SCALAR" 987 | }, 988 | { 989 | "bufferView": 2, 990 | "byteOffset": 33028200, 991 | "componentType": 5126, 992 | "count": 65532, 993 | "max": [12.942078590393066, 2.5674080848693848, 16.258647918701172], 994 | "min": [0.0085339546203613281, 0.24048900604248047, 3.910064697265625e-5], 995 | "type": "VEC3" 996 | }, 997 | { 998 | "bufferView": 2, 999 | "byteOffset": 33814584, 1000 | "componentType": 5126, 1001 | "count": 65532, 1002 | "max": [0.99986171722412109, 0.99999791383743286, 0.9997437596321106], 1003 | "min": [-0.99973726272583008, -0.99937534332275391, -0.99970120191574097], 1004 | "type": "VEC3" 1005 | }, 1006 | { 1007 | "bufferView": 3, 1008 | "byteOffset": 22018800, 1009 | "componentType": 5126, 1010 | "count": 65532, 1011 | "max": [0.99997913837432861, 0.99996083974838257, 0.99999278783798218, 1], 1012 | "min": [ 1013 | -0.99999517202377319, -0.99989235401153564, -0.99998009204864502, -1 1014 | ], 1015 | "type": "VEC4" 1016 | }, 1017 | { 1018 | "bufferView": 1, 1019 | "byteOffset": 11009400, 1020 | "componentType": 5126, 1021 | "count": 65532, 1022 | "max": [0.99730700254440308, 0.99944001436233521], 1023 | "min": [0.00068100000498816371, 0.0039519998244941235], 1024 | "type": "VEC2" 1025 | }, 1026 | { 1027 | "bufferView": 0, 1028 | "byteOffset": 22556184, 1029 | "componentType": 5125, 1030 | "count": 232917, 1031 | "max": [65531], 1032 | "min": [0], 1033 | "type": "SCALAR" 1034 | }, 1035 | { 1036 | "bufferView": 2, 1037 | "byteOffset": 34600968, 1038 | "componentType": 5126, 1039 | "count": 65532, 1040 | "max": [12.956772804260254, 2.5851888656616211, 16.232107162475586], 1041 | "min": [0.015421867370605469, 0.31406897306442261, 0.23192596435546875], 1042 | "type": "VEC3" 1043 | }, 1044 | { 1045 | "bufferView": 2, 1046 | "byteOffset": 35387352, 1047 | "componentType": 5126, 1048 | "count": 65532, 1049 | "max": [0.99996447563171387, 0.99999874830245972, 0.99960041046142578], 1050 | "min": [-0.99973505735397339, -0.99815434217453003, -0.99992841482162476], 1051 | "type": "VEC3" 1052 | }, 1053 | { 1054 | "bufferView": 3, 1055 | "byteOffset": 23067312, 1056 | "componentType": 5126, 1057 | "count": 65532, 1058 | "max": [0.99999290704727173, 0.99996417760848999, 0.99998778104782104, 1], 1059 | "min": [ 1060 | -0.99998933076858521, -0.99987548589706421, -0.99995273351669312, -1 1061 | ], 1062 | "type": "VEC4" 1063 | }, 1064 | { 1065 | "bufferView": 1, 1066 | "byteOffset": 11533656, 1067 | "componentType": 5126, 1068 | "count": 65532, 1069 | "max": [0.99692100286483765, 0.99978500604629517], 1070 | "min": [0.00039500001003034413, 0.0037020000163465738], 1071 | "type": "VEC2" 1072 | }, 1073 | { 1074 | "bufferView": 0, 1075 | "byteOffset": 23487852, 1076 | "componentType": 5125, 1077 | "count": 220971, 1078 | "max": [65531], 1079 | "min": [0], 1080 | "type": "SCALAR" 1081 | }, 1082 | { 1083 | "bufferView": 2, 1084 | "byteOffset": 36173736, 1085 | "componentType": 5126, 1086 | "count": 65532, 1087 | "max": [12.954450607299805, 2.6004199981689453, 16.226852416992188], 1088 | "min": [0.00179290771484375, 0.30521202087402344, 0.0239715576171875], 1089 | "type": "VEC3" 1090 | }, 1091 | { 1092 | "bufferView": 2, 1093 | "byteOffset": 36960120, 1094 | "componentType": 5126, 1095 | "count": 65532, 1096 | "max": [0.99991428852081299, 0.99997597932815552, 0.99998664855957031], 1097 | "min": [-0.99999648332595825, -0.99953961372375488, -0.99989843368530273], 1098 | "type": "VEC3" 1099 | }, 1100 | { 1101 | "bufferView": 3, 1102 | "byteOffset": 24115824, 1103 | "componentType": 5126, 1104 | "count": 65532, 1105 | "max": [0.99998283386230469, 0.99995702505111694, 0.99994021654129028, 1], 1106 | "min": [ 1107 | -0.99999541044235229, -0.99997228384017944, -0.99996757507324219, -1 1108 | ], 1109 | "type": "VEC4" 1110 | }, 1111 | { 1112 | "bufferView": 1, 1113 | "byteOffset": 12057912, 1114 | "componentType": 5126, 1115 | "count": 65532, 1116 | "max": [0.99716097116470337, 0.99974197149276733], 1117 | "min": [0.00018400000408291817, 0.0035059999208897352], 1118 | "type": "VEC2" 1119 | }, 1120 | { 1121 | "bufferView": 0, 1122 | "byteOffset": 24371736, 1123 | "componentType": 5125, 1124 | "count": 193080, 1125 | "max": [65531], 1126 | "min": [0], 1127 | "type": "SCALAR" 1128 | }, 1129 | { 1130 | "bufferView": 2, 1131 | "byteOffset": 37746504, 1132 | "componentType": 5126, 1133 | "count": 5746, 1134 | "max": [12.922866821289062, 2.5944571495056152, 16.224506378173828], 1135 | "min": [0.12774896621704102, 0.40510302782058716, 0.090888023376464844], 1136 | "type": "VEC3" 1137 | }, 1138 | { 1139 | "bufferView": 2, 1140 | "byteOffset": 37815456, 1141 | "componentType": 5126, 1142 | "count": 5746, 1143 | "max": [0.99987983703613281, 0.99992448091506958, 0.99981826543807983], 1144 | "min": [-0.99986541271209717, -0.99738442897796631, -0.99939906597137451], 1145 | "type": "VEC3" 1146 | }, 1147 | { 1148 | "bufferView": 3, 1149 | "byteOffset": 25164336, 1150 | "componentType": 5126, 1151 | "count": 5746, 1152 | "max": [0.99925744533538818, 0.99925339221954346, 0.99945354461669922, 1], 1153 | "min": [ 1154 | -0.99971961975097656, -0.99948692321777344, -0.9999229907989502, -1 1155 | ], 1156 | "type": "VEC4" 1157 | }, 1158 | { 1159 | "bufferView": 1, 1160 | "byteOffset": 12582168, 1161 | "componentType": 5126, 1162 | "count": 5746, 1163 | "max": [0.99609899520874023, 0.99932098388671875], 1164 | "min": [0.00082100002327933908, 0.0078099998645484447], 1165 | "type": "VEC2" 1166 | }, 1167 | { 1168 | "bufferView": 0, 1169 | "byteOffset": 25144056, 1170 | "componentType": 5125, 1171 | "count": 13986, 1172 | "max": [5745], 1173 | "min": [0], 1174 | "type": "SCALAR" 1175 | } 1176 | ], 1177 | "asset": { 1178 | "extras": { 1179 | "author": "Krzysztof Lewicki (https://sketchfab.com/slavgamedev)", 1180 | "license": "CC-BY-NC-ND-4.0 (http://creativecommons.org/licenses/by-nc-nd/4.0/)", 1181 | "source": "https://sketchfab.com/models/0ee6380fa4384b7fa7655a53865a9079", 1182 | "title": "Grass 1" 1183 | }, 1184 | "generator": "Sketchfab-3.18.7", 1185 | "version": "2.0" 1186 | }, 1187 | "bufferViews": [ 1188 | { 1189 | "buffer": 0, 1190 | "byteLength": 25200000, 1191 | "byteOffset": 0, 1192 | "name": "floatBufferViews", 1193 | "target": 34963 1194 | }, 1195 | { 1196 | "buffer": 0, 1197 | "byteLength": 12628136, 1198 | "byteOffset": 25200000, 1199 | "byteStride": 8, 1200 | "name": "floatBufferViews", 1201 | "target": 34962 1202 | }, 1203 | { 1204 | "buffer": 0, 1205 | "byteLength": 37884408, 1206 | "byteOffset": 37828136, 1207 | "byteStride": 12, 1208 | "name": "floatBufferViews", 1209 | "target": 34962 1210 | }, 1211 | { 1212 | "buffer": 0, 1213 | "byteLength": 25256272, 1214 | "byteOffset": 75712544, 1215 | "byteStride": 16, 1216 | "name": "floatBufferViews", 1217 | "target": 34962 1218 | } 1219 | ], 1220 | "buffers": [ 1221 | { 1222 | "byteLength": 100968816, 1223 | "uri": "grass1.bin" 1224 | } 1225 | ], 1226 | "images": [ 1227 | { 1228 | "uri": "grass1Textures/material_0_baseColor.jpeg" 1229 | } 1230 | ], 1231 | "materials": [ 1232 | { 1233 | "doubleSided": true, 1234 | "emissiveFactor": [0, 0, 0], 1235 | "name": "material_0", 1236 | "pbrMetallicRoughness": { 1237 | "baseColorFactor": [1, 1, 1, 1], 1238 | "baseColorTexture": { 1239 | "index": 0, 1240 | "texCoord": 0 1241 | }, 1242 | "metallicFactor": 0, 1243 | "roughnessFactor": 0.59999999999999998 1244 | } 1245 | } 1246 | ], 1247 | "meshes": [ 1248 | { 1249 | "primitives": [ 1250 | { 1251 | "attributes": { 1252 | "NORMAL": 1, 1253 | "POSITION": 0, 1254 | "TANGENT": 2, 1255 | "TEXCOORD_0": 3 1256 | }, 1257 | "indices": 4, 1258 | "material": 0, 1259 | "mode": 4 1260 | } 1261 | ] 1262 | }, 1263 | { 1264 | "primitives": [ 1265 | { 1266 | "attributes": { 1267 | "NORMAL": 6, 1268 | "POSITION": 5, 1269 | "TANGENT": 7, 1270 | "TEXCOORD_0": 8 1271 | }, 1272 | "indices": 9, 1273 | "material": 0, 1274 | "mode": 4 1275 | } 1276 | ] 1277 | }, 1278 | { 1279 | "primitives": [ 1280 | { 1281 | "attributes": { 1282 | "NORMAL": 11, 1283 | "POSITION": 10, 1284 | "TANGENT": 12, 1285 | "TEXCOORD_0": 13 1286 | }, 1287 | "indices": 14, 1288 | "material": 0, 1289 | "mode": 4 1290 | } 1291 | ] 1292 | }, 1293 | { 1294 | "primitives": [ 1295 | { 1296 | "attributes": { 1297 | "NORMAL": 16, 1298 | "POSITION": 15, 1299 | "TANGENT": 17, 1300 | "TEXCOORD_0": 18 1301 | }, 1302 | "indices": 19, 1303 | "material": 0, 1304 | "mode": 4 1305 | } 1306 | ] 1307 | }, 1308 | { 1309 | "primitives": [ 1310 | { 1311 | "attributes": { 1312 | "NORMAL": 21, 1313 | "POSITION": 20, 1314 | "TANGENT": 22, 1315 | "TEXCOORD_0": 23 1316 | }, 1317 | "indices": 24, 1318 | "material": 0, 1319 | "mode": 4 1320 | } 1321 | ] 1322 | }, 1323 | { 1324 | "primitives": [ 1325 | { 1326 | "attributes": { 1327 | "NORMAL": 26, 1328 | "POSITION": 25, 1329 | "TANGENT": 27, 1330 | "TEXCOORD_0": 28 1331 | }, 1332 | "indices": 29, 1333 | "material": 0, 1334 | "mode": 4 1335 | } 1336 | ] 1337 | }, 1338 | { 1339 | "primitives": [ 1340 | { 1341 | "attributes": { 1342 | "NORMAL": 31, 1343 | "POSITION": 30, 1344 | "TANGENT": 32, 1345 | "TEXCOORD_0": 33 1346 | }, 1347 | "indices": 34, 1348 | "material": 0, 1349 | "mode": 4 1350 | } 1351 | ] 1352 | }, 1353 | { 1354 | "primitives": [ 1355 | { 1356 | "attributes": { 1357 | "NORMAL": 36, 1358 | "POSITION": 35, 1359 | "TANGENT": 37, 1360 | "TEXCOORD_0": 38 1361 | }, 1362 | "indices": 39, 1363 | "material": 0, 1364 | "mode": 4 1365 | } 1366 | ] 1367 | }, 1368 | { 1369 | "primitives": [ 1370 | { 1371 | "attributes": { 1372 | "NORMAL": 41, 1373 | "POSITION": 40, 1374 | "TANGENT": 42, 1375 | "TEXCOORD_0": 43 1376 | }, 1377 | "indices": 44, 1378 | "material": 0, 1379 | "mode": 4 1380 | } 1381 | ] 1382 | }, 1383 | { 1384 | "primitives": [ 1385 | { 1386 | "attributes": { 1387 | "NORMAL": 46, 1388 | "POSITION": 45, 1389 | "TANGENT": 47, 1390 | "TEXCOORD_0": 48 1391 | }, 1392 | "indices": 49, 1393 | "material": 0, 1394 | "mode": 4 1395 | } 1396 | ] 1397 | }, 1398 | { 1399 | "primitives": [ 1400 | { 1401 | "attributes": { 1402 | "NORMAL": 51, 1403 | "POSITION": 50, 1404 | "TANGENT": 52, 1405 | "TEXCOORD_0": 53 1406 | }, 1407 | "indices": 54, 1408 | "material": 0, 1409 | "mode": 4 1410 | } 1411 | ] 1412 | }, 1413 | { 1414 | "primitives": [ 1415 | { 1416 | "attributes": { 1417 | "NORMAL": 56, 1418 | "POSITION": 55, 1419 | "TANGENT": 57, 1420 | "TEXCOORD_0": 58 1421 | }, 1422 | "indices": 59, 1423 | "material": 0, 1424 | "mode": 4 1425 | } 1426 | ] 1427 | }, 1428 | { 1429 | "primitives": [ 1430 | { 1431 | "attributes": { 1432 | "NORMAL": 61, 1433 | "POSITION": 60, 1434 | "TANGENT": 62, 1435 | "TEXCOORD_0": 63 1436 | }, 1437 | "indices": 64, 1438 | "material": 0, 1439 | "mode": 4 1440 | } 1441 | ] 1442 | }, 1443 | { 1444 | "primitives": [ 1445 | { 1446 | "attributes": { 1447 | "NORMAL": 66, 1448 | "POSITION": 65, 1449 | "TANGENT": 67, 1450 | "TEXCOORD_0": 68 1451 | }, 1452 | "indices": 69, 1453 | "material": 0, 1454 | "mode": 4 1455 | } 1456 | ] 1457 | }, 1458 | { 1459 | "primitives": [ 1460 | { 1461 | "attributes": { 1462 | "NORMAL": 71, 1463 | "POSITION": 70, 1464 | "TANGENT": 72, 1465 | "TEXCOORD_0": 73 1466 | }, 1467 | "indices": 74, 1468 | "material": 0, 1469 | "mode": 4 1470 | } 1471 | ] 1472 | }, 1473 | { 1474 | "primitives": [ 1475 | { 1476 | "attributes": { 1477 | "NORMAL": 76, 1478 | "POSITION": 75, 1479 | "TANGENT": 77, 1480 | "TEXCOORD_0": 78 1481 | }, 1482 | "indices": 79, 1483 | "material": 0, 1484 | "mode": 4 1485 | } 1486 | ] 1487 | }, 1488 | { 1489 | "primitives": [ 1490 | { 1491 | "attributes": { 1492 | "NORMAL": 81, 1493 | "POSITION": 80, 1494 | "TANGENT": 82, 1495 | "TEXCOORD_0": 83 1496 | }, 1497 | "indices": 84, 1498 | "material": 0, 1499 | "mode": 4 1500 | } 1501 | ] 1502 | }, 1503 | { 1504 | "primitives": [ 1505 | { 1506 | "attributes": { 1507 | "NORMAL": 86, 1508 | "POSITION": 85, 1509 | "TANGENT": 87, 1510 | "TEXCOORD_0": 88 1511 | }, 1512 | "indices": 89, 1513 | "material": 0, 1514 | "mode": 4 1515 | } 1516 | ] 1517 | }, 1518 | { 1519 | "primitives": [ 1520 | { 1521 | "attributes": { 1522 | "NORMAL": 91, 1523 | "POSITION": 90, 1524 | "TANGENT": 92, 1525 | "TEXCOORD_0": 93 1526 | }, 1527 | "indices": 94, 1528 | "material": 0, 1529 | "mode": 4 1530 | } 1531 | ] 1532 | }, 1533 | { 1534 | "primitives": [ 1535 | { 1536 | "attributes": { 1537 | "NORMAL": 96, 1538 | "POSITION": 95, 1539 | "TANGENT": 97, 1540 | "TEXCOORD_0": 98 1541 | }, 1542 | "indices": 99, 1543 | "material": 0, 1544 | "mode": 4 1545 | } 1546 | ] 1547 | }, 1548 | { 1549 | "primitives": [ 1550 | { 1551 | "attributes": { 1552 | "NORMAL": 101, 1553 | "POSITION": 100, 1554 | "TANGENT": 102, 1555 | "TEXCOORD_0": 103 1556 | }, 1557 | "indices": 104, 1558 | "material": 0, 1559 | "mode": 4 1560 | } 1561 | ] 1562 | }, 1563 | { 1564 | "primitives": [ 1565 | { 1566 | "attributes": { 1567 | "NORMAL": 106, 1568 | "POSITION": 105, 1569 | "TANGENT": 107, 1570 | "TEXCOORD_0": 108 1571 | }, 1572 | "indices": 109, 1573 | "material": 0, 1574 | "mode": 4 1575 | } 1576 | ] 1577 | }, 1578 | { 1579 | "primitives": [ 1580 | { 1581 | "attributes": { 1582 | "NORMAL": 111, 1583 | "POSITION": 110, 1584 | "TANGENT": 112, 1585 | "TEXCOORD_0": 113 1586 | }, 1587 | "indices": 114, 1588 | "material": 0, 1589 | "mode": 4 1590 | } 1591 | ] 1592 | }, 1593 | { 1594 | "primitives": [ 1595 | { 1596 | "attributes": { 1597 | "NORMAL": 116, 1598 | "POSITION": 115, 1599 | "TANGENT": 117, 1600 | "TEXCOORD_0": 118 1601 | }, 1602 | "indices": 119, 1603 | "material": 0, 1604 | "mode": 4 1605 | } 1606 | ] 1607 | }, 1608 | { 1609 | "primitives": [ 1610 | { 1611 | "attributes": { 1612 | "NORMAL": 121, 1613 | "POSITION": 120, 1614 | "TANGENT": 122, 1615 | "TEXCOORD_0": 123 1616 | }, 1617 | "indices": 124, 1618 | "material": 0, 1619 | "mode": 4 1620 | } 1621 | ] 1622 | } 1623 | ], 1624 | "nodes": [ 1625 | { 1626 | "children": [1], 1627 | "name": "RootNode (gltf orientation matrix)", 1628 | "rotation": [-0.70710678118654746, -0, -0, 0.70710678118654757] 1629 | }, 1630 | { 1631 | "children": [2], 1632 | "matrix": [ 1633 | 1, 0, 0, 0, 0, -0.11008495837450027, 0.99392217397689819, 0, 0, 1634 | -0.99392217397689819, -0.11008495837450027, 0, 0, 1635 | -2.9740999707428273e-6, -4.861999968852615e-6, 1 1636 | ], 1637 | "name": "RootNode (model correction matrix)" 1638 | }, 1639 | { 1640 | "children": [ 1641 | 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 1642 | 23, 24, 25, 26, 27 1643 | ], 1644 | "matrix": [ 1645 | 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6.4853568077087402, 1646 | -1.3002099990844727, -8.1399049758911133, 1 1647 | ], 1648 | "name": "model.obj.cleaner.gles" 1649 | }, 1650 | { 1651 | "mesh": 0, 1652 | "name": "" 1653 | }, 1654 | { 1655 | "mesh": 1, 1656 | "name": "" 1657 | }, 1658 | { 1659 | "mesh": 2, 1660 | "name": "" 1661 | }, 1662 | { 1663 | "mesh": 3, 1664 | "name": "" 1665 | }, 1666 | { 1667 | "mesh": 4, 1668 | "name": "" 1669 | }, 1670 | { 1671 | "mesh": 5, 1672 | "name": "" 1673 | }, 1674 | { 1675 | "mesh": 6, 1676 | "name": "" 1677 | }, 1678 | { 1679 | "mesh": 7, 1680 | "name": "" 1681 | }, 1682 | { 1683 | "mesh": 8, 1684 | "name": "" 1685 | }, 1686 | { 1687 | "mesh": 9, 1688 | "name": "" 1689 | }, 1690 | { 1691 | "mesh": 10, 1692 | "name": "" 1693 | }, 1694 | { 1695 | "mesh": 11, 1696 | "name": "" 1697 | }, 1698 | { 1699 | "mesh": 12, 1700 | "name": "" 1701 | }, 1702 | { 1703 | "mesh": 13, 1704 | "name": "" 1705 | }, 1706 | { 1707 | "mesh": 14, 1708 | "name": "" 1709 | }, 1710 | { 1711 | "mesh": 15, 1712 | "name": "" 1713 | }, 1714 | { 1715 | "mesh": 16, 1716 | "name": "" 1717 | }, 1718 | { 1719 | "mesh": 17, 1720 | "name": "" 1721 | }, 1722 | { 1723 | "mesh": 18, 1724 | "name": "" 1725 | }, 1726 | { 1727 | "mesh": 19, 1728 | "name": "" 1729 | }, 1730 | { 1731 | "mesh": 20, 1732 | "name": "" 1733 | }, 1734 | { 1735 | "mesh": 21, 1736 | "name": "" 1737 | }, 1738 | { 1739 | "mesh": 22, 1740 | "name": "" 1741 | }, 1742 | { 1743 | "mesh": 23, 1744 | "name": "" 1745 | }, 1746 | { 1747 | "mesh": 24, 1748 | "name": "" 1749 | } 1750 | ], 1751 | "samplers": [ 1752 | { 1753 | "magFilter": 9729, 1754 | "minFilter": 9987, 1755 | "wrapS": 10497, 1756 | "wrapT": 10497 1757 | } 1758 | ], 1759 | "scene": 0, 1760 | "scenes": [ 1761 | { 1762 | "name": "OSG_Scene", 1763 | "nodes": [0] 1764 | } 1765 | ], 1766 | "textures": [ 1767 | { 1768 | "sampler": 0, 1769 | "source": 0 1770 | } 1771 | ] 1772 | } 1773 | -------------------------------------------------------------------------------- /public/grass1Textures/material_0_baseColor.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/grass1Textures/material_0_baseColor.jpeg -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 17 | 18 | 27 | React App 28 | 29 | 30 | 31 |
32 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /public/license.txt: -------------------------------------------------------------------------------- 1 | Model Information: 2 | * title: Crossing Road Texture 2 3 | * source: https://sketchfab.com/3d-models/crossing-road-texture-2-a9568c687ba843849d15c7de806eb78d 4 | * author: I am Cassia (https://sketchfab.com/iamCassia) 5 | 6 | Model License: 7 | * license type: CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/) 8 | * requirements: Author must be credited. Commercial use is allowed. 9 | 10 | If you use this 3D model in your project be sure to copy paste this credit wherever you share it: 11 | This work is based on "Crossing Road Texture 2" (https://sketchfab.com/3d-models/crossing-road-texture-2-a9568c687ba843849d15c7de806eb78d) by I am Cassia (https://sketchfab.com/iamCassia) licensed under CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/) -------------------------------------------------------------------------------- /public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/logo192.png -------------------------------------------------------------------------------- /public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/logo512.png -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /public/roadCrossing.bin: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:68b4120c398f13a09f8d6b9d5f32bd11e34891ebced0f85828edee5761aa876d 3 | size 189472 4 | -------------------------------------------------------------------------------- /public/roadCrossing.gltf: -------------------------------------------------------------------------------- 1 | { 2 | "accessors": [ 3 | { 4 | "bufferView": 2, 5 | "componentType": 5126, 6 | "count": 101, 7 | "max": [1, 1, 0.40192121267318726], 8 | "min": [-1, -0.77132236957550049, 0], 9 | "type": "VEC3" 10 | }, 11 | { 12 | "bufferView": 2, 13 | "byteOffset": 1212, 14 | "componentType": 5126, 15 | "count": 101, 16 | "max": [1, 1, 1], 17 | "min": [-1, -1, 0], 18 | "type": "VEC3" 19 | }, 20 | { 21 | "bufferView": 1, 22 | "componentType": 5126, 23 | "count": 101, 24 | "max": [1, 1], 25 | "min": [0, 0], 26 | "type": "VEC2" 27 | }, 28 | { 29 | "bufferView": 0, 30 | "componentType": 5125, 31 | "count": 192, 32 | "max": [100], 33 | "min": [0], 34 | "type": "SCALAR" 35 | }, 36 | { 37 | "bufferView": 2, 38 | "byteOffset": 2424, 39 | "componentType": 5126, 40 | "count": 4230, 41 | "max": [0.41626983880996704, 0.16282521188259125, -0.0079677514731884003], 42 | "min": [ 43 | -0.35171854496002197, 0.048092685639858246, -0.083237454295158386 44 | ], 45 | "type": "VEC3" 46 | }, 47 | { 48 | "bufferView": 2, 49 | "byteOffset": 53184, 50 | "componentType": 5126, 51 | "count": 4230, 52 | "max": [1, 1, 1], 53 | "min": [-1, -1, -1], 54 | "type": "VEC3" 55 | }, 56 | { 57 | "bufferView": 1, 58 | "byteOffset": 808, 59 | "componentType": 5126, 60 | "count": 4230, 61 | "max": [1, 1], 62 | "min": [0, 0], 63 | "type": "VEC2" 64 | }, 65 | { 66 | "bufferView": 0, 67 | "byteOffset": 768, 68 | "componentType": 5125, 69 | "count": 12528, 70 | "max": [4229], 71 | "min": [0], 72 | "type": "SCALAR" 73 | } 74 | ], 75 | "asset": { 76 | "extras": { 77 | "author": "I am Cassia (https://sketchfab.com/iamCassia)", 78 | "license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)", 79 | "source": "https://sketchfab.com/3d-models/crossing-road-texture-2-a9568c687ba843849d15c7de806eb78d", 80 | "title": "Crossing Road Texture 2" 81 | }, 82 | "generator": "Sketchfab-10.10.0", 83 | "version": "2.0" 84 | }, 85 | "bufferViews": [ 86 | { 87 | "buffer": 0, 88 | "byteLength": 50880, 89 | "byteOffset": 0, 90 | "name": "floatBufferViews", 91 | "target": 34963 92 | }, 93 | { 94 | "buffer": 0, 95 | "byteLength": 34648, 96 | "byteOffset": 50880, 97 | "byteStride": 8, 98 | "name": "floatBufferViews", 99 | "target": 34962 100 | }, 101 | { 102 | "buffer": 0, 103 | "byteLength": 103944, 104 | "byteOffset": 85528, 105 | "byteStride": 12, 106 | "name": "floatBufferViews", 107 | "target": 34962 108 | } 109 | ], 110 | "buffers": [ 111 | { 112 | "byteLength": 189472, 113 | "uri": "roadCrossing.bin" 114 | } 115 | ], 116 | "images": [ 117 | { 118 | "uri": "roadCrossingTextures/RoadTExtue6_baseColor.jpeg" 119 | } 120 | ], 121 | "materials": [ 122 | { 123 | "doubleSided": true, 124 | "emissiveFactor": [0, 0, 0], 125 | "name": "RoadTExtue6", 126 | "pbrMetallicRoughness": { 127 | "baseColorFactor": [1, 1, 1, 1], 128 | "baseColorTexture": { 129 | "index": 0, 130 | "texCoord": 0 131 | }, 132 | "metallicFactor": 0, 133 | "roughnessFactor": 0.82111456180001685 134 | } 135 | }, 136 | { 137 | "doubleSided": true, 138 | "emissiveFactor": [0, 0, 0], 139 | "name": "Texture", 140 | "pbrMetallicRoughness": { 141 | "baseColorFactor": [ 142 | 0.80000000000000004, 0.80000000000000004, 0.80000000000000004, 1 143 | ], 144 | "metallicFactor": 0, 145 | "roughnessFactor": 0.82111456180001685 146 | } 147 | } 148 | ], 149 | "meshes": [ 150 | { 151 | "name": "Plane_RoadTExtue6_0", 152 | "primitives": [ 153 | { 154 | "attributes": { 155 | "NORMAL": 1, 156 | "POSITION": 0, 157 | "TEXCOORD_0": 2 158 | }, 159 | "indices": 3, 160 | "material": 0, 161 | "mode": 4 162 | } 163 | ] 164 | }, 165 | { 166 | "name": "Plane_Texture_0", 167 | "primitives": [ 168 | { 169 | "attributes": { 170 | "NORMAL": 5, 171 | "POSITION": 4, 172 | "TEXCOORD_0": 6 173 | }, 174 | "indices": 7, 175 | "material": 1, 176 | "mode": 4 177 | } 178 | ] 179 | } 180 | ], 181 | "nodes": [ 182 | { 183 | "children": [1], 184 | "name": "RootNode (gltf orientation matrix)", 185 | "rotation": [-0.70710678118654746, -0, -0, 0.70710678118654757] 186 | }, 187 | { 188 | "children": [2], 189 | "name": "RootNode (model correction matrix)" 190 | }, 191 | { 192 | "children": [3], 193 | "matrix": [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1], 194 | "name": "Crossing Road Texture 2.fbx" 195 | }, 196 | { 197 | "children": [4], 198 | "name": "RootNode" 199 | }, 200 | { 201 | "children": [5, 6], 202 | "matrix": [ 203 | 1674.480224609375, 0, 0, 0, 0, -0.00032717411835504517, 204 | -2008.1804199218484, 0, 0, 99.999999999998678, -1.6292067939183141e-5, 205 | 0, 402.7347412109375, -198.6737060546875, 421.8094482421875, 1 206 | ], 207 | "name": "Plane" 208 | }, 209 | { 210 | "mesh": 0, 211 | "name": "Plane_RoadTExtue6_0" 212 | }, 213 | { 214 | "mesh": 1, 215 | "name": "Plane_Texture_0" 216 | } 217 | ], 218 | "samplers": [ 219 | { 220 | "magFilter": 9729, 221 | "minFilter": 9987, 222 | "wrapS": 10497, 223 | "wrapT": 10497 224 | } 225 | ], 226 | "scene": 0, 227 | "scenes": [ 228 | { 229 | "name": "OSG_Scene", 230 | "nodes": [0] 231 | } 232 | ], 233 | "textures": [ 234 | { 235 | "sampler": 0, 236 | "source": 0 237 | } 238 | ] 239 | } 240 | -------------------------------------------------------------------------------- /public/roadCrossingTextures/RoadTExtue6_baseColor.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/roadCrossingTextures/RoadTExtue6_baseColor.jpeg -------------------------------------------------------------------------------- /public/roadStraight.bin: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e0395f111f2de76b79cbc8dce16d6bfce742738d3f943274e635a77d75655b7c 3 | size 2576 4 | -------------------------------------------------------------------------------- /public/roadStraight.gltf: -------------------------------------------------------------------------------- 1 | { 2 | "accessors": [ 3 | { 4 | "bufferView": 2, 5 | "componentType": 5126, 6 | "count": 64, 7 | "max": [7.062716007232666, 7.062716007232666, 0.45197099447250366], 8 | "min": [-7.062716007232666, -7.062716007232666, -0.097177997231483459], 9 | "type": "VEC3" 10 | }, 11 | { 12 | "bufferView": 2, 13 | "byteOffset": 768, 14 | "componentType": 5126, 15 | "count": 64, 16 | "max": [1, 1, 1], 17 | "min": [-1, -1, -1], 18 | "type": "VEC3" 19 | }, 20 | { 21 | "bufferView": 1, 22 | "componentType": 5126, 23 | "count": 64, 24 | "max": [0.99804699420928955, 1], 25 | "min": [-0.0039059999398887157, -0.0019529999699443579], 26 | "type": "VEC2" 27 | }, 28 | { 29 | "bufferView": 0, 30 | "componentType": 5125, 31 | "count": 132, 32 | "max": [63], 33 | "min": [0], 34 | "type": "SCALAR" 35 | } 36 | ], 37 | "asset": { 38 | "extras": { 39 | "author": "cassiasilveira2004 (https://sketchfab.com/cassiasilveira2004)", 40 | "license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)", 41 | "source": "https://sketchfab.com/3d-models/simple-road-texture1-41b5e535a9f7494a88f0e48819e3b744", 42 | "title": "Simple Road Texture1" 43 | }, 44 | "generator": "Sketchfab-10.3.0", 45 | "version": "2.0" 46 | }, 47 | "bufferViews": [ 48 | { 49 | "buffer": 0, 50 | "byteLength": 528, 51 | "byteOffset": 0, 52 | "name": "floatBufferViews", 53 | "target": 34963 54 | }, 55 | { 56 | "buffer": 0, 57 | "byteLength": 512, 58 | "byteOffset": 528, 59 | "byteStride": 8, 60 | "name": "floatBufferViews", 61 | "target": 34962 62 | }, 63 | { 64 | "buffer": 0, 65 | "byteLength": 1536, 66 | "byteOffset": 1040, 67 | "byteStride": 12, 68 | "name": "floatBufferViews", 69 | "target": 34962 70 | } 71 | ], 72 | "buffers": [ 73 | { 74 | "byteLength": 2576, 75 | "uri": "roadStraight.bin" 76 | } 77 | ], 78 | "images": [ 79 | { 80 | "uri": "roadStraightTextures/Road_Text1_baseColor.jpeg" 81 | } 82 | ], 83 | "materials": [ 84 | { 85 | "doubleSided": true, 86 | "emissiveFactor": [0, 0, 0], 87 | "name": "Road_Text1", 88 | "pbrMetallicRoughness": { 89 | "baseColorFactor": [1, 1, 1, 1], 90 | "baseColorTexture": { 91 | "index": 0, 92 | "texCoord": 0 93 | }, 94 | "metallicFactor": 0, 95 | "roughnessFactor": 0.80635083268962915 96 | } 97 | } 98 | ], 99 | "meshes": [ 100 | { 101 | "primitives": [ 102 | { 103 | "attributes": { 104 | "NORMAL": 1, 105 | "POSITION": 0, 106 | "TEXCOORD_0": 2 107 | }, 108 | "indices": 3, 109 | "material": 0, 110 | "mode": 4 111 | } 112 | ] 113 | } 114 | ], 115 | "nodes": [ 116 | { 117 | "children": [1], 118 | "name": "RootNode (gltf orientation matrix)", 119 | "rotation": [-0.70710678118654746, -0, -0, 0.70710678118654757] 120 | }, 121 | { 122 | "children": [2], 123 | "name": "RootNode (model correction matrix)" 124 | }, 125 | { 126 | "children": [3], 127 | "name": "RuaText1.obj.cleaner.materialmerger.gles" 128 | }, 129 | { 130 | "mesh": 0, 131 | "name": "" 132 | } 133 | ], 134 | "samplers": [ 135 | { 136 | "magFilter": 9729, 137 | "minFilter": 9987, 138 | "wrapS": 10497, 139 | "wrapT": 10497 140 | } 141 | ], 142 | "scene": 0, 143 | "scenes": [ 144 | { 145 | "name": "OSG_Scene", 146 | "nodes": [0] 147 | } 148 | ], 149 | "textures": [ 150 | { 151 | "sampler": 0, 152 | "source": 0 153 | } 154 | ] 155 | } 156 | -------------------------------------------------------------------------------- /public/roadStraightTextures/Road_Text1_baseColor.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/roadStraightTextures/Road_Text1_baseColor.jpeg -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /public/water.bin: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:fecf402653edb08d5e112548dd94bfc76cc282f58d8ce6befa3fac193c88afb3 3 | size 23952 4 | -------------------------------------------------------------------------------- /public/water.gltf: -------------------------------------------------------------------------------- 1 | { 2 | "accessors": [ 3 | { 4 | "bufferView": 2, 5 | "componentType": 5126, 6 | "count": 345, 7 | "max": [5.8300952911376953, 5.8300952911376953, 0.51325780153274536], 8 | "min": [-5.8300952911376953, -5.8300952911376953, -0.5445677638053894], 9 | "type": "VEC3" 10 | }, 11 | { 12 | "bufferView": 2, 13 | "byteOffset": 4140, 14 | "componentType": 5126, 15 | "count": 345, 16 | "max": [0.34647354483604431, 0.29817339777946472, 1], 17 | "min": [-0.22981677949428558, -0.32555502653121948, 0.93033099174499512], 18 | "type": "VEC3" 19 | }, 20 | { 21 | "bufferView": 3, 22 | "componentType": 5126, 23 | "count": 345, 24 | "max": [1, 0.0032057997304946184, 0.22981676459312439, 1], 25 | "min": [ 26 | 0.93710607290267944, -0.0045155170373618603, -0.34904462099075317, 1 27 | ], 28 | "type": "VEC4" 29 | }, 30 | { 31 | "bufferView": 1, 32 | "componentType": 5126, 33 | "count": 345, 34 | "max": [0.99989986419677734, 0.99990004301071167], 35 | "min": [9.9979995866306126e-5, 9.9979995866306126e-5], 36 | "type": "VEC2" 37 | }, 38 | { 39 | "bufferView": 0, 40 | "componentType": 5125, 41 | "count": 1848, 42 | "max": [344], 43 | "min": [0], 44 | "type": "SCALAR" 45 | } 46 | ], 47 | "asset": { 48 | "extras": { 49 | "author": "Gustavo_Gontijo (https://sketchfab.com/Baiano22)", 50 | "license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)", 51 | "source": "https://sketchfab.com/3d-models/water-23a7e330abda46cb8a78e6963997ea5e", 52 | "title": "Water" 53 | }, 54 | "generator": "Sketchfab-7.17.0", 55 | "version": "2.0" 56 | }, 57 | "bufferViews": [ 58 | { 59 | "buffer": 0, 60 | "byteLength": 7392, 61 | "byteOffset": 0, 62 | "name": "floatBufferViews", 63 | "target": 34963 64 | }, 65 | { 66 | "buffer": 0, 67 | "byteLength": 2760, 68 | "byteOffset": 7392, 69 | "byteStride": 8, 70 | "name": "floatBufferViews", 71 | "target": 34962 72 | }, 73 | { 74 | "buffer": 0, 75 | "byteLength": 8280, 76 | "byteOffset": 10152, 77 | "byteStride": 12, 78 | "name": "floatBufferViews", 79 | "target": 34962 80 | }, 81 | { 82 | "buffer": 0, 83 | "byteLength": 5520, 84 | "byteOffset": 18432, 85 | "byteStride": 16, 86 | "name": "floatBufferViews", 87 | "target": 34962 88 | } 89 | ], 90 | "buffers": [ 91 | { 92 | "byteLength": 23952, 93 | "uri": "water.bin" 94 | } 95 | ], 96 | "images": [ 97 | { 98 | "uri": "waterTextures/Scene_-_Root_baseColor.png" 99 | } 100 | ], 101 | "materials": [ 102 | { 103 | "alphaMode": "BLEND", 104 | "doubleSided": true, 105 | "name": "Scene_-_Root", 106 | "pbrMetallicRoughness": { 107 | "baseColorFactor": [1, 1, 1, 1], 108 | "baseColorTexture": { 109 | "index": 0, 110 | "texCoord": 0 111 | }, 112 | "metallicFactor": 0, 113 | "roughnessFactor": 0.59999999999999998 114 | } 115 | } 116 | ], 117 | "meshes": [ 118 | { 119 | "name": "Plane__0", 120 | "primitives": [ 121 | { 122 | "attributes": { 123 | "NORMAL": 1, 124 | "POSITION": 0, 125 | "TANGENT": 2, 126 | "TEXCOORD_0": 3 127 | }, 128 | "indices": 4, 129 | "material": 0, 130 | "mode": 4 131 | } 132 | ] 133 | } 134 | ], 135 | "nodes": [ 136 | { 137 | "children": [1], 138 | "name": "RootNode (gltf orientation matrix)", 139 | "rotation": [-0.70710678118654746, -0, -0, 0.70710678118654757] 140 | }, 141 | { 142 | "children": [2], 143 | "name": "RootNode (model correction matrix)" 144 | }, 145 | { 146 | "children": [3], 147 | "matrix": [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1], 148 | "name": "Water.fbx" 149 | }, 150 | { 151 | "children": [4], 152 | "name": "RootNode" 153 | }, 154 | { 155 | "children": [5], 156 | "matrix": [ 157 | 100, 0, 0, 0, 0, -1.6292067939183141e-5, -99.999999999998678, 0, 0, 158 | 99.999999999998678, -1.6292067939183141e-5, 0, 0, 0, 0, 1 159 | ], 160 | "name": "Plane" 161 | }, 162 | { 163 | "mesh": 0, 164 | "name": "Plane__0" 165 | } 166 | ], 167 | "samplers": [ 168 | { 169 | "magFilter": 9729, 170 | "minFilter": 9987, 171 | "wrapS": 10497, 172 | "wrapT": 10497 173 | } 174 | ], 175 | "scene": 0, 176 | "scenes": [ 177 | { 178 | "name": "OSG_Scene", 179 | "nodes": [0] 180 | } 181 | ], 182 | "textures": [ 183 | { 184 | "sampler": 0, 185 | "source": 0 186 | } 187 | ] 188 | } 189 | -------------------------------------------------------------------------------- /public/waterTextures/Scene_-_Root_baseColor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/public/waterTextures/Scene_-_Root_baseColor.png -------------------------------------------------------------------------------- /src/App.css: -------------------------------------------------------------------------------- 1 | * { 2 | box-sizing: border-box; 3 | } 4 | html, 5 | body, 6 | #root { 7 | width: 100%; 8 | height: 100%; 9 | margin: 0; 10 | padding: 0; 11 | } 12 | body { 13 | background: white; 14 | position: fixed; 15 | } 16 | -------------------------------------------------------------------------------- /src/App.js: -------------------------------------------------------------------------------- 1 | import logo from './logo.svg'; 2 | import './App.css'; 3 | import City from './Components/City'; 4 | 5 | function App() { 6 | return ; 7 | } 8 | 9 | export default App; 10 | -------------------------------------------------------------------------------- /src/App.test.js: -------------------------------------------------------------------------------- 1 | import { render, screen } from '@testing-library/react'; 2 | import App from './App'; 3 | 4 | test('renders learn react link', () => { 5 | render(); 6 | const linkElement = screen.getByText(/learn react/i); 7 | expect(linkElement).toBeInTheDocument(); 8 | }); 9 | -------------------------------------------------------------------------------- /src/Assets/JSXModels/Building1.js: -------------------------------------------------------------------------------- 1 | /* 2 | Auto-generated by: https://github.com/pmndrs/gltfjsx 3 | author: tl0615 (https://sketchfab.com/tl0615) 4 | license: CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/) 5 | source: https://sketchfab.com/3d-models/low-poly-brick-building-a0cc89d6d7d94effaea4f267f02685ef 6 | title: Low Poly Brick Building 7 | */ 8 | 9 | import React, { useRef } from 'react'; 10 | import { useGLTF } from '@react-three/drei'; 11 | 12 | export default React.memo(function Model(props) { 13 | const group = useRef(); 14 | const { nodes, materials } = useGLTF('/building1.gltf'); 15 | return ( 16 | 17 | 22 | 23 | 28 | 34 | 40 | 46 | 52 | 58 | 64 | 70 | 76 | 82 | 88 | 89 | 90 | 91 | 92 | ); 93 | }); 94 | 95 | useGLTF.preload('/building1.gltf'); 96 | -------------------------------------------------------------------------------- /src/Assets/JSXModels/Building2.js: -------------------------------------------------------------------------------- 1 | /* 2 | Auto-generated by: https://github.com/pmndrs/gltfjsx 3 | author: mirniycruxix (https://sketchfab.com/mirniycruxix) 4 | license: CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/) 5 | source: https://sketchfab.com/3d-models/cyberpunk-building-store-b84fdb12522c4e7ca32427b1798f176b 6 | title: Cyberpunk Building - Store 7 | */ 8 | 9 | import React, { useRef } from 'react'; 10 | import { useGLTF } from '@react-three/drei'; 11 | 12 | export default function Model(props) { 13 | const group = useRef(); 14 | const { nodes, materials } = useGLTF('/building2.gltf'); 15 | return ( 16 | 17 | 18 | 19 | 23 | 24 | 28 | 32 | 36 | 37 | 41 | 45 | 49 | 53 | 57 | 61 | 65 | 69 | 73 | 77 | 81 | 85 | 89 | 93 | 97 | 101 | 105 | 109 | 113 | 117 | 121 | 122 | 123 | ); 124 | } 125 | 126 | useGLTF.preload('/building2.gltf'); 127 | -------------------------------------------------------------------------------- /src/Assets/JSXModels/Building3.js: -------------------------------------------------------------------------------- 1 | /* 2 | Auto-generated by: https://github.com/pmndrs/gltfjsx 3 | author: LUX4D (https://sketchfab.com/LUX4D) 4 | license: CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/) 5 | source: https://sketchfab.com/3d-models/schillerplatz-18-mainz-0af5fa67a7c149dbb9e369b94e550756 6 | title: Schillerplatz 18 Mainz 7 | */ 8 | 9 | import React, { useRef } from 'react'; 10 | import { useGLTF } from '@react-three/drei'; 11 | 12 | export default React.memo(function Model(props) { 13 | const group = useRef(); 14 | const { nodes, materials } = useGLTF('/building3.gltf'); 15 | return ( 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 27 | 31 | 32 | 33 | 34 | 35 | ); 36 | }); 37 | 38 | useGLTF.preload('/building3.gltf'); 39 | -------------------------------------------------------------------------------- /src/Assets/JSXModels/Building4.js: -------------------------------------------------------------------------------- 1 | /* 2 | Auto-generated by: https://github.com/pmndrs/gltfjsx 3 | author: bean(alwayshasbean) (https://sketchfab.com/alwayshasbean) 4 | license: CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/) 5 | source: https://sketchfab.com/3d-models/9-storey-residential-building-4407c6bd0d944a9c8ad0b9c08e65a1da 6 | title: 9 storey residential building 7 | */ 8 | 9 | import React, { useRef } from 'react' 10 | import { useGLTF } from '@react-three/drei' 11 | 12 | export default function Model(props) { 13 | const group = useRef() 14 | const { nodes, materials } = useGLTF('/building4.gltf') 15 | return ( 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | ) 26 | } 27 | 28 | useGLTF.preload('/building4.gltf') 29 | -------------------------------------------------------------------------------- /src/Assets/JSXModels/Building6.js: -------------------------------------------------------------------------------- 1 | /* 2 | Auto-generated by: https://github.com/pmndrs/gltfjsx 3 | author: Solarliu (https://sketchfab.com/jacky15621419) 4 | license: CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/) 5 | source: https://sketchfab.com/3d-models/asia-building-a3f45195b01f48ff9f687d3ceac52b82 6 | title: Asia Building 7 | */ 8 | 9 | import React, { useRef } from 'react'; 10 | import { useGLTF } from '@react-three/drei'; 11 | 12 | export default function Model(props) { 13 | const group = useRef(); 14 | const { nodes, materials } = useGLTF('/building6.gltf'); 15 | return ( 16 | 17 | 18 | 19 | 20 | 21 | 22 | 26 | 30 | 31 | 32 | 36 | 40 | 41 | 42 | 46 | 50 | 51 | 55 | 56 | 60 | 61 | 62 | 66 | 67 | 68 | 72 | 73 | 74 | 78 | 79 | 80 | 84 | 85 | 86 | 90 | 91 | 92 | 96 | 97 | 98 | 102 | 103 | 104 | 108 | 109 | 110 | 114 | 115 | 116 | 120 | 121 | 122 | 126 | 127 | 128 | 132 | 133 | 134 | 138 | 139 | 140 | 144 | 145 | 146 | 147 | 148 | 152 | 153 | 154 | 158 | 159 | 160 | 164 | 165 | 166 | 170 | 171 | 172 | 176 | 177 | 178 | 182 | 183 | 184 | 188 | 189 | 190 | 194 | 195 | 196 | 200 | 201 | 202 | 206 | 207 | 208 | 212 | 213 | 214 | 218 | 219 | 220 | 224 | 225 | 226 | 230 | 231 | 232 | 236 | 237 | 238 | 239 | 243 | 247 | 251 | 255 | 259 | 263 | 267 | 271 | 275 | 279 | 283 | 287 | 291 | 292 | 296 | 300 | 304 | 308 | 309 | 310 | 311 | 312 | ); 313 | } 314 | 315 | useGLTF.preload('/building6.gltf'); 316 | -------------------------------------------------------------------------------- /src/Assets/JSXModels/Grass1.js: -------------------------------------------------------------------------------- 1 | /* 2 | Auto-generated by: https://github.com/pmndrs/gltfjsx 3 | author: Krzysztof Lewicki (https://sketchfab.com/slavgamedev) 4 | license: CC-BY-NC-ND-4.0 (http://creativecommons.org/licenses/by-nc-nd/4.0/) 5 | source: https://sketchfab.com/models/0ee6380fa4384b7fa7655a53865a9079 6 | title: Grass 1 7 | */ 8 | 9 | import React, { useRef } from 'react'; 10 | import { useGLTF } from '@react-three/drei'; 11 | 12 | export default function Model(props) { 13 | const group = useRef(); 14 | const { nodes, materials } = useGLTF('/grass1.gltf'); 15 | return ( 16 | 17 | 18 | 19 | 20 | 24 | 28 | 32 | 36 | 40 | 44 | 48 | 52 | 56 | 60 | 64 | 68 | 72 | 76 | 80 | 84 | 88 | 92 | 96 | 100 | 104 | 108 | 112 | 116 | 120 | 121 | 122 | 123 | 124 | ); 125 | } 126 | 127 | useGLTF.preload('/grass1.gltf'); 128 | -------------------------------------------------------------------------------- /src/Assets/JSXModels/RoadCrossing.js: -------------------------------------------------------------------------------- 1 | /* 2 | Auto-generated by: https://github.com/pmndrs/gltfjsx 3 | author: I am Cassia (https://sketchfab.com/iamCassia) 4 | license: CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/) 5 | source: https://sketchfab.com/3d-models/crossing-road-texture-2-a9568c687ba843849d15c7de806eb78d 6 | title: Crossing Road Texture 2 7 | */ 8 | 9 | import React, { useRef } from 'react'; 10 | import { useGLTF } from '@react-three/drei'; 11 | 12 | export default React.memo(function Model(props) { 13 | const group = useRef(); 14 | const { nodes, materials } = useGLTF('/roadCrossing.gltf'); 15 | return ( 16 | 17 | 18 | 19 | 24 | 28 | 32 | 33 | 34 | 35 | 36 | ); 37 | }); 38 | 39 | useGLTF.preload('/roadCrossing.gltf'); 40 | -------------------------------------------------------------------------------- /src/Assets/JSXModels/RoadStraight.js: -------------------------------------------------------------------------------- 1 | /* 2 | Auto-generated by: https://github.com/pmndrs/gltfjsx 3 | author: cassiasilveira2004 (https://sketchfab.com/cassiasilveira2004) 4 | license: CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/) 5 | source: https://sketchfab.com/3d-models/simple-road-texture1-41b5e535a9f7494a88f0e48819e3b744 6 | title: Simple Road Texture1 7 | */ 8 | 9 | import React, { useRef } from 'react'; 10 | import { useGLTF } from '@react-three/drei'; 11 | 12 | export default React.memo(function Model(props) { 13 | const group = useRef(); 14 | const { nodes, materials } = useGLTF('/roadStraight.gltf'); 15 | return ( 16 | 17 | 18 | 22 | 23 | 24 | ); 25 | }); 26 | 27 | useGLTF.preload('/roadStraight.gltf'); 28 | -------------------------------------------------------------------------------- /src/Assets/JSXModels/Water.js: -------------------------------------------------------------------------------- 1 | /* 2 | Auto-generated by: https://github.com/pmndrs/gltfjsx 3 | author: Gustavo_Gontijo (https://sketchfab.com/Baiano22) 4 | license: CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/) 5 | source: https://sketchfab.com/3d-models/water-23a7e330abda46cb8a78e6963997ea5e 6 | title: Water 7 | */ 8 | 9 | import React, { useRef } from 'react'; 10 | import { useGLTF } from '@react-three/drei'; 11 | 12 | export default function Model(props) { 13 | const group = useRef(); 14 | const { nodes, materials } = useGLTF('/water.gltf'); 15 | return ( 16 | 17 | 18 | 19 | 20 | 24 | 25 | 26 | 27 | 28 | ); 29 | } 30 | 31 | useGLTF.preload('/water.gltf'); 32 | -------------------------------------------------------------------------------- /src/Assets/Textures/road_texture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/src/Assets/Textures/road_texture.jpg -------------------------------------------------------------------------------- /src/Components/City/City.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Excalibur79/ThreeJS-City-Generator/93068f94a564dc6b4d7319b7ecb02b186e2677f7/src/Components/City/City.scss -------------------------------------------------------------------------------- /src/Components/City/index.jsx: -------------------------------------------------------------------------------- 1 | import React, { Suspense, useState, useEffect } from 'react'; 2 | import * as THREE from 'three'; 3 | //import ss from "../../Assets/Models/Building_1/low_poly_brick_building/scene.gltf" 4 | import { Canvas, useFrame, useLoader } from '@react-three/fiber'; 5 | import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader'; 6 | import { TextureLoader } from 'three/src/loaders/TextureLoader'; 7 | import roadTexture from '../../Assets/Textures/road_texture.jpg'; 8 | import { 9 | OrbitControls, 10 | MeshWobbleMaterial, 11 | meshStandardMaterial, 12 | } from '@react-three/drei'; 13 | import Building1JSX from '../../Assets/JSXModels/Building1'; 14 | import Building2JSX from '../../Assets/JSXModels/Building2'; 15 | import Building3JSX from '../../Assets/JSXModels/Building3'; 16 | import Building4JSX from '../../Assets/JSXModels/Building4'; 17 | import Building6JSX from '../../Assets/JSXModels/Building6'; 18 | import waterJSX from '../../Assets/JSXModels/Water'; 19 | import Grass1JSX from '../../Assets/JSXModels/Grass1'; 20 | import RoadStraight from '../../Assets/JSXModels/RoadStraight'; 21 | import RoadCrossing from '../../Assets/JSXModels/RoadCrossing'; 22 | import { PerlinNoise } from '../../utility/functions'; 23 | 24 | //import bb from '../../Assets/Models/Building_1/low_poly_brick_building/scene.gltf'; 25 | //import b from ''; 26 | 27 | const Light = () => { 28 | return ( 29 | <> 30 | 31 | 32 | 33 | 34 | 35 | 36 | ); 37 | }; 38 | 39 | // const Building = () => { 40 | // // const gltf = new GLTFLoader(); 41 | // // gltf.load('/building1.gltf'); 42 | // console.log('gltf', '/building1.gltf'); 43 | // return ; 44 | // }; 45 | 46 | const City = () => { 47 | // const [roadTextureMap] = useLoader(TextureLoader, [roadTexture]); 48 | const roadTextureMap = new THREE.TextureLoader().load(roadTexture); 49 | const [cityMatrix, setCityMatrix] = useState([]); 50 | const side = 80; 51 | 52 | useEffect(() => { 53 | generateCity(80); 54 | }, []); 55 | 56 | const generateCity = (side) => { 57 | let matrix = []; 58 | let data = []; 59 | for (let i = 0; i < side; i++) { 60 | data = []; 61 | for (let j = 0; j < side; j++) { 62 | let perlinValue = Math.round( 63 | PerlinNoise.noise(i / 10.012, j / 10.021, 0.8) * 10 64 | ); 65 | data.push(perlinValue); 66 | } 67 | matrix.push(data); 68 | } 69 | //horizontal roads 70 | let randomRow = 0; 71 | for (let i = 0; i < 50; i++) { 72 | for (let j = 0; j < side; j++) { 73 | matrix[randomRow][j] = -1; 74 | } 75 | randomRow += Math.floor(Math.random() * 6 + 2); 76 | if (randomRow > side - 1) break; 77 | } 78 | //vertical roads 79 | let randomColumn = 0; 80 | for (let i = 0; i < 50; i++) { 81 | for (let j = 0; j < side; j++) { 82 | if (matrix[j][randomColumn] == -1) matrix[j][randomColumn] = -3; 83 | else matrix[j][randomColumn] = -2; 84 | } 85 | randomColumn += Math.floor(Math.random() * 6 + 2); 86 | if (randomColumn > side - 1) break; 87 | } 88 | setCityMatrix(matrix); 89 | }; 90 | const getModel = (value, rowIndex, columnIndex) => { 91 | console.log('called'); 92 | 93 | if (value === -2) 94 | return ( 95 | 96 | 101 | 102 | ); 103 | if (value === -1) 104 | return ( 105 | 106 | 110 | 111 | ); 112 | if (value === -3) 113 | return ( 114 | 115 | 120 | 121 | ); 122 | if (value < 4) 123 | return ( 124 | 125 | 130 | 131 | ); 132 | if (value < 5) 133 | return ( 134 | 135 | 139 | 140 | ); 141 | if (value < 7) 142 | return ( 143 | 144 | 148 | 149 | ); 150 | if (value < 8) 151 | return ( 152 | 153 | 158 | 159 | ); 160 | if (value < 10) 161 | return ( 162 | 163 | 168 | 169 | ); 170 | }; 171 | return ( 172 | <> 173 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 191 | 192 | 193 | {/* {} */} 194 | 195 | 196 | 197 | {/* {Array(side) 198 | .fill(5) 199 | .map((x, index) => { 200 | return ( 201 | 202 | 207 | 208 | ); 209 | })} */} 210 | 211 | {cityMatrix.length > 0 && 212 | cityMatrix.map((rowData, rowIndex) => { 213 | return rowData.map((columnData, columnIndex) => { 214 | let x = getModel(columnData, rowIndex, columnIndex); 215 | return x; 216 | }); 217 | })} 218 | 219 | 220 | {/* 221 | 222 | */} 223 | 224 | {/* 225 | 226 | 227 | 228 | */} 229 | 230 | 231 | ); 232 | }; 233 | export default City; 234 | -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 4 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 5 | sans-serif; 6 | -webkit-font-smoothing: antialiased; 7 | -moz-osx-font-smoothing: grayscale; 8 | } 9 | 10 | code { 11 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', 12 | monospace; 13 | } 14 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import './index.css'; 4 | import App from './App'; 5 | import reportWebVitals from './reportWebVitals'; 6 | 7 | ReactDOM.render( 8 | 9 | 10 | , 11 | document.getElementById('root') 12 | ); 13 | 14 | // If you want to start measuring performance in your app, pass a function 15 | // to log results (for example: reportWebVitals(console.log)) 16 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals 17 | reportWebVitals(); 18 | -------------------------------------------------------------------------------- /src/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/reportWebVitals.js: -------------------------------------------------------------------------------- 1 | const reportWebVitals = onPerfEntry => { 2 | if (onPerfEntry && onPerfEntry instanceof Function) { 3 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { 4 | getCLS(onPerfEntry); 5 | getFID(onPerfEntry); 6 | getFCP(onPerfEntry); 7 | getLCP(onPerfEntry); 8 | getTTFB(onPerfEntry); 9 | }); 10 | } 11 | }; 12 | 13 | export default reportWebVitals; 14 | -------------------------------------------------------------------------------- /src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /src/utility/functions.js: -------------------------------------------------------------------------------- 1 | export const PerlinNoise = new (function () { 2 | this.noise = function (x, y, z) { 3 | var p = new Array(512); 4 | var permutation = [ 5 | 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 6 | 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10, 23, 190, 6, 148, 247, 7 | 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 8 | 33, 88, 237, 149, 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 9 | 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211, 10 | 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 11 | 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208, 89, 18, 169, 200, 196, 12 | 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 13 | 226, 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 14 | 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, 170, 213, 119, 248, 15 | 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 16 | 39, 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 17 | 246, 97, 228, 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 18 | 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 19 | 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205, 93, 20 | 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180, 21 | ]; 22 | for (var i = 0; i < 256; i++) p[256 + i] = p[i] = permutation[i]; 23 | 24 | var X = Math.floor(x) & 255, // FIND UNIT CUBE THAT 25 | Y = Math.floor(y) & 255, // CONTAINS POINT. 26 | Z = Math.floor(z) & 255; 27 | x -= Math.floor(x); // FIND RELATIVE X,Y,Z 28 | y -= Math.floor(y); // OF POINT IN CUBE. 29 | z -= Math.floor(z); 30 | var u = fade(x), // COMPUTE FADE CURVES 31 | v = fade(y), // FOR EACH OF X,Y,Z. 32 | w = fade(z); 33 | var A = p[X] + Y, 34 | AA = p[A] + Z, 35 | AB = p[A + 1] + Z, // HASH COORDINATES OF 36 | B = p[X + 1] + Y, 37 | BA = p[B] + Z, 38 | BB = p[B + 1] + Z; // THE 8 CUBE CORNERS, 39 | 40 | return scale( 41 | lerp( 42 | w, 43 | lerp( 44 | v, 45 | lerp( 46 | u, 47 | grad(p[AA], x, y, z), // AND ADD 48 | grad(p[BA], x - 1, y, z) 49 | ), // BLENDED 50 | lerp( 51 | u, 52 | grad(p[AB], x, y - 1, z), // RESULTS 53 | grad(p[BB], x - 1, y - 1, z) 54 | ) 55 | ), // FROM 8 56 | lerp( 57 | v, 58 | lerp( 59 | u, 60 | grad(p[AA + 1], x, y, z - 1), // CORNERS 61 | grad(p[BA + 1], x - 1, y, z - 1) 62 | ), // OF CUBE 63 | lerp( 64 | u, 65 | grad(p[AB + 1], x, y - 1, z - 1), 66 | grad(p[BB + 1], x - 1, y - 1, z - 1) 67 | ) 68 | ) 69 | ) 70 | ); 71 | }; 72 | function fade(t) { 73 | return t * t * t * (t * (t * 6 - 15) + 10); 74 | } 75 | function lerp(t, a, b) { 76 | return a + t * (b - a); 77 | } 78 | function grad(hash, x, y, z) { 79 | var h = hash & 15; // CONVERT LO 4 BITS OF HASH CODE 80 | var u = h < 8 ? x : y, // INTO 12 GRADIENT DIRECTIONS. 81 | v = h < 4 ? y : h == 12 || h == 14 ? x : z; 82 | return ((h & 1) == 0 ? u : -u) + ((h & 2) == 0 ? v : -v); 83 | } 84 | function scale(n) { 85 | return (1 + n) / 2; 86 | } 87 | })(); 88 | 89 | var size = 100; 90 | var x = 10; 91 | var y = 10; 92 | var n = PerlinNoise.noise(size * x, size * y, 0.8); 93 | console.log(n); 94 | --------------------------------------------------------------------------------