skog, mjuka skuggor, jämnare övergång vatten på av avstånd

This commit is contained in:
2026-11-02 23:25:51 +01:00
parent cb5070dc1c
commit f447fe8e51
196 changed files with 5583 additions and 143 deletions

3
.gitignore vendored
View File

@@ -5,3 +5,6 @@
TestResults/
*.log
/artifacts
**/node_modules/
/Content/Vegitations/*/source/
*.partial

View File

@@ -1,5 +1,7 @@
# Markmaterial och höjddata
Vegetationsmodeller och skogs-/snö-/torrgräsmaterial finns nu i `Vegitations/`. Se `Vegitations/README.md` för färgregler, planetinställningar, CC0-källor, import och skogsbenchmark. Den befintliga `Vegetations/`-mappen med markmaterial behåller sitt namn.
`materials.json` anger tillgängliga material och seedade urvalslistor för fasta planeter. Varje material har färg (`color`), OpenGL-normal (`normal`) och ytjämnhet (`roughness`). Sökvägarna är relativa till `Content/`. Materialen är från [Poly Haven](https://polyhaven.com/textures) och är [CC0](https://polyhaven.com/license):
- [Leafy Grass](https://polyhaven.com/a/leafy_grass), Charlotte Baglioni, `Vegetations/leafy_grass/`.

View File

@@ -0,0 +1,100 @@
# Färgstyrd vegetation
`vegetation.json` är den gemensamma katalogen. Sökvägar till modeller utgår från denna mapp. Den äldre mappen `Content/Vegetations/` med markmaterial finns kvar.
## Tillgångar och offlineverktyg
De tio modellpaketen kommer från [Poly Haven](https://polyhaven.com), med [CC0-licens](https://polyhaven.com/license). `sources.json` innehåller ursprungliga nedladdningsadresser, filstorlekar och MD5-kontrollsummor. Startpaketet omfattar 1 697 MiB originaldata inklusive 2K-material för skogsmark, torrt gräs och snö. Nedladdaren hämtar bara filer som saknas eller har fel kontrollsumma och stoppar över 2 GB nedladdning.
Förberedda modeller, alphakort och avståndsbilder ingår i spelets innehåll. Originalen och mellansteget `source/bake-source.glb` behövs bara vid import, ignoreras av Git och kopieras inte till distributionen. Spelet behöver inte nätåtkomst, Node eller Python.
Återskapa resurser från projektroten med Python 3, Node och .NET 10:
```powershell
python tools/vegetation/download.py
npm ci --prefix tools/vegetation
node --max-old-space-size=16384 tools/vegetation/prepare.mjs --source-only pine_tree_01 fir_tree_01 tree_small_02 fir_sapling_medium
dotnet build src/Universe.App -c Release
./src/Universe.App/bin/Release/net10.0/Universe.App.exe --prepare-vegetation --bake-foliage
node --max-old-space-size=16384 tools/vegetation/prepare.mjs
dotnet build src/Universe.App -c Release
./src/Universe.App/bin/Release/net10.0/Universe.App.exe --prepare-vegetation --force
dotnet build src/Universe.App -c Release
```
Importen använder glTF Transform och Meshoptimizer. Tungt barr-/lövverk bakas från full geometri till 24 rumsliga grupper med tre alphakort per grupp. Stammar och grenar behåller geometri. GLB-scenerna `LOD0`, `LOD1`, `LOD2` delar material. Startpaketets träd använder cirka 12 000 / 2 000 / 350 trianglar **per trädvariant**, under planens övre budget på 60 000 / 12 000 / 2 000. `preparation.json` redovisar summerade antal över alla varianter. Slutligen bakas 16 riktningar och tre elevationsvinklar per variant till impostorer med färg och normaler. Gräsets torra variant heter `dry.glb`.
## Färgregler
`matchColorRgb` anger kartfärgen för placering, inte modellens färg. Avståndet är `100 * length(sRGB - target) / (255 * sqrt(3))`, med mjuk uttoning under toleransens yttersta 20 %. RGB-värden anges 0–255. Överlappande biomvikter normaliseras och används också av markshadern. Katalogens fyra biomer ligger i ordningen skog, torr mark, sand och snö.
Varje växt anger `id`, `model`, `type` (`tree`, `shrub`, `grass`, `fern`), `matchColorRgb`, `colorTolerancePercent`, `spawnWeight`, `scaleRange`, `altitudeMeters`, `absoluteLatitudeDegrees`, `maxSlopeDegrees`, `minimumSpacingMeters`, `windStrength` och valfri `trunkCollision` med `radiusMeters` och `heightMeters`. Material och växtfärger kommer från GLB-filen. Arter väljs viktat inom respektive skikts täthetsbudget; fler arter ökar inte automatiskt antalet växter.
Valfri `lodMeters` på en träddefinition ersätter planetens tre meshgränser. `distanceMeters` kan förkorta artens räckvidd. Planetens `depthPrepass` aktiverar ett extra djupsteg före terrängen. Det döljer dyr terrängskuggning bakom lövverk och låter endast de främsta löven få full ljusberäkning. Standard är av: mätningen på Jorden visade att steget kostade mer vegetationstid än det sparade i terrängen. Dess GPU-tid ingår i vegetationsbudgeten och redovisas också separat i debugpanelen när det aktiveras.
Vatten, snö och olämplig höjd/lutning filtreras bort. Höjdintervall räknas från planetens referensradie, i projektets höjddata. Jordens globala höjdkarta har höga värden även över många gröna områden, så startkatalogen tillåter träd upp till 6 000 m. Det är ingen exakt karta över jordens verkliga skogar.
## Inställningar per planet
Ange exempelvis i planetens JSON:
```json
"vegetation": {
"enabled": true,
"densityMultiplier": 1,
"allowedPlants": ["pine_tree_01", "fir_tree_01", "fern_02"],
"affectGroundMaterials": true,
"treeDensityPerHectare": 600,
"shrubDensityPerHectare": 350,
"groundDensityPerHectare": 20000,
"forestScaleMeters": 450,
"treeLodMeters": [40, 150, 400],
"treeDistanceMeters": 2000,
"shrubDistanceMeters": 150,
"grassDistanceMeters": 80,
"uploadBudgetMilliseconds": 1,
"maximumCachedTiles": 2048,
"maximumInstances": 650000,
"shadowResolution": 2048,
"shadowDistancesMeters": [100, 400],
"shadowSoftness": 1,
"shadowCascadeBlend": 0.2,
"shadowBiasMeters": 0.035,
"collisionDistanceMeters": 64
}
```
Utelämnad `allowedPlants` tillåter hela katalogen. Valfri `biomeTexture` anger en separat kartbild relativt `KnownSolarSystem/`; annars används `surfaceTexture`. Utan färgkarta används seedad proceduriell biomfördelning. Jorden är uttryckligen aktiverad. Atmosfäriska planeter av typen `terrestrial` får standardprofilen; andra fasta planeter kan aktiveras explicit. Gasplaneter tillåts inte. Proceduriella jordliknande planeter får också en standardprofil.
Jordens startprofil använder `densityMultiplier: 0.7`, motsvarande nominellt 420 träd, 245 buskar och 14 000 markväxter per hektar före biom-, täthetsbrus- och terrängfiltrering. Sätt multiplikatorn till 1 för den tätare grundprofilen.
Placeringarna bestäms av planet-ID, seed och fasta kubsfärsrutor, oberoende av terrängens LOD och planetens rotation. Trädrutor är cirka 256 m, buskrutor 128 m och markväxtrutor 32 m för att slippa generera stora mängder gräs långt bort. En begränsad arbetspool delas med terrängen. Inaktuella jobb avbryts. Resurs- och avståndsinstansdata laddas upp stegvis med den angivna tidsbudgeten; ett enskilt drivrutinsanrop kan inte avbrytas mitt i en uppladdning.
Avståndsinstanser byggs i bakgrunden och använder två uppsättningar återanvända CPU-/GPU-buffertar. Terrängcachen behåller inaktiva rutor i upp till 60 sekunder, med en budget på 16 384 rutor per planet. De äldsta överflödiga rutorna frigörs stegvis, så korta utflykter till omloppsbana inte omedelbart tvingar fram samma terräng igen.
Vegetationscachen följer spelarens position och täcker alla riktningar. En huvudvridning byter därför inte ut rutor eller startar nya vegetationsjobb. Standardgränsen är 2 048 rutor och fortfarande högst 650 000 instanser; detta behåller mer vegetation i minnet än den tidigare gränsen på 640 rutor. Små kameravridningar återanvänder instansbuffertarna med en konservativ marginal i synfältet. Skuggornas instanslistor uppdateras vid förflyttning eller nytt innehåll. Terrängrutor delar sin indextopologi och skriver vertexdata direkt till färdiga arrayer för att minska tillfälliga allokeringar. Detaljmaterial för avlägsna himlakroppar laddas först inom materialets synliga avstånd, så månens marktexturer inte läses in när man tittar runt på Jorden.
Vind följer simulationstiden. Alphamippar bevarar täckningen. Träd växlar med dither mellan tre mesh-LOD och därefter flervyade impostorer. Två lokala skuggkaskader stöder upp till två solar. Vegetationen ritas före havet och kan därför speglas av befintlig SSR när den syns i scenbilden. FPS-spelaren sveps mot stamkapslar och glider längs dem; fri kamera, gräs, buskar och löv påverkas inte.
Vegetationen ritas även före terrängen. Dess färdiga djupbild används för att undvika full terrängskuggning bakom stammar och löv, utan ett extra geometristeg. Separat `depthPrepass` är ett ytterligare, valfritt steg för lövens egen överlappning.
## Benchmark och felsökning
Vegetationsskuggor filtreras med bilinära djupjämförelser på GPU:n. Marken använder ett viktat 5×5-filter med nio texturhämtningar; löv använder ett 3×3-filter med fyra hämtningar. Ingen slumpmässig sampling används. `shadowSoftness` (0–1) blandar mellan en bilinjär djupjämförelse och det mjuka filtret; standard är 1. `shadowCascadeBlend` (0–0,4, standard 0,2) anger hur stor del av närskuggans räckvidd som blandas med fjärrskuggan. `shadowBiasMeters` (0,001–0,25, standard 0,035) är djupmarginalen i meter och är oberoende av kaskadens räckvidd. Kartorna centreras på spelarens position och snäpps till texlar i dubbelprecision; att vrida huvudet flyttar inte kartorna.
`Universe.App.exe --shadow-report` verifierar produktionsfiltret mot en separat CPU-referens, mjukare skuggkanter, löv, två solar och kontinuerliga kaskadövergångar. Testbilder sparas i `graphics-report/shadows/`.
P-menyn innehåller **BENCHMARK FOREST**: omloppsvy, mjuk landning till 1,8 m, promenad, skogsbryn och uppstigning. Därefter återställs Jordvyn. Resultat med FPS-graf samt CSV/JSON sparas i `benchmark-results/forest-*` bredvid appen. Debugpanelen visar vegetation, vegetationsskuggor, CPU-/uppladdningstid, inskickade instanser/trianglar, LOD och väntande rutor.
`Universe.App.exe --lookaround-report` står still i skogen på Jorden och mäter en stillastående vy följd av två hela kameravarv i 1440 × 900. Efter uppvärmningen sparas bildrutetider, vegetationsgenerering, cacheändringar, terränguppladdningar, minnesallokeringar och GC-räkningar i `graphics-report/lookaround/`. GPU:n synkroniseras per bildruta. Lägg till `--profile-passes` för att lokalisera långsamma pass; den extra synkroniseringen påverkar då tiderna.
`Universe.App.exe --vegetation-report` kör samma rutt i 2560 × 1440 utan VSync, med vegetation av/på och kall/varm vegetationscache. Initial modell-/texturinläsning samt uppvärmning av shaders och terräng sker före mätningen. Kall körning tömmer vegetationsrutorna och deras instansbuffertar; varm körning återanvänder dem från föregående resa. Rapporten synkroniserar GPU:n per bildruta och sparar bilder, FPS-grafer, bildrutetider, statistik och PASS/FAIL i `graphics-report/vegetation/`. `--preview-only` avslutar efter bildkontrollen. Gränserna är 60 FPS i medel, 55 FPS i 1 %-låg, högst 50 ms och vegetation inklusive skuggor högst 5 ms vid 99:e percentilen. Hela scenens kostnad ingår i FPS; rapporten visar missade gränser i stället för att dölja dem.
Senaste kontrollen på RTX 5080, 2560 × 1440 och Jordens starttäthet 0,7:
| Vegetationscache | Medel-FPS | 1 %-låg FPS | Max bildruta | Vegetation + skuggor, GPU p99 |
| --- | ---: | ---: | ---: | ---: |
| Kall | 102,7 | 56,5 | 19,03 ms | 4,23 ms |
| Varm | 99,2 | 48,1 | 23,11 ms | 4,23 ms |
Varm körning klarar ännu inte gränsen 55 FPS för 1 %-låg; hela prestandamatrisen rapporteras därför som FAIL. Medel-FPS, vegetationsbudgeten och gränsen 50 ms klaras. Mätvärden varierar med vy och belastning. Grafikrapporten kontrollerar också två solar, giltiga OpenGL-resultat och minst 99 % närliggande yttäckning i djupbilden under spelarens fötter efter en orbital resa; senaste kontrollen gav 100 % täckning.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 896 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

View File

@@ -0,0 +1 @@
{"Views":16,"Elevations":3,"Variants":[{"Center":[0,0.21384735,0],"Size":1.4935448},{"Center":[0,0.17451018,0],"Size":1.3013301},{"Center":[0,0.14340177,0],"Size":0.92420286}]}

Binary file not shown.

View File

@@ -0,0 +1,52 @@
{
"source": "https://polyhaven.com/a/fern_02",
"license": "CC0",
"budgets": [
2500,
800,
200
],
"triangles": [
5416,
1946,
486
],
"variants": [
{
"min": [
-0.49487370252609253,
0,
-0.4468448758125305
],
"max": [
0.49487370252609253,
0.427694708108902,
0.4468448758125305
]
},
{
"min": [
-0.4371629059314728,
0,
-0.38261282444000244
],
"max": [
0.4371629059314728,
0.3490203619003296,
0.38261282444000244
]
},
{
"min": [
-0.27597030997276306,
0,
-0.30671054124832153
],
"max": [
0.27597030997276306,
0.28680354356765747,
0.30671054124832153
]
}
]
}

View File

@@ -0,0 +1 @@
{"version":4,"cards":false,"files":["904c73900125e017f5e76ac1cdd906fe","ba8bbb9dc9ff55bdc081565cd926d776","7f7b46e813a3cb4811405191de0ecdce","c061e9255f7d36ae9ce0e92ef3e100b2","00936dff4661dc9fe1f2fbe6c000615a","ff18f7e8e869c58eac8f9c7d7c519f4a"]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 357 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 447 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 327 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 791 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 881 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 664 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 810 KiB

View File

@@ -0,0 +1 @@
{"Views":16,"Elevations":3,"Variants":[{"Center":[0,4.413163,0],"Size":12.756494},{"Center":[0,3.8976264,0],"Size":10.952542},{"Center":[0,2.9533758,0],"Size":9.093285}]}

View File

@@ -0,0 +1,52 @@
{
"source": "https://polyhaven.com/a/fir_sapling_medium",
"license": "CC0",
"budgets": [
12000,
2000,
350
],
"triangles": [
21842,
5257,
1056
],
"variants": [
{
"min": [
-3.264199733734131,
-1.2817002534866333,
-3.336195707321167
],
"max": [
3.264199733734131,
10.108026504516602,
3.336195707321167
]
},
{
"min": [
-2.7086594104766846,
-0.9919012784957886,
-2.6309804916381836
],
"max": [
2.7086594104766846,
8.787154197692871,
2.6309804916381836
]
},
{
"min": [
-2.674987554550171,
-1.1061264276504517,
-2.601681709289551
],
"max": [
2.674987554550171,
7.012877941131592,
2.601681709289551
]
}
]
}

View File

@@ -0,0 +1 @@
{"version":5,"cards":true,"files":["ab770a7f4437bb1585c856e9467345cf","5fa93c73d145cacdb258a29e3860a1ae","e9375177560503904ece137474cfde0b","1ffec60c862633f2bb5c47f2102651cf","2072f6b164184f0ca9b41f8623bfec06","f5e2dd9085334845f662fc11c60eb713","2fcac76cebb4f5fdc7fba2f31e02a490","d3976657a03ce2e6eccfa56b378bbcd0","1d93929d869e5539ec245ae3eddb7243"]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 577 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 770 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 441 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 572 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 875 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 704 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 886 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 687 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 426 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 KiB

View File

@@ -0,0 +1 @@
{"Views":16,"Elevations":3,"Variants":[{"Center":[0,9.462554,0],"Size":24.080963},{"Center":[0,7.0276027,0],"Size":18.594278},{"Center":[0,7.26029,0],"Size":19.28549}]}

Binary file not shown.

View File

@@ -0,0 +1,52 @@
{
"source": "https://polyhaven.com/a/fir_tree_01",
"license": "CC0",
"budgets": [
12000,
2000,
350
],
"triangles": [
32895,
5467,
1037
],
"variants": [
{
"min": [
-4.498412609100342,
-1.2878752946853638,
-4.471673488616943
],
"max": [
4.498412609100342,
20.212984085083008,
4.471673488616943
]
},
{
"min": [
-3.847827672958374,
-1.2734137773513794,
-3.958848714828491
],
"max": [
3.847827672958374,
15.328619003295898,
3.958848714828491
]
},
{
"min": [
-4.135837078094482,
-1.3493037223815918,
-4.0509114265441895
],
"max": [
4.135837078094482,
15.86988353729248,
4.0509114265441895
]
}
]
}

View File

@@ -0,0 +1 @@
{"version":5,"cards":true,"files":["937cc3176a17f40d47d655c54571dbd7","5fa93c73d145cacdb258a29e3860a1ae","e9375177560503904ece137474cfde0b","1ffec60c862633f2bb5c47f2102651cf","97ce92fcba67201ace1c4ed3d6e154f6","44fd71883c0e29551243c8937c47b65c","7f6bfdfd4987848b09b119cc1294e177","2072f6b164184f0ca9b41f8623bfec06","6d023f52dab632b031a2ab8e5a27541f","2fcac76cebb4f5fdc7fba2f31e02a490","007dee669d056d81043ed0d171a731c2","cba156ed09519ca12bea8c7ff90585ee","3d0e1b965f2ac48b894d259e4ec5f10c","26d2bf6d4d2e32d3524e8fa3760f643f","1d93929d869e5539ec245ae3eddb7243"]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 652 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 602 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 740 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 560 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

View File

@@ -0,0 +1 @@
{"Views":16,"Elevations":3,"Variants":[{"Center":[0,0.07021334,0],"Size":0.2755095},{"Center":[0,0.11812809,0],"Size":0.26460692},{"Center":[0,0.04119435,0],"Size":0.092275344}]}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 602 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 679 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 560 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

View File

@@ -0,0 +1 @@
{"Views":16,"Elevations":3,"Variants":[{"Center":[0,0.07021334,0],"Size":0.2755095},{"Center":[0,0.11812809,0],"Size":0.26460692},{"Center":[0,0.04119435,0],"Size":0.092275344}]}

Binary file not shown.

View File

@@ -0,0 +1,52 @@
{
"source": "https://polyhaven.com/a/grass_medium_01",
"license": "CC0",
"budgets": [
2500,
800,
200
],
"triangles": [
1213,
1213,
387
],
"variants": [
{
"min": [
-0.0924200564622879,
0,
-0.08115652203559875
],
"max": [
0.0924200564622879,
0.14042668044567108,
0.08115652203559875
]
},
{
"min": [
-0.07651543617248535,
0,
-0.0640784502029419
],
"max": [
0.07651543617248535,
0.2362561821937561,
0.0640784502029419
]
},
{
"min": [
-0.008015751838684082,
0,
-0.014501886442303658
],
"max": [
0.008015751838684082,
0.08238869905471802,
0.014501886442303658
]
}
]
}

View File

@@ -0,0 +1 @@
{"version":4,"cards":false,"files":["784c287f7828f8e30c4d28ebcbd90f6e","7c75ce52a121de1fc00422672584f757","000814eb2149add70695cf71bfb52c4b","a530c693ba3d08be15fcbce33dc5dabe","e0527a0561c2dae5b7b5c1b478d8c6bf","0810166131307c1094d37e73a8490542","8ea1c1853688113b9e1e0b17c4efda5a"]}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 537 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 515 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 525 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 KiB

View File

@@ -0,0 +1 @@
{"Views":16,"Elevations":3,"Variants":[{"Center":[0,0.078465186,0],"Size":0.18918738},{"Center":[0,0.08978201,0],"Size":0.3000981},{"Center":[0,0.13018826,0],"Size":0.5391352}]}

Binary file not shown.

View File

@@ -0,0 +1,52 @@
{
"source": "https://polyhaven.com/a/grass_medium_02",
"license": "CC0",
"budgets": [
2500,
800,
200
],
"triangles": [
4963,
1995,
498
],
"variants": [
{
"min": [
-0.05956093221902847,
0,
-0.05988120660185814
],
"max": [
0.05956093221902847,
0.1569303721189499,
0.05988120660185814
]
},
{
"min": [
-0.0895635113120079,
0,
-0.09963418543338776
],
"max": [
0.0895635113120079,
0.17956401407718658,
0.09963418543338776
]
},
{
"min": [
-0.1586880385875702,
0,
-0.18096286058425903
],
"max": [
0.1586880385875702,
0.260376513004303,
0.18096286058425903
]
}
]
}

View File

@@ -0,0 +1 @@
{"version":4,"cards":false,"files":["fc24d97b602c74c1a9357a7570ae2b87","9ca6e2499ce71446f0cd8a3fc8c54a1b","3431e6de76f40f25bef48755f4c6a76a","66eb24d4e6dbda01faad666a3517dcd1","145041ae03fe02783a0adbd1cdcb4988","3b2ba296de3cffad18e8119e6ca693e5","04f9adb6ab1ae0c8bc207be8da6c5dd5"]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 614 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 394 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 512 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 381 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 491 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 758 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 625 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 850 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 682 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 821 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 671 KiB

View File

@@ -0,0 +1 @@
{"Views":16,"Elevations":3,"Variants":[{"Center":[0,10.187394,0],"Size":26.603775},{"Center":[0,7.44063,0],"Size":20.578642},{"Center":[0,8.772001,0],"Size":23.53368}]}

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More