├── .gitattributes ├── .gitignore ├── LICENSE.md ├── README.md ├── addons └── scatterbox │ ├── Examples │ ├── deadTree.obj │ ├── deadTree.obj.import │ ├── deadTree_dead_tree_tex.png │ ├── deadTree_dead_tree_tex.png.import │ ├── dead_tree_tex.png │ ├── dead_tree_tex.png.import │ ├── exampleScene.tscn │ ├── pineTree_bark.png │ ├── pineTree_bark.png.import │ ├── pineTree_leaves.png │ ├── pineTree_leaves.png.import │ ├── testTree.tscn │ ├── testTree2.tscn │ ├── tree1.obj │ └── tree1.obj.import │ ├── plugin.cfg │ ├── scatterBox.gd │ ├── scatterMesh3D.gd │ ├── scatterScene3D.gd │ ├── scatterbox3D.aseprite │ ├── scatterbox3D.png │ ├── scatterbox3D.png.import │ └── scatterboxPlugin.gd ├── assets ├── plugin1.gif └── plugin2.gif └── project.godot /.gitattributes: -------------------------------------------------------------------------------- 1 | # Normalize EOL for all files that Git considers text files. 2 | * text=auto eol=lf 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Godot 4+ specific ignores 2 | .godot/ 3 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 The_Vecter 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SCATTERBOX 2 | 3 | --- 4 | 5 | This plugin attempts to make level design easier, making it easy to place objects/props such as 6 | trees, rocks, etc on terrain easily. 7 | It also allows you to make the props have a random rotation and scale, as well as selecting a 8 | random prop for a pool of props. 9 | 10 | Do note that the scatterMesh node requires adding a material to each mesh, and does not 11 | support multiple materials per mesh. It also requires pressing the refresh button upon changing 12 | the mesh settings. 13 | 14 | --- 15 | 16 | # How to install? 17 | 18 | Copy the contents of the addon folder into your own project's addon folder. 19 | (Or download it from the asset library if I have put it on there) 20 | 21 | --- 22 | 23 | # Features 24 | 25 | - Paint meshes onto terrain 26 | - Paint custom scenes onto terrain 27 | - these can include collisions or custom code. 28 | - Random rotations and scales to make each object slightly different 29 | - Erase functionality 30 | - Press E to quickly toggle between drawing and erasing 31 | - Automatically rotates the meshes to align with the terrain normals 32 | - Scale the draw box with the scroll wheel 33 | 34 | --- 35 | 36 | # Examples 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /addons/scatterbox/Examples/deadTree.obj: -------------------------------------------------------------------------------- 1 | # Blender v2.91.0 OBJ File: 'deadTree.blend' 2 | # www.blender.org 3 | mtllib deadTree.mtl 4 | o Cylinder 5 | v 0.047618 0.894881 -0.135478 6 | v 0.158014 0.050132 -0.226824 7 | v 0.107774 0.853871 -0.133342 8 | v 0.209400 0.050137 -0.166675 9 | v 0.155678 0.843758 -0.095016 10 | v 0.190088 0.050137 -0.069418 11 | v 0.160517 0.872636 -0.021867 12 | v 0.091689 0.050134 -0.036229 13 | v 0.068025 0.950373 0.046080 14 | v 0.040683 0.050134 -0.066018 15 | v 0.009424 0.050126 -0.136275 16 | v -0.000772 0.845378 0.001955 17 | v 0.057683 0.050137 -0.227916 18 | v -0.012243 0.882311 -0.092265 19 | v -0.058875 1.936764 0.005907 20 | v 0.016775 1.778084 0.019303 21 | v -0.007049 2.016592 0.097774 22 | v -0.132436 1.985762 0.094326 23 | v -0.104440 2.495130 0.066718 24 | v -0.058006 2.469356 0.095429 25 | v -0.058518 2.290397 0.156559 26 | v -0.128414 2.230376 0.153145 27 | v -0.140277 2.136721 0.069719 28 | v -0.172681 3.171305 0.117484 29 | v -0.125739 3.189363 0.134069 30 | v -0.113371 3.173908 0.175034 31 | v -0.089427 2.355050 0.172199 32 | v -0.215937 3.285626 0.175116 33 | v -0.205316 3.786201 0.200493 34 | v -0.190705 3.787237 0.231596 35 | v -0.219552 3.785172 0.245589 36 | v -0.234154 3.784020 0.209749 37 | v 0.090837 1.111048 -0.014770 38 | v -0.084445 1.508673 0.014413 39 | v 0.257836 1.201418 0.000000 40 | v 0.076638 1.126013 0.000000 41 | v 0.239379 1.222286 0.011858 42 | v 0.095872 1.105740 0.012060 43 | v 0.239807 1.213980 -0.014688 44 | v 0.369386 1.392750 0.000000 45 | v -0.068826 1.528399 0.011560 46 | v -0.144005 1.527152 -0.121291 47 | v -0.127265 1.552013 -0.116616 48 | v -0.061856 1.501403 -0.000200 49 | v -0.149702 1.544659 -0.102220 50 | v -0.200104 1.659981 -0.223156 51 | v -0.133364 2.946999 0.174756 52 | v -0.200059 2.938504 0.260057 53 | v -0.157899 2.942990 0.170042 54 | v -0.142777 2.919733 0.180125 55 | v -0.188279 2.966077 0.257778 56 | v -0.232310 3.019089 0.454809 57 | v 0.092474 1.963507 0.296974 58 | v 0.180516 2.033585 0.477294 59 | v 0.072119 1.971232 0.303577 60 | v 0.156364 2.046297 0.481296 61 | v 0.064594 1.950469 0.306609 62 | v 0.182213 2.057677 0.469221 63 | v 0.087587 1.945578 0.309758 64 | v 0.316785 2.236120 0.658749 65 | v 0.002333 1.898921 0.052828 66 | v -0.025035 1.911114 0.060180 67 | v -0.032708 1.883197 0.070834 68 | v -0.005330 1.871011 0.063507 69 | v 0.024505 0.882861 -0.024662 70 | v -0.113845 0.937005 0.023799 71 | v 0.027488 0.899415 -0.043656 72 | v -0.104738 0.959683 0.005922 73 | v 0.012028 0.873510 -0.047690 74 | v -0.094015 0.953052 0.030720 75 | v -0.199337 1.099508 0.099709 76 | v -0.150930 3.190156 0.150097 77 | v -0.111522 3.170818 0.040216 78 | v -0.130480 3.175275 0.150866 79 | v -0.155553 3.162241 0.142339 80 | v -0.109222 3.200367 0.045293 81 | v -0.064292 3.302624 -0.138861 82 | vt 0.167894 0.213404 83 | vt 0.162851 0.001817 84 | vt 0.178723 0.000000 85 | vt 0.149463 0.223232 86 | vt 0.137187 0.004752 87 | vt 0.022896 0.756589 88 | vt 0.035119 0.995467 89 | vt 0.009062 0.997487 90 | vt 0.094446 0.004729 91 | vt 0.099734 0.216654 92 | vt 0.112994 0.002674 93 | vt 0.125687 0.223651 94 | vt 0.137187 0.000000 95 | vt 0.028884 0.399139 96 | vt 0.035742 0.381383 97 | vt 0.075916 0.771008 98 | vt 0.077938 0.492844 99 | vt 0.061039 0.783361 100 | vt 0.152419 0.528715 101 | vt 0.145170 0.602742 102 | vt 0.048626 0.413597 103 | vt 0.108665 0.520406 104 | vt 0.094446 0.437930 105 | vt 0.075979 0.344059 106 | vt 0.125312 0.865922 107 | vt 0.119571 0.559540 108 | vt 0.077061 0.163555 109 | vt 0.064195 0.159958 110 | vt 0.040828 0.000000 111 | vt 0.178237 0.839287 112 | vt 0.178723 0.998788 113 | vt 0.170547 1.000000 114 | vt 0.130729 0.998506 115 | vt 0.137187 0.834058 116 | vt 0.224093 0.057420 117 | vt 0.236011 0.000000 118 | vt 0.218401 0.056127 119 | vt 0.271111 0.047642 120 | vt 0.264130 0.090211 121 | vt 0.271111 0.092171 122 | vt 0.200353 0.238414 123 | vt 0.192735 0.271258 124 | vt 0.193634 0.238389 125 | vt 0.225800 0.056018 126 | vt 0.228590 0.105041 127 | vt 0.185867 0.277254 128 | vt 0.185867 0.238389 129 | vt 0.178723 0.238545 130 | vt 0.224934 0.148188 131 | vt 0.235945 0.105191 132 | vt 0.218401 0.146043 133 | vt 0.230533 0.105080 134 | vt 0.236011 0.105191 135 | vt 0.264130 0.002776 136 | vt 0.270976 0.047642 137 | vt 0.270976 0.000000 138 | vt 0.207018 0.276687 139 | vt 0.207018 0.238389 140 | vt 0.200353 0.272334 141 | vt 0.231745 0.179884 142 | vt 0.235945 0.176661 143 | vt 0.242954 0.265803 144 | vt 0.237051 0.263592 145 | vt 0.242954 0.259120 146 | vt 0.242954 0.225346 147 | vt 0.237090 0.259120 148 | vt 0.235945 0.224340 149 | vt 0.256806 0.076735 150 | vt 0.256806 0.000000 151 | vt 0.248920 0.051835 152 | vt 0.256806 0.022790 153 | vt 0.264130 0.078290 154 | vt 0.264038 0.024096 155 | vt 0.264130 0.000000 156 | vt 0.251707 0.053380 157 | vt 0.242954 0.252380 158 | vt 0.250033 0.187931 159 | vt 0.250033 0.253942 160 | vt 0.185357 0.118270 161 | vt 0.202293 0.185305 162 | vt 0.178723 0.117032 163 | vt 0.209864 0.061145 164 | vt 0.209782 0.112732 165 | vt 0.204175 0.113665 166 | vt 0.202293 0.061461 167 | vt 0.218401 0.000000 168 | vt 0.261220 0.222663 169 | vt 0.256664 0.171625 170 | vt 0.251167 0.170706 171 | vt 0.043271 0.782980 172 | vt 0.048626 0.994419 173 | vt 0.048626 0.787236 174 | vt 0.067917 0.997144 175 | vt 0.000000 0.779074 176 | vt 0.094446 0.994626 177 | vt 0.092060 0.772830 178 | vt 0.178723 0.207113 179 | vt 0.186555 0.233484 180 | vt 0.212749 0.238389 181 | vt 0.229248 0.225378 182 | vt 0.229248 0.199041 183 | vt 0.205330 0.185305 184 | vt 0.190501 0.190427 185 | vt 0.165927 0.463408 186 | vt 0.100283 0.586701 187 | vt 0.061916 0.536700 188 | vt 0.064348 0.352039 189 | vt 0.121301 0.999858 190 | vt 0.166703 0.648122 191 | vt 0.033146 0.000046 192 | vt 0.166961 0.836445 193 | vt 0.244509 0.094338 194 | vt 0.236011 0.093787 195 | vt 0.236488 0.084672 196 | vt 0.244509 0.084059 197 | vt 0.185749 0.066131 198 | vt 0.179936 0.066782 199 | vt 0.070265 0.000147 200 | vt 0.077945 0.000000 201 | vt 0.269184 0.227621 202 | vt 0.276196 0.226875 203 | vt 0.276196 0.270389 204 | vt 0.248966 0.267510 205 | vt 0.244964 0.261448 206 | vt 0.243381 0.267510 207 | vt 0.242954 0.187931 208 | vt 0.200353 0.273031 209 | vt 0.257471 0.000993 210 | vt 0.263524 0.080410 211 | vt 0.263524 0.104429 212 | vt 0.256575 0.101942 213 | vt 0.230133 0.262935 214 | vt 0.235945 0.266068 215 | vt 0.235945 0.258407 216 | vt 0.276859 0.105191 217 | vt 0.276859 0.131629 218 | vt 0.270733 0.129079 219 | vt 0.266448 0.155896 220 | vt 0.270733 0.105191 221 | vt 0.264445 0.106850 222 | vt 0.261220 0.159161 223 | vt 0.261220 0.105191 224 | vt 0.253295 0.105619 225 | vt 0.243614 0.095491 226 | vt 0.236011 0.094338 227 | vt 0.236014 0.102296 228 | vt 0.243614 0.103451 229 | vt 0.211049 0.182932 230 | vt 0.218401 0.181317 231 | vt 0.194436 0.000000 232 | vt 0.202293 0.001126 233 | vt 0.270733 0.225671 234 | vt 0.263302 0.226875 235 | vt 0.242671 0.140777 236 | vt 0.251167 0.187931 237 | vt 0.235945 0.141597 238 | vt 0.192735 0.238389 239 | vt 0.185867 0.276219 240 | vt 0.192735 0.277325 241 | vt 0.269184 0.265471 242 | vt 0.261220 0.227758 243 | vt 0.262700 0.265174 244 | vt 0.258018 0.270301 245 | vt 0.258018 0.222663 246 | vt 0.251167 0.266854 247 | vt 0.213535 0.267639 248 | vt 0.207018 0.244803 249 | vt 0.213535 0.243283 250 | vt 0.257880 0.265662 251 | vt 0.251167 0.105191 252 | vt 0.229248 0.275897 253 | vt 0.222081 0.275542 254 | vt 0.229248 0.238389 255 | vt 0.208581 0.238389 256 | vt 0.269184 0.226875 257 | vt 0.244840 0.083379 258 | vt 0.248920 0.000000 259 | vt 0.236011 0.057630 260 | vt 0.243738 0.055707 261 | vt 0.248920 0.084059 262 | vt 0.232197 0.230091 263 | vt 0.235945 0.179884 264 | vt 0.235945 0.258407 265 | vt 0.222081 0.238389 266 | vt 0.215069 0.267370 267 | vt 0.222081 0.267927 268 | vt 0.256575 0.104429 269 | vt 0.256575 0.076735 270 | vt 0.248920 0.077529 271 | vt 0.248966 0.261448 272 | vt 0.242954 0.258452 273 | vt 0.248966 0.253942 274 | vt 0.275855 0.131629 275 | vt 0.275855 0.161589 276 | vt 0.270733 0.159770 277 | vn 0.7557 0.1095 -0.6457 278 | vn 0.9806 0.0240 0.1947 279 | vn 0.3186 -0.0780 0.9447 280 | vn -0.9106 -0.0821 0.4051 281 | vn -0.8848 0.0016 -0.4660 282 | vn 0.3835 -0.0399 0.9227 283 | vn 0.1348 0.1468 -0.9799 284 | vn 0.9311 0.0997 0.3509 285 | vn -0.1460 -0.1047 0.9837 286 | vn -0.9900 -0.1203 0.0734 287 | vn -0.5419 0.0472 -0.8391 288 | vn -0.9967 -0.0606 -0.0544 289 | vn -0.3834 0.0306 -0.9231 290 | vn 0.2966 0.1012 -0.9496 291 | vn -0.2432 -0.0718 0.9673 292 | vn 0.8904 0.1659 -0.4238 293 | vn -0.7860 0.0142 -0.6181 294 | vn 0.4812 -0.2805 -0.8305 295 | vn 0.4775 -0.8406 -0.2559 296 | vn 0.7256 -0.3808 -0.5732 297 | vn 0.2478 -0.3036 0.9200 298 | vn -0.3042 -0.9526 0.0038 299 | vn 0.3533 -0.2060 0.9125 300 | vn -0.9330 -0.3567 0.0487 301 | vn -0.3333 0.4830 -0.8097 302 | vn -0.7862 0.5860 -0.1960 303 | vn 0.6292 -0.2879 -0.7219 304 | vn -0.6272 0.5729 0.5277 305 | vn 0.4685 -0.2484 0.8478 306 | vn 0.1675 0.7474 0.6429 307 | vn 0.2822 -0.8691 0.4063 308 | vn -0.8875 0.3549 -0.2938 309 | vn -0.8595 0.3353 -0.3858 310 | vn 0.6698 0.7408 -0.0496 311 | vn -0.1783 -0.5873 0.7895 312 | vn 0.8790 -0.2060 -0.4301 313 | vn 0.1443 0.8347 -0.5315 314 | vn -0.5130 0.7762 -0.3666 315 | vn -0.8920 0.3627 0.2697 316 | vn -0.4604 -0.0959 0.8825 317 | vn 0.6359 0.1283 -0.7610 318 | vn 0.9925 0.0758 -0.0956 319 | vn 0.5773 -0.0264 0.8161 320 | vn 0.0490 0.1137 -0.9923 321 | vn -0.9936 -0.0316 0.1086 322 | vn -0.5945 0.0805 -0.8001 323 | vn 0.0000 -1.0000 0.0000 324 | vn 0.9731 0.1619 -0.1637 325 | vn -0.9826 -0.0785 -0.1686 326 | vn -0.7630 -0.1392 0.6312 327 | vn 0.5865 0.1879 -0.7879 328 | vn -0.5579 0.0524 -0.8282 329 | vn 0.5857 -0.0115 0.8104 330 | vn -0.3808 -0.1349 0.9148 331 | vn 0.5076 0.1420 -0.8498 332 | vn -0.8747 -0.0825 0.4776 333 | vn 0.9930 0.1116 -0.0376 334 | vn 0.4368 -0.0064 0.8995 335 | vn 0.9587 0.1052 -0.2644 336 | vn 0.7950 0.0367 0.6055 337 | vn -0.0736 0.9973 -0.0005 338 | vn -0.7970 0.0029 -0.6040 339 | vn 0.4415 -0.0060 0.8973 340 | vn 0.5618 0.0969 -0.8216 341 | vn 0.8979 -0.3004 -0.3217 342 | vn 0.2804 0.1430 -0.9492 343 | vn -0.3113 0.1109 -0.9438 344 | vn 0.9611 0.1430 -0.2362 345 | vn -0.9237 -0.0601 0.3783 346 | vn 0.3304 -0.4776 -0.8141 347 | vn -0.4757 0.8373 -0.2696 348 | vn -0.7887 -0.5518 0.2710 349 | vn -0.7255 -0.6883 0.0000 350 | vn -0.2497 0.3090 0.9177 351 | vn -0.1551 0.9566 0.2469 352 | vn 0.8698 0.3678 -0.3288 353 | vn -0.7032 -0.6132 -0.3599 354 | vn 0.8046 -0.1655 0.5702 355 | vn 0.2232 -0.2620 -0.9389 356 | vn -0.1008 0.9530 -0.2857 357 | vn -0.2791 -0.7750 0.5670 358 | vn -0.8953 0.3551 0.2689 359 | vn -0.3524 -0.2480 -0.9024 360 | vn -0.4573 0.8760 -0.1533 361 | vn 0.2771 0.8999 -0.3367 362 | vn 0.9012 -0.3658 -0.2326 363 | vn -0.2709 -0.8892 0.3686 364 | vn 0.0185 -0.4151 0.9096 365 | vn -0.1827 -0.8725 0.4533 366 | vn -0.5885 -0.3414 -0.7329 367 | vn -0.7959 -0.1440 -0.5881 368 | vn 0.5986 0.5550 0.5777 369 | vn 0.7631 0.6254 -0.1628 370 | vn 0.1051 -0.5005 0.8593 371 | vn 0.4310 0.9007 0.0545 372 | vn 0.8447 -0.4621 -0.2701 373 | vn -0.2232 0.2787 -0.9341 374 | vn -0.8870 -0.2278 -0.4016 375 | vn 0.9780 -0.1069 0.1792 376 | vn 0.9794 -0.1058 0.1721 377 | vn 0.4908 0.7054 0.5114 378 | vn 0.4289 -0.8967 0.1096 379 | vn -0.9089 0.2444 -0.3379 380 | vn -0.2036 -0.2307 0.9515 381 | vn 0.5546 0.7775 0.2965 382 | usemtl TreeMat 383 | s off 384 | f 5/1/1 4/2/1 2/3/1 385 | f 7/4/2 6/5/2 4/2/2 386 | f 9/6/3 8/7/3 6/8/3 387 | f 10/9/4 12/10/4 11/11/4 388 | f 14/12/5 13/13/5 11/11/5 389 | f 9/6/6 21/14/6 27/15/6 390 | f 1/16/7 15/17/7 3/18/7 391 | f 7/4/8 17/19/8 21/20/8 392 | f 9/6/9 27/15/9 22/21/9 393 | f 12/10/10 18/22/10 14/12/10 394 | f 23/23/11 19/24/11 15/17/11 395 | f 18/22/12 28/25/12 23/26/12 396 | f 23/23/13 24/27/13 19/24/13 397 | f 19/24/14 24/27/14 25/28/14 398 | f 27/15/15 31/29/15 22/21/15 399 | f 25/30/16 29/31/16 30/32/16 400 | f 28/25/17 32/33/17 24/34/17 401 | f 39/35/18 40/36/18 35/37/18 402 | f 35/38/19 38/39/19 33/40/19 403 | f 43/41/20 44/42/20 42/43/20 404 | f 37/44/21 38/45/21 35/37/21 405 | f 42/46/22 44/47/22 34/48/22 406 | f 35/37/23 40/36/23 37/44/23 407 | f 45/49/24 46/50/24 42/51/24 408 | f 39/35/25 33/52/25 36/53/25 409 | f 37/54/26 40/55/26 39/56/26 410 | f 42/57/27 46/58/27 43/59/27 411 | f 45/49/28 34/60/28 41/61/28 412 | f 34/62/29 44/63/29 41/64/29 413 | f 43/65/30 46/66/30 45/67/30 414 | f 50/68/31 52/69/31 48/70/31 415 | f 48/71/32 52/72/32 51/73/32 416 | f 51/73/33 49/74/33 48/71/33 417 | f 51/75/34 52/69/34 50/68/34 418 | f 54/76/35 60/77/35 56/78/35 419 | f 58/79/36 60/80/36 54/81/36 420 | f 58/82/37 53/83/37 55/84/37 421 | f 56/85/38 60/86/38 58/82/38 422 | f 56/87/39 55/88/39 57/89/39 423 | f 12/90/40 10/91/40 8/7/40 9/6/40 424 | f 3/18/41 5/92/41 2/93/41 425 | f 5/1/42 7/4/42 4/2/42 426 | f 7/94/43 9/6/43 6/8/43 427 | f 2/93/44 13/95/44 1/16/44 3/18/44 428 | f 11/11/45 12/10/45 14/12/45 429 | f 13/95/46 14/96/46 1/16/46 430 | f 11/97/47 13/98/47 2/99/47 4/100/47 6/101/47 8/102/47 10/103/47 431 | f 16/104/48 17/19/48 7/4/48 5/1/48 432 | f 14/12/49 18/22/49 23/26/49 433 | f 12/10/50 22/105/50 18/22/50 434 | f 15/17/51 16/106/51 5/92/51 3/18/51 435 | f 15/17/52 1/16/52 14/96/52 23/23/52 436 | f 9/6/53 7/94/53 21/14/53 437 | f 12/90/54 9/6/54 22/21/54 438 | f 19/24/55 20/107/55 16/106/55 15/17/55 439 | f 28/25/56 18/22/56 22/105/56 31/108/56 440 | f 17/19/57 16/104/57 20/109/57 441 | f 27/15/58 30/110/58 31/29/58 442 | f 25/30/59 26/111/59 17/19/59 20/109/59 443 | f 26/111/60 30/32/60 21/20/60 17/19/60 444 | f 31/112/61 30/113/61 29/114/61 32/115/61 445 | f 23/26/62 28/25/62 24/34/62 446 | f 27/15/63 21/14/63 30/110/63 447 | f 20/107/64 19/24/64 25/28/64 448 | f 53/116/65 58/79/65 54/81/65 59/117/65 449 | f 25/28/66 24/27/66 29/118/66 450 | f 24/27/67 32/119/67 29/118/67 451 | f 26/111/68 25/30/68 30/32/68 452 | f 28/25/69 31/108/69 32/33/69 453 | f 39/35/70 35/37/70 33/52/70 454 | f 37/120/71 39/121/71 36/122/71 455 | f 45/49/72 42/51/72 34/60/72 456 | f 33/123/73 38/124/73 36/125/73 457 | f 37/44/74 36/53/74 38/45/74 458 | f 43/65/75 45/67/75 41/126/75 459 | f 43/41/76 41/127/76 44/42/76 460 | f 48/71/77 49/74/77 50/128/77 461 | f 51/129/78 50/130/78 47/131/78 462 | f 49/132/79 47/133/79 50/134/79 463 | f 51/135/80 47/136/80 49/137/80 464 | f 59/138/81 54/139/81 56/140/81 57/141/81 465 | f 62/142/82 63/143/82 57/89/82 55/88/82 466 | f 63/144/83 62/145/83 61/146/83 64/147/83 467 | f 56/85/84 58/82/84 55/84/84 468 | f 62/148/85 55/84/85 53/83/85 61/149/85 469 | f 64/150/86 61/151/86 53/116/86 59/117/86 470 | f 64/152/87 59/138/87 57/141/87 63/153/87 471 | f 70/154/88 71/155/88 66/156/88 472 | f 66/157/89 69/158/89 65/159/89 473 | f 68/160/90 69/161/90 66/162/90 474 | f 66/163/91 71/164/91 68/165/91 475 | f 70/166/92 65/167/92 67/168/92 476 | f 68/165/93 71/164/93 70/169/93 477 | f 70/154/94 66/156/94 65/170/94 478 | f 68/171/95 70/172/95 67/173/95 479 | f 65/167/96 69/174/96 67/168/96 480 | f 68/160/97 67/175/97 69/161/97 481 | f 75/176/98 77/177/98 73/178/98 482 | f 73/178/99 77/177/99 76/179/99 483 | f 76/179/100 74/180/100 73/178/100 484 | f 76/181/101 77/182/101 75/183/101 485 | f 73/184/102 74/185/102 75/186/102 486 | f 76/187/103 75/188/103 72/189/103 487 | f 74/190/104 72/191/104 75/192/104 488 | f 76/193/105 72/194/105 74/195/105 489 | -------------------------------------------------------------------------------- /addons/scatterbox/Examples/deadTree.obj.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="wavefront_obj" 4 | importer_version=1 5 | type="Mesh" 6 | uid="uid://c82e6hpg6t5kw" 7 | path="res://.godot/imported/deadTree.obj-6505e871d6ede60c84519f7d4d6ecfc9.mesh" 8 | 9 | [deps] 10 | 11 | files=["res://.godot/imported/deadTree.obj-6505e871d6ede60c84519f7d4d6ecfc9.mesh"] 12 | 13 | source_file="res://addons/scatterbox/Examples/deadTree.obj" 14 | dest_files=["res://.godot/imported/deadTree.obj-6505e871d6ede60c84519f7d4d6ecfc9.mesh", "res://.godot/imported/deadTree.obj-6505e871d6ede60c84519f7d4d6ecfc9.mesh"] 15 | 16 | [params] 17 | 18 | generate_tangents=true 19 | scale_mesh=Vector3(1, 1, 1) 20 | offset_mesh=Vector3(0, 0, 0) 21 | optimize_mesh=true 22 | -------------------------------------------------------------------------------- /addons/scatterbox/Examples/deadTree_dead_tree_tex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/The-Vector/scatterBox/bc0fdae3c939785a08b35bc34f0a19eb36aa0874/addons/scatterbox/Examples/deadTree_dead_tree_tex.png -------------------------------------------------------------------------------- /addons/scatterbox/Examples/deadTree_dead_tree_tex.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bac7k0dhx8nh2" 6 | path.s3tc="res://.godot/imported/deadTree_dead_tree_tex.png-99366261c9604050289b8cc0dcbaee1a.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | generator_parameters={} 12 | 13 | [deps] 14 | 15 | source_file="res://addons/scatterbox/Examples/deadTree_dead_tree_tex.png" 16 | dest_files=["res://.godot/imported/deadTree_dead_tree_tex.png-99366261c9604050289b8cc0dcbaee1a.s3tc.ctex"] 17 | 18 | [params] 19 | 20 | compress/mode=2 21 | compress/high_quality=false 22 | compress/lossy_quality=0.7 23 | compress/hdr_compression=1 24 | compress/normal_map=0 25 | compress/channel_pack=0 26 | mipmaps/generate=true 27 | mipmaps/limit=-1 28 | roughness/mode=0 29 | roughness/src_normal="" 30 | process/fix_alpha_border=true 31 | process/premult_alpha=false 32 | process/normal_map_invert_y=false 33 | process/hdr_as_srgb=false 34 | process/hdr_clamp_exposure=false 35 | process/size_limit=0 36 | detect_3d/compress_to=0 37 | -------------------------------------------------------------------------------- /addons/scatterbox/Examples/dead_tree_tex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/The-Vector/scatterBox/bc0fdae3c939785a08b35bc34f0a19eb36aa0874/addons/scatterbox/Examples/dead_tree_tex.png -------------------------------------------------------------------------------- /addons/scatterbox/Examples/dead_tree_tex.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bil246t4yiq8y" 6 | path.s3tc="res://.godot/imported/dead_tree_tex.png-de56540e3e8022a4c6b8751f8c03a98f.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://addons/scatterbox/Examples/dead_tree_tex.png" 15 | dest_files=["res://.godot/imported/dead_tree_tex.png-de56540e3e8022a4c6b8751f8c03a98f.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /addons/scatterbox/Examples/exampleScene.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=15 format=3 uid="uid://w2ad5qitrso6"] 2 | 3 | [ext_resource type="Script" path="res://addons/scatterbox/scatterScene3D.gd" id="1_25gfb"] 4 | [ext_resource type="PackedScene" uid="uid://cpdyf5361hxrn" path="res://addons/scatterbox/Examples/testTree2.tscn" id="2_k4blw"] 5 | [ext_resource type="Script" path="res://addons/scatterbox/scatterMesh3D.gd" id="3_js2b0"] 6 | [ext_resource type="ArrayMesh" uid="uid://c82e6hpg6t5kw" path="res://addons/scatterbox/Examples/deadTree.obj" id="4_6j7gc"] 7 | [ext_resource type="Texture2D" uid="uid://bil246t4yiq8y" path="res://addons/scatterbox/Examples/dead_tree_tex.png" id="5_nndih"] 8 | 9 | [sub_resource type="PlaneMesh" id="PlaneMesh_ipgsw"] 10 | size = Vector2(10, 10) 11 | 12 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2gnoy"] 13 | albedo_color = Color(0.219608, 0.556863, 0.211765, 1) 14 | 15 | [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_044ut"] 16 | data = PackedVector3Array(5, 0, 5, -5, 0, 5, 5, 0, -5, -5, 0, 5, -5, 0, -5, 5, 0, -5) 17 | 18 | [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_6drcc"] 19 | data = PackedVector3Array(5, 0, 5, -5, 0, 5, 5, 0, -5, -5, 0, 5, -5, 0, -5, 5, 0, -5) 20 | 21 | [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_obt8j"] 22 | 23 | [sub_resource type="Sky" id="Sky_n44n5"] 24 | sky_material = SubResource("ProceduralSkyMaterial_obt8j") 25 | 26 | [sub_resource type="Environment" id="Environment_ts1rx"] 27 | background_mode = 2 28 | sky = SubResource("Sky_n44n5") 29 | ambient_light_color = Color(0.411765, 0.411765, 0.411765, 1) 30 | 31 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_kl0dw"] 32 | albedo_texture = ExtResource("5_nndih") 33 | 34 | [sub_resource type="MultiMesh" id="MultiMesh_k87d5"] 35 | transform_format = 1 36 | instance_count = 218 37 | mesh = ExtResource("4_6j7gc") 38 | buffer = PackedFloat32Array(0.75568, 0, 0, 40.3216, 0, 1.01244, 0, -8.58307e-07, 0, 0, 0.940182, 11.0601, 0.988559, 0, 0, 40.557, 0, 0.75523, 0, 0, 0, 0, 1.24529, 14.0054, 0.953425, 0, 0, 36.1972, 0, 0.922555, 0, -8.58307e-07, 0, 0, 1.00936, 17.0454, 1.19362, 0, 0, 40.675, 0, 1.16746, 0, 0, 0, 0, 1.21193, 11.3362, 0.921639, 0, 0, 37.0694, 0, 1.04694, 0, 0, 0, 0, 0.860484, 18.881, 0.87131, 0, 0, 32.8764, 0, 0.798675, 0, -8.58307e-07, 0, 0, 1.11809, 19.1169, 0.827215, 0, 0, 28.5091, 0, 1.10709, 0, 0, 0, 0, 0.963781, 12.6259, 0.799392, 0, 0, 32.1188, 0, 1.07266, 0, -8.58307e-07, 0, 0, 1.14771, 13.5322, 1.03796, 0, 0, 31.9364, 0, 1.23511, 0, -8.58307e-07, 0, 0, 0.901696, 13.4302, 1.23234, 0, 0, 26.3409, 0, 0.881015, 0, 0, 0, 0, 1.24777, 17.1039, 0.981483, 0, 0, 35.6075, 0, 0.82114, 0, -8.58307e-07, 0, 0, 1.16713, 21.4029, 0.809854, 0, 0, 30.4612, 0, 1.08131, 0, -8.58307e-07, 0, 0, 0.999071, 19.8174, 1.14412, 0, 0, 29.0548, 0, 1.1192, 0, -8.58307e-07, 0, 0, 1.0629, 24.5942, 0.944069, 0, 0, 17.6179, 0, 1.19414, 0, -8.58307e-07, 0, 0, 0.984383, 32.141, 0.892045, 0, 0, 20.6105, 0, 1.1952, 0, -8.58307e-07, 0, 0, 1.12694, 33.2034, 0.90467, 0, 0, 18.6248, 0, 1.24758, 0, -8.58307e-07, 0, 0, 0.758492, 38.8823, 0.753249, 0, 0, 19.2366, 0, 1.0759, 0, 0, 0, 0, 0.920171, 39.6342, 1.14337, 0, 0, 20.5171, 0, 1.04455, 0, -8.58307e-07, 0, 0, 0.794173, 40.3123, 0.951641, 0, 0, 18.3212, 0, 1.0638, 0, 0, 0, 0, 0.806974, 32.9151, 1.04735, 0, 0, 24.6188, 0, 0.858151, 0, -8.58307e-07, 0, 0, 1.17555, 42.4288, 0.817641, 0, 0, 15.4067, 0, 0.790261, 0, 0, 0, 0, 1.17031, 38.426, 1.23757, 0, 0, 17.1337, 0, 1.13399, 0, -8.58307e-07, 0, 0, 1.07214, 40.3452, 0.862137, 0, 0, 20.0034, 0, 0.818617, 0, -8.58307e-07, 0, 0, 0.914149, 41.0609, 0.92179, 0, 0, 19.1208, 0, 0.797771, 0, -8.58307e-07, 0, 0, 1.18557, 43.207, 1.22872, 0, 0, 15.7741, 0, 0.994668, 0, 0, 0, 0, 1.07238, 37.8322, 1.18753, 0, 0, 16.0605, 0, 0.781906, 0, 0, 0, 0, 1.05729, 39.9447, 1.0327, 0, 0, 12.4967, 0, 0.791676, 0, -8.58307e-07, 0, 0, 1.09713, 38.1601, 1.10092, 0, 0, 14.116, 0, 1.12914, 0, -8.58307e-07, 0, 0, 1.1593, 39.6665, 1.08096, 0, 0, 51.4518, 0, 1.01608, 0, 0, 0, 0, 0.919425, 17.5225, 1.24224, 0, 0, 55.9329, 0, 0.811211, 0, -8.58307e-07, 0, 0, 1.02402, 22.1003, 0.929664, 0, 0, 57.2911, 0, 1.18433, 0, -8.58307e-07, 0, 0, 1.00338, 27.2751, 0.815924, 0, 0, 58.7426, 0, 1.02966, 0, 0, 0, 0, 0.791553, 25.8955, 0.81104, 0, 0, 55.9867, 0, 0.77475, 0, -8.58307e-07, 0, 0, 0.862497, 20.6959, 0.919205, 0, 0, 62.0314, 0, 1.21634, 0, -8.58307e-07, 0, 0, 1.07116, 26.4547, 1.23955, 0, 0, 62.474, 0, 0.80061, 0, -8.58307e-07, 0, 0, 1.09344, 18.5807, 1.14029, 0, 0, 68.9106, 0, 0.905881, 0, 0, 0, 0, 1.21877, 24.7791, 1.11397, 0, 0, 65.3441, 0, 0.895957, 0, 0, 0, 0, 0.871888, 19.6961, 0.793188, 0, 0, 70.3261, 0, 0.963226, 0, 0, 0, 0, 1.13419, 26.3757, 1.19001, 0, 0, 68.0334, 0, 0.899813, 0, -8.58307e-07, 0, 0, 1.10072, 21.9065, 1.0988, 0, 0, 66.2196, 0, 1.13257, 0, 0, 0, 0, 0.816006, 22.1759, 0.756102, 0, 0, 73.9941, 0, 1.2052, 0, -8.58307e-07, 0, 0, 0.869333, 17.7658, 1.23007, 0, 0, 73.9271, 0, 1.1474, 0, -1.71661e-06, 0, 0, 0.984855, 19.1855, 1.17484, 0, 0, 69.3723, 0, 0.856468, 0, 0, 0, 0, 0.831605, 16.5315, 0.930762, 0, 0, 62.812, 0, 1.14346, 0, -8.58307e-07, 0, 0, 0.962673, 59.3707, 1.17892, 0, 0, 69.8075, 0, 1.18382, 0, 0, 0, 0, 1.01598, 53.3516, 1.16119, 0, 0, 66.9102, 0, 0.795262, 0, 0, 0, 0, 0.876299, 53.4721, 1.20957, 0, 0, 71.0543, 0, 1.08468, 0, 0, 0, 0, 0.910731, 53.8892, 0.907618, 0, 0, 67.7839, 0, 1.16049, 0, 0, 0, 0, 1.16506, 60.5612, 0.821226, 0, 0, 71.3384, 0, 1.07821, 0, -8.58307e-07, 0, 0, 1.24195, 58.5451, 0.784585, 0, 0, 68.9773, 0, 0.852107, 0, 0, 0, 0, 0.901619, 59.2799, 0.757138, 0, 0, 67.6188, 0, 1.24714, 0, 0, 0, 0, 1.24335, 62.1853, 0.930452, 0, 0, 72.5702, 0, 1.10328, 0, 0, 0, 0, 1.17905, 55.1821, 1.18102, 0, 0, 72.1432, 0, 1.0897, 0, -8.58307e-07, 0, 0, 1.0446, 54.2487, 0.750119, 0, 0, 87.9957, 0, 1.11309, 0, -8.58307e-07, 0, 0, 1.09121, 34.1215, 1.16572, 0, 0, 86.2075, 0, 0.823449, 0, -8.58307e-07, 0, 0, 0.928066, 34.7091, 0.837789, 0, 0, 87.3519, 0, 0.75676, 0, -8.58307e-07, 0, 0, 1.19788, 33.4978, 1.22471, 0, 0, 86.156, 0, 0.862769, 0, -8.58307e-07, 0, 0, 0.842446, 36.0841, 0.827995, 0, 0, 89.502, 0, 0.854656, 0, 0, 0, 0, 0.771439, 42.3781, 1.04126, 0, 0, 84.1356, 0, 1.01045, 0, -8.58307e-07, 0, 0, 0.86136, 46.0255, 0.832485, 0, 0, 82.8294, 0, 0.846794, 0, 0, 0, 0, 1.12028, 42.5764, 0.773412, 0, 0, 89.1913, 0, 0.773743, 0, -8.58307e-07, 0, 0, 1.15946, 42.2834, 0.913746, 0, 0, 85.9122, 0, 1.13719, 0, -8.58307e-07, 0, 0, 0.982302, 50.7378, 0.762704, 0, 0, 52.3261, 0, 1.13399, 0, -8.58307e-07, 0, 0, 1.16032, 54.8046, 0.827245, 0, 0, 58.0433, 0, 1.02561, 0, -8.58307e-07, 0, 0, 1.02637, 55.8463, 0.842504, 0, 0, 51.5582, 0, 0.922685, 0, 0, 0, 0, 1.16708, 55.4663, 0.827279, 0, 0, 57.8028, 0, 1.04507, 0, -8.58307e-07, 0, 0, 1.0111, 58.4005, 1.10306, 0, 0, 52.2013, 0, 1.19991, 0, -8.58307e-07, 0, 0, 1.20994, 59.1975, 1.04508, 0, 0, 51.295, 0, 1.22567, 0, -8.58307e-07, 0, 0, 1.07329, 57.8346, 0.648716, -0.992209, 0, 104.258, 0.874942, 0.572046, 0, 7.95313, 0, 0, 1.00796, 46.0613, 0.613959, -0.939049, 0, 103.621, 0.636004, 0.415826, 0, 6.97886, 0, 0, 1.1032, 46.2888, 0.640073, -0.978989, 0, 104.306, 0.792315, 0.518023, 0, 8.02761, 0, 0, 0.818327, 38.0426, 0.536948, -0.82126, 0, 105.136, 0.63055, 0.41226, 0, 9.2959, 0, 0, 0.803416, 40.2689, 0.485195, -0.742104, 0, 106.835, 0.966881, 0.632156, 0, 11.8946, 0, 0, 1.01396, 41.6837, 0.557371, -0.852497, 0, 104.646, 1.01653, 0.664618, 0, 8.54668, 0, 0, 0.980618, 43.2234, 0.49437, -0.756137, 0, 109.284, 0.90431, 0.591247, 0, 15.641, 0, 0, 0.889836, 44.1166, 0.641404, -0.981025, 0, 110.305, 1.02746, 0.671762, 0, 17.2029, 0, 0, 0.947211, 40.9937, 0.55112, -0.842936, 0, 111.132, 0.973967, 0.636789, 0, 18.4668, 0, 0, 1.07476, 42.2515, 0.608934, -0.931362, 0, 115.193, 0.836377, 0.546831, 0, 24.6784, 0, 0, 1.04585, 41.4019, 0.445346, -0.681155, 0, 114.795, 1.0244, 0.669761, 0, 24.0698, 0, 0, 1.01419, 45.09, 0.448101, -0.685368, 0, 109.783, 0.832132, 0.544056, 0, 16.4048, 0, 0, 1.23876, 47.0881, 0.496707, -0.759711, 0, 112.482, 0.652611, 0.426684, 0, 20.5328, 0, 0, 1.2086, 27.5508, 0.448337, -0.685731, 0, 109.257, 0.660525, 0.431858, 0, 15.6003, 0, 0, 1.0011, 28.9312, 0.458667, -0.70153, 0, 115.717, 0.949991, 0.621113, 0, 25.4808, 0, 0, 1.10504, 18.9625, 0.679305, -1.03899, 0, 117.299, 0.792648, 0.518241, 0, 27.8993, 0, 0, 0.88281, 20.4734, 0.643844, -0.984758, 0, 113.752, 0.910599, 0.595358, 0, 22.475, 0, 0, 1.0311, 25.6428, 0.465096, -0.711363, 0, 109.665, 0.906135, 0.59244, 0, 16.2244, 0, 0, 0.972902, 23.4538, 0.656829, -1.00462, 0, 111.652, 0.951206, 0.621908, 0, 19.2624, 0, 0, 0.898186, 4.42402, 0.681422, -1.04223, 0, 114.699, 1.03828, 0.678837, 0, 23.9239, 0, 0, 1.19766, 1.82554, 0.469732, -0.718454, 0, 109.627, 0.869611, 0.56856, 0, 16.1653, 0, 0, 0.832307, -1.97023, 0.412981, -0.631653, 0, 114.486, 0.923081, 0.603519, 0, 23.598, 0, 0, 0.896955, 2.68104, 0.578971, -0.885534, 0, 114.221, 0.692296, 0.45263, 0, 23.1926, 0, 0, 0.789557, 2.46854, 0.561113, -0.85822, 0, 113.438, 0.736357, 0.481437, 0, 21.9942, 0, 0, 1.12313, -1.0662, 0.529502, -0.809871, 0, 113.783, 0.837295, 0.547432, 0, 22.5222, 0, 0, 1.10397, -5.17534, 0.58998, -0.902372, 0, 111.184, 0.846898, 0.55371, 0, 18.5462, 0, 0, 1.06413, -3.37509, 0.617698, -0.944767, 0, 108.626, 0.828552, 0.541716, 0, 14.6344, 0, 0, 1.05025, 0.951796, 0.496451, -0.75932, 0, 110.949, 0.833832, 0.545168, 0, 18.1868, 0, 0, 0.83777, -4.45832, 0.644332, -0.985503, 0, 113.058, 1.00179, 0.654979, 0, 21.4137, 0, 0, 1.05382, -2.74343, 0.449264, -0.687147, 0, 110.444, 1.00712, 0.658467, 0, 17.4146, 0, 0, 0.987464, 3.0238, 0.587581, -0.898702, 0, 108.072, 0.868244, 0.567667, 0, 13.7867, 0, 0, 1.07594, -4.29628, 0.603458, -0.922986, 0, 107.773, 0.698203, 0.456492, 0, 13.3298, 0, 0, 1.05835, -4.42119, 0.563602, -0.862027, 0, 105.653, 0.89731, 0.58667, 0, 10.0868, 0, 0, 1.00475, 0.0158938, 0.411499, -0.629386, 0, 110.92, 0.963265, 0.629792, 0, 18.1433, 0, 0, 0.943393, -1.65394, 0.460176, -0.703838, 0, 126.944, 0.948129, 0.619896, 0, 42.6518, 0, 0, 1.17026, 22.0048, 0.650823, -0.995431, 0, 123.205, 0.935145, 0.611407, 0, 36.9336, 0, 0, 0.859148, 21.2784, 0.461224, -0.70544, 0, 127.495, 0.656126, 0.428982, 0, 43.4951, 0, 0, 0.957564, 20.9757, 0.437566, -0.669255, 0, 121.389, 0.79454, 0.519478, 0, 34.1553, 0, 0, 0.858256, 21.7799, 0.495979, -0.758598, 0, 122.923, 0.895813, 0.585691, 0, 36.5012, 0, 0, 1.01143, 20.4947, 0.526398, -0.805123, 0, 119.43, 0.798231, 0.521891, 0, 31.1593, 0, 0, 0.845566, 23.3185, 0.448385, -0.685803, 0, 120.887, 0.743313, 0.485985, 0, 33.387, 0, 0, 1.21163, 21.645, 0.579682, -0.886621, 0, 128.026, 0.967663, 0.632667, 0, 44.3067, 0, 0, 1.19283, 22.6279, 0.557613, -0.852868, 0, 124.195, 0.895982, 0.585802, 0, 38.4475, 0, 0, 1.18295, 17.9932, 1.19115, 0, 0, 76.0921, 0, 1.07736, 0, 0, 0, 0, 0.927524, 63.4392, 0.8401, 0, 0, 77.8633, 0, 0.987461, 0, 0, 0, 0, 1.16275, 71.8919, 0.845692, 0, 0, 78.9499, 0, 1.11315, 0, -8.58307e-07, 0, 0, 0.92581, 69.0477, 0.843626, 0, 0, 75.4584, 0, 0.934316, 0, -8.58307e-07, 0, 0, 1.08809, 65.9155, 0.760777, 0, 0, 74.8185, 0, 1.20893, 0, -8.58307e-07, 0, 0, 0.925693, 72.6465, 1.22317, 0, 0, 79.5827, 0, 0.942731, 0, 0, 0, 0, 1.04116, 72.2286, 1.09731, 0, 0, 30.8367, 0, 1.11827, 0, 0, 0, 0, 1.19447, 65.4951, 0.98896, 0, 0, 35.984, 0, 0.820056, 0, 0, 0, 0, 1.08325, 66.0059, 1.13348, 0, 0, 37.4013, 0, 1.20799, 0, -8.58307e-07, 0, 0, 0.942115, 73.7037, 0.843175, 0, 0, 39.1213, 0, 0.993881, 0, 0, 0, 0, 1.1038, 73.9908, 1.21907, 0, 0, 38.7447, 0, 0.966088, 0, -8.58307e-07, 0, 0, 1.00595, 71.3549, 0.779243, 0, 0, 2.0045, 0, 1.04533, 0, -8.58307e-07, 0, 0, 0.951813, 62.9389, 1.08869, 0, 0, 2.93355, 0, 1.06977, 0, -8.58307e-07, 0, 0, 1.20384, 61.4584, 0.779709, 0, 0, -1.57477, 0, 1.24974, 0, 0, 0, 0, 1.11386, 58.0894, 0.783273, 0, 0, -2.22117, 0, 0.787936, 0, -8.58307e-07, 0, 0, 1.12023, 64.2733, 0.801413, 0, 0, 5.57226, 0, 0.760522, 0, 0, 0, 0, 1.06169, 59.9368, 0.965672, 0, 0, 1.98194, 0, 0.840343, 0, 0, 0, 0, 1.1102, 64.4814, 0.798992, 0, 0, 10.649, 0, 1.23169, 0, 0, 0, 0, 0.818728, 72.8853, 0.810551, 0, 0, 8.94783, 0, 0.96816, 0, -8.58307e-07, 0, 0, 0.811204, 72.3082, 0.750651, 0, 0, 13.8138, 0, 1.20993, 0, -8.58307e-07, 0, 0, 1.15451, 72.0744, 0.782831, 0, 0, 11.8197, 0, 1.18617, 0, -8.58307e-07, 0, 0, 1.01838, 69.8754, 0.85527, 0, 0, 10.3977, 0, 0.805471, 0, -8.58307e-07, 0, 0, 0.781852, 67.2671, 1.0205, 0, 0, 13.7865, 0, 0.775895, 0, -8.58307e-07, 0, 0, 1.01763, 72.2499, 0.870714, 0, 0, 9.53898, 0, 1.22558, 0, 0, 0, 0, 1.06046, 71.3061, 1.03973, 0, 0, 11.0116, 0, 1.23787, 0, -8.58307e-07, 0, 0, 1.15983, 75.2749, 1.15172, 0, 0, -16.0852, 0, 1.24603, 0, -8.58307e-07, 0, 0, 0.984447, 62.0039, 1.10086, 0, 0, -19.1531, 0, 0.916684, 0, 0, 0, 0, 1.17353, 64.0842, 0.787527, 0, 0, -15.6706, 0, 1.08788, 0, -8.58307e-07, 0, 0, 0.805047, 59.5487, 1.10085, 0, 0, -12.1336, 0, 1.07955, 0, 0, 0, 0, 1.23606, 63.9387, 0.765732, 0, 0, -15.9539, 0, 1.19497, 0, 0, 0, 0, 0.778345, 63.1379, 1.1348, 0, 0, -14.9294, 0, 1.20826, 0, -8.58307e-07, 0, 0, 0.76846, 68.0062, 0.948585, 0, 0, -9.84703, 0, 0.818939, 0, 0, 0, 0, 0.8788, 68.7766, 1.16144, 0, 0, -32.7636, 0, 1.23603, 0, -8.58307e-07, 0, 0, 1.09144, 61.3505, 0.834533, 0, 0, -29.5555, 0, 1.18838, 0, -8.58307e-07, 0, 0, 0.954771, 69.4293, 0.754344, 0, 0, -28.9222, 0, 1.01182, 0, -8.58307e-07, 0, 0, 1.03359, 64.4663, 1.23231, 0, 0, -32.295, 0, 0.932619, 0, 0, 0, 0, 1.15635, 69.6081, 1.04705, 0, 0, -29.635, 0, 0.761371, 0, -8.58307e-07, 0, 0, 1.17269, 66.6258, 0.813709, 0, 0, -24.7268, 0, 1.2175, 0, 0, 0, 0, 0.965501, 65.0839, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.03292, 0, 0, -33.7333, 0, 1.1508, 0, 0, 0, 0, 1.09119, 24.3439, 0.806753, 0, 0, -34.6044, 0, 1.10663, 0, 0, 0, 0, 0.962154, 25.825, 0.76762, 0, 0, -37.5252, 0, 1.11061, 0, 0, 0, 0, 0.851536, 25.7437, 0.80269, 0, 0, -39.9026, 0, 0.810671, 0, 0, 0, 0, 0.896122, 29.0779, 0.894856, 0, 0, -38.9269, 0, 0.757704, 0, -8.58307e-07, 0, 0, 0.869629, 33.0455, 0.84544, 0, 0, -38.4507, 0, 1.0869, 0, 0, 0, 0, 1.12677, 31.3806, 1.13315, 0, 0, -33.4617, 0, 1.18464, 0, -8.58307e-07, 0, 0, 0.771552, 35.9194, 0.911738, 0, 0, -38.4715, 0, 1.16086, 0, 0, 0, 0, 1.1042, 29.6255, 1.0834, 0, 0, -33.8092, 0, 0.913362, 0, -8.58307e-07, 0, 0, 0.929086, 34.624, 0.817553, 0, 0, -35.2733, 0, 1.0008, 0, 0, 0, 0, 1.12964, 35.1242, 1.0261, 0, 0, -29.8958, 0, 0.787411, 0, -8.58307e-07, 0, 0, 0.989158, 32.2088, 0.842508, 0, 0, -31.5573, 0, 0.919064, 0, -8.58307e-07, 0, 0, 0.94556, 39.1658, 0.996414, 0, 0, -35.2462, 0, 0.950074, 0, 0, 0, 0, 0.930963, 34.307, 1.09349, 0, 0, -34.0303, 0, 0.824464, 0, 0, 0, 0, 1.22814, 38.5592, 1.17604, 0, 0, -26.2284, 0, 0.985263, 0, 0, 0, 0, 1.13929, 41.4188, 1.17626, 0, 0, -32.4162, 0, 1.17547, 0, 0, 0, 0, 0.972683, 40.8602, 0.939991, 0, 0, -28.7253, 0, 1.14727, 0, -8.58307e-07, 0, 0, 0.897907, 36.6702, 0.781335, 0, 0, -32.5701, 0, 1.10289, 0, -8.58307e-07, 0, 0, 0.937443, 41.1998, 0.84176, 0, 0, 43.3133, 0, 0.983039, 0, -8.58307e-07, 0, 0, 0.839321, -14.3141, 0.837284, 0, 0, 45.4166, 0, 0.973364, 0, -8.58307e-07, 0, 0, 0.908319, -7.96881, 0.88922, 0, 0, 46.319, 0, 1.14414, 0, -8.58307e-07, 0, 0, 0.880325, -10.035, 0.765603, 0, 0, 43.8903, 0, 1.04236, 0, -8.58307e-07, 0, 0, 1.16755, -9.46991, 0.832736, 0, 0, 46.3327, 0, 1.10526, 0, -8.58307e-07, 0, 0, 0.841102, -11.1723, 0.91004, 0, 0, 48.3904, 0, 0.758364, 0, -8.58307e-07, 0, 0, 0.945015, -11.9058, 0.908139, 0, 0, 51.2532, 0, 1.03213, 0, -8.58307e-07, 0, 0, 0.78258, -7.65288, 0.869417, 0, 0, 46.319, 0, 0.862253, 0, -8.58307e-07, 0, 0, 1.01239, -12.1853, 0.866755, 0, 0, 53.3202, 0, 1.00807, 0, -8.58307e-07, 0, 0, 1.22453, -8.42381, 1.12638, 0, 0, 47.2108, 0, 0.99, 0, -8.58307e-07, 0, 0, 0.994688, -12.5405, 0.804406, 0, 0, 48.5353, 0, 1.11321, 0, -8.58307e-07, 0, 0, 1.22006, -14.9704, 0.955858, 0, 0, 50.8502, 0, 1.11598, 0, 0, 0, 0, 1.11197, -7.40155, 0.863799, 0, 0, 57.114, 0, 1.19548, 0, 0, 0, 0, 1.18626, -12.2696, 0.85432, 0, 0, 49.6082, 0, 0.785663, 0, 0, 0, 0, 0.798586, -13.3301, 1.05094, 0, 0, 55.4671, 0, 0.822349, 0, 0, 0, 0, 0.797198, -13.9377, 0.97472, 0, 0, 50.9084, 0, 0.947968, 0, 0, 0, 0, 0.925696, -9.18729, 1.19492, 0, 0, 52.3135, 0, 0.861636, 0, 0, 0, 0, 0.86591, -11.489, 0.991202, 0, 0, 68.7965, 0, 1.20432, 0, 0, 0, 0, 0.8467, -7.03535, 0.893936, 0, 0, 69.9457, 0, 0.949668, 0, 0, 0, 0, 0.948561, -11.3363, 0.974751, 0, 0, 76.5801, 0, 1.04225, 0, 0, 0, 0, 0.972928, -8.8138, 1.09182, 0, 0, 70.4363, 0, 0.923695, 0, 0, 0, 0, 1.15792, -2.42436, 1.0541, 0, 0, 79.3612, 0, 0.928902, 0, 0, 0, 0, 0.786086, -7.51385, 1.24573, 0, 0, 78.2414, 0, 1.1739, 0, 0, 0, 0, 0.883314, -9.28871, 1.21007, 0, 0, 80.328, 0, 0.874774, 0, 0, 0, 0, 1.14792, -8.42686, 0.93773, 0, 0, 77.3078, 0, 1.21938, 0, 0, 0, 0, 0.8018, -1.33273, 1.16048, 0, 0, 25.8005, 0, 0.969708, 0, 0, 0, 0, 0.779343, -20.7933, 0.807691, 0, 0, 30.2647, 0, 1.13349, 0, 0, 0, 0, 0.919687, -16.0785, 1.16226, 0, 0, 26.5686, 0, 1.17947, 0, 0, 0, 0, 0.833999, -13.1756, 1.24562, 0, 0, 26.0068, 0, 0.999421, 0, 0, 0, 0, 0.871147, -20.7043, 0.830976, 0, 0, 27.2204, 0, 1.22163, 0, 0, 0, 0, 0.993903, -17.3096, 1.12425, 0, 0, 65.8727, 0, 1.02382, 0, 0, 0, 0, 0.78918, 39.0438, 1.08799, 0, 0, 68.2284, 0, 1.02229, 0, 0, 0, 0, 1.02124, 35.9892, 0.840075, 0, 0, 67.5608, 0, 1.09681, 0, -8.58307e-07, 0, 0, 1.20747, 36.5009, 0.904714, 0, 0, 71.0193, 0, 1.14132, 0, 0, 0, 0, 0.755114, 40.4795, 0.9447, 0, 0, 66.1996, 0, 1.16305, 0, -8.58307e-07, 0, 0, 0.969836, 42.9793, 1.20899, 0, 0, 70.765, 0, 1.02398, 0, 0, 0, 0, 1.07875, 42.8964, 0.852592, 0, 0, 68.92, 0, 1.11019, 0, 0, 0, 0, 1.14383, 35.8561, 1.20733, 0, 0, 73.457, 0, 1.12503, 0, -8.58307e-07, 0, 0, 0.863874, 33.2888, 1.17541, 0, 0, 73.1784, 0, 0.837274, 0, 0, 0, 0, 0.818614, 34.2902, 0.832948, 0, 0, 76.8833, 0, 1.07358, 0, 0, 0, 0, 0.839928, 33.8125, 1.03551, 0, 0, 76.0093, 0, 1.01635, 0, 0, 0, 0, 0.831829, 30.1544, 0.97895, 0, 0, 82.16, 0, 1.13323, 0, 0, 0, 0, 1.09975, 26.0608, 0.816688, 0, 0, 83.7568, 0, 0.855645, 0, 0, 0, 0, 0.934907, 26.594, 1.11055, 0, 0, 81.3253, 0, 1.21245, 0, -8.58307e-07, 0, 0, 0.849673, 20.9004, 0.984101, 0, 0, 87.1123, 0, 1.11113, 0, -1.71661e-06, 0, 0, 1.09954, 18.1316, 1.0783, 0, 0, 83.5651, 0, 0.891905, 0, 0, 0, 0, 0.878265, 16.2096, 1.0804, 0, 0, 83.3325, 0, 0.996582, 0, 0, 0, 0, 1.00599, 24.7975, 0.885631, 0, 0, 86.8532, 0, 1.03665, 0, 0, 0, 0, 0.956839, 20.0802, 0.858379, 0, 0, 82.2466, 0, 0.910817, 0, -8.58307e-07, 0, 0, 0.933454, 17.4968) 39 | 40 | [node name="root" type="Node3D"] 41 | 42 | [node name="MeshInstance3D" type="MeshInstance3D" parent="."] 43 | transform = Transform3D(17.7408, 0, 0, 0, 1.8, 0, 0, 0, 13.9087, 29, 0, 10) 44 | mesh = SubResource("PlaneMesh_ipgsw") 45 | surface_material_override/0 = SubResource("StandardMaterial3D_2gnoy") 46 | 47 | [node name="StaticBody3D" type="StaticBody3D" parent="MeshInstance3D"] 48 | 49 | [node name="CollisionShape3D" type="CollisionShape3D" parent="MeshInstance3D/StaticBody3D"] 50 | shape = SubResource("ConcavePolygonShape3D_044ut") 51 | 52 | [node name="MeshInstance3D2" type="MeshInstance3D" parent="."] 53 | transform = Transform3D(6.06769, -1.50657, 0, 9.28051, 0.985008, 0, 0, 0, 10.656, 114.03, 22.8999, 0) 54 | mesh = SubResource("PlaneMesh_ipgsw") 55 | surface_material_override/0 = SubResource("StandardMaterial3D_2gnoy") 56 | 57 | [node name="StaticBody3D" type="StaticBody3D" parent="MeshInstance3D2"] 58 | 59 | [node name="CollisionShape3D" type="CollisionShape3D" parent="MeshInstance3D2/StaticBody3D"] 60 | shape = SubResource("ConcavePolygonShape3D_6drcc") 61 | 62 | [node name="Camera3D" type="Camera3D" parent="."] 63 | transform = Transform3D(0.689318, 0.150941, -0.70856, 0.0296272, 0.971363, 0.235747, 0.723853, -0.183497, 0.665106, -29.2054, 5.46726, 84.6648) 64 | 65 | [node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] 66 | transform = Transform3D(0.819302, 0.349088, -0.454842, 1.73955e-08, 0.79329, 0.608844, 0.573362, -0.498827, 0.649944, 22.8811, 17.0385, 62.4693) 67 | shadow_enabled = true 68 | 69 | [node name="WorldEnvironment" type="WorldEnvironment" parent="."] 70 | environment = SubResource("Environment_ts1rx") 71 | 72 | [node name="ScatterScene3D" type="Node3D" parent="."] 73 | script = ExtResource("1_25gfb") 74 | scenes = Array[PackedScene]([ExtResource("2_k4blw")]) 75 | instanced_scene_collision_layers = 2147483648 76 | placement_size = Vector3(11, 11, 11) 77 | 78 | [node name="DrawPointer" type="Node3D" parent="ScatterScene3D"] 79 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 73.6353, 6.86645e-06, 54.158) 80 | 81 | [node name="ObjectParent" type="Node3D" parent="ScatterScene3D"] 82 | 83 | [node name="@StaticBody3D@37090" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 84 | transform = Transform3D(1.23424, 0, 0, 0, 0.787998, 0, 0, 0, 0.801253, 23.8158, 0, 53.3959) 85 | collision_layer = 2147483648 86 | 87 | [node name="@StaticBody3D@37092" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 88 | transform = Transform3D(1.08069, 0, 0, 0, 1.07078, 0, 0, 0, 0.876528, 22.4362, -8.58307e-07, 56.6444) 89 | collision_layer = 2147483648 90 | 91 | [node name="@StaticBody3D@37094" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 92 | transform = Transform3D(0.996197, 0, 0, 0, 1.16254, 0, 0, 0, 0.955885, 21.8945, 0, 56.6063) 93 | collision_layer = 2147483648 94 | 95 | [node name="@StaticBody3D@37096" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 96 | transform = Transform3D(1.03244, 0, 0, 0, 0.9644, 0, 0, 0, 1.09486, 17.9744, 0, 54.7243) 97 | collision_layer = 2147483648 98 | 99 | [node name="@StaticBody3D@37098" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 100 | transform = Transform3D(0.948157, 0, 0, 0, 1.06047, 0, 0, 0, 1.1848, 3.26424, 0, 51.553) 101 | collision_layer = 2147483648 102 | 103 | [node name="@StaticBody3D@37100" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 104 | transform = Transform3D(0.864458, 0, 0, 0, 0.861902, 0, 0, 0, 0.786143, 6.67025, 0, 50.1844) 105 | collision_layer = 2147483648 106 | 107 | [node name="@StaticBody3D@37102" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 108 | transform = Transform3D(1.05563, 0, 0, 0, 1.11596, 0, 0, 0, 1.20995, -5.15553, 0, 52.0854) 109 | collision_layer = 2147483648 110 | 111 | [node name="@StaticBody3D@37104" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 112 | transform = Transform3D(0.753813, 0, 0, 0, 1.24515, 0, 0, 0, 1.12718, -9.16608, 0, 46.3264) 113 | collision_layer = 2147483648 114 | 115 | [node name="@StaticBody3D@37106" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 116 | transform = Transform3D(1.18955, 0, 0, 0, 0.84802, 0, 0, 0, 1.1412, -5.66357, 0, 50.1009) 117 | collision_layer = 2147483648 118 | 119 | [node name="@StaticBody3D@37108" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 120 | transform = Transform3D(0.872984, 0, 0, 0, 1.0203, 0, 0, 0, 1.09167, -14.5093, 0, 38.9125) 121 | collision_layer = 2147483648 122 | 123 | [node name="@StaticBody3D@37110" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 124 | transform = Transform3D(1.15885, 0, 0, 0, 1.0014, 0, 0, 0, 1.24613, -8.89733, 0, 37.1329) 125 | collision_layer = 2147483648 126 | 127 | [node name="@StaticBody3D@37112" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 128 | transform = Transform3D(1.02608, 0, 0, 0, 1.00332, 0, 0, 0, 1.00171, -13.5912, 0, 37.6116) 129 | collision_layer = 2147483648 130 | 131 | [node name="@StaticBody3D@37114" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 132 | transform = Transform3D(1.12381, 0, 0, 0, 0.830194, 0, 0, 0, 1.18661, -9.0515, 0, 38.5295) 133 | collision_layer = 2147483648 134 | 135 | [node name="@StaticBody3D@37116" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 136 | transform = Transform3D(1.16963, 0, 0, 0, 1.21235, 0, 0, 0, 1.01367, -19.7616, 0, 36.3367) 137 | collision_layer = 2147483648 138 | 139 | [node name="@StaticBody3D@37118" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 140 | transform = Transform3D(0.861319, 0, 0, 0, 0.834268, 0, 0, 0, 1.08568, -17.4276, 0, 26.2306) 141 | collision_layer = 2147483648 142 | 143 | [node name="@StaticBody3D@37120" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 144 | transform = Transform3D(1.02132, 0, 0, 0, 1.05199, 0, 0, 0, 1.18631, -19.9502, 0, 24.8547) 145 | collision_layer = 2147483648 146 | 147 | [node name="@StaticBody3D@37122" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 148 | transform = Transform3D(0.941095, 0, 0, 0, 1.04853, 0, 0, 0, 0.827859, -23.198, 0, 29.5481) 149 | collision_layer = 2147483648 150 | 151 | [node name="@StaticBody3D@37124" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 152 | transform = Transform3D(1.05426, 0, 0, 0, 1.18932, 0, 0, 0, 1.15191, -19.4031, 0, 18.8569) 153 | collision_layer = 2147483648 154 | 155 | [node name="@StaticBody3D@37126" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 156 | transform = Transform3D(0.822528, 0, 0, 0, 1.08612, 0, 0, 0, 0.767492, -15.7988, 0, 19.5136) 157 | collision_layer = 2147483648 158 | 159 | [node name="@StaticBody3D@37128" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 160 | transform = Transform3D(0.829927, 0, 0, 0, 1.03828, 0, 0, 0, 0.802783, -16.5044, 0, 25.2133) 161 | collision_layer = 2147483648 162 | 163 | [node name="@StaticBody3D@37130" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 164 | transform = Transform3D(1.04908, 0, 0, 0, 0.799374, 0, 0, 0, 1.08595, -19.652, 0, 18.8134) 165 | collision_layer = 2147483648 166 | 167 | [node name="@StaticBody3D@37132" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 168 | transform = Transform3D(0.943412, 0, 0, 0, 0.913572, 0, 0, 0, 1.13339, -14.2319, 0, 25.2275) 169 | collision_layer = 2147483648 170 | 171 | [node name="@StaticBody3D@37134" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 172 | transform = Transform3D(1.15821, 0, 0, 0, 0.929866, 0, 0, 0, 0.936802, -15.1614, 0, 18.0501) 173 | collision_layer = 2147483648 174 | 175 | [node name="@StaticBody3D@37162" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 176 | transform = Transform3D(1.17274, 0, 0, 0, 1.13077, 0, 0, 0, 0.861335, 9.7248, 0, -14.6496) 177 | collision_layer = 2147483648 178 | 179 | [node name="@StaticBody3D@37164" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 180 | transform = Transform3D(1.0026, 0, 0, 0, 0.978188, 0, 0, 0, 1.0496, 11.5473, 0, -10.4557) 181 | collision_layer = 2147483648 182 | 183 | [node name="@StaticBody3D@37166" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 184 | transform = Transform3D(0.914572, 0, 0, 0, 0.956001, 0, 0, 0, 0.891898, 11.6975, 0, -7.67533) 185 | collision_layer = 2147483648 186 | 187 | [node name="@StaticBody3D@37168" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 188 | transform = Transform3D(1.16123, 0, 0, 0, 0.975602, 0, 0, 0, 1.12992, 10.6074, 0, -2.60609) 189 | collision_layer = 2147483648 190 | 191 | [node name="@StaticBody3D@37170" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 192 | transform = Transform3D(1.01126, 0, 0, 0, 1.01804, 0, 0, 0, 1.08224, 7.80789, 0, 6.09877) 193 | collision_layer = 2147483648 194 | 195 | [node name="@StaticBody3D@37172" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 196 | transform = Transform3D(0.820158, 0, 0, 0, 0.799542, 0, 0, 0, 0.761506, 7.57795, 0, 7.48388) 197 | collision_layer = 2147483648 198 | 199 | [node name="@StaticBody3D@37174" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 200 | transform = Transform3D(1.18026, 0, 0, 0, 0.75125, 0, 0, 0, 0.940997, 3.73411, 0, 10.1205) 201 | collision_layer = 2147483648 202 | 203 | [node name="@StaticBody3D@37176" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 204 | transform = Transform3D(1.20624, 0, 0, 0, 1.15532, 0, 0, 0, 1.0209, 6.77754, 0, 16.2291) 205 | collision_layer = 2147483648 206 | 207 | [node name="@StaticBody3D@37192" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 208 | transform = Transform3D(1.21216, 0, 0, 0, 1.23992, 0, 0, 0, 0.96144, 33.6352, 0, -18.7713) 209 | collision_layer = 2147483648 210 | 211 | [node name="@StaticBody3D@37194" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 212 | transform = Transform3D(1.06331, 0, 0, 0, 1.1659, 0, 0, 0, 1.22666, 38.7136, 0, -10.7604) 213 | collision_layer = 2147483648 214 | 215 | [node name="@StaticBody3D@37196" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 216 | transform = Transform3D(1.01199, 0, 0, 0, 0.813325, 0, 0, 0, 0.892093, 36.725, 0, -7.70035) 217 | collision_layer = 2147483648 218 | 219 | [node name="@StaticBody3D@37198" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 220 | transform = Transform3D(1.06326, 0, 0, 0, 0.973779, 0, 0, 0, 1.2284, 29.9569, 0, -2.36848) 221 | collision_layer = 2147483648 222 | 223 | [node name="@StaticBody3D@37200" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 224 | transform = Transform3D(0.92459, 0, 0, 0, 1.02285, 0, 0, 0, 1.18038, 27.2282, 0, 2.17105) 225 | collision_layer = 2147483648 226 | 227 | [node name="@StaticBody3D@37202" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 228 | transform = Transform3D(1.17853, 0, 0, 0, 1.12545, 0, 0, 0, 1.11706, 32.1427, 0, 14.4296) 229 | collision_layer = 2147483648 230 | 231 | [node name="@StaticBody3D@37204" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 232 | transform = Transform3D(0.845607, 0, 0, 0, 1.18914, 0, 0, 0, 1.04556, 25.8256, 0, 19.1214) 233 | collision_layer = 2147483648 234 | 235 | [node name="@StaticBody3D@37206" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 236 | transform = Transform3D(0.949069, 0, 0, 0, 1.24945, 0, 0, 0, 1.24184, 27.9333, 0, 13.2414) 237 | collision_layer = 2147483648 238 | 239 | [node name="@StaticBody3D@21548" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 240 | transform = Transform3D(0.774548, 0, 0, 0, 1.15113, 0, 0, 0, 0.862531, 27.8748, 0, 53.4904) 241 | collision_layer = 2147483648 242 | 243 | [node name="@StaticBody3D@21552" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 244 | transform = Transform3D(1.07182, 0, 0, 0, 0.989382, 0, 0, 0, 0.819205, 25.4791, 0, 57.3276) 245 | collision_layer = 2147483648 246 | 247 | [node name="@StaticBody3D@21553" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 248 | transform = Transform3D(1.05438, 0, 0, 0, 1.16302, 0, 0, 0, 0.925305, 22.8524, 0, 55.5104) 249 | collision_layer = 2147483648 250 | 251 | [node name="@StaticBody3D@21554" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 252 | transform = Transform3D(0.879935, 0, 0, 0, 1.1492, 0, 0, 0, 0.969335, 27.0243, 0, 56.9033) 253 | collision_layer = 2147483648 254 | 255 | [node name="@StaticBody3D@21556" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 256 | transform = Transform3D(1.03562, 0, 0, 0, 1.08802, 0, 0, 0, 0.967473, 23.0888, 0, 54.0853) 257 | collision_layer = 2147483648 258 | 259 | [node name="@StaticBody3D@21557" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 260 | transform = Transform3D(1.13162, 0, 0, 0, 1.02056, 0, 0, 0, 1.19706, 22.8362, 0, 51.6706) 261 | collision_layer = 2147483648 262 | 263 | [node name="StaticBody3D" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 264 | transform = Transform3D(0.774736, 0, 0, 0, 0.762235, 0, 0, 0, 0.937939, 49.0696, -8.58307e-07, 35.7277) 265 | collision_layer = 2147483648 266 | 267 | [node name="@StaticBody3D@21592" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 268 | transform = Transform3D(0.774279, 0, 0, 0, 1.05183, 0, 0, 0, 1.11922, 39.6939, 0, 39.0927) 269 | collision_layer = 2147483648 270 | 271 | [node name="@StaticBody3D@21593" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 272 | transform = Transform3D(1.14526, 0, 0, 0, 0.956896, 0, 0, 0, 1.20656, 41.5775, -8.58307e-07, 37.5137) 273 | collision_layer = 2147483648 274 | 275 | [node name="@StaticBody3D@21594" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 276 | transform = Transform3D(1.04165, 0, 0, 0, 1.0414, 0, 0, 0, 0.986298, 44.0989, 0, 34.8442) 277 | collision_layer = 2147483648 278 | 279 | [node name="@StaticBody3D@21595" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 280 | transform = Transform3D(1.0222, 0, 0, 0, 1.14851, 0, 0, 0, 0.986576, 44.5038, 0, 35.7064) 281 | collision_layer = 2147483648 282 | 283 | [node name="@StaticBody3D@21596" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 284 | transform = Transform3D(1.08648, 0, 0, 0, 0.759413, 0, 0, 0, 1.23872, 40.8905, 0, 35.9696) 285 | collision_layer = 2147483648 286 | 287 | [node name="@StaticBody3D@21597" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 288 | transform = Transform3D(1.06019, 0, 0, 0, 0.97357, 0, 0, 0, 0.818333, 46.0486, 0, 44.7689) 289 | collision_layer = 2147483648 290 | 291 | [node name="@StaticBody3D@21598" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 292 | transform = Transform3D(1.08393, 0, 0, 0, 1.22552, 0, 0, 0, 0.878538, 44.5116, 0, 44.5829) 293 | collision_layer = 2147483648 294 | 295 | [node name="@StaticBody3D@21599" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 296 | transform = Transform3D(1.04525, 0, 0, 0, 1.15513, 0, 0, 0, 0.987168, 37.7355, 0, 41.5629) 297 | collision_layer = 2147483648 298 | 299 | [node name="@StaticBody3D@21600" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 300 | transform = Transform3D(0.765396, 0, 0, 0, 0.982917, 0, 0, 0, 1.07472, 37.8927, 0, 51.035) 301 | collision_layer = 2147483648 302 | 303 | [node name="@StaticBody3D@21601" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 304 | transform = Transform3D(1.09515, 0, 0, 0, 1.12603, 0, 0, 0, 0.830202, 43.5143, 0, 49.8752) 305 | collision_layer = 2147483648 306 | 307 | [node name="@StaticBody3D@21602" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 308 | transform = Transform3D(1.06237, 0, 0, 0, 0.852578, 0, 0, 0, 0.753981, 44.8895, 0, 50.6986) 309 | collision_layer = 2147483648 310 | 311 | [node name="@StaticBody3D@21603" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 312 | transform = Transform3D(1.01562, 0, 0, 0, 1.23136, 0, 0, 0, 0.779439, 38.2254, 0, 60.0031) 313 | collision_layer = 2147483648 314 | 315 | [node name="@StaticBody3D@21604" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 316 | transform = Transform3D(0.878811, 0, 0, 0, 0.792445, 0, 0, 0, 1.09858, 45.5424, -8.58307e-07, 52.6739) 317 | collision_layer = 2147483648 318 | 319 | [node name="@StaticBody3D@21605" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 320 | transform = Transform3D(0.862243, 0, 0, 0, 1.08662, 0, 0, 0, 1.14571, 45.525, 0, 51.8993) 321 | collision_layer = 2147483648 322 | 323 | [node name="@StaticBody3D@21606" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 324 | transform = Transform3D(0.871553, 0, 0, 0, 0.864978, 0, 0, 0, 1.04778, 52.8718, 0, 48.9655) 325 | collision_layer = 2147483648 326 | 327 | [node name="@StaticBody3D@21607" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 328 | transform = Transform3D(1.18594, 0, 0, 0, 0.786516, 0, 0, 0, 1.05156, 54.7479, 0, 40.2667) 329 | collision_layer = 2147483648 330 | 331 | [node name="@StaticBody3D@21608" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 332 | transform = Transform3D(0.887737, 0, 0, 0, 0.841212, 0, 0, 0, 1.247, 52.4736, 0, 44.8136) 333 | collision_layer = 2147483648 334 | 335 | [node name="@StaticBody3D@21609" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 336 | transform = Transform3D(0.870019, 0, 0, 0, 1.24234, 0, 0, 0, 0.756435, 61.0796, 0, 49.5016) 337 | collision_layer = 2147483648 338 | 339 | [node name="@StaticBody3D@21610" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 340 | transform = Transform3D(0.751259, 0, 0, 0, 0.970443, 0, 0, 0, 1.19922, 56.7044, 0, 43.7394) 341 | collision_layer = 2147483648 342 | 343 | [node name="@StaticBody3D@21611" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 344 | transform = Transform3D(0.982082, 0, 0, 0, 1.05283, 0, 0, 0, 0.995862, 57.7157, 0, 48.9853) 345 | collision_layer = 2147483648 346 | 347 | [node name="@StaticBody3D@21612" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 348 | transform = Transform3D(1.09247, 0, 0, 0, 1.12723, 0, 0, 0, 0.970048, 65.2277, 0, 50.2219) 349 | collision_layer = 2147483648 350 | 351 | [node name="@StaticBody3D@21613" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 352 | transform = Transform3D(1.23915, 0, 0, 0, 1.05929, 0, 0, 0, 1.07613, 65.682, 0, 45.6963) 353 | collision_layer = 2147483648 354 | 355 | [node name="@StaticBody3D@21614" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 356 | transform = Transform3D(1.1585, 0, 0, 0, 0.804025, 0, 0, 0, 1.21589, 65.309, -8.58307e-07, 56.6155) 357 | collision_layer = 2147483648 358 | 359 | [node name="@StaticBody3D@21615" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 360 | transform = Transform3D(1.09436, 0, 0, 0, 1.20605, 0, 0, 0, 1.14213, 62.319, -8.58307e-07, 48.3368) 361 | collision_layer = 2147483648 362 | 363 | [node name="@StaticBody3D@21616" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 364 | transform = Transform3D(1.12364, 0, 0, 0, 0.905189, 0, 0, 0, 0.780918, 60.7855, -8.58307e-07, 51.4128) 365 | collision_layer = 2147483648 366 | 367 | [node name="@StaticBody3D@21617" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 368 | transform = Transform3D(0.912875, 0, 0, 0, 0.921734, 0, 0, 0, 0.955446, 64.2394, 0, 59.0758) 369 | collision_layer = 2147483648 370 | 371 | [node name="@StaticBody3D@21618" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 372 | transform = Transform3D(0.806239, 0, 0, 0, 1.03659, 0, 0, 0, 1.22468, 72.6297, 0, 62.8228) 373 | collision_layer = 2147483648 374 | 375 | [node name="@StaticBody3D@21619" type="StaticBody3D" parent="ScatterScene3D/ObjectParent" instance=ExtResource("2_k4blw")] 376 | transform = Transform3D(1.04284, 0, 0, 0, 1.08349, 0, 0, 0, 0.841612, 74.9295, 0, 62.1197) 377 | collision_layer = 2147483648 378 | 379 | [node name="ScatterMesh3D" type="Node3D" parent="."] 380 | script = ExtResource("3_js2b0") 381 | meshes = Array[Mesh]([ExtResource("4_6j7gc")]) 382 | mesh_materials = Array[Material]([SubResource("StandardMaterial3D_kl0dw")]) 383 | 384 | [node name="DrawPointer" type="Node3D" parent="ScatterMesh3D"] 385 | transform = Transform3D(0.547228, -0.836984, 0, 0.836984, 0.547228, 0, 0, 0, 1, 115.827, 25.6486, 38.4174) 386 | 387 | [node name="ObjectParent" type="Node3D" parent="ScatterMesh3D"] 388 | 389 | [node name="@@117173" type="MultiMeshInstance3D" parent="ScatterMesh3D/ObjectParent"] 390 | multimesh = SubResource("MultiMesh_k87d5") 391 | -------------------------------------------------------------------------------- /addons/scatterbox/Examples/pineTree_bark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/The-Vector/scatterBox/bc0fdae3c939785a08b35bc34f0a19eb36aa0874/addons/scatterbox/Examples/pineTree_bark.png -------------------------------------------------------------------------------- /addons/scatterbox/Examples/pineTree_bark.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://kb2d8t6b5408" 6 | path.s3tc="res://.godot/imported/pineTree_bark.png-f35dd0198fb42e53edfdb8d20a07e21d.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://addons/scatterbox/Examples/pineTree_bark.png" 15 | dest_files=["res://.godot/imported/pineTree_bark.png-f35dd0198fb42e53edfdb8d20a07e21d.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /addons/scatterbox/Examples/pineTree_leaves.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/The-Vector/scatterBox/bc0fdae3c939785a08b35bc34f0a19eb36aa0874/addons/scatterbox/Examples/pineTree_leaves.png -------------------------------------------------------------------------------- /addons/scatterbox/Examples/pineTree_leaves.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bqfgsww0lwu26" 6 | path.s3tc="res://.godot/imported/pineTree_leaves.png-df215c7d028c6291a641c54698691600.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://addons/scatterbox/Examples/pineTree_leaves.png" 15 | dest_files=["res://.godot/imported/pineTree_leaves.png-df215c7d028c6291a641c54698691600.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /addons/scatterbox/Examples/testTree.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=3 uid="uid://cnj1etk7x6rtj"] 2 | 3 | [ext_resource type="ArrayMesh" uid="uid://c82e6hpg6t5kw" path="res://addons/scatterbox/Examples/deadTree.obj" id="1_jxlrm"] 4 | 5 | [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_tqcty"] 6 | data = PackedVector3Array(0.2094, 0.0501, -0.1667, 0.1557, 0.8438, -0.095, 0.158, 0.0501, -0.2268, 0.1901, 0.0501, -0.0694, 0.1605, 0.8726, -0.0219, 0.2094, 0.0501, -0.1667, 0.0917, 0.0501, -0.0362, 0.068, 0.9504, 0.0461, 0.1901, 0.0501, -0.0694, -0.0008, 0.8454, 0.002, 0.0407, 0.0501, -0.066, 0.0094, 0.0501, -0.1363, 0.0577, 0.0501, -0.2279, -0.0122, 0.8823, -0.0923, 0.0094, 0.0501, -0.1363, -0.0585, 2.2904, 0.1566, 0.068, 0.9504, 0.0461, -0.0894, 2.3551, 0.1722, -0.0589, 1.9368, 0.0059, 0.0476, 0.8949, -0.1355, 0.1078, 0.8539, -0.1333, -0.007, 2.0166, 0.0978, 0.1605, 0.8726, -0.0219, -0.0585, 2.2904, 0.1566, -0.0894, 2.3551, 0.1722, 0.068, 0.9504, 0.0461, -0.1284, 2.2304, 0.1531, -0.1324, 1.9858, 0.0943, -0.0008, 0.8454, 0.002, -0.0122, 0.8823, -0.0923, -0.1044, 2.4951, 0.0667, -0.1403, 2.1367, 0.0697, -0.0589, 1.9368, 0.0059, -0.2159, 3.2856, 0.1751, -0.1324, 1.9858, 0.0943, -0.1403, 2.1367, 0.0697, -0.1727, 3.1713, 0.1175, -0.1403, 2.1367, 0.0697, -0.1044, 2.4951, 0.0667, -0.1727, 3.1713, 0.1175, -0.1044, 2.4951, 0.0667, -0.1257, 3.1894, 0.1341, -0.2196, 3.7852, 0.2456, -0.0894, 2.3551, 0.1722, -0.1284, 2.2304, 0.1531, -0.2053, 3.7862, 0.2005, -0.1257, 3.1894, 0.1341, -0.1907, 3.7872, 0.2316, -0.2342, 3.784, 0.2097, -0.2159, 3.2856, 0.1751, -0.1727, 3.1713, 0.1175, 0.3694, 1.3928, 0, 0.2398, 1.214, -0.0147, 0.2578, 1.2014, 0, 0.0959, 1.1057, 0.0121, 0.2578, 1.2014, 0, 0.0908, 1.111, -0.0148, -0.0619, 1.5014, -0.0002, -0.1273, 1.552, -0.1166, -0.144, 1.5272, -0.1213, 0.0959, 1.1057, 0.0121, 0.2394, 1.2223, 0.0119, 0.2578, 1.2014, 0, -0.0619, 1.5014, -0.0002, -0.144, 1.5272, -0.1213, -0.0844, 1.5087, 0.0144, 0.3694, 1.3928, 0, 0.2578, 1.2014, 0, 0.2394, 1.2223, 0.0119, -0.2001, 1.66, -0.2232, -0.1497, 1.5447, -0.1022, -0.144, 1.5272, -0.1213, 0.0908, 1.111, -0.0148, 0.2398, 1.214, -0.0147, 0.0766, 1.126, 0, 0.3694, 1.3928, 0, 0.2394, 1.2223, 0.0119, 0.2398, 1.214, -0.0147, -0.2001, 1.66, -0.2232, -0.144, 1.5272, -0.1213, -0.1273, 1.552, -0.1166, -0.0844, 1.5087, 0.0144, -0.1497, 1.5447, -0.1022, -0.0688, 1.5284, 0.0116, -0.0619, 1.5014, -0.0002, -0.0844, 1.5087, 0.0144, -0.0688, 1.5284, 0.0116, -0.2001, 1.66, -0.2232, -0.1273, 1.552, -0.1166, -0.1497, 1.5447, -0.1022, -0.2323, 3.0191, 0.4548, -0.1428, 2.9197, 0.1801, -0.2001, 2.9385, 0.2601, -0.2323, 3.0191, 0.4548, -0.2001, 2.9385, 0.2601, -0.1883, 2.9661, 0.2578, -0.1579, 2.943, 0.17, -0.1883, 2.9661, 0.2578, -0.2001, 2.9385, 0.2601, -0.2323, 3.0191, 0.4548, -0.1883, 2.9661, 0.2578, -0.1428, 2.9197, 0.1801, 0.3168, 2.2361, 0.6587, 0.1805, 2.0336, 0.4773, 0.1564, 2.0463, 0.4813, 0.3168, 2.2361, 0.6587, 0.1822, 2.0577, 0.4692, 0.1805, 2.0336, 0.4773, 0.0925, 1.9635, 0.297, 0.1822, 2.0577, 0.4692, 0.0721, 1.9712, 0.3036, 0.3168, 2.2361, 0.6587, 0.1564, 2.0463, 0.4813, 0.1822, 2.0577, 0.4692, 0.0721, 1.9712, 0.3036, 0.1564, 2.0463, 0.4813, 0.0646, 1.9505, 0.3066, 0.0407, 0.0501, -0.066, -0.0008, 0.8454, 0.002, 0.0917, 0.0501, -0.0362, 0.0917, 0.0501, -0.0362, -0.0008, 0.8454, 0.002, 0.068, 0.9504, 0.0461, 0.1557, 0.8438, -0.095, 0.1078, 0.8539, -0.1333, 0.158, 0.0501, -0.2268, 0.1605, 0.8726, -0.0219, 0.1557, 0.8438, -0.095, 0.2094, 0.0501, -0.1667, 0.068, 0.9504, 0.0461, 0.1605, 0.8726, -0.0219, 0.1901, 0.0501, -0.0694, 0.0577, 0.0501, -0.2279, 0.158, 0.0501, -0.2268, 0.0476, 0.8949, -0.1355, 0.0476, 0.8949, -0.1355, 0.158, 0.0501, -0.2268, 0.1078, 0.8539, -0.1333, -0.0008, 0.8454, 0.002, 0.0094, 0.0501, -0.1363, -0.0122, 0.8823, -0.0923, -0.0122, 0.8823, -0.0923, 0.0577, 0.0501, -0.2279, 0.0476, 0.8949, -0.1355, 0.0577, 0.0501, -0.2279, 0.0094, 0.0501, -0.1363, 0.158, 0.0501, -0.2268, 0.158, 0.0501, -0.2268, 0.0094, 0.0501, -0.1363, 0.2094, 0.0501, -0.1667, 0.2094, 0.0501, -0.1667, 0.0094, 0.0501, -0.1363, 0.1901, 0.0501, -0.0694, 0.1901, 0.0501, -0.0694, 0.0094, 0.0501, -0.1363, 0.0917, 0.0501, -0.0362, 0.0917, 0.0501, -0.0362, 0.0094, 0.0501, -0.1363, 0.0407, 0.0501, -0.066, -0.007, 2.0166, 0.0978, 0.0168, 1.7781, 0.0193, 0.1605, 0.8726, -0.0219, 0.1605, 0.8726, -0.0219, 0.0168, 1.7781, 0.0193, 0.1557, 0.8438, -0.095, -0.1324, 1.9858, 0.0943, -0.0122, 0.8823, -0.0923, -0.1403, 2.1367, 0.0697, -0.1284, 2.2304, 0.1531, -0.0008, 0.8454, 0.002, -0.1324, 1.9858, 0.0943, 0.0168, 1.7781, 0.0193, -0.0589, 1.9368, 0.0059, 0.1557, 0.8438, -0.095, 0.1557, 0.8438, -0.095, -0.0589, 1.9368, 0.0059, 0.1078, 0.8539, -0.1333, 0.0476, 0.8949, -0.1355, -0.0589, 1.9368, 0.0059, -0.0122, 0.8823, -0.0923, -0.0122, 0.8823, -0.0923, -0.0589, 1.9368, 0.0059, -0.1403, 2.1367, 0.0697, 0.1605, 0.8726, -0.0219, 0.068, 0.9504, 0.0461, -0.0585, 2.2904, 0.1566, 0.068, 0.9504, 0.0461, -0.0008, 0.8454, 0.002, -0.1284, 2.2304, 0.1531, -0.058, 2.4694, 0.0954, -0.1044, 2.4951, 0.0667, 0.0168, 1.7781, 0.0193, 0.0168, 1.7781, 0.0193, -0.1044, 2.4951, 0.0667, -0.0589, 1.9368, 0.0059, -0.1324, 1.9858, 0.0943, -0.2159, 3.2856, 0.1751, -0.1284, 2.2304, 0.1531, -0.1284, 2.2304, 0.1531, -0.2159, 3.2856, 0.1751, -0.2196, 3.7852, 0.2456, 0.0168, 1.7781, 0.0193, -0.007, 2.0166, 0.0978, -0.058, 2.4694, 0.0954, -0.1907, 3.7872, 0.2316, -0.0894, 2.3551, 0.1722, -0.2196, 3.7852, 0.2456, -0.1134, 3.1739, 0.175, -0.1257, 3.1894, 0.1341, -0.007, 2.0166, 0.0978, -0.007, 2.0166, 0.0978, -0.1257, 3.1894, 0.1341, -0.058, 2.4694, 0.0954, -0.1907, 3.7872, 0.2316, -0.1134, 3.1739, 0.175, -0.0585, 2.2904, 0.1566, -0.0585, 2.2904, 0.1566, -0.1134, 3.1739, 0.175, -0.007, 2.0166, 0.0978, -0.1907, 3.7872, 0.2316, -0.2196, 3.7852, 0.2456, -0.2053, 3.7862, 0.2005, -0.2053, 3.7862, 0.2005, -0.2196, 3.7852, 0.2456, -0.2342, 3.784, 0.2097, -0.2159, 3.2856, 0.1751, -0.1403, 2.1367, 0.0697, -0.1727, 3.1713, 0.1175, -0.0585, 2.2904, 0.1566, -0.0894, 2.3551, 0.1722, -0.1907, 3.7872, 0.2316, -0.1044, 2.4951, 0.0667, -0.058, 2.4694, 0.0954, -0.1257, 3.1894, 0.1341, 0.1822, 2.0577, 0.4692, 0.0925, 1.9635, 0.297, 0.1805, 2.0336, 0.4773, 0.1805, 2.0336, 0.4773, 0.0925, 1.9635, 0.297, 0.0876, 1.9456, 0.3098, -0.1727, 3.1713, 0.1175, -0.1257, 3.1894, 0.1341, -0.2053, 3.7862, 0.2005, -0.2342, 3.784, 0.2097, -0.1727, 3.1713, 0.1175, -0.2053, 3.7862, 0.2005, -0.1257, 3.1894, 0.1341, -0.1134, 3.1739, 0.175, -0.1907, 3.7872, 0.2316, -0.2196, 3.7852, 0.2456, -0.2159, 3.2856, 0.1751, -0.2342, 3.784, 0.2097, 0.2578, 1.2014, 0, 0.2398, 1.214, -0.0147, 0.0908, 1.111, -0.0148, 0.2398, 1.214, -0.0147, 0.2394, 1.2223, 0.0119, 0.0766, 1.126, 0, -0.144, 1.5272, -0.1213, -0.1497, 1.5447, -0.1022, -0.0844, 1.5087, 0.0144, 0.0959, 1.1057, 0.0121, 0.0908, 1.111, -0.0148, 0.0766, 1.126, 0, 0.0766, 1.126, 0, 0.2394, 1.2223, 0.0119, 0.0959, 1.1057, 0.0121, -0.1497, 1.5447, -0.1022, -0.1273, 1.552, -0.1166, -0.0688, 1.5284, 0.0116, -0.0688, 1.5284, 0.0116, -0.1273, 1.552, -0.1166, -0.0619, 1.5014, -0.0002, -0.1579, 2.943, 0.17, -0.2001, 2.9385, 0.2601, -0.1428, 2.9197, 0.1801, -0.1428, 2.9197, 0.1801, -0.1883, 2.9661, 0.2578, -0.1334, 2.947, 0.1748, -0.1334, 2.947, 0.1748, -0.1579, 2.943, 0.17, -0.1428, 2.9197, 0.1801, -0.1334, 2.947, 0.1748, -0.1883, 2.9661, 0.2578, -0.1579, 2.943, 0.17, 0.1805, 2.0336, 0.4773, 0.0876, 1.9456, 0.3098, 0.1564, 2.0463, 0.4813, 0.1564, 2.0463, 0.4813, 0.0876, 1.9456, 0.3098, 0.0646, 1.9505, 0.3066, -0.0327, 1.8832, 0.0708, -0.025, 1.9111, 0.0602, 0.0646, 1.9505, 0.3066, 0.0646, 1.9505, 0.3066, -0.025, 1.9111, 0.0602, 0.0721, 1.9712, 0.3036, -0.025, 1.9111, 0.0602, -0.0327, 1.8832, 0.0708, 0.0023, 1.8989, 0.0528, 0.0023, 1.8989, 0.0528, -0.0327, 1.8832, 0.0708, -0.0053, 1.871, 0.0635, 0.1822, 2.0577, 0.4692, 0.1564, 2.0463, 0.4813, 0.0721, 1.9712, 0.3036, 0.0721, 1.9712, 0.3036, -0.025, 1.9111, 0.0602, 0.0925, 1.9635, 0.297, 0.0925, 1.9635, 0.297, -0.025, 1.9111, 0.0602, 0.0023, 1.8989, 0.0528, 0.0023, 1.8989, 0.0528, -0.0053, 1.871, 0.0635, 0.0925, 1.9635, 0.297, 0.0925, 1.9635, 0.297, -0.0053, 1.871, 0.0635, 0.0876, 1.9456, 0.3098, 0.0876, 1.9456, 0.3098, -0.0053, 1.871, 0.0635, 0.0646, 1.9505, 0.3066, 0.0646, 1.9505, 0.3066, -0.0053, 1.871, 0.0635, -0.0327, 1.8832, 0.0708, -0.1993, 1.0995, 0.0997, -0.094, 0.9531, 0.0307, -0.1138, 0.937, 0.0238, 0.012, 0.8735, -0.0477, -0.1138, 0.937, 0.0238, 0.0245, 0.8829, -0.0247, 0.012, 0.8735, -0.0477, -0.1047, 0.9597, 0.0059, -0.1138, 0.937, 0.0238, -0.1993, 1.0995, 0.0997, -0.1138, 0.937, 0.0238, -0.1047, 0.9597, 0.0059, 0.0245, 0.8829, -0.0247, -0.094, 0.9531, 0.0307, 0.0275, 0.8994, -0.0437, -0.1993, 1.0995, 0.0997, -0.1047, 0.9597, 0.0059, -0.094, 0.9531, 0.0307, -0.1138, 0.937, 0.0238, -0.094, 0.9531, 0.0307, 0.0245, 0.8829, -0.0247, -0.094, 0.9531, 0.0307, -0.1047, 0.9597, 0.0059, 0.0275, 0.8994, -0.0437, 0.012, 0.8735, -0.0477, 0.0245, 0.8829, -0.0247, 0.0275, 0.8994, -0.0437, 0.0275, 0.8994, -0.0437, -0.1047, 0.9597, 0.0059, 0.012, 0.8735, -0.0477, -0.0643, 3.3026, -0.1389, -0.1556, 3.1622, 0.1423, -0.1115, 3.1708, 0.0402, -0.0643, 3.3026, -0.1389, -0.1115, 3.1708, 0.0402, -0.1092, 3.2004, 0.0453, -0.1305, 3.1753, 0.1509, -0.1092, 3.2004, 0.0453, -0.1115, 3.1708, 0.0402, -0.0643, 3.3026, -0.1389, -0.1092, 3.2004, 0.0453, -0.1556, 3.1622, 0.1423, -0.1305, 3.1753, 0.1509, -0.1115, 3.1708, 0.0402, -0.1556, 3.1622, 0.1423, -0.1556, 3.1622, 0.1423, -0.1092, 3.2004, 0.0453, -0.1509, 3.1902, 0.1501, -0.1509, 3.1902, 0.1501, -0.1305, 3.1753, 0.1509, -0.1556, 3.1622, 0.1423, -0.1509, 3.1902, 0.1501, -0.1092, 3.2004, 0.0453, -0.1305, 3.1753, 0.1509) 7 | 8 | [node name="StaticBody3D" type="StaticBody3D"] 9 | 10 | [node name="CollisionShape3D" type="CollisionShape3D" parent="."] 11 | shape = SubResource("ConcavePolygonShape3D_tqcty") 12 | 13 | [node name="DeadTree" type="MeshInstance3D" parent="."] 14 | mesh = ExtResource("1_jxlrm") 15 | skeleton = NodePath("") 16 | -------------------------------------------------------------------------------- /addons/scatterbox/Examples/testTree2.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=7 format=3 uid="uid://cpdyf5361hxrn"] 2 | 3 | [ext_resource type="ArrayMesh" uid="uid://cphvxowdhpyxs" path="res://addons/scatterbox/Examples/tree1.obj" id="1_8gvpx"] 4 | [ext_resource type="Texture2D" uid="uid://kb2d8t6b5408" path="res://addons/scatterbox/Examples/pineTree_bark.png" id="2_p6i4n"] 5 | [ext_resource type="Texture2D" uid="uid://bqfgsww0lwu26" path="res://addons/scatterbox/Examples/pineTree_leaves.png" id="3_h31vm"] 6 | 7 | [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_2n1x2"] 8 | data = PackedVector3Array(0, 1.2628, -0.5613, 0, 0, -0.7344, 0.4861, 1.2628, -0.2806, 0.4861, 1.2628, -0.2806, 0, 0, -0.7344, 0.636, 0, -0.3672, 0.4861, 1.2628, -0.2806, 0.636, 0, -0.3672, 0.4861, 1.2628, 0.2806, 0.4861, 1.2628, 0.2806, 0.636, 0, -0.3672, 0.636, 0, 0.3672, 0.4861, 1.2628, 0.2806, 0.636, 0, 0.3672, 0, 1.2628, 0.5613, 0, 1.2628, 0.5613, 0.636, 0, 0.3672, 0, 0, 0.7344, -0.4861, 1.2628, 0.2806, 0, 0, 0.7344, -0.636, 0, 0.3672, -0.4861, 1.2628, 0.2806, -0.636, 0, 0.3672, -0.4861, 1.2628, -0.2806, -0.4861, 1.2628, -0.2806, -0.636, 0, 0.3672, -0.636, 0, -0.3672, -0.4861, 1.2628, -0.2806, -0.636, 0, -0.3672, 0, 1.2628, -0.5613, 0, 1.2628, -0.5613, -0.636, 0, -0.3672, 0, 0, -0.7344, 0, 0, -0.7344, -0.636, 0, -0.3672, 0.636, 0, -0.3672, 0.636, 0, 0.3672, 0.636, 0, -0.3672, 0, 0, 0.7344, -0.636, 0, 0.3672, 0, 0, 0.7344, -0.636, 0, -0.3672, 0, 0, 0.7344, 0.636, 0, -0.3672, -0.636, 0, -0.3672, -0.0697, 2.8624, -0.163, 0.2126, 2.8624, -0.326, -0.0216, 4.4887, -0.0754, -0.0216, 4.4887, -0.0754, 0.2126, 2.8624, -0.326, 0.1089, 4.4887, -0.1508, -0.4861, 1.2628, 0.2806, -0.4861, 1.2628, -0.2806, -0.0697, 2.8624, 0.163, -0.0697, 2.8624, 0.163, -0.4861, 1.2628, -0.2806, -0.0697, 2.8624, -0.163, 0, 1.2628, -0.5613, 0.4861, 1.2628, -0.2806, 0.2126, 2.8624, -0.326, 0.2126, 2.8624, -0.326, 0.4861, 1.2628, -0.2806, 0.495, 2.8624, -0.163, 0.4861, 1.2628, 0.2806, 0, 1.2628, 0.5613, 0.495, 2.8624, 0.163, 0.495, 2.8624, 0.163, 0, 1.2628, 0.5613, 0.2126, 2.8624, 0.326, -0.0697, 2.8624, -0.163, 0, 1.2628, -0.5613, 0.2126, 2.8624, -0.326, 0, 1.2628, 0.5613, -0.4861, 1.2628, 0.2806, 0.2126, 2.8624, 0.326, 0.2126, 2.8624, 0.326, -0.4861, 1.2628, 0.2806, -0.0697, 2.8624, 0.163, 0.2126, 2.8624, 0.326, -0.0697, 2.8624, 0.163, 0.1089, 4.4887, 0.1508, 0.1089, 4.4887, 0.1508, -0.0697, 2.8624, 0.163, -0.0216, 4.4887, 0.0754, 0.495, 2.8624, -0.163, 0.495, 2.8624, 0.163, 0.2395, 4.4887, -0.0754, 0.2395, 4.4887, -0.0754, 0.495, 2.8624, 0.163, 0.2395, 4.4887, 0.0754, -0.0216, 4.4887, 0.0754, -0.0697, 2.8624, -0.163, -0.0216, 4.4887, -0.0754, 0.495, 2.8624, 0.163, 0.2126, 2.8624, 0.326, 0.2395, 4.4887, 0.0754, 0.2395, 4.4887, 0.0754, 0.2126, 2.8624, 0.326, 0.1089, 4.4887, 0.1508, 0.2126, 2.8624, -0.326, 0.495, 2.8624, -0.163, 0.1089, 4.4887, -0.1508, 0.1089, 4.4887, -0.1508, 0.495, 2.8624, -0.163, 0.2395, 4.4887, -0.0754, -0.0216, 4.4887, 0.0754, -0.0216, 4.4887, -0.0754, 0.1139, 6.3394, -0.0553, 0.2395, 4.4887, 0.0754, 0.1089, 4.4887, 0.1508, 0.1139, 6.3394, -0.0553, 0.1089, 4.4887, -0.1508, 0.2395, 4.4887, -0.0754, 0.1139, 6.3394, -0.0553, 0, 1.2628, 0.5613, 0, 0, 0.7344, -0.4861, 1.2628, 0.2806, 0.4861, 1.2628, -0.2806, 0.4861, 1.2628, 0.2806, 0.495, 2.8624, -0.163, 0.495, 2.8624, -0.163, 0.4861, 1.2628, 0.2806, 0.495, 2.8624, 0.163, -0.4861, 1.2628, -0.2806, 0, 1.2628, -0.5613, -0.0697, 2.8624, -0.163, -0.0216, 4.4887, -0.0754, 0.1089, 4.4887, -0.1508, 0.1139, 6.3394, -0.0553, -0.0697, 2.8624, 0.163, -0.0697, 2.8624, -0.163, -0.0216, 4.4887, 0.0754, 0.1089, 4.4887, 0.1508, -0.0216, 4.4887, 0.0754, 0.1139, 6.3394, -0.0553, 0.2395, 4.4887, -0.0754, 0.2395, 4.4887, 0.0754, 0.1139, 6.3394, -0.0553, 0.0794, 4.7027, 0, 0.0794, 1.6028, -1.55, 1.4217, 1.6028, -0.775, 0.0794, 4.7027, 0, 0.0794, 1.6028, 1.55, -1.2629, 1.6028, 0.775, 0.0794, 1.6028, -1.55, -1.2629, 1.6028, -0.775, 1.4217, 1.6028, -0.775, 1.4217, 1.6028, 0.775, 1.4217, 1.6028, -0.775, 0.0794, 1.6028, 1.55, -1.2629, 1.6028, 0.775, 0.0794, 1.6028, 1.55, -1.2629, 1.6028, -0.775, 0.0794, 1.6028, 1.55, 1.4217, 1.6028, -0.775, -1.2629, 1.6028, -0.775, 0.0794, 4.7027, 0, -1.2629, 1.6028, 0.775, -1.2629, 1.6028, -0.775, 0.0794, 4.7027, 0, -1.2629, 1.6028, -0.775, 0.0794, 1.6028, -1.55, 0.1077, 6.4566, -0.0747, 0.1077, 5.6327, -0.4866, 0.4645, 5.6327, -0.2806, 0.1077, 6.4566, -0.0747, 0.4645, 5.6327, -0.2806, 0.4645, 5.6327, 0.1313, 0.1077, 6.4566, -0.0747, 0.4645, 5.6327, 0.1313, 0.1077, 5.6327, 0.3373, 0.1077, 6.4566, -0.0747, 0.1077, 5.6327, 0.3373, -0.249, 5.6327, 0.1313, 0.1077, 5.6327, -0.4866, -0.249, 5.6327, -0.2806, 0.4645, 5.6327, -0.2806, 0.4645, 5.6327, 0.1313, 0.4645, 5.6327, -0.2806, 0.1077, 5.6327, 0.3373, -0.249, 5.6327, 0.1313, 0.1077, 5.6327, 0.3373, -0.249, 5.6327, -0.2806, 0.1077, 5.6327, 0.3373, 0.4645, 5.6327, -0.2806, -0.249, 5.6327, -0.2806, 0.1077, 6.4566, -0.0747, -0.249, 5.6327, -0.2806, 0.1077, 5.6327, -0.4866, 0.1361, 6.2715, -0.0614, 0.1361, 4.8879, -0.7532, 0.7352, 4.8879, -0.4073, 0.1361, 6.2715, -0.0614, 0.7352, 4.8879, -0.4073, 0.7352, 4.8879, 0.2845, 0.1361, 6.2715, -0.0614, 0.7352, 4.8879, 0.2845, 0.1361, 4.8879, 0.6303, 0.1361, 6.2715, -0.0614, 0.1361, 4.8879, 0.6303, -0.463, 4.8879, 0.2845, 0.1361, 4.8879, -0.7532, -0.463, 4.8879, -0.4073, 0.7352, 4.8879, -0.4073, 0.7352, 4.8879, 0.2845, 0.7352, 4.8879, -0.4073, 0.1361, 4.8879, 0.6303, -0.463, 4.8879, 0.2845, 0.1361, 4.8879, 0.6303, -0.463, 4.8879, -0.4073, 0.1361, 4.8879, 0.6303, 0.7352, 4.8879, -0.4073, -0.463, 4.8879, -0.4073, 0.1361, 6.2715, -0.0614, -0.463, 4.8879, 0.2845, -0.463, 4.8879, -0.4073, 0.1361, 6.2715, -0.0614, -0.463, 4.8879, -0.4073, 0.1361, 4.8879, -0.7532, 0.1455, 5.9304, -0.1125, 1.0288, 3.8907, -0.6224, 1.0288, 3.8907, 0.3975, 0.1455, 5.9304, -0.1125, 1.0288, 3.8907, 0.3975, 0.1455, 3.8907, 0.9074, 0.1455, 5.9304, -0.1125, 0.1455, 3.8907, 0.9074, -0.7377, 3.8907, 0.3975, 0.1455, 3.8907, -1.1323, -0.7377, 3.8907, -0.6224, 1.0288, 3.8907, -0.6224, 1.0288, 3.8907, 0.3975, 1.0288, 3.8907, -0.6224, 0.1455, 3.8907, 0.9074, -0.7377, 3.8907, 0.3975, 0.1455, 3.8907, 0.9074, -0.7377, 3.8907, -0.6224, 0.1455, 3.8907, 0.9074, 1.0288, 3.8907, -0.6224, -0.7377, 3.8907, -0.6224, 0.1455, 5.9304, -0.1125, -0.7377, 3.8907, -0.6224, 0.1455, 3.8907, -1.1323, 0.1172, 5.4459, -0.0473, 0.1172, 2.8556, -1.3424, 1.2388, 2.8556, -0.6948, 0.1172, 5.4459, -0.0473, 1.2388, 2.8556, -0.6948, 1.2388, 2.8556, 0.6003, 0.1172, 5.4459, -0.0473, 1.2388, 2.8556, 0.6003, 0.1172, 2.8556, 1.2479, 0.1172, 5.4459, -0.0473, 0.1172, 2.8556, 1.2479, -1.0045, 2.8556, 0.6003, 0.1172, 2.8556, -1.3424, -1.0045, 2.8556, -0.6948, 1.2388, 2.8556, -0.6948, 1.2388, 2.8556, 0.6003, 1.2388, 2.8556, -0.6948, 0.1172, 2.8556, 1.2479, -1.0045, 2.8556, 0.6003, 0.1172, 2.8556, 1.2479, -1.0045, 2.8556, -0.6948, 0.1172, 2.8556, 1.2479, 1.2388, 2.8556, -0.6948, -1.0045, 2.8556, -0.6948, 0.1172, 5.4459, -0.0473, -1.0045, 2.8556, 0.6003, -1.0045, 2.8556, -0.6948, 0.0794, 4.7027, 0, 1.4217, 1.6028, -0.775, 1.4217, 1.6028, 0.775, 0.0794, 4.7027, 0, 1.4217, 1.6028, 0.775, 0.0794, 1.6028, 1.55, 0.1077, 6.4566, -0.0747, -0.249, 5.6327, 0.1313, -0.249, 5.6327, -0.2806, 0.1455, 5.9304, -0.1125, 0.1455, 3.8907, -1.1323, 1.0288, 3.8907, -0.6224, 0.1455, 5.9304, -0.1125, -0.7377, 3.8907, 0.3975, -0.7377, 3.8907, -0.6224, 0.1172, 5.4459, -0.0473, -1.0045, 2.8556, -0.6948, 0.1172, 2.8556, -1.3424) 9 | 10 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_6tr7i"] 11 | albedo_texture = ExtResource("2_p6i4n") 12 | 13 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_10tgd"] 14 | albedo_texture = ExtResource("3_h31vm") 15 | 16 | [node name="StaticBody3D" type="StaticBody3D"] 17 | 18 | [node name="CollisionShape3D" type="CollisionShape3D" parent="."] 19 | shape = SubResource("ConcavePolygonShape3D_2n1x2") 20 | 21 | [node name="Tree1" type="MeshInstance3D" parent="."] 22 | mesh = ExtResource("1_8gvpx") 23 | skeleton = NodePath("") 24 | surface_material_override/0 = SubResource("StandardMaterial3D_6tr7i") 25 | surface_material_override/1 = SubResource("StandardMaterial3D_10tgd") 26 | -------------------------------------------------------------------------------- /addons/scatterbox/Examples/tree1.obj: -------------------------------------------------------------------------------- 1 | # Blender v2.91.0 OBJ File: '' 2 | # www.blender.org 3 | mtllib tree1.mtl 4 | o Cylinder 5 | v -0.000000 0.000000 -0.734358 6 | v -0.000000 0.000000 -0.734358 7 | v -0.000000 0.000000 -0.734358 8 | v -0.000000 1.262846 -0.561260 9 | v -0.000000 1.262846 -0.561260 10 | v -0.000000 1.262846 -0.561260 11 | v -0.000000 1.262846 -0.561260 12 | v 0.635972 0.000000 -0.367179 13 | v 0.635972 0.000000 -0.367179 14 | v 0.635972 0.000000 -0.367179 15 | v 0.486066 1.262846 -0.280630 16 | v 0.486066 1.262846 -0.280630 17 | v 0.486066 1.262846 -0.280630 18 | v 0.486066 1.262846 -0.280630 19 | v 0.635972 0.000000 0.367179 20 | v 0.635972 0.000000 0.367179 21 | v 0.635972 0.000000 0.367179 22 | v 0.486066 1.262846 0.280630 23 | v 0.486066 1.262846 0.280630 24 | v 0.486066 1.262846 0.280630 25 | v 0.486066 1.262846 0.280630 26 | v -0.000000 0.000000 0.734358 27 | v -0.000000 0.000000 0.734358 28 | v -0.000000 0.000000 0.734358 29 | v -0.000000 1.262846 0.561260 30 | v -0.000000 1.262846 0.561260 31 | v -0.000000 1.262846 0.561260 32 | v -0.000000 1.262846 0.561260 33 | v -0.635972 0.000000 0.367179 34 | v -0.635972 0.000000 0.367179 35 | v -0.635972 0.000000 0.367179 36 | v -0.486066 1.262846 0.280630 37 | v -0.486066 1.262846 0.280630 38 | v -0.486066 1.262846 0.280630 39 | v -0.486066 1.262846 0.280630 40 | v -0.635972 0.000000 -0.367179 41 | v -0.635972 0.000000 -0.367179 42 | v -0.635972 0.000000 -0.367179 43 | v -0.486066 1.262846 -0.280630 44 | v -0.486066 1.262846 -0.280630 45 | v -0.486066 1.262846 -0.280630 46 | v -0.486066 1.262846 -0.280630 47 | v 0.212641 2.862376 -0.326002 48 | v 0.212641 2.862376 -0.326002 49 | v 0.212641 2.862376 -0.326002 50 | v 0.212641 2.862376 -0.326002 51 | v 0.494966 2.862376 -0.163001 52 | v 0.494966 2.862376 -0.163001 53 | v 0.494966 2.862376 -0.163001 54 | v 0.494966 2.862376 -0.163001 55 | v 0.494966 2.862376 0.163001 56 | v 0.494966 2.862376 0.163001 57 | v 0.494966 2.862376 0.163001 58 | v 0.494966 2.862376 0.163001 59 | v 0.212641 2.862376 0.326002 60 | v 0.212641 2.862376 0.326002 61 | v 0.212641 2.862376 0.326002 62 | v 0.212641 2.862376 0.326002 63 | v -0.069685 2.862376 0.163001 64 | v -0.069685 2.862376 0.163001 65 | v -0.069685 2.862376 0.163001 66 | v -0.069685 2.862376 0.163001 67 | v -0.069685 2.862376 -0.163001 68 | v -0.069685 2.862376 -0.163001 69 | v -0.069685 2.862376 -0.163001 70 | v -0.069685 2.862376 -0.163001 71 | v 0.108945 4.488683 -0.150767 72 | v 0.108945 4.488683 -0.150767 73 | v 0.108945 4.488683 -0.150767 74 | v 0.108945 4.488683 -0.150767 75 | v 0.239513 4.488683 -0.075383 76 | v 0.239513 4.488683 -0.075383 77 | v 0.239513 4.488683 -0.075383 78 | v 0.239513 4.488683 -0.075383 79 | v 0.239513 4.488683 0.075384 80 | v 0.239513 4.488683 0.075384 81 | v 0.239513 4.488683 0.075384 82 | v 0.239513 4.488683 0.075384 83 | v 0.108945 4.488683 0.150767 84 | v 0.108945 4.488683 0.150767 85 | v 0.108945 4.488683 0.150767 86 | v 0.108945 4.488683 0.150767 87 | v -0.021622 4.488683 0.075384 88 | v -0.021622 4.488683 0.075384 89 | v -0.021622 4.488683 0.075384 90 | v -0.021622 4.488683 0.075384 91 | v -0.021622 4.488683 -0.075383 92 | v -0.021622 4.488683 -0.075383 93 | v -0.021622 4.488683 -0.075383 94 | v -0.021622 4.488683 -0.075383 95 | v 0.113925 6.339444 -0.055332 96 | v 0.113925 6.339444 -0.055332 97 | v 0.113925 6.339444 -0.055332 98 | v 0.113925 6.339444 -0.055332 99 | v 0.113925 6.339444 -0.055332 100 | v 0.113925 6.339444 -0.055332 101 | v 0.079386 1.602794 -1.549958 102 | v 0.079386 1.602794 -1.549958 103 | v 0.079386 1.602794 -1.549958 104 | v 1.421689 1.602794 -0.774979 105 | v 1.421689 1.602794 -0.774979 106 | v 1.421689 1.602794 -0.774979 107 | v 1.421689 1.602794 0.774979 108 | v 1.421689 1.602794 0.774979 109 | v 1.421689 1.602794 0.774979 110 | v 0.079386 1.602794 1.549958 111 | v 0.079386 1.602794 1.549958 112 | v 0.079386 1.602794 1.549958 113 | v -1.262917 1.602794 0.774979 114 | v -1.262917 1.602794 0.774979 115 | v -1.262917 1.602794 0.774979 116 | v -1.262917 1.602794 -0.774979 117 | v -1.262917 1.602794 -0.774979 118 | v -1.262917 1.602794 -0.774979 119 | v 0.079386 4.702710 0.000000 120 | v 0.079386 4.702710 0.000000 121 | v 0.079386 4.702710 0.000000 122 | v 0.079386 4.702710 0.000000 123 | v 0.079386 4.702710 0.000000 124 | v 0.079386 4.702710 0.000000 125 | v 0.107738 5.632703 -0.486622 126 | v 0.107738 5.632703 -0.486622 127 | v 0.107738 5.632703 -0.486622 128 | v 0.464507 5.632703 -0.280641 129 | v 0.464507 5.632703 -0.280641 130 | v 0.464507 5.632703 -0.280641 131 | v 0.464507 5.632703 0.131320 132 | v 0.464507 5.632703 0.131320 133 | v 0.464507 5.632703 0.131320 134 | v 0.107738 5.632703 0.337301 135 | v 0.107738 5.632703 0.337301 136 | v 0.107738 5.632703 0.337301 137 | v -0.249031 5.632703 0.131320 138 | v -0.249031 5.632703 0.131320 139 | v -0.249031 5.632703 0.131320 140 | v -0.249031 5.632703 -0.280641 141 | v -0.249031 5.632703 -0.280641 142 | v -0.249031 5.632703 -0.280641 143 | v 0.107738 6.456626 -0.074660 144 | v 0.107738 6.456626 -0.074660 145 | v 0.107738 6.456626 -0.074660 146 | v 0.107738 6.456626 -0.074660 147 | v 0.107738 6.456626 -0.074660 148 | v 0.107738 6.456626 -0.074660 149 | v 0.136090 4.887925 -0.753195 150 | v 0.136090 4.887925 -0.753195 151 | v 0.136090 4.887925 -0.753195 152 | v 0.735177 4.887925 -0.407312 153 | v 0.735177 4.887925 -0.407312 154 | v 0.735177 4.887925 -0.407312 155 | v 0.735176 4.887925 0.284453 156 | v 0.735176 4.887925 0.284453 157 | v 0.735176 4.887925 0.284453 158 | v 0.136090 4.887925 0.630336 159 | v 0.136090 4.887925 0.630336 160 | v 0.136090 4.887925 0.630336 161 | v -0.462996 4.887925 0.284453 162 | v -0.462996 4.887925 0.284453 163 | v -0.462996 4.887925 0.284453 164 | v -0.462996 4.887925 -0.407312 165 | v -0.462996 4.887925 -0.407312 166 | v -0.462996 4.887925 -0.407312 167 | v 0.136090 6.271456 -0.061429 168 | v 0.136090 6.271456 -0.061429 169 | v 0.136090 6.271456 -0.061429 170 | v 0.136090 6.271456 -0.061429 171 | v 0.136090 6.271456 -0.061429 172 | v 0.136090 6.271456 -0.061429 173 | v 0.145541 3.890728 -1.132317 174 | v 0.145541 3.890728 -1.132317 175 | v 0.145541 3.890728 -1.132317 176 | v 1.028760 3.890728 -0.622390 177 | v 1.028760 3.890728 -0.622390 178 | v 1.028760 3.890728 -0.622390 179 | v 1.028760 3.890728 0.397464 180 | v 1.028760 3.890728 0.397464 181 | v 1.028760 3.890728 0.397464 182 | v 0.145541 3.890728 0.907390 183 | v 0.145541 3.890728 0.907390 184 | v 0.145541 3.890728 0.907390 185 | v -0.737679 3.890728 0.397464 186 | v -0.737679 3.890728 0.397464 187 | v -0.737679 3.890728 0.397464 188 | v -0.737679 3.890728 -0.622390 189 | v -0.737679 3.890728 -0.622390 190 | v -0.737679 3.890728 -0.622390 191 | v 0.145541 5.930435 -0.112463 192 | v 0.145541 5.930435 -0.112463 193 | v 0.145541 5.930435 -0.112463 194 | v 0.145541 5.930435 -0.112463 195 | v 0.145541 5.930435 -0.112463 196 | v 0.145541 5.930435 -0.112463 197 | v 0.117189 2.855582 -1.342417 198 | v 0.117189 2.855582 -1.342417 199 | v 0.117189 2.855582 -1.342417 200 | v 1.238833 2.855582 -0.694835 201 | v 1.238833 2.855582 -0.694835 202 | v 1.238833 2.855582 -0.694835 203 | v 1.238833 2.855582 0.600328 204 | v 1.238833 2.855582 0.600328 205 | v 1.238833 2.855582 0.600328 206 | v 0.117189 2.855582 1.247910 207 | v 0.117189 2.855582 1.247910 208 | v 0.117189 2.855582 1.247910 209 | v -1.004456 2.855582 0.600328 210 | v -1.004456 2.855582 0.600328 211 | v -1.004456 2.855582 0.600328 212 | v -1.004456 2.855582 -0.694835 213 | v -1.004456 2.855582 -0.694835 214 | v -1.004456 2.855582 -0.694835 215 | v 0.117189 5.445909 -0.047253 216 | v 0.117189 5.445909 -0.047253 217 | v 0.117189 5.445909 -0.047253 218 | v 0.117189 5.445909 -0.047253 219 | v 0.117189 5.445909 -0.047253 220 | v 0.117189 5.445909 -0.047253 221 | vt 0.478568 0.024528 222 | vt 0.478568 0.420427 223 | vt 0.630949 0.420427 224 | vt 0.677944 0.024528 225 | vt 0.623948 0.024528 226 | vt 0.596815 0.420427 227 | vt 0.420861 0.420427 228 | vt 0.393728 0.024528 229 | vt 0.677944 0.024528 230 | vt 0.630949 0.420427 231 | vt 0.478568 0.420427 232 | vt 0.478568 0.024528 233 | vt 0.478568 0.024528 234 | vt 0.326188 0.420427 235 | vt 0.279193 0.024528 236 | vt 0.393728 0.024528 237 | vt 0.420861 0.420427 238 | vt 0.596815 0.420427 239 | vt 0.623948 0.024528 240 | vt 0.279193 0.024528 241 | vt 0.326188 0.420427 242 | vt 0.478568 0.420427 243 | vt 0.478568 0.024528 244 | vt 0.279193 1.003023 245 | vt 0.478568 1.118132 246 | vt 0.677944 1.003023 247 | vt 0.677944 0.772803 248 | vt 0.478568 0.657693 249 | vt 0.279193 0.772803 250 | vt 0.545231 0.921876 251 | vt 0.456722 0.921876 252 | vt 0.471790 1.431719 253 | vt 0.512723 1.431719 254 | vt 0.596815 0.420427 255 | vt 0.420861 0.420427 256 | vt 0.457738 0.921876 257 | vt 0.559939 0.921876 258 | vt 0.630949 0.420427 259 | vt 0.478568 0.420427 260 | vt 0.545231 0.921876 261 | vt 0.633739 0.921876 262 | vt 0.478568 0.420427 263 | vt 0.630949 0.420427 264 | vt 0.633739 0.921876 265 | vt 0.545231 0.921876 266 | vt 0.478568 0.420427 267 | vt 0.456722 0.921876 268 | vt 0.545231 0.921876 269 | vt 0.326188 0.420427 270 | vt 0.478568 0.420427 271 | vt 0.545231 0.921876 272 | vt 0.456722 0.921876 273 | vt 0.456722 0.921876 274 | vt 0.545231 0.921876 275 | vt 0.512723 1.431719 276 | vt 0.471790 1.431719 277 | vt 0.457738 0.921876 278 | vt 0.559939 0.921876 279 | vt 0.532471 1.431719 280 | vt 0.485206 1.431719 281 | vt 0.559939 0.921876 282 | vt 0.485206 1.431719 283 | vt 0.532471 1.431719 284 | vt 0.545231 0.921876 285 | vt 0.633739 0.921876 286 | vt 0.553655 1.431719 287 | vt 0.512723 1.431719 288 | vt 0.633739 0.921876 289 | vt 0.545231 0.921876 290 | vt 0.512723 1.431719 291 | vt 0.553655 1.431719 292 | vt 0.532471 1.431719 293 | vt 0.485206 1.431719 294 | vt 0.508838 2.011929 295 | vt 0.512723 1.431719 296 | vt 0.553655 1.431719 297 | vt 0.537412 2.011929 298 | vt 0.553655 1.431719 299 | vt 0.512723 1.431719 300 | vt 0.537412 2.011929 301 | vt 0.478568 0.420427 302 | vt 0.420861 0.420427 303 | vt 0.596815 0.420427 304 | vt 0.559939 0.921876 305 | vt 0.457738 0.921876 306 | vt 0.326188 0.420427 307 | vt 0.512723 1.431719 308 | vt 0.471790 1.431719 309 | vt 0.537412 2.011929 310 | vt 0.457738 0.921876 311 | vt 0.471790 1.431719 312 | vt 0.512723 1.431719 313 | vt 0.537412 2.011929 314 | vt 0.485206 1.431719 315 | vt 0.532471 1.431719 316 | vt 0.508838 2.011929 317 | vt 0.250000 0.490000 318 | vt 0.250000 0.250000 319 | vt 0.457846 0.370000 320 | vt 0.250000 0.010000 321 | vt 0.250000 0.250000 322 | vt 0.042154 0.130000 323 | vt 0.542154 0.370000 324 | vt 0.750000 0.490000 325 | vt 0.957846 0.370000 326 | vt 0.957846 0.130000 327 | vt 0.750000 0.010000 328 | vt 0.542154 0.130000 329 | vt 0.042154 0.130000 330 | vt 0.250000 0.250000 331 | vt 0.042154 0.370000 332 | vt 0.042154 0.370000 333 | vt 0.250000 0.250000 334 | vt 0.250000 0.490000 335 | vt 0.250000 0.490000 336 | vt 0.250000 0.250000 337 | vt 0.457846 0.370000 338 | vt 0.457846 0.370000 339 | vt 0.250000 0.250000 340 | vt 0.457846 0.130000 341 | vt 0.457846 0.130000 342 | vt 0.250000 0.250000 343 | vt 0.250000 0.010000 344 | vt 0.250000 0.010000 345 | vt 0.250000 0.250000 346 | vt 0.042154 0.130000 347 | vt 0.542154 0.370000 348 | vt 0.750000 0.490000 349 | vt 0.957846 0.370000 350 | vt 0.957846 0.130000 351 | vt 0.750000 0.010000 352 | vt 0.542154 0.130000 353 | vt 0.042154 0.370000 354 | vt 0.250000 0.250000 355 | vt 0.250000 0.490000 356 | vt 0.250000 0.490000 357 | vt 0.250000 0.250000 358 | vt 0.457846 0.370000 359 | vt 0.457846 0.370000 360 | vt 0.250000 0.250000 361 | vt 0.457846 0.130000 362 | vt 0.457846 0.130000 363 | vt 0.250000 0.250000 364 | vt 0.250000 0.010000 365 | vt 0.250000 0.010000 366 | vt 0.250000 0.250000 367 | vt 0.042154 0.130000 368 | vt 0.542154 0.370000 369 | vt 0.750000 0.490000 370 | vt 0.957846 0.370000 371 | vt 0.957846 0.130000 372 | vt 0.750000 0.010000 373 | vt 0.542154 0.130000 374 | vt 0.042154 0.130000 375 | vt 0.250000 0.250000 376 | vt 0.042154 0.370000 377 | vt 0.042154 0.370000 378 | vt 0.250000 0.250000 379 | vt 0.250000 0.490000 380 | vt 0.457846 0.370000 381 | vt 0.250000 0.250000 382 | vt 0.457846 0.130000 383 | vt 0.457846 0.130000 384 | vt 0.250000 0.250000 385 | vt 0.250000 0.010000 386 | vt 0.250000 0.010000 387 | vt 0.250000 0.250000 388 | vt 0.042154 0.130000 389 | vt 0.542154 0.370000 390 | vt 0.750000 0.490000 391 | vt 0.957846 0.370000 392 | vt 0.957846 0.130000 393 | vt 0.750000 0.010000 394 | vt 0.542154 0.130000 395 | vt 0.042154 0.370000 396 | vt 0.250000 0.250000 397 | vt 0.250000 0.490000 398 | vt 0.250000 0.490000 399 | vt 0.250000 0.250000 400 | vt 0.457846 0.370000 401 | vt 0.457846 0.370000 402 | vt 0.250000 0.250000 403 | vt 0.457846 0.130000 404 | vt 0.457846 0.130000 405 | vt 0.250000 0.250000 406 | vt 0.250000 0.010000 407 | vt 0.250000 0.010000 408 | vt 0.250000 0.250000 409 | vt 0.042154 0.130000 410 | vt 0.542154 0.370000 411 | vt 0.750000 0.490000 412 | vt 0.957846 0.370000 413 | vt 0.957846 0.130000 414 | vt 0.750000 0.010000 415 | vt 0.542154 0.130000 416 | vt 0.042154 0.130000 417 | vt 0.250000 0.250000 418 | vt 0.042154 0.370000 419 | vt 0.457846 0.370000 420 | vt 0.250000 0.250000 421 | vt 0.457846 0.130000 422 | vt 0.457846 0.130000 423 | vt 0.250000 0.250000 424 | vt 0.250000 0.010000 425 | vt 0.042154 0.130000 426 | vt 0.250000 0.250000 427 | vt 0.042154 0.370000 428 | vt 0.250000 0.490000 429 | vt 0.250000 0.250000 430 | vt 0.457846 0.370000 431 | vt 0.042154 0.130000 432 | vt 0.250000 0.250000 433 | vt 0.042154 0.370000 434 | vt 0.042154 0.370000 435 | vt 0.250000 0.250000 436 | vt 0.250000 0.490000 437 | vn 0.4965 0.1179 -0.8600 438 | vn 0.9930 0.1179 0.0000 439 | vn 0.4965 0.1179 0.8600 440 | vn -0.4965 0.1179 0.8600 441 | vn -0.9930 0.1179 0.0000 442 | vn -0.4965 0.1179 -0.8600 443 | vn 0.0000 -1.0000 0.0000 444 | vn -0.4991 0.0613 -0.8644 445 | vn -0.9677 0.2519 0.0000 446 | vn 0.4991 0.0608 -0.8644 447 | vn 0.4991 0.0608 0.8644 448 | vn -0.4909 0.1903 -0.8502 449 | vn -0.4909 0.1903 0.8502 450 | vn -0.4991 0.0613 0.8644 451 | vn 0.9879 0.1552 0.0000 452 | vn -0.9996 0.0295 0.0000 453 | vn 0.4961 0.1242 0.8593 454 | vn 0.4961 0.1242 -0.8593 455 | vn -0.9973 0.0730 0.0000 456 | vn 0.4978 0.0947 0.8621 457 | vn 0.4995 0.0433 -0.8652 458 | vn 1.0000 -0.0056 0.0000 459 | vn -0.4995 0.0460 -0.8651 460 | vn -0.4976 0.0973 0.8619 461 | vn 0.9977 0.0677 0.0000 462 | vn 0.4588 0.3974 -0.7947 463 | vn -0.4588 0.3974 0.7947 464 | vn -0.9177 0.3974 0.0000 465 | vn -0.4588 0.3974 -0.7947 466 | vn 0.9177 0.3974 -0.0000 467 | vn 0.4588 0.3974 0.7947 468 | usemtl Bark 469 | s off 470 | f 3/1/1 6/2/1 11/3/1 471 | f 3/1/1 11/3/1 9/4/1 472 | f 10/5/2 13/6/2 20/7/2 473 | f 10/5/2 20/7/2 17/8/2 474 | f 16/9/3 18/10/3 27/11/3 475 | f 16/9/3 27/11/3 24/12/3 476 | f 22/13/4 34/14/4 30/15/4 477 | f 29/16/5 32/17/5 39/18/5 478 | f 29/16/5 39/18/5 36/19/5 479 | f 37/20/6 41/21/6 4/22/6 480 | f 37/20/6 4/22/6 1/23/6 481 | f 38/24/7 2/25/7 8/26/7 482 | f 8/26/7 15/27/7 23/28/7 483 | f 23/28/7 31/29/7 38/24/7 484 | f 8/26/7 23/28/7 38/24/7 485 | f 43/30/8 65/31/8 90/32/8 486 | f 43/30/8 90/32/8 68/33/8 487 | f 40/34/9 33/35/9 60/36/9 488 | f 40/34/9 60/36/9 64/37/9 489 | f 12/38/10 7/39/10 46/40/10 490 | f 12/38/10 46/40/10 48/41/10 491 | f 28/42/11 19/43/11 52/44/11 492 | f 28/42/11 52/44/11 58/45/11 493 | f 5/46/12 66/47/12 44/48/12 494 | f 35/49/13 26/50/13 56/51/13 495 | f 35/49/13 56/51/13 62/52/13 496 | f 61/53/14 55/54/14 79/55/14 497 | f 61/53/14 79/55/14 85/56/14 498 | f 53/57/15 49/58/15 73/59/15 499 | f 53/57/15 73/59/15 77/60/15 500 | f 63/61/16 83/62/16 87/63/16 501 | f 57/64/17 51/65/17 75/66/17 502 | f 57/64/17 75/66/17 81/67/17 503 | f 47/68/18 45/69/18 69/70/18 504 | f 47/68/18 69/70/18 71/71/18 505 | f 88/72/19 84/73/19 91/74/19 506 | f 82/75/20 76/76/20 94/77/20 507 | f 72/78/21 70/79/21 95/80/21 508 | s 1 509 | f 22/13/4 25/81/4 34/14/4 510 | f 21/82/22 14/83/22 50/84/22 511 | f 21/82/22 50/84/22 54/85/22 512 | f 5/46/12 42/86/12 66/47/12 513 | f 67/87/23 89/88/23 92/89/23 514 | f 63/61/16 59/90/16 83/62/16 515 | f 86/91/24 80/92/24 93/93/24 516 | f 78/94/25 74/95/25 96/96/25 517 | usemtl leaves 518 | s off 519 | f 99/97/26 119/98/26 101/99/26 520 | f 106/100/27 116/101/27 110/102/27 521 | f 114/103/7 98/104/7 100/105/7 522 | f 100/105/7 103/106/7 107/107/7 523 | f 107/107/7 111/108/7 114/103/7 524 | f 100/105/7 107/107/7 114/103/7 525 | f 109/109/28 115/110/28 112/111/28 526 | f 113/112/29 117/113/29 97/114/29 527 | f 123/115/26 143/116/26 125/117/26 528 | f 126/118/30 144/119/30 129/120/30 529 | f 128/121/31 142/122/31 132/123/31 530 | f 130/124/27 141/125/27 134/126/27 531 | f 138/127/7 122/128/7 124/129/7 532 | f 124/129/7 127/130/7 131/131/7 533 | f 131/131/7 135/132/7 138/127/7 534 | f 124/129/7 131/131/7 138/127/7 535 | f 137/133/29 140/134/29 121/135/29 536 | f 147/136/26 167/137/26 149/138/26 537 | f 150/139/30 168/140/30 153/141/30 538 | f 152/142/31 166/143/31 156/144/31 539 | f 154/145/27 164/146/27 158/147/27 540 | f 162/148/7 146/149/7 148/150/7 541 | f 148/150/7 151/151/7 155/152/7 542 | f 155/152/7 159/153/7 162/148/7 543 | f 148/150/7 155/152/7 162/148/7 544 | f 157/154/28 163/155/28 160/156/28 545 | f 161/157/29 165/158/29 145/159/29 546 | f 174/160/30 192/161/30 177/162/30 547 | f 176/163/31 190/164/31 180/165/31 548 | f 178/166/27 188/167/27 182/168/27 549 | f 186/169/7 170/170/7 172/171/7 550 | f 172/171/7 175/172/7 179/173/7 551 | f 179/173/7 183/174/7 186/169/7 552 | f 172/171/7 179/173/7 186/169/7 553 | f 185/175/29 189/176/29 169/177/29 554 | f 195/178/26 215/179/26 197/180/26 555 | f 198/181/30 216/182/30 201/183/30 556 | f 200/184/31 214/185/31 204/186/31 557 | f 202/187/27 212/188/27 206/189/27 558 | f 210/190/7 194/191/7 196/192/7 559 | f 196/192/7 199/193/7 203/194/7 560 | f 203/194/7 207/195/7 210/190/7 561 | f 196/192/7 203/194/7 210/190/7 562 | f 205/196/28 211/197/28 208/198/28 563 | s 1 564 | f 102/199/30 120/200/30 105/201/30 565 | f 104/202/31 118/203/31 108/204/31 566 | f 133/205/28 139/206/28 136/207/28 567 | f 171/208/26 191/209/26 173/210/26 568 | f 181/211/28 187/212/28 184/213/28 569 | f 209/214/29 213/215/29 193/216/29 570 | -------------------------------------------------------------------------------- /addons/scatterbox/Examples/tree1.obj.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="wavefront_obj" 4 | importer_version=1 5 | type="Mesh" 6 | uid="uid://cphvxowdhpyxs" 7 | path="res://.godot/imported/tree1.obj-a798944e3dc795f1e094923d22cf4622.mesh" 8 | 9 | [deps] 10 | 11 | files=["res://.godot/imported/tree1.obj-a798944e3dc795f1e094923d22cf4622.mesh"] 12 | 13 | source_file="res://addons/scatterbox/Examples/tree1.obj" 14 | dest_files=["res://.godot/imported/tree1.obj-a798944e3dc795f1e094923d22cf4622.mesh", "res://.godot/imported/tree1.obj-a798944e3dc795f1e094923d22cf4622.mesh"] 15 | 16 | [params] 17 | 18 | generate_tangents=true 19 | scale_mesh=Vector3(1, 1, 1) 20 | offset_mesh=Vector3(0, 0, 0) 21 | optimize_mesh=true 22 | -------------------------------------------------------------------------------- /addons/scatterbox/plugin.cfg: -------------------------------------------------------------------------------- 1 | [plugin] 2 | 3 | name="ScatterBox" 4 | description="Scatter Objects/terrain within an area" 5 | author="The_Vecter" 6 | version="1.0.0" 7 | script="scatterboxPlugin.gd" 8 | -------------------------------------------------------------------------------- /addons/scatterbox/scatterBox.gd: -------------------------------------------------------------------------------- 1 | @tool 2 | extends Node3D 3 | class_name ScatterBox 4 | 5 | 6 | #delete all of the meshes/objects 7 | @export var deleteAll := false: 8 | get: return deleteAll 9 | set(value): 10 | if(value): 11 | delete_obj() 12 | deleteAll = false 13 | 14 | #guhhh 15 | @export var refresh_btn := false: 16 | get: return refresh_btn 17 | set(value): 18 | if(value): 19 | refresh() 20 | refresh_btn = false 21 | 22 | #how far the mesh/object is from the gound 23 | @export var offset_position := Vector3(0, 0, 0): 24 | get: return offset_position 25 | set(value): 26 | offset_position = value.clamp(Vector3.ONE * -100.0, Vector3.ONE * 100.0) 27 | _update_debug_area_size() 28 | 29 | 30 | var show_debug_area := true 31 | var _debug_draw_instance : MeshInstance3D 32 | 33 | var draw_pointer : Node3D 34 | var object_parent : Node3D 35 | 36 | var is_drawing = true 37 | 38 | 39 | ## The number of instances to generate. 40 | @export_range(0, 1000, 1) var count := 1: 41 | get: return count 42 | set(value): 43 | count = value 44 | _update_debug_area_size() 45 | 46 | #the size of the draw box 47 | @export var placement_size := Vector3(10.0, 10.0, 10.0): 48 | get: return placement_size 49 | set(value): 50 | placement_size = value.clamp(Vector3.ONE * 0.01, Vector3.ONE * 100.0) 51 | _update_debug_area_size() 52 | 53 | 54 | @export_group("Random Size") 55 | 56 | ## The minimum random size for each instance. 57 | @export var min_random_size := Vector3(0.75, 0.75, 0.75): 58 | get: return min_random_size 59 | set(value): 60 | min_random_size = value.clamp(Vector3.ONE * 0.01, Vector3.ONE * 100.0) 61 | _update_debug_area_size() 62 | 63 | ## The maximum random size for each instance. 64 | @export var max_random_size := Vector3(1.25, 1.25, 1.25): 65 | get: return max_random_size 66 | set(value): 67 | max_random_size = value.clamp(Vector3.ONE * 0.01, Vector3.ONE * 100.0) 68 | _update_debug_area_size() 69 | 70 | 71 | @export_group("Random Rotation") 72 | 73 | ## Rotate each instance by a random amount between 74 | ## [code]-random_rotation[/code] and +[code]random_rotation[/code]. 75 | @export var random_rotation := Vector3(0.0, 0.0, 0.0): 76 | get: return random_rotation 77 | set(value): 78 | random_rotation = value.clamp(Vector3.ONE * 0.00, Vector3.ONE * 180.0) 79 | _update_debug_area_size() 80 | 81 | 82 | var _rng := RandomNumberGenerator.new() 83 | 84 | @onready var _space: PhysicsDirectSpaceState3D = get_world_3d().direct_space_state 85 | 86 | var current_color : Color 87 | 88 | #if the node is currently selected 89 | var selected = false 90 | 91 | #refresh the nodes 92 | #useful for the mesh scatter 93 | #as you need the meshinstances to be generated before adding anything to them 94 | func refresh(): 95 | pass 96 | 97 | 98 | # Called when the node enters the scene tree for the first time. 99 | func _ready(): 100 | _rng.randomize() 101 | 102 | current_color = Color(0.0, 0.0, 1.0, 0.0784313725) 103 | 104 | #get the subnodes 105 | draw_pointer = get_node_or_null("DrawPointer") 106 | object_parent = get_node_or_null("ObjectParent") 107 | 108 | #create them if they don't exist 109 | if(draw_pointer == null): 110 | draw_pointer = Node3D.new() 111 | draw_pointer.name = "DrawPointer" 112 | add_child(draw_pointer) 113 | draw_pointer.global_transform.origin = global_transform.origin 114 | draw_pointer.set_owner(get_tree().edited_scene_root) 115 | 116 | if(object_parent == null): 117 | object_parent = Node3D.new() 118 | object_parent.name = "ObjectParent" 119 | add_child(object_parent) 120 | object_parent.set_owner(self) 121 | object_parent.global_transform.origin = global_transform.origin 122 | object_parent.set_owner(get_tree().edited_scene_root) 123 | 124 | refresh() 125 | 126 | 127 | 128 | #move the draw box to the mouse position 129 | func move_to_mouse(camera, mouse: Vector2): 130 | var start = camera.project_ray_origin(mouse) 131 | var end = start + camera.project_ray_normal(mouse) * 1000 132 | var result = _space.intersect_ray(PhysicsRayQueryParameters3D.create(start, end)) 133 | 134 | if result.is_empty(): 135 | return false 136 | 137 | var t := Transform3D() 138 | t.origin = result.position 139 | 140 | t.origin += offset_position 141 | 142 | #align mesh with floor nomral 143 | t.basis = Basis(result.normal.cross(global_transform.basis.z), 144 | result.normal, 145 | global_transform.basis.x.cross(result.normal), 146 | ).orthonormalized() 147 | 148 | draw_pointer.basis = t.basis 149 | 150 | draw_pointer.global_transform.origin = result.position 151 | return true 152 | 153 | 154 | func select(): 155 | selected = true 156 | _create_debug_area() 157 | _update_debug_area() 158 | 159 | func deselect(): 160 | selected = false 161 | is_drawing = true 162 | _delete_debug_area() 163 | 164 | 165 | func draw(): 166 | if(is_drawing): 167 | scatter_obj() 168 | else: 169 | erase_obj() 170 | 171 | 172 | #toggle draw and erase mode 173 | func toggle_drawing(): 174 | is_drawing = !is_drawing 175 | #change the colour of the draw box 176 | _update_debug_area() 177 | 178 | return is_drawing 179 | 180 | 181 | 182 | func _delete_debug_area() -> void: 183 | if _debug_draw_instance != null && _debug_draw_instance.is_inside_tree(): 184 | _debug_draw_instance.queue_free() 185 | _debug_draw_instance = null 186 | 187 | 188 | func _create_debug_area() -> void: 189 | _delete_debug_area() 190 | _debug_draw_instance = MeshInstance3D.new() 191 | 192 | var material := StandardMaterial3D.new() 193 | _debug_draw_instance.material_override = material 194 | 195 | material.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA 196 | material.cull_mode = BaseMaterial3D.CULL_DISABLED 197 | material.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED 198 | 199 | material.albedo_color = current_color 200 | 201 | material.no_depth_test = true 202 | 203 | var mesh: Mesh 204 | mesh = BoxMesh.new() 205 | 206 | _debug_draw_instance.mesh = mesh 207 | _debug_draw_instance.visible = show_debug_area 208 | 209 | if(draw_pointer != null): 210 | draw_pointer.add_child(_debug_draw_instance) 211 | _update_debug_area_size() 212 | 213 | 214 | func _update_debug_area() -> void: 215 | if(is_drawing): 216 | current_color = Color(0.0, 0.0, 1.0, 0.0784313725) 217 | else: 218 | current_color = Color(1.0, 1.0, 1.0, 0.0784313725) 219 | 220 | _debug_draw_instance.material_override.albedo_color = current_color 221 | 222 | 223 | func _update_debug_area_size() -> void: 224 | if _debug_draw_instance != null && _debug_draw_instance.is_inside_tree(): 225 | _debug_draw_instance.mesh.size = placement_size 226 | 227 | 228 | 229 | func grow_box(): 230 | placement_size += Vector3(0.5, 0.5, 0.5) 231 | _update_debug_area_size() 232 | 233 | func shrink_box(): 234 | placement_size -= Vector3(0.5, 0.5, 0.5) 235 | placement_size.x = clamp(placement_size.x, 0, placement_size.x) 236 | placement_size.y = clamp(placement_size.y, 0, placement_size.y) 237 | placement_size.z = clamp(placement_size.z, 0, placement_size.z) 238 | _update_debug_area_size() 239 | 240 | 241 | #virtual method 242 | func scatter_obj(): 243 | pass 244 | 245 | 246 | #virtual method 247 | func erase_obj(): 248 | pass 249 | 250 | 251 | #delete all the created/painted objects 252 | func delete_obj(): 253 | for i in object_parent.get_children(): 254 | i.queue_free() 255 | refresh() 256 | 257 | 258 | -------------------------------------------------------------------------------- /addons/scatterbox/scatterMesh3D.gd: -------------------------------------------------------------------------------- 1 | @tool 2 | extends ScatterBox 3 | class_name ScatterMesh3D 4 | 5 | @export var meshes: Array[Mesh] 6 | @export var mesh_materials: Array[Material] 7 | 8 | 9 | var multiMeshes = [] 10 | 11 | 12 | 13 | func refresh(): 14 | multiMeshes = [] 15 | 16 | for i in object_parent.get_children(): 17 | multiMeshes.append(i) 18 | 19 | #create the two multimeshes 20 | if multiMeshes == []: 21 | for mesh in meshes: 22 | var newMultimeshInst = MultiMeshInstance3D.new() 23 | object_parent.add_child(newMultimeshInst) 24 | newMultimeshInst.global_transform.origin = object_parent.global_transform.origin 25 | newMultimeshInst.set_owner(get_tree().edited_scene_root) 26 | 27 | var newMultimesh = MultiMesh.new() 28 | newMultimesh.transform_format = MultiMesh.TRANSFORM_3D 29 | newMultimeshInst.multimesh = newMultimesh 30 | newMultimesh.mesh = mesh 31 | 32 | for i in range(meshes.size()): 33 | var newMultimesh = object_parent.get_child(i) 34 | newMultimesh.multimesh.mesh.surface_set_material(0, mesh_materials[i]) 35 | 36 | 37 | func scatter_obj(): 38 | for i in range(count): 39 | var pos := draw_pointer.global_position 40 | 41 | #get a random position in the drawing box 42 | pos += Vector3( 43 | _rng.randf_range(-placement_size.x / 2.0, placement_size.x / 2.0), 44 | 0, 45 | _rng.randf_range(-placement_size.z / 2.0, placement_size.z / 2.0)) 46 | 47 | pos = pos + Vector3( 48 | _rng.randf_range(min_random_size.x, max_random_size.x), 49 | 0, 50 | _rng.randf_range(min_random_size.z, max_random_size.z)) 51 | 52 | #make a raycast to align the mesh to the floor 53 | var startPos = pos 54 | startPos.y += placement_size.y 55 | var endPos = pos 56 | endPos.y -= placement_size.y 57 | 58 | var ray = PhysicsRayQueryParameters3D.create(startPos, endPos) 59 | 60 | var hit = _space.intersect_ray(ray) 61 | 62 | if(hit.is_empty()): continue 63 | 64 | var t := Transform3D() 65 | t.origin = hit.position 66 | t.origin += offset_position 67 | 68 | #https://kidscancode.org/godot_recipes/3.x/3d/3d_align_surface/index.html 69 | t.basis.y = hit.normal 70 | t.basis.x = -t.basis.z.cross(hit.normal) 71 | t.basis = t.basis.orthonormalized() 72 | 73 | #apply a random rotation and scaling 74 | t.basis = t.basis.scaled(Vector3( 75 | _rng.randf_range(min_random_size.x, max_random_size.x), 76 | _rng.randf_range(min_random_size.y, max_random_size.y), 77 | _rng.randf_range(min_random_size.z, max_random_size.z)))\ 78 | .rotated(Vector3.RIGHT, deg_to_rad(_rng.randf_range(-random_rotation.x, random_rotation.x)))\ 79 | .rotated(Vector3.UP, deg_to_rad(_rng.randf_range(-random_rotation.y, random_rotation.y)))\ 80 | .rotated(Vector3.FORWARD, deg_to_rad(_rng.randf_range(-random_rotation.z, random_rotation.z))) 81 | 82 | #get a random mesh 83 | var rand_mesh = _rng.randi_range(0, meshes.size()-1) 84 | 85 | #get the correct multimesh 86 | #as each one stores one mesh 87 | var multimeshInst = multiMeshes[rand_mesh] 88 | var multiMesh = multimeshInst.multimesh 89 | 90 | #save all the old transforms 91 | var transforms = [] 92 | for oldT in multiMesh.instance_count: 93 | transforms.append(multiMesh.get_instance_transform(oldT)) 94 | 95 | #editing the instance count resets the buffer 96 | multiMesh.instance_count += 1 97 | 98 | #add all the old instance transforms back 99 | for oldT in multiMesh.instance_count-1: 100 | multiMesh.set_instance_transform(oldT, transforms[oldT]) 101 | 102 | #set the new instance transform 103 | multiMesh.set_instance_transform(multiMesh.instance_count-1, t) 104 | 105 | 106 | func erase_obj(): 107 | var pos := draw_pointer.global_position 108 | 109 | var start_pos = pos 110 | start_pos -= Vector3(placement_size.x/2, placement_size.y/2, placement_size.z/2) 111 | 112 | var box = AABB(start_pos, placement_size) 113 | 114 | #see if any of the multimeshes is in the bounding box 115 | for mesh_num in range(multiMeshes.size()): 116 | var multimeshInst = multiMeshes[mesh_num] 117 | var multiMesh = multimeshInst.multimesh 118 | 119 | var transforms = [] 120 | 121 | #save instances that are outside the box 122 | for oldT in multiMesh.instance_count: 123 | var cur_t = multiMesh.get_instance_transform(oldT) 124 | 125 | if(box.has_point(cur_t.origin)): 126 | continue 127 | else: 128 | transforms.append(cur_t) 129 | 130 | #update the instance count 131 | multiMesh.instance_count = transforms.size() 132 | 133 | #update the instances 134 | for oldT in multiMesh.instance_count-1: 135 | multiMesh.set_instance_transform(oldT, transforms[oldT]) 136 | 137 | -------------------------------------------------------------------------------- /addons/scatterbox/scatterScene3D.gd: -------------------------------------------------------------------------------- 1 | @tool 2 | extends ScatterBox 3 | class_name ScatterScene3D 4 | 5 | @export var scenes: Array[PackedScene] 6 | 7 | @export_flags_3d_physics var instanced_scene_collision_layers 8 | 9 | 10 | #overwrite default code 11 | func move_to_mouse(camera, mouse: Vector2): 12 | var start = camera.project_ray_origin(mouse) 13 | var end = start + camera.project_ray_normal(mouse) * 1000 14 | var result = _space.intersect_ray(PhysicsRayQueryParameters3D.create(start, end, ~instanced_scene_collision_layers)) 15 | 16 | if result.is_empty(): 17 | return false 18 | 19 | var t := Transform3D() 20 | t.origin = result.position 21 | 22 | t.origin += offset_position 23 | 24 | #align mesh with floor nomral 25 | t.basis = Basis(result.normal.cross(global_transform.basis.z), 26 | result.normal, 27 | global_transform.basis.x.cross(result.normal), 28 | ).orthonormalized() 29 | 30 | draw_pointer.basis = t.basis 31 | 32 | draw_pointer.global_transform.origin = result.position 33 | return true 34 | 35 | 36 | 37 | func refresh(): 38 | pass 39 | 40 | 41 | func scatter_obj(): 42 | for i in range(count): 43 | var pos := draw_pointer.global_position 44 | 45 | pos += Vector3( 46 | _rng.randf_range(-placement_size.x / 2.0, placement_size.x / 2.0), 47 | 0, 48 | _rng.randf_range(-placement_size.z / 2.0, placement_size.z / 2.0)) 49 | 50 | pos = pos + Vector3( 51 | _rng.randf_range(min_random_size.x, max_random_size.x), 52 | 0, 53 | _rng.randf_range(min_random_size.z, max_random_size.z)) 54 | 55 | 56 | var startPos = pos 57 | startPos.y += placement_size.y 58 | var endPos = pos 59 | endPos.y -= placement_size.y 60 | 61 | var ray = PhysicsRayQueryParameters3D.create(startPos, endPos, ~instanced_scene_collision_layers) 62 | 63 | var hit = _space.intersect_ray(ray) 64 | 65 | if(hit.is_empty()): continue 66 | 67 | var t := Transform3D() 68 | t.origin = hit.position 69 | t.origin += offset_position 70 | 71 | #https://kidscancode.org/godot_recipes/3.x/3d/3d_align_surface/index.html 72 | t.basis.y = hit.normal 73 | t.basis.x = -t.basis.z.cross(hit.normal) 74 | t.basis = t.basis.orthonormalized() 75 | 76 | 77 | t.basis = t.basis.scaled(Vector3( 78 | _rng.randf_range(min_random_size.x, max_random_size.x), 79 | _rng.randf_range(min_random_size.y, max_random_size.y), 80 | _rng.randf_range(min_random_size.z, max_random_size.z)))\ 81 | .rotated(Vector3.RIGHT, deg_to_rad(_rng.randf_range(-random_rotation.x, random_rotation.x)))\ 82 | .rotated(Vector3.UP, deg_to_rad(_rng.randf_range(-random_rotation.y, random_rotation.y)))\ 83 | .rotated(Vector3.FORWARD, deg_to_rad(_rng.randf_range(-random_rotation.z, random_rotation.z))) 84 | 85 | 86 | var rand_scene = _rng.randi_range(0, scenes.size()-1) 87 | 88 | var scene_inst = scenes[rand_scene].instantiate() 89 | scene_inst.global_transform = t 90 | 91 | if(scene_inst is StaticBody3D): 92 | scene_inst.collision_layer = instanced_scene_collision_layers 93 | 94 | 95 | object_parent.add_child(scene_inst) 96 | scene_inst.set_owner(get_tree().edited_scene_root) 97 | 98 | 99 | func erase_obj(): 100 | var pos := draw_pointer.global_position 101 | 102 | var start_pos = pos 103 | start_pos -= Vector3(placement_size.x/2, placement_size.y/2, placement_size.z/2) 104 | 105 | var box = AABB(start_pos, placement_size) 106 | 107 | for child in object_parent.get_children(): 108 | if(box.has_point(child.global_transform.origin)): 109 | child.queue_free() 110 | 111 | -------------------------------------------------------------------------------- /addons/scatterbox/scatterbox3D.aseprite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/The-Vector/scatterBox/bc0fdae3c939785a08b35bc34f0a19eb36aa0874/addons/scatterbox/scatterbox3D.aseprite -------------------------------------------------------------------------------- /addons/scatterbox/scatterbox3D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/The-Vector/scatterBox/bc0fdae3c939785a08b35bc34f0a19eb36aa0874/addons/scatterbox/scatterbox3D.png -------------------------------------------------------------------------------- /addons/scatterbox/scatterbox3D.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://ckjln1yjea530" 6 | path="res://.godot/imported/scatterbox3D.png-238319ec044c7234897c232ef52639e7.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/scatterbox/scatterbox3D.png" 14 | dest_files=["res://.godot/imported/scatterbox3D.png-238319ec044c7234897c232ef52639e7.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/scatterbox/scatterboxPlugin.gd: -------------------------------------------------------------------------------- 1 | @tool 2 | extends EditorPlugin 3 | 4 | 5 | var selection = get_editor_interface().get_selection() 6 | 7 | var selected_node 8 | 9 | var mouse_down = false 10 | var can_move_selection = true 11 | 12 | var erase_button : CheckBox = null 13 | 14 | 15 | func _enter_tree(): 16 | # Initialization of the plugin goes here. 17 | add_custom_type("ScatterMesh3D", "ScatterBox", preload("scatterMesh3D.gd"), preload("scatterbox3D.png")) 18 | add_custom_type("ScatterScene3D", "ScatterBox", preload("scatterScene3D.gd"), preload("scatterbox3D.png")) 19 | 20 | selection.selection_changed.connect(_on_selection_changed) 21 | 22 | InputMap.add_action("PlaceTerrain") 23 | var ev = InputEventKey.new() 24 | ev.keycode = KEY_C 25 | InputMap.action_add_event("PlaceTerrain", ev) 26 | 27 | add_erase_button() 28 | 29 | 30 | 31 | func _exit_tree(): 32 | # Clean-up of the plugin 33 | remove_custom_type("ScatterMesh3D") 34 | remove_custom_type("ScatterScene3D") 35 | 36 | InputMap.action_erase_events("PlaceTerrain") 37 | remove_erase_button() 38 | 39 | 40 | func _make_visible(visible): 41 | if visible: 42 | selected_node.selected = true 43 | add_erase_button() 44 | else: 45 | remove_erase_button() 46 | 47 | 48 | func add_erase_button(): 49 | if erase_button != null: 50 | return 51 | 52 | erase_button = CheckBox.new() 53 | erase_button.text = "Erase: " 54 | erase_button.connect("toggled", toggle_drawing) 55 | add_control_to_container(EditorPlugin.CONTAINER_SPATIAL_EDITOR_MENU, erase_button) 56 | 57 | 58 | func remove_erase_button(): 59 | if erase_button == null: 60 | return 61 | 62 | remove_control_from_container(EditorPlugin.CONTAINER_SPATIAL_EDITOR_MENU, erase_button) 63 | erase_button.queue_free() 64 | erase_button = null 65 | 66 | 67 | #when selecting another node hide the draw box 68 | func _on_selection_changed(): 69 | if(selected_node != null): 70 | #reset the current node 71 | selected_node.deselect() 72 | selected_node = null 73 | erase_button.button_pressed = false 74 | 75 | 76 | #if the current node is a scatterbox get the custom keybinds/actions 77 | func _handles(object): 78 | if (object is ScatterBox): 79 | selected_node = object 80 | selected_node.select() 81 | return true 82 | 83 | return false 84 | 85 | 86 | #get the inputs 87 | func _forward_3d_gui_input(viewport_camera, event): 88 | var captured_event = false 89 | 90 | #if alt held/pressed dont do anything 91 | if(event is InputEventKey): 92 | if(event.keycode == KEY_ALT): 93 | if(event.pressed): 94 | can_move_selection = false 95 | return false 96 | 97 | else: 98 | can_move_selection = true 99 | 100 | #E switches between erase and draw modes 101 | if(event.keycode == KEY_E): 102 | if(event.pressed): 103 | erase_button.button_pressed = !erase_button.button_pressed 104 | 105 | #scroll wheel to change the size of the draw bow 106 | if(event is InputEventMouseButton and selected_node != null and can_move_selection): 107 | if(event.button_index == 4): 108 | selected_node.grow_box() 109 | captured_event = true 110 | if(event.button_index == 5): 111 | selected_node.shrink_box() 112 | captured_event = true 113 | 114 | #mouse stuff 115 | if(can_move_selection and selected_node != null): 116 | if(event is InputEventMouseButton): 117 | if(event.button_index == MOUSE_BUTTON_LEFT): 118 | if(event.pressed == false): 119 | mouse_down = false 120 | captured_event = true 121 | else: 122 | mouse_down = true 123 | 124 | 125 | if event is InputEventMouseMotion: 126 | if(mouse_down): 127 | if(selected_node != null): 128 | move_object_to_mouse(viewport_camera, selected_node, event.position) 129 | selected_node.draw() 130 | captured_event = true 131 | else: 132 | var res = move_object_to_mouse(viewport_camera, selected_node, event.position) 133 | captured_event = res 134 | 135 | 136 | return captured_event 137 | 138 | 139 | func toggle_drawing(_toggle = false): 140 | if(selected_node != null): 141 | var res = selected_node.toggle_drawing() 142 | 143 | 144 | func move_object_to_mouse(camera, object, mouse_pos): 145 | object.move_to_mouse(camera, mouse_pos) 146 | 147 | 148 | -------------------------------------------------------------------------------- /assets/plugin1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/The-Vector/scatterBox/bc0fdae3c939785a08b35bc34f0a19eb36aa0874/assets/plugin1.gif -------------------------------------------------------------------------------- /assets/plugin2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/The-Vector/scatterBox/bc0fdae3c939785a08b35bc34f0a19eb36aa0874/assets/plugin2.gif -------------------------------------------------------------------------------- /project.godot: -------------------------------------------------------------------------------- 1 | ; Engine configuration file. 2 | ; It's best edited using the editor UI and not directly, 3 | ; since the parameters that go here are not all obvious. 4 | ; 5 | ; Format: 6 | ; [section] ; section goes between [] 7 | ; param=value ; assign values to parameters 8 | 9 | config_version=5 10 | 11 | [application] 12 | 13 | config/name="scatterBox" 14 | config/description="Plugin to draw scenes/meshes on terrain." 15 | config/features=PackedStringArray("4.0", "Forward Plus") 16 | 17 | [dotnet] 18 | 19 | project/assembly_name="Plugin Test" 20 | 21 | [editor_plugins] 22 | 23 | enabled=PackedStringArray("res://addons/scatterbox/plugin.cfg") 24 | --------------------------------------------------------------------------------