@call-me-sensei/toonlab 0.4.21 → 0.4.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NPM-LIBRARY.md +87 -27
- package/README.md +11 -10
- package/agents/PROMPTS.md +17 -3
- package/agents/README.md +13 -3
- package/agents/claude/CLAUDE.md +3 -0
- package/agents/codex/AGENTS.md +112 -159
- package/agents/cursor/toonlab.mdc +7 -3
- package/agents/examples/game-foundation.mjs +104 -0
- package/agents/references/game-lifecycle.md +57 -0
- package/agents/references/runtime-entry-points.md +26 -0
- package/agents/references/style-bundles.md +4 -1
- package/agents/skills/claude/asset-sourcing/SKILL.md +7 -4
- package/agents/skills/claude/environment/SKILL.md +4 -0
- package/agents/skills/claude/game-dev/SKILL.md +63 -87
- package/agents/skills/claude/lighting/SKILL.md +36 -0
- package/agents/skills/claude/post-processing/SKILL.md +8 -3
- package/agents/skills/claude/rock-ground-shaders/SKILL.md +10 -15
- package/agents/skills/claude/rockgen/SKILL.md +52 -21
- package/agents/skills/claude/scene-style-application/SKILL.md +4 -0
- package/agents/skills/claude/style-presets/SKILL.md +11 -8
- package/agents/skills/claude/toon-shading/SKILL.md +4 -0
- package/agents/skills/claude/vegetation-sky/SKILL.md +13 -7
- package/agents/skills/claude/visual-verification/SKILL.md +45 -119
- package/agents/skills/claude/water/SKILL.md +6 -2
- package/agents/skills/codex/asset-sourcing/SKILL.md +7 -4
- package/agents/skills/codex/environment/SKILL.md +4 -0
- package/agents/skills/codex/game-dev/SKILL.md +63 -87
- package/agents/skills/codex/lighting/SKILL.md +36 -0
- package/agents/skills/codex/post-processing/SKILL.md +8 -3
- package/agents/skills/codex/rock-ground-shaders/SKILL.md +10 -15
- package/agents/skills/codex/rockgen/SKILL.md +52 -21
- package/agents/skills/codex/scene-style-application/SKILL.md +4 -0
- package/agents/skills/codex/style-presets/SKILL.md +11 -8
- package/agents/skills/codex/toon-shading/SKILL.md +4 -0
- package/agents/skills/codex/vegetation-sky/SKILL.md +13 -7
- package/agents/skills/codex/visual-verification/SKILL.md +45 -119
- package/agents/skills/codex/water/SKILL.md +6 -2
- package/database/apply-one-catalog-seed.mjs +63 -0
- package/database/providers.mjs +1 -0
- package/database/seeds/catalog/0005_2026-08-c8-first12.sql +1101 -0
- package/database/seeds/catalog/0006_2026-09-c8-first100.sql +14245 -0
- package/database/seeds/catalog/0007_2026-09-c8-first100-primary-model.sql +14845 -0
- package/mcp/lab-management.mjs +11 -8
- package/mcp/public-catalog.mjs +0 -16
- package/mcp/tree-lab-contract.mjs +2381 -0
- package/mcp/vite-plugin.mjs +5 -1
- package/package.json +29 -18
- package/src/catalog/officialCatalog.js +1 -0
- package/src/catalog/officialCatalogAssetRuntime.js +98 -1
- package/src/catalog/officialCatalogLod.js +160 -16
- package/src/catalog/officialCatalogPlacement.js +52 -12
- package/src/catalog/officialCatalogProvider.js +79 -8
- package/src/catalog/officialCatalogRockPackage.js +172 -0
- package/src/cloud/cloudReprojection.js +40 -7
- package/src/cloud/cloudVolume.js +44 -7
- package/src/cloud/noise/baseShapeVolume.js +8 -6
- package/src/cloud/noise/cirrusMap.js +2 -1
- package/src/cloud/noise/curlNoise.js +2 -1
- package/src/cloud/noise/erosionVolume.js +2 -1
- package/src/cloud/noise/textureCache.js +77 -0
- package/src/cloud/noise/weatherMap.js +2 -1
- package/src/core/sha256.js +83 -0
- package/src/ground-shader/groundShaderMaterial.js +12 -3
- package/src/rock-shader/rockMaterial.js +205 -28
- package/src/rock-shader/rockShaderRuntime.js +17 -1
- package/src/rock-shader/rockShaderSettings.js +16 -0
- package/src/rockgen/index.js +9 -0
- package/src/rockgen/lod/index.js +1 -0
- package/src/rockgen/lod/rockDenseFieldPolicy.js +143 -0
- package/src/rockgen/rockDocument.js +899 -35
- package/src/rockgen/surface/c7GeologySurface.js +39 -9
- package/src/rockgen/surface/naturalRockSurface.js +1948 -0
- package/src/shaders-tsl/chunks/projected-water-caustics.js +14 -2
- package/src/shaders-tsl/chunks/water-foam.js +6 -6
- package/src/shaders-tsl/chunks/water-lighting.js +28 -5
- package/src/shaders-tsl/chunks/water-shore-state.js +5 -2
- package/src/shaders-tsl/chunks/water-waves.js +10 -5
- package/src/shaders-tsl/flower.js +7 -4
- package/src/shaders-tsl/grass.js +4 -3
- package/src/shaders-tsl/water-shore-state-simulation.js +3 -2
- package/src/shaders-tsl/water.js +209 -41
- package/src/sky/skySystem.js +30 -7
- package/src/toon/settings/perspectiveRemovalSettings.js +1 -1
- package/src/toon/toonSettings.js +74 -0
- package/src/vegetation/stylizedFlower.js +6 -0
- package/src/version.js +1 -1
- package/src/water/waterDetailSpectrum.js +91 -0
- package/src/water/waterDynamics.js +422 -0
- package/src/water/waterFoamParticles.js +196 -0
- package/src/water/waterFoamTexture.js +57 -0
- package/src/water/waterHydrodynamics.js +209 -0
- package/src/water/waterMaterial.js +1 -0
- package/src/water/waterRenderExtension.js +107 -0
- package/src/water/waterScenePasses.js +14 -6
- package/src/water/waterSettings.js +53 -26
- package/src/water/waterShoreMaterial.js +38 -14
- package/src/water/waterSpectralOcean.js +137 -0
- package/src/water/waterStageSettings.js +19 -1
- package/src/water/waterSurface.js +62 -18
- package/src/water/waterUnderwaterAtmosphere.js +30 -3
- package/types/catalog/officialCatalog.d.ts +1 -0
- package/types/catalog/officialCatalogPlacement.d.ts +4 -0
- package/types/catalog/officialCatalogRockPackage.d.ts +68 -0
- package/types/cloud/noise/baseShapeVolume.d.ts +1 -1
- package/types/cloud/noise/textureCache.d.ts +12 -0
- package/types/core/sha256.d.ts +2 -0
- package/types/index.d.ts +30 -0
- package/types/rock-shader/rockMaterial.d.ts +3 -0
- package/types/rock-shader/rockShaderSettings.d.ts +2 -0
- package/types/rockgen/index.d.ts +1 -0
- package/types/rockgen/lod/index.d.ts +1 -0
- package/types/rockgen/lod/rockDenseFieldPolicy.d.ts +181 -0
- package/types/rockgen/rockDocument.d.ts +654 -71
- package/types/rockgen/surface/naturalRockSurface.d.ts +100 -0
- package/types/shaders-tsl/chunks/projected-water-caustics.d.ts +7 -1
- package/types/shaders-tsl/chunks/water-lighting.d.ts +4 -3
- package/types/shaders-tsl/water.d.ts +2 -1
- package/types/version.d.ts +1 -1
- package/types/water/waterDetailSpectrum.d.ts +13 -0
- package/types/water/waterDynamics.d.ts +89 -0
- package/types/water/waterFoamParticles.d.ts +32 -0
- package/types/water/waterFoamTexture.d.ts +1 -0
- package/types/water/waterHydrodynamics.d.ts +49 -0
- package/types/water/waterRenderExtension.d.ts +16 -0
- package/types/water/waterScenePasses.d.ts +1 -1
- package/types/water/waterSettings.d.ts +1 -0
- package/types/water/waterSpectralOcean.d.ts +17 -0
- package/types/water/waterStageSettings.d.ts +1 -1
- package/types/water/waterUnderwaterAtmosphere.d.ts +19 -4
|
@@ -0,0 +1,2381 @@
|
|
|
1
|
+
// Generated by scripts/sync-mcp-tree-contract.mjs.
|
|
2
|
+
export const treeContract = {
|
|
3
|
+
"starter": {
|
|
4
|
+
"schema": "treeRecipe",
|
|
5
|
+
"version": 3,
|
|
6
|
+
"type": "tree",
|
|
7
|
+
"architecture": {
|
|
8
|
+
"id": "legacy-woody",
|
|
9
|
+
"engine": "legacy-woody",
|
|
10
|
+
"version": 2
|
|
11
|
+
},
|
|
12
|
+
"options": {
|
|
13
|
+
"size": 1.7,
|
|
14
|
+
"seed": 3,
|
|
15
|
+
"canopyColor": [
|
|
16
|
+
0.30196078431372547,
|
|
17
|
+
0.6352941176470588,
|
|
18
|
+
0.34509803921568627
|
|
19
|
+
],
|
|
20
|
+
"canopyPalette": {},
|
|
21
|
+
"leafDensity": 1,
|
|
22
|
+
"canopy": {
|
|
23
|
+
"architecture": "cloud-cards",
|
|
24
|
+
"cardCount": 170,
|
|
25
|
+
"cardSizeRange": [
|
|
26
|
+
1,
|
|
27
|
+
1.6
|
|
28
|
+
],
|
|
29
|
+
"cardsPerCluster": 5,
|
|
30
|
+
"clusterRadius": 0.48,
|
|
31
|
+
"frondCount": 7,
|
|
32
|
+
"frondLength": 1.25,
|
|
33
|
+
"shellFill": true,
|
|
34
|
+
"sprayLayers": 3,
|
|
35
|
+
"spraySpread": 0.8,
|
|
36
|
+
"sprayThickness": 0.18,
|
|
37
|
+
"whorlArms": 6,
|
|
38
|
+
"whorlRadius": 0.48
|
|
39
|
+
},
|
|
40
|
+
"vegetationShader": "call_me_sensei",
|
|
41
|
+
"canopyWidth": 1,
|
|
42
|
+
"canopyDepth": 1,
|
|
43
|
+
"canopyScale": 1,
|
|
44
|
+
"leafPlacement": "canopy",
|
|
45
|
+
"canopyLayout": {
|
|
46
|
+
"lobeCount": 6,
|
|
47
|
+
"spread": 1.25,
|
|
48
|
+
"flatten": 0.5,
|
|
49
|
+
"coreRadius": 0.9
|
|
50
|
+
},
|
|
51
|
+
"trunk": {
|
|
52
|
+
"height": 1.55,
|
|
53
|
+
"radiusBottom": 0.19,
|
|
54
|
+
"bend": 0.04,
|
|
55
|
+
"lean": 0.05,
|
|
56
|
+
"twist": 0,
|
|
57
|
+
"gnarl": 0,
|
|
58
|
+
"bendDirection": null,
|
|
59
|
+
"leanOffset": null
|
|
60
|
+
},
|
|
61
|
+
"skeleton": {
|
|
62
|
+
"generator": "limbs",
|
|
63
|
+
"levels": 3,
|
|
64
|
+
"childrenCount": 6,
|
|
65
|
+
"branchAngle": 55,
|
|
66
|
+
"branchStart": 0.4,
|
|
67
|
+
"lengthRatio": 0.45,
|
|
68
|
+
"radiusRatio": 0.7,
|
|
69
|
+
"gnarliness": 0.15,
|
|
70
|
+
"forceStrength": 0.02,
|
|
71
|
+
"conifer": false,
|
|
72
|
+
"attractionCount": 90,
|
|
73
|
+
"segmentLength": 0.3,
|
|
74
|
+
"influenceRadius": 1.2,
|
|
75
|
+
"killRadius": 0.42,
|
|
76
|
+
"maxNodes": 140,
|
|
77
|
+
"radialSegments": 8,
|
|
78
|
+
"tipRadius": 0.03,
|
|
79
|
+
"minLimbRadius": 0.028,
|
|
80
|
+
"attractionReach": null
|
|
81
|
+
},
|
|
82
|
+
"foliage": {
|
|
83
|
+
"windDirection": [
|
|
84
|
+
0.9582438755126972,
|
|
85
|
+
0.28595222510483553
|
|
86
|
+
],
|
|
87
|
+
"windSpeed": 1,
|
|
88
|
+
"windStrength": 0.05
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
"fields": {
|
|
93
|
+
"plant": {
|
|
94
|
+
"type": {
|
|
95
|
+
"id": "plant.type",
|
|
96
|
+
"group": "plant",
|
|
97
|
+
"key": "type",
|
|
98
|
+
"label": "Type",
|
|
99
|
+
"description": "Tree (trunk + crown), bush (foliage mass on the ground), or flower (stem + branches tipped with blooms).",
|
|
100
|
+
"type": "select",
|
|
101
|
+
"control": null,
|
|
102
|
+
"defaultValue": "tree",
|
|
103
|
+
"serializable": true,
|
|
104
|
+
"bake": "rebuild",
|
|
105
|
+
"range": null,
|
|
106
|
+
"options": [
|
|
107
|
+
"tree",
|
|
108
|
+
"bush",
|
|
109
|
+
"flower"
|
|
110
|
+
],
|
|
111
|
+
"optionLabels": {
|
|
112
|
+
"tree": "Tree",
|
|
113
|
+
"bush": "Bush / Shrub",
|
|
114
|
+
"flower": "Flower"
|
|
115
|
+
},
|
|
116
|
+
"optionDisabled": null
|
|
117
|
+
},
|
|
118
|
+
"seed": {
|
|
119
|
+
"id": "plant.seed",
|
|
120
|
+
"group": "plant",
|
|
121
|
+
"key": "seed",
|
|
122
|
+
"label": "Seed",
|
|
123
|
+
"description": "Deterministic generation seed; the same options and seed always grow the same tree. Construction-only.",
|
|
124
|
+
"type": "number",
|
|
125
|
+
"control": null,
|
|
126
|
+
"defaultValue": 3,
|
|
127
|
+
"serializable": true,
|
|
128
|
+
"bake": "rebuild",
|
|
129
|
+
"range": {
|
|
130
|
+
"max": 999,
|
|
131
|
+
"min": 1,
|
|
132
|
+
"step": 1
|
|
133
|
+
},
|
|
134
|
+
"options": null,
|
|
135
|
+
"optionLabels": null,
|
|
136
|
+
"optionDisabled": null
|
|
137
|
+
},
|
|
138
|
+
"size": {
|
|
139
|
+
"id": "plant.size",
|
|
140
|
+
"group": "plant",
|
|
141
|
+
"key": "size",
|
|
142
|
+
"label": "Size",
|
|
143
|
+
"description": "Overall tree multiplier (1 ≈ 3 m tree, 2 ≈ 6 m, 3+ large). Construction-only: also densifies canopy cards so leaves stay leaf-sized.",
|
|
144
|
+
"type": "number",
|
|
145
|
+
"control": null,
|
|
146
|
+
"defaultValue": 1.7,
|
|
147
|
+
"serializable": true,
|
|
148
|
+
"bake": "rebuild",
|
|
149
|
+
"range": {
|
|
150
|
+
"max": 6,
|
|
151
|
+
"min": 0.2,
|
|
152
|
+
"step": 0.05
|
|
153
|
+
},
|
|
154
|
+
"options": null,
|
|
155
|
+
"optionLabels": null,
|
|
156
|
+
"optionDisabled": null
|
|
157
|
+
},
|
|
158
|
+
"speciesProfileId": {
|
|
159
|
+
"id": "plant.speciesProfileId",
|
|
160
|
+
"group": "plant",
|
|
161
|
+
"key": "speciesProfileId",
|
|
162
|
+
"label": "Species",
|
|
163
|
+
"description": "A botanical species preset backed by its architecture-specific procedural engine. Experimental profiles are available for testing but remain excluded from approved catalog output.",
|
|
164
|
+
"type": "select",
|
|
165
|
+
"control": "search-select",
|
|
166
|
+
"defaultValue": "",
|
|
167
|
+
"serializable": true,
|
|
168
|
+
"bake": "rebuild",
|
|
169
|
+
"range": null,
|
|
170
|
+
"options": [
|
|
171
|
+
"",
|
|
172
|
+
"adansonia-digitata",
|
|
173
|
+
"elaeis-guineensis",
|
|
174
|
+
"ulmus-americana",
|
|
175
|
+
"liquidambar-styraciflua",
|
|
176
|
+
"malus-domestica",
|
|
177
|
+
"areca-catechu",
|
|
178
|
+
"pyrus-pyrifolia",
|
|
179
|
+
"rhizophora-apiculata",
|
|
180
|
+
"betula-platyphylla",
|
|
181
|
+
"sphaeropteris-cooperi",
|
|
182
|
+
"taxodium-distichum",
|
|
183
|
+
"ficus-benghalensis",
|
|
184
|
+
"laurus-nobilis",
|
|
185
|
+
"swietenia-macrophylla",
|
|
186
|
+
"phyllostachys-bissetii",
|
|
187
|
+
"alnus-glutinosa",
|
|
188
|
+
"phyllostachys-nigra",
|
|
189
|
+
"populus-nigra",
|
|
190
|
+
"sphaeropteris-medullaris",
|
|
191
|
+
"eucalyptus-globulus",
|
|
192
|
+
"melaleuca-quinquenervia",
|
|
193
|
+
"podocarpus-macrophyllus",
|
|
194
|
+
"macrozamia-communis",
|
|
195
|
+
"sabal-palmetto",
|
|
196
|
+
"cordyline-australis",
|
|
197
|
+
"dracaena-draco",
|
|
198
|
+
"ceratonia-siliqua",
|
|
199
|
+
"cedrus-libani",
|
|
200
|
+
"dioon-edule",
|
|
201
|
+
"ficus-microcarpa",
|
|
202
|
+
"ulmus-parvifolia",
|
|
203
|
+
"livistona-chinensis",
|
|
204
|
+
"juniperus-chinensis",
|
|
205
|
+
"cercis-chinensis",
|
|
206
|
+
"glyptostrobus-pensilis",
|
|
207
|
+
"sequoia-sempervirens",
|
|
208
|
+
"cocos-nucifera",
|
|
209
|
+
"bambusa-vulgaris",
|
|
210
|
+
"celtis-occidentalis",
|
|
211
|
+
"quercus-suber",
|
|
212
|
+
"phoenix-dactylifera",
|
|
213
|
+
"metasequoia-glyptostroboides",
|
|
214
|
+
"cedrus-deodara",
|
|
215
|
+
"pseudotsuga-menziesii",
|
|
216
|
+
"hyphaene-thebaica",
|
|
217
|
+
"encephalartos-altensteinii",
|
|
218
|
+
"populus-deltoides",
|
|
219
|
+
"pinus-strobus",
|
|
220
|
+
"paulownia-tomentosa",
|
|
221
|
+
"quercus-robur",
|
|
222
|
+
"juglans-regia",
|
|
223
|
+
"ensete-ventricosum",
|
|
224
|
+
"populus-tremula",
|
|
225
|
+
"fraxinus-excelsior",
|
|
226
|
+
"fagus-sylvatica",
|
|
227
|
+
"carpinus-betulus",
|
|
228
|
+
"larix-decidua",
|
|
229
|
+
"prunus-domestica",
|
|
230
|
+
"abies-alba",
|
|
231
|
+
"picea-jezoensis",
|
|
232
|
+
"acer-japonicum",
|
|
233
|
+
"corymbia-aparrerinja",
|
|
234
|
+
"dendrocalamus-asper",
|
|
235
|
+
"strelitzia-nicolai",
|
|
236
|
+
"pachycereus-pringlei",
|
|
237
|
+
"sequoiadendron-giganteum",
|
|
238
|
+
"bambusa-oldhamii",
|
|
239
|
+
"ginkgo-biloba",
|
|
240
|
+
"phyllostachys-aurea",
|
|
241
|
+
"dypsis-lutescens",
|
|
242
|
+
"adansonia-grandidieri",
|
|
243
|
+
"pinus-longaeva",
|
|
244
|
+
"avicennia-marina",
|
|
245
|
+
"guadua-angustifolia",
|
|
246
|
+
"senegalia-senegal",
|
|
247
|
+
"dipterocarpus-alatus",
|
|
248
|
+
"cibotium-glaucum",
|
|
249
|
+
"chamaecyparis-obtusa",
|
|
250
|
+
"quercus-ilex",
|
|
251
|
+
"cupressus-sempervirens",
|
|
252
|
+
"jacaranda-mimosifolia",
|
|
253
|
+
"alnus-japonica",
|
|
254
|
+
"prunus-mume",
|
|
255
|
+
"fagus-crenata",
|
|
256
|
+
"pinus-thunbergii",
|
|
257
|
+
"cryptomeria-japonica",
|
|
258
|
+
"prunus-serrulata",
|
|
259
|
+
"carpinus-japonica",
|
|
260
|
+
"larix-kaempferi",
|
|
261
|
+
"acer-palmatum",
|
|
262
|
+
"diospyros-kaki",
|
|
263
|
+
"pinus-densiflora",
|
|
264
|
+
"phyllostachys-bambusoides",
|
|
265
|
+
"pinus-parviflora",
|
|
266
|
+
"zelkova-serrata",
|
|
267
|
+
"yucca-brevifolia",
|
|
268
|
+
"ceiba-pentandra",
|
|
269
|
+
"magnolia-kobus",
|
|
270
|
+
"cornus-kousa",
|
|
271
|
+
"rhapis-excelsa",
|
|
272
|
+
"bruguiera-gymnorhiza",
|
|
273
|
+
"pinus-contorta",
|
|
274
|
+
"pinus-palustris",
|
|
275
|
+
"fraxinus-mandshurica",
|
|
276
|
+
"mangifera-indica",
|
|
277
|
+
"sclerocarya-birrea",
|
|
278
|
+
"chamaerops-humilis",
|
|
279
|
+
"washingtonia-robusta",
|
|
280
|
+
"abies-firma",
|
|
281
|
+
"araucaria-araucana",
|
|
282
|
+
"ficus-macrophylla",
|
|
283
|
+
"phyllostachys-edulis",
|
|
284
|
+
"agathis-australis",
|
|
285
|
+
"nypa-fruticans",
|
|
286
|
+
"araucaria-heterophylla",
|
|
287
|
+
"quercus-rubra",
|
|
288
|
+
"picea-abies",
|
|
289
|
+
"olea-europaea",
|
|
290
|
+
"stenocereus-thurberi",
|
|
291
|
+
"borassus-flabellifer",
|
|
292
|
+
"betula-papyrifera",
|
|
293
|
+
"acer-griseum",
|
|
294
|
+
"prunus-persica",
|
|
295
|
+
"cereus-repandus",
|
|
296
|
+
"pinus-ponderosa",
|
|
297
|
+
"opuntia-ficus-indica",
|
|
298
|
+
"populus-tremuloides",
|
|
299
|
+
"cycas-circinalis",
|
|
300
|
+
"aloidendron-dichotomum",
|
|
301
|
+
"samanea-saman",
|
|
302
|
+
"eucalyptus-deglupta",
|
|
303
|
+
"rhizophora-mangle",
|
|
304
|
+
"acer-rubrum",
|
|
305
|
+
"eucalyptus-camaldulensis",
|
|
306
|
+
"fargesia-robusta",
|
|
307
|
+
"roystonea-regia",
|
|
308
|
+
"delonix-regia",
|
|
309
|
+
"ficus-elastica",
|
|
310
|
+
"ficus-religiosa",
|
|
311
|
+
"cycas-revoluta",
|
|
312
|
+
"carnegiea-gigantea",
|
|
313
|
+
"shorea-robusta",
|
|
314
|
+
"pinus-sylvestris",
|
|
315
|
+
"pandanus-tectorius",
|
|
316
|
+
"betula-pendula",
|
|
317
|
+
"alsophila-dealbata",
|
|
318
|
+
"tilia-cordata",
|
|
319
|
+
"dracaena-cinnabari",
|
|
320
|
+
"dicksonia-antarctica",
|
|
321
|
+
"pinus-pinea",
|
|
322
|
+
"arbutus-unedo",
|
|
323
|
+
"acer-saccharum",
|
|
324
|
+
"castanea-sativa",
|
|
325
|
+
"tamarindus-indica",
|
|
326
|
+
"ravenala-madagascariensis",
|
|
327
|
+
"koompassia-excelsa",
|
|
328
|
+
"liriodendron-tulipifera",
|
|
329
|
+
"vachellia-tortilis",
|
|
330
|
+
"thuja-plicata",
|
|
331
|
+
"salix-alba",
|
|
332
|
+
"sonneratia-alba",
|
|
333
|
+
"musa-acuminata",
|
|
334
|
+
"trachycarpus-fortunei",
|
|
335
|
+
"wollemia-nobilis",
|
|
336
|
+
"ulmus-glabra"
|
|
337
|
+
],
|
|
338
|
+
"optionLabels": {
|
|
339
|
+
"": "Classic / custom tree",
|
|
340
|
+
"adansonia-digitata": "African baobab — Adansonia digitata (experimental)",
|
|
341
|
+
"elaeis-guineensis": "African oil palm — Elaeis guineensis (experimental)",
|
|
342
|
+
"ulmus-americana": "American elm — Ulmus americana (experimental)",
|
|
343
|
+
"liquidambar-styraciflua": "American sweetgum — Liquidambar styraciflua (experimental)",
|
|
344
|
+
"malus-domestica": "Apple — Malus domestica (experimental)",
|
|
345
|
+
"areca-catechu": "Areca palm — Areca catechu (experimental)",
|
|
346
|
+
"pyrus-pyrifolia": "Asian pear — Pyrus pyrifolia (experimental)",
|
|
347
|
+
"rhizophora-apiculata": "Asian red mangrove — Rhizophora apiculata (experimental)",
|
|
348
|
+
"betula-platyphylla": "Asian white birch — Betula pendula subsp. mandshurica (experimental)",
|
|
349
|
+
"sphaeropteris-cooperi": "Australian tree fern — Sphaeropteris cooperi (experimental)",
|
|
350
|
+
"taxodium-distichum": "Bald cypress — Taxodium distichum (experimental)",
|
|
351
|
+
"ficus-benghalensis": "Banyan — Ficus benghalensis (experimental)",
|
|
352
|
+
"laurus-nobilis": "Bay laurel — Laurus nobilis (experimental)",
|
|
353
|
+
"swietenia-macrophylla": "Big-leaf mahogany — Swietenia macrophylla (experimental)",
|
|
354
|
+
"phyllostachys-bissetii": "Bisset bamboo — Phyllostachys bissetii (experimental)",
|
|
355
|
+
"alnus-glutinosa": "Black alder — Alnus glutinosa (experimental)",
|
|
356
|
+
"phyllostachys-nigra": "Black bamboo — Phyllostachys nigra (experimental)",
|
|
357
|
+
"populus-nigra": "Black poplar — Populus nigra (experimental)",
|
|
358
|
+
"sphaeropteris-medullaris": "Black tree fern — Sphaeropteris medullaris (experimental)",
|
|
359
|
+
"eucalyptus-globulus": "Blue gum — Eucalyptus globulus (experimental)",
|
|
360
|
+
"melaleuca-quinquenervia": "Broad-leaved paperbark — Melaleuca quinquenervia (experimental)",
|
|
361
|
+
"podocarpus-macrophyllus": "Buddhist pine — Podocarpus macrophyllus (experimental)",
|
|
362
|
+
"macrozamia-communis": "Burrawang — Macrozamia communis (experimental)",
|
|
363
|
+
"sabal-palmetto": "Cabbage palm — Sabal palmetto (experimental)",
|
|
364
|
+
"cordyline-australis": "Cabbage tree — Cordyline australis (experimental)",
|
|
365
|
+
"dracaena-draco": "Canary Islands dragon tree — Dracaena draco (experimental)",
|
|
366
|
+
"ceratonia-siliqua": "Carob — Ceratonia siliqua (experimental)",
|
|
367
|
+
"cedrus-libani": "Cedar of Lebanon — Cedrus libani (experimental)",
|
|
368
|
+
"dioon-edule": "Chestnut dioon — Dioon edule (experimental)",
|
|
369
|
+
"ficus-microcarpa": "Chinese banyan — Ficus microcarpa (experimental)",
|
|
370
|
+
"ulmus-parvifolia": "Chinese elm — Ulmus parvifolia (experimental)",
|
|
371
|
+
"livistona-chinensis": "Chinese fan palm — Livistona chinensis (experimental)",
|
|
372
|
+
"juniperus-chinensis": "Chinese juniper — Juniperus chinensis (experimental)",
|
|
373
|
+
"cercis-chinensis": "Chinese redbud — Cercis chinensis (experimental)",
|
|
374
|
+
"glyptostrobus-pensilis": "Chinese swamp cypress — Glyptostrobus pensilis (experimental)",
|
|
375
|
+
"sequoia-sempervirens": "Coast redwood — Sequoia sempervirens (experimental)",
|
|
376
|
+
"cocos-nucifera": "Coconut — Cocos nucifera (experimental)",
|
|
377
|
+
"bambusa-vulgaris": "Common bamboo — Bambusa vulgaris (experimental)",
|
|
378
|
+
"celtis-occidentalis": "Common hackberry — Celtis occidentalis (experimental)",
|
|
379
|
+
"quercus-suber": "Cork oak — Quercus suber (experimental)",
|
|
380
|
+
"phoenix-dactylifera": "Date palm — Phoenix dactylifera (experimental)",
|
|
381
|
+
"metasequoia-glyptostroboides": "Dawn redwood — Metasequoia glyptostroboides (experimental)",
|
|
382
|
+
"cedrus-deodara": "Deodar cedar — Cedrus deodara (experimental)",
|
|
383
|
+
"pseudotsuga-menziesii": "Douglas fir — Pseudotsuga menziesii (experimental)",
|
|
384
|
+
"hyphaene-thebaica": "Doum palm — Hyphaene thebaica (experimental)",
|
|
385
|
+
"encephalartos-altensteinii": "Eastern Cape giant cycad — Encephalartos altensteinii (experimental)",
|
|
386
|
+
"populus-deltoides": "Eastern cottonwood — Populus deltoides (experimental)",
|
|
387
|
+
"pinus-strobus": "Eastern white pine — Pinus strobus (experimental)",
|
|
388
|
+
"paulownia-tomentosa": "Empress tree — Paulownia tomentosa (experimental)",
|
|
389
|
+
"quercus-robur": "English oak — Quercus robur (experimental)",
|
|
390
|
+
"juglans-regia": "English walnut — Juglans regia (experimental)",
|
|
391
|
+
"ensete-ventricosum": "Ethiopian banana — Ensete ventricosum (experimental)",
|
|
392
|
+
"populus-tremula": "Eurasian aspen — Populus tremula (experimental)",
|
|
393
|
+
"fraxinus-excelsior": "European ash — Fraxinus excelsior (experimental)",
|
|
394
|
+
"fagus-sylvatica": "European beech — Fagus sylvatica (experimental)",
|
|
395
|
+
"carpinus-betulus": "European hornbeam — Carpinus betulus (experimental)",
|
|
396
|
+
"larix-decidua": "European larch — Larix decidua (experimental)",
|
|
397
|
+
"prunus-domestica": "European plum — Prunus domestica (experimental)",
|
|
398
|
+
"abies-alba": "European silver fir — Abies alba (experimental)",
|
|
399
|
+
"picea-jezoensis": "Ezo spruce — Picea jezoensis (experimental)",
|
|
400
|
+
"acer-japonicum": "Fullmoon maple — Acer japonicum (experimental)",
|
|
401
|
+
"corymbia-aparrerinja": "Ghost gum — Corymbia aparrerinja (experimental)",
|
|
402
|
+
"dendrocalamus-asper": "Giant bamboo — Dendrocalamus asper (experimental)",
|
|
403
|
+
"strelitzia-nicolai": "Giant bird-of-paradise — Strelitzia nicolai (experimental)",
|
|
404
|
+
"pachycereus-pringlei": "Giant cardon — Pachycereus pringlei (experimental)",
|
|
405
|
+
"sequoiadendron-giganteum": "Giant sequoia — Sequoiadendron giganteum (experimental)",
|
|
406
|
+
"bambusa-oldhamii": "Giant timber bamboo — Bambusa oldhamii (experimental)",
|
|
407
|
+
"ginkgo-biloba": "Ginkgo — Ginkgo biloba (experimental)",
|
|
408
|
+
"phyllostachys-aurea": "Golden bamboo — Phyllostachys aurea (experimental)",
|
|
409
|
+
"dypsis-lutescens": "Golden cane palm — Chrysalidocarpus lutescens (experimental)",
|
|
410
|
+
"adansonia-grandidieri": "Grandidier's baobab — Adansonia grandidieri (experimental)",
|
|
411
|
+
"pinus-longaeva": "Great Basin bristlecone pine — Pinus longaeva (experimental)",
|
|
412
|
+
"avicennia-marina": "Grey mangrove — Avicennia marina (experimental)",
|
|
413
|
+
"guadua-angustifolia": "Guadua bamboo — Guadua angustifolia (experimental)",
|
|
414
|
+
"senegalia-senegal": "Gum arabic tree — Senegalia senegal (experimental)",
|
|
415
|
+
"dipterocarpus-alatus": "Gurjan — Dipterocarpus alatus (experimental)",
|
|
416
|
+
"cibotium-glaucum": "Hapuu — Cibotium glaucum (experimental)",
|
|
417
|
+
"chamaecyparis-obtusa": "Hinoki cypress — Chamaecyparis obtusa (experimental)",
|
|
418
|
+
"quercus-ilex": "Holm oak — Quercus ilex (experimental)",
|
|
419
|
+
"cupressus-sempervirens": "Italian cypress — Cupressus sempervirens (experimental)",
|
|
420
|
+
"jacaranda-mimosifolia": "Jacaranda — Jacaranda mimosifolia (experimental)",
|
|
421
|
+
"alnus-japonica": "Japanese alder — Alnus japonica (experimental)",
|
|
422
|
+
"prunus-mume": "Japanese apricot — Prunus mume (experimental)",
|
|
423
|
+
"fagus-crenata": "Japanese beech — Fagus crenata (experimental)",
|
|
424
|
+
"pinus-thunbergii": "Japanese black pine — Pinus thunbergii (experimental)",
|
|
425
|
+
"cryptomeria-japonica": "Japanese cedar — Cryptomeria japonica (experimental)",
|
|
426
|
+
"prunus-serrulata": "Japanese flowering cherry — Prunus serrulata (experimental)",
|
|
427
|
+
"carpinus-japonica": "Japanese hornbeam — Carpinus japonica (experimental)",
|
|
428
|
+
"larix-kaempferi": "Japanese larch — Larix kaempferi (experimental)",
|
|
429
|
+
"acer-palmatum": "Japanese maple — Acer palmatum (experimental)",
|
|
430
|
+
"diospyros-kaki": "Japanese persimmon — Diospyros kaki (experimental)",
|
|
431
|
+
"pinus-densiflora": "Japanese red pine — Pinus densiflora (experimental)",
|
|
432
|
+
"phyllostachys-bambusoides": "Japanese timber bamboo — Phyllostachys reticulata (experimental)",
|
|
433
|
+
"pinus-parviflora": "Japanese white pine — Pinus parviflora (experimental)",
|
|
434
|
+
"zelkova-serrata": "Japanese zelkova — Zelkova serrata (experimental)",
|
|
435
|
+
"yucca-brevifolia": "Joshua tree — Yucca brevifolia (experimental)",
|
|
436
|
+
"ceiba-pentandra": "Kapok — Ceiba pentandra (experimental)",
|
|
437
|
+
"magnolia-kobus": "Kobus magnolia — Magnolia kobus (experimental)",
|
|
438
|
+
"cornus-kousa": "Kousa dogwood — Cornus kousa (experimental)",
|
|
439
|
+
"rhapis-excelsa": "Lady palm — Rhapis excelsa (experimental)",
|
|
440
|
+
"bruguiera-gymnorhiza": "Large-leafed mangrove — Bruguiera gymnorhiza (experimental)",
|
|
441
|
+
"pinus-contorta": "Lodgepole pine — Pinus contorta (experimental)",
|
|
442
|
+
"pinus-palustris": "Longleaf pine — Pinus palustris (experimental)",
|
|
443
|
+
"fraxinus-mandshurica": "Manchurian ash — Fraxinus mandshurica (experimental)",
|
|
444
|
+
"mangifera-indica": "Mango — Mangifera indica (experimental)",
|
|
445
|
+
"sclerocarya-birrea": "Marula — Sclerocarya birrea (experimental)",
|
|
446
|
+
"chamaerops-humilis": "Mediterranean fan palm — Chamaerops humilis (experimental)",
|
|
447
|
+
"washingtonia-robusta": "Mexican fan palm — Washingtonia filifera var. robusta (experimental)",
|
|
448
|
+
"abies-firma": "Momi fir — Abies firma (experimental)",
|
|
449
|
+
"araucaria-araucana": "Monkey puzzle — Araucaria araucana (experimental)",
|
|
450
|
+
"ficus-macrophylla": "Moreton Bay fig — Ficus macrophylla (experimental)",
|
|
451
|
+
"phyllostachys-edulis": "Moso bamboo — Phyllostachys edulis (experimental)",
|
|
452
|
+
"agathis-australis": "New Zealand kauri — Agathis australis (experimental)",
|
|
453
|
+
"nypa-fruticans": "Nipa palm — Nypa fruticans (experimental)",
|
|
454
|
+
"araucaria-heterophylla": "Norfolk Island pine — Araucaria heterophylla (experimental)",
|
|
455
|
+
"quercus-rubra": "Northern red oak — Quercus rubra (experimental)",
|
|
456
|
+
"picea-abies": "Norway spruce — Picea abies (experimental)",
|
|
457
|
+
"olea-europaea": "Olive — Olea europaea (experimental)",
|
|
458
|
+
"stenocereus-thurberi": "Organ-pipe cactus — Stenocereus thurberi (experimental)",
|
|
459
|
+
"borassus-flabellifer": "Palmyra palm — Borassus flabellifer (experimental)",
|
|
460
|
+
"betula-papyrifera": "Paper birch — Betula papyrifera (experimental)",
|
|
461
|
+
"acer-griseum": "Paperbark maple — Acer griseum (experimental)",
|
|
462
|
+
"prunus-persica": "Peach — Prunus persica (experimental)",
|
|
463
|
+
"cereus-repandus": "Peruvian apple cactus — Cereus repandus (experimental)",
|
|
464
|
+
"pinus-ponderosa": "Ponderosa pine — Pinus ponderosa (experimental)",
|
|
465
|
+
"opuntia-ficus-indica": "Prickly pear — Opuntia ficus-indica (experimental)",
|
|
466
|
+
"populus-tremuloides": "Quaking aspen — Populus tremuloides (experimental)",
|
|
467
|
+
"cycas-circinalis": "Queen sago — Cycas circinalis (experimental)",
|
|
468
|
+
"aloidendron-dichotomum": "Quiver tree — Aloidendron dichotomum (experimental)",
|
|
469
|
+
"samanea-saman": "Rain tree — Samanea saman (experimental)",
|
|
470
|
+
"eucalyptus-deglupta": "Rainbow eucalyptus — Eucalyptus deglupta (experimental)",
|
|
471
|
+
"rhizophora-mangle": "Red mangrove — Rhizophora mangle (experimental)",
|
|
472
|
+
"acer-rubrum": "Red maple — Acer rubrum (experimental)",
|
|
473
|
+
"eucalyptus-camaldulensis": "River red gum — Eucalyptus camaldulensis (experimental)",
|
|
474
|
+
"fargesia-robusta": "Robust fountain bamboo — Fargesia robusta (experimental)",
|
|
475
|
+
"roystonea-regia": "Royal palm — Roystonea regia (experimental)",
|
|
476
|
+
"delonix-regia": "Royal poinciana — Delonix regia (experimental)",
|
|
477
|
+
"ficus-elastica": "Rubber fig — Ficus elastica (experimental)",
|
|
478
|
+
"ficus-religiosa": "Sacred fig — Ficus religiosa (experimental)",
|
|
479
|
+
"cycas-revoluta": "Sago cycad — Cycas revoluta (experimental)",
|
|
480
|
+
"carnegiea-gigantea": "Saguaro — Carnegiea gigantea (experimental)",
|
|
481
|
+
"shorea-robusta": "Sal — Shorea robusta (experimental)",
|
|
482
|
+
"pinus-sylvestris": "Scots pine — Pinus sylvestris (experimental)",
|
|
483
|
+
"pandanus-tectorius": "Screw pine — Pandanus tectorius (experimental)",
|
|
484
|
+
"betula-pendula": "Silver birch — Betula pendula (experimental)",
|
|
485
|
+
"alsophila-dealbata": "Silver fern — Alsophila dealbata (experimental)",
|
|
486
|
+
"tilia-cordata": "Small-leaved lime — Tilia cordata (experimental)",
|
|
487
|
+
"dracaena-cinnabari": "Socotra dragon tree — Dracaena cinnabari (experimental)",
|
|
488
|
+
"dicksonia-antarctica": "Soft tree fern — Dicksonia antarctica (experimental)",
|
|
489
|
+
"pinus-pinea": "Stone pine — Pinus pinea (experimental)",
|
|
490
|
+
"arbutus-unedo": "Strawberry tree — Arbutus unedo (experimental)",
|
|
491
|
+
"acer-saccharum": "Sugar maple — Acer saccharum (experimental)",
|
|
492
|
+
"castanea-sativa": "Sweet chestnut — Castanea sativa (experimental)",
|
|
493
|
+
"tamarindus-indica": "Tamarind — Tamarindus indica (experimental)",
|
|
494
|
+
"ravenala-madagascariensis": "Traveller's tree — Ravenala madagascariensis (experimental)",
|
|
495
|
+
"koompassia-excelsa": "Tualang — Koompassia excelsa (experimental)",
|
|
496
|
+
"liriodendron-tulipifera": "Tulip tree — Liriodendron tulipifera (experimental)",
|
|
497
|
+
"vachellia-tortilis": "Umbrella thorn — Vachellia tortilis (experimental)",
|
|
498
|
+
"thuja-plicata": "Western red cedar — Thuja plicata (experimental)",
|
|
499
|
+
"salix-alba": "White willow — Salix alba (experimental)",
|
|
500
|
+
"sonneratia-alba": "White-flowered mangrove apple — Sonneratia alba (experimental)",
|
|
501
|
+
"musa-acuminata": "Wild banana — Musa acuminata (experimental)",
|
|
502
|
+
"trachycarpus-fortunei": "Windmill palm — Trachycarpus fortunei (experimental)",
|
|
503
|
+
"wollemia-nobilis": "Wollemi pine — Wollemia nobilis (experimental)",
|
|
504
|
+
"ulmus-glabra": "Wych elm — Ulmus glabra (experimental)"
|
|
505
|
+
},
|
|
506
|
+
"optionDisabled": null
|
|
507
|
+
},
|
|
508
|
+
"lifeStageSlot": {
|
|
509
|
+
"id": "plant.lifeStageSlot",
|
|
510
|
+
"group": "plant",
|
|
511
|
+
"key": "lifeStageSlot",
|
|
512
|
+
"label": "Life stage",
|
|
513
|
+
"description": "A named checkpoint for the selected species; choosing one also positions the growth slider.",
|
|
514
|
+
"type": "select",
|
|
515
|
+
"control": null,
|
|
516
|
+
"defaultValue": "mature",
|
|
517
|
+
"serializable": true,
|
|
518
|
+
"bake": "rebuild",
|
|
519
|
+
"range": null,
|
|
520
|
+
"options": [
|
|
521
|
+
"juvenile",
|
|
522
|
+
"young",
|
|
523
|
+
"mature",
|
|
524
|
+
"old",
|
|
525
|
+
"ancient",
|
|
526
|
+
"shoot",
|
|
527
|
+
"juvenile-culm",
|
|
528
|
+
"mature-culm",
|
|
529
|
+
"established-clump",
|
|
530
|
+
"mixed-age-grove",
|
|
531
|
+
"juvenile-rosette",
|
|
532
|
+
"trunk-forming",
|
|
533
|
+
"young-trunk",
|
|
534
|
+
"juvenile-clump",
|
|
535
|
+
"mature-clump",
|
|
536
|
+
"old-clump",
|
|
537
|
+
"mixed-age-colony",
|
|
538
|
+
"unbranched-trunk",
|
|
539
|
+
"first-branching",
|
|
540
|
+
"mature-multi-head",
|
|
541
|
+
"old-multi-head",
|
|
542
|
+
"young-pseudostem",
|
|
543
|
+
"sucker-clump",
|
|
544
|
+
"column-forming",
|
|
545
|
+
"first-branch",
|
|
546
|
+
"old-multi-arm"
|
|
547
|
+
],
|
|
548
|
+
"optionLabels": null,
|
|
549
|
+
"optionDisabled": null
|
|
550
|
+
},
|
|
551
|
+
"developmentProgress": {
|
|
552
|
+
"id": "plant.developmentProgress",
|
|
553
|
+
"group": "plant",
|
|
554
|
+
"key": "developmentProgress",
|
|
555
|
+
"label": "Growth / age",
|
|
556
|
+
"description": "Continuously grow the same individual from its youngest to oldest supported form.",
|
|
557
|
+
"type": "number",
|
|
558
|
+
"control": null,
|
|
559
|
+
"defaultValue": 0.5,
|
|
560
|
+
"serializable": true,
|
|
561
|
+
"bake": "rebuild",
|
|
562
|
+
"range": {
|
|
563
|
+
"min": 0,
|
|
564
|
+
"max": 1,
|
|
565
|
+
"step": 0.01
|
|
566
|
+
},
|
|
567
|
+
"options": null,
|
|
568
|
+
"optionLabels": null,
|
|
569
|
+
"optionDisabled": null
|
|
570
|
+
},
|
|
571
|
+
"foliageState": {
|
|
572
|
+
"id": "plant.foliageState",
|
|
573
|
+
"group": "plant",
|
|
574
|
+
"key": "foliageState",
|
|
575
|
+
"label": "Foliage state",
|
|
576
|
+
"description": "Biologically valid seasonal appearance for the selected species.",
|
|
577
|
+
"type": "select",
|
|
578
|
+
"control": null,
|
|
579
|
+
"defaultValue": "leaf-on",
|
|
580
|
+
"serializable": true,
|
|
581
|
+
"bake": "rebuild",
|
|
582
|
+
"range": null,
|
|
583
|
+
"options": [
|
|
584
|
+
"leaf-on",
|
|
585
|
+
"autumn",
|
|
586
|
+
"dormant",
|
|
587
|
+
"dry",
|
|
588
|
+
"wet",
|
|
589
|
+
"snow",
|
|
590
|
+
"green"
|
|
591
|
+
],
|
|
592
|
+
"optionLabels": null,
|
|
593
|
+
"optionDisabled": null
|
|
594
|
+
},
|
|
595
|
+
"stylePreset": {
|
|
596
|
+
"id": "plant.stylePreset",
|
|
597
|
+
"group": "plant",
|
|
598
|
+
"key": "stylePreset",
|
|
599
|
+
"label": "Art style",
|
|
600
|
+
"description": "The vegetation shading language used consistently by trunks, culms, fronds, needles, and leaves.",
|
|
601
|
+
"type": "select",
|
|
602
|
+
"control": null,
|
|
603
|
+
"defaultValue": "call_me_sensei",
|
|
604
|
+
"serializable": true,
|
|
605
|
+
"bake": "rebuild",
|
|
606
|
+
"range": null,
|
|
607
|
+
"options": [
|
|
608
|
+
"call_me_sensei",
|
|
609
|
+
"default"
|
|
610
|
+
],
|
|
611
|
+
"optionLabels": {
|
|
612
|
+
"call_me_sensei": "Call Me Sensei",
|
|
613
|
+
"default": "Neutral toon"
|
|
614
|
+
},
|
|
615
|
+
"optionDisabled": null
|
|
616
|
+
},
|
|
617
|
+
"growthForm": {
|
|
618
|
+
"id": "plant.growthForm",
|
|
619
|
+
"group": "plant",
|
|
620
|
+
"key": "growthForm",
|
|
621
|
+
"label": "Growth / training form",
|
|
622
|
+
"description": "A structural transform applied after species and biological age. Bonsai and cultivated forms never change the botanical identity.",
|
|
623
|
+
"type": "select",
|
|
624
|
+
"control": null,
|
|
625
|
+
"defaultValue": "natural",
|
|
626
|
+
"serializable": true,
|
|
627
|
+
"bake": "rebuild",
|
|
628
|
+
"range": null,
|
|
629
|
+
"options": [
|
|
630
|
+
"natural",
|
|
631
|
+
"multi-stem",
|
|
632
|
+
"columnar",
|
|
633
|
+
"weeping",
|
|
634
|
+
"pollarded",
|
|
635
|
+
"coppiced",
|
|
636
|
+
"bonsai",
|
|
637
|
+
"topiary"
|
|
638
|
+
],
|
|
639
|
+
"optionLabels": {
|
|
640
|
+
"natural": "Natural / species default",
|
|
641
|
+
"multi-stem": "Multi-stem",
|
|
642
|
+
"columnar": "Columnar",
|
|
643
|
+
"weeping": "Weeping",
|
|
644
|
+
"pollarded": "Pollarded",
|
|
645
|
+
"coppiced": "Coppiced",
|
|
646
|
+
"bonsai": "Bonsai",
|
|
647
|
+
"topiary": "Topiary"
|
|
648
|
+
},
|
|
649
|
+
"optionDisabled": null
|
|
650
|
+
},
|
|
651
|
+
"growthFormSubtype": {
|
|
652
|
+
"id": "plant.growthFormSubtype",
|
|
653
|
+
"group": "plant",
|
|
654
|
+
"key": "growthFormSubtype",
|
|
655
|
+
"label": "Form subtype",
|
|
656
|
+
"description": "Training-system subtype. The available choices follow the selected growth form.",
|
|
657
|
+
"type": "select",
|
|
658
|
+
"control": null,
|
|
659
|
+
"defaultValue": "species-default",
|
|
660
|
+
"serializable": true,
|
|
661
|
+
"bake": "rebuild",
|
|
662
|
+
"range": null,
|
|
663
|
+
"options": [
|
|
664
|
+
"species-default",
|
|
665
|
+
"clump",
|
|
666
|
+
"narrow-upright",
|
|
667
|
+
"pendant-crown",
|
|
668
|
+
"pollard-head",
|
|
669
|
+
"stool",
|
|
670
|
+
"formal-upright",
|
|
671
|
+
"informal-upright",
|
|
672
|
+
"slanting",
|
|
673
|
+
"cascade",
|
|
674
|
+
"semi-cascade",
|
|
675
|
+
"windswept",
|
|
676
|
+
"broom",
|
|
677
|
+
"literati",
|
|
678
|
+
"clump-forest",
|
|
679
|
+
"sphere",
|
|
680
|
+
"cone",
|
|
681
|
+
"cloud"
|
|
682
|
+
],
|
|
683
|
+
"optionLabels": null,
|
|
684
|
+
"optionDisabled": null
|
|
685
|
+
}
|
|
686
|
+
},
|
|
687
|
+
"structure": {
|
|
688
|
+
"engine": {
|
|
689
|
+
"id": "structure.engine",
|
|
690
|
+
"group": "structure",
|
|
691
|
+
"key": "engine",
|
|
692
|
+
"label": "Architecture engine",
|
|
693
|
+
"description": "The structural generator selected by the species profile.",
|
|
694
|
+
"type": "select",
|
|
695
|
+
"control": null,
|
|
696
|
+
"defaultValue": "legacy-woody",
|
|
697
|
+
"serializable": true,
|
|
698
|
+
"bake": "rebuild",
|
|
699
|
+
"range": null,
|
|
700
|
+
"options": [
|
|
701
|
+
"legacy-woody",
|
|
702
|
+
"branch-tree",
|
|
703
|
+
"woody-axis",
|
|
704
|
+
"whorled-conifer",
|
|
705
|
+
"culm-colony",
|
|
706
|
+
"terminal-crown",
|
|
707
|
+
"branched-rosette",
|
|
708
|
+
"pseudostem-fan",
|
|
709
|
+
"succulent-axis"
|
|
710
|
+
],
|
|
711
|
+
"optionLabels": null,
|
|
712
|
+
"optionDisabled": null
|
|
713
|
+
},
|
|
714
|
+
"crownMode": {
|
|
715
|
+
"id": "structure.crownMode",
|
|
716
|
+
"group": "structure",
|
|
717
|
+
"key": "crownMode",
|
|
718
|
+
"label": "Crown growth mode",
|
|
719
|
+
"description": "Leader and crown-envelope behavior for recursive woody trees.",
|
|
720
|
+
"type": "select",
|
|
721
|
+
"control": null,
|
|
722
|
+
"defaultValue": "decurrent",
|
|
723
|
+
"serializable": true,
|
|
724
|
+
"bake": "rebuild",
|
|
725
|
+
"range": null,
|
|
726
|
+
"options": [
|
|
727
|
+
"monopodial",
|
|
728
|
+
"excurrent",
|
|
729
|
+
"sparse-excurrent",
|
|
730
|
+
"decurrent",
|
|
731
|
+
"sympodial",
|
|
732
|
+
"vase",
|
|
733
|
+
"layered",
|
|
734
|
+
"columnar",
|
|
735
|
+
"weeping",
|
|
736
|
+
"spreading",
|
|
737
|
+
"umbrella",
|
|
738
|
+
"colonized"
|
|
739
|
+
],
|
|
740
|
+
"optionLabels": null,
|
|
741
|
+
"optionDisabled": null
|
|
742
|
+
},
|
|
743
|
+
"stemCount": {
|
|
744
|
+
"id": "structure.stemCount",
|
|
745
|
+
"group": "structure",
|
|
746
|
+
"key": "stemCount",
|
|
747
|
+
"label": "Stems / culms",
|
|
748
|
+
"description": "Colony stem count for bamboo, clustering palms, and giant monocots.",
|
|
749
|
+
"type": "number",
|
|
750
|
+
"control": null,
|
|
751
|
+
"defaultValue": 1,
|
|
752
|
+
"serializable": true,
|
|
753
|
+
"bake": "rebuild",
|
|
754
|
+
"range": {
|
|
755
|
+
"min": 1,
|
|
756
|
+
"max": 24,
|
|
757
|
+
"step": 1
|
|
758
|
+
},
|
|
759
|
+
"options": null,
|
|
760
|
+
"optionLabels": null,
|
|
761
|
+
"optionDisabled": null
|
|
762
|
+
},
|
|
763
|
+
"nodeCount": {
|
|
764
|
+
"id": "structure.nodeCount",
|
|
765
|
+
"group": "structure",
|
|
766
|
+
"key": "nodeCount",
|
|
767
|
+
"label": "Culm nodes",
|
|
768
|
+
"description": "Node and internode count along each bamboo culm.",
|
|
769
|
+
"type": "number",
|
|
770
|
+
"control": null,
|
|
771
|
+
"defaultValue": 18,
|
|
772
|
+
"serializable": true,
|
|
773
|
+
"bake": "rebuild",
|
|
774
|
+
"range": {
|
|
775
|
+
"min": 4,
|
|
776
|
+
"max": 36,
|
|
777
|
+
"step": 1
|
|
778
|
+
},
|
|
779
|
+
"options": null,
|
|
780
|
+
"optionLabels": null,
|
|
781
|
+
"optionDisabled": null
|
|
782
|
+
},
|
|
783
|
+
"armCount": {
|
|
784
|
+
"id": "structure.armCount",
|
|
785
|
+
"group": "structure",
|
|
786
|
+
"key": "armCount",
|
|
787
|
+
"label": "Arms / heads",
|
|
788
|
+
"description": "Mature arm count for cacti or terminal-head count for branched rosettes.",
|
|
789
|
+
"type": "number",
|
|
790
|
+
"control": null,
|
|
791
|
+
"defaultValue": 4,
|
|
792
|
+
"serializable": true,
|
|
793
|
+
"bake": "rebuild",
|
|
794
|
+
"range": {
|
|
795
|
+
"min": 1,
|
|
796
|
+
"max": 16,
|
|
797
|
+
"step": 1
|
|
798
|
+
},
|
|
799
|
+
"options": null,
|
|
800
|
+
"optionLabels": null,
|
|
801
|
+
"optionDisabled": null
|
|
802
|
+
},
|
|
803
|
+
"whorlSize": {
|
|
804
|
+
"id": "structure.whorlSize",
|
|
805
|
+
"group": "structure",
|
|
806
|
+
"key": "whorlSize",
|
|
807
|
+
"label": "Branches per whorl",
|
|
808
|
+
"description": "One gives spiral phyllotaxis; larger values initiate evenly spaced branches at the same internode.",
|
|
809
|
+
"type": "number",
|
|
810
|
+
"control": null,
|
|
811
|
+
"defaultValue": 1,
|
|
812
|
+
"serializable": true,
|
|
813
|
+
"bake": "rebuild",
|
|
814
|
+
"range": {
|
|
815
|
+
"min": 1,
|
|
816
|
+
"max": 8,
|
|
817
|
+
"step": 1
|
|
818
|
+
},
|
|
819
|
+
"options": null,
|
|
820
|
+
"optionLabels": null,
|
|
821
|
+
"optionDisabled": null
|
|
822
|
+
}
|
|
823
|
+
},
|
|
824
|
+
"trunk": {
|
|
825
|
+
"style": {
|
|
826
|
+
"id": "trunk.style",
|
|
827
|
+
"group": "trunk",
|
|
828
|
+
"key": "style",
|
|
829
|
+
"label": "Style",
|
|
830
|
+
"description": "Ready-made trunk personality; editing any slider below switches to Custom.",
|
|
831
|
+
"type": "select",
|
|
832
|
+
"control": null,
|
|
833
|
+
"defaultValue": "straight",
|
|
834
|
+
"serializable": true,
|
|
835
|
+
"bake": "rebuild",
|
|
836
|
+
"range": null,
|
|
837
|
+
"options": [
|
|
838
|
+
"straight",
|
|
839
|
+
"leaning",
|
|
840
|
+
"curved",
|
|
841
|
+
"gnarled",
|
|
842
|
+
"bonsai",
|
|
843
|
+
"swooping",
|
|
844
|
+
"custom"
|
|
845
|
+
],
|
|
846
|
+
"optionLabels": {
|
|
847
|
+
"straight": "Straight",
|
|
848
|
+
"leaning": "Leaning",
|
|
849
|
+
"curved": "Curved",
|
|
850
|
+
"gnarled": "Gnarled",
|
|
851
|
+
"bonsai": "Bonsai",
|
|
852
|
+
"swooping": "Swooping (Liyue)",
|
|
853
|
+
"custom": "Custom"
|
|
854
|
+
},
|
|
855
|
+
"optionDisabled": null
|
|
856
|
+
},
|
|
857
|
+
"height": {
|
|
858
|
+
"id": "trunk.height",
|
|
859
|
+
"group": "trunk",
|
|
860
|
+
"key": "height",
|
|
861
|
+
"label": "Height",
|
|
862
|
+
"description": "Trunk height in meters (before the overall size multiplier). Construction-only.",
|
|
863
|
+
"type": "number",
|
|
864
|
+
"control": null,
|
|
865
|
+
"defaultValue": 1.55,
|
|
866
|
+
"serializable": true,
|
|
867
|
+
"bake": "rebuild",
|
|
868
|
+
"range": {
|
|
869
|
+
"max": 3,
|
|
870
|
+
"min": 0.4,
|
|
871
|
+
"step": 0.05
|
|
872
|
+
},
|
|
873
|
+
"options": null,
|
|
874
|
+
"optionLabels": null,
|
|
875
|
+
"optionDisabled": null
|
|
876
|
+
},
|
|
877
|
+
"radiusBottom": {
|
|
878
|
+
"id": "trunk.radiusBottom",
|
|
879
|
+
"group": "trunk",
|
|
880
|
+
"key": "radiusBottom",
|
|
881
|
+
"label": "Radius Bottom",
|
|
882
|
+
"description": "Trunk radius at the root flare in meters. Construction-only.",
|
|
883
|
+
"type": "number",
|
|
884
|
+
"control": null,
|
|
885
|
+
"defaultValue": 0.19,
|
|
886
|
+
"serializable": true,
|
|
887
|
+
"bake": "rebuild",
|
|
888
|
+
"range": {
|
|
889
|
+
"max": 0.6,
|
|
890
|
+
"min": 0.05,
|
|
891
|
+
"step": 0.005
|
|
892
|
+
},
|
|
893
|
+
"options": null,
|
|
894
|
+
"optionLabels": null,
|
|
895
|
+
"optionDisabled": null
|
|
896
|
+
},
|
|
897
|
+
"bend": {
|
|
898
|
+
"id": "trunk.bend",
|
|
899
|
+
"group": "trunk",
|
|
900
|
+
"key": "bend",
|
|
901
|
+
"label": "Bend",
|
|
902
|
+
"description": "Mid-trunk bow amplitude that returns toward center (S-curve) in meters. Construction-only.",
|
|
903
|
+
"type": "number",
|
|
904
|
+
"control": null,
|
|
905
|
+
"defaultValue": 0.04,
|
|
906
|
+
"serializable": true,
|
|
907
|
+
"bake": "rebuild",
|
|
908
|
+
"range": {
|
|
909
|
+
"max": 0.8,
|
|
910
|
+
"min": 0,
|
|
911
|
+
"step": 0.01
|
|
912
|
+
},
|
|
913
|
+
"options": null,
|
|
914
|
+
"optionLabels": null,
|
|
915
|
+
"optionDisabled": null
|
|
916
|
+
},
|
|
917
|
+
"lean": {
|
|
918
|
+
"id": "trunk.lean",
|
|
919
|
+
"group": "trunk",
|
|
920
|
+
"key": "lean",
|
|
921
|
+
"label": "Lean",
|
|
922
|
+
"description": "Off-vertical drift that accumulates toward the top, in meters. Construction-only.",
|
|
923
|
+
"type": "number",
|
|
924
|
+
"control": null,
|
|
925
|
+
"defaultValue": 0.05,
|
|
926
|
+
"serializable": true,
|
|
927
|
+
"bake": "rebuild",
|
|
928
|
+
"range": {
|
|
929
|
+
"max": 1.2,
|
|
930
|
+
"min": 0,
|
|
931
|
+
"step": 0.01
|
|
932
|
+
},
|
|
933
|
+
"options": null,
|
|
934
|
+
"optionLabels": null,
|
|
935
|
+
"optionDisabled": null
|
|
936
|
+
},
|
|
937
|
+
"twist": {
|
|
938
|
+
"id": "trunk.twist",
|
|
939
|
+
"group": "trunk",
|
|
940
|
+
"key": "twist",
|
|
941
|
+
"label": "Twist",
|
|
942
|
+
"description": "Y-rotation of the cross-section over the full height in radians; spirals the bark like wrung wood. Construction-only.",
|
|
943
|
+
"type": "number",
|
|
944
|
+
"control": null,
|
|
945
|
+
"defaultValue": 0,
|
|
946
|
+
"serializable": true,
|
|
947
|
+
"bake": "rebuild",
|
|
948
|
+
"range": {
|
|
949
|
+
"max": 4,
|
|
950
|
+
"min": -4,
|
|
951
|
+
"step": 0.05
|
|
952
|
+
},
|
|
953
|
+
"options": null,
|
|
954
|
+
"optionLabels": null,
|
|
955
|
+
"optionDisabled": null
|
|
956
|
+
},
|
|
957
|
+
"gnarl": {
|
|
958
|
+
"id": "trunk.gnarl",
|
|
959
|
+
"group": "trunk",
|
|
960
|
+
"key": "gnarl",
|
|
961
|
+
"label": "Gnarl",
|
|
962
|
+
"description": "High-frequency wiggle and radius bulges: 0 is a clean park tree, 1+ reads like an old bonsai. Construction-only.",
|
|
963
|
+
"type": "number",
|
|
964
|
+
"control": null,
|
|
965
|
+
"defaultValue": 0,
|
|
966
|
+
"serializable": true,
|
|
967
|
+
"bake": "rebuild",
|
|
968
|
+
"range": {
|
|
969
|
+
"max": 2,
|
|
970
|
+
"min": 0,
|
|
971
|
+
"step": 0.01
|
|
972
|
+
},
|
|
973
|
+
"options": null,
|
|
974
|
+
"optionLabels": null,
|
|
975
|
+
"optionDisabled": null
|
|
976
|
+
},
|
|
977
|
+
"bendDirectionAuto": {
|
|
978
|
+
"id": "trunk.bendDirectionAuto",
|
|
979
|
+
"group": "trunk",
|
|
980
|
+
"key": "bendDirectionAuto",
|
|
981
|
+
"label": "Auto Bend Heading",
|
|
982
|
+
"description": "Pick the bow heading from the seed instead of the slider below.",
|
|
983
|
+
"type": "boolean",
|
|
984
|
+
"control": null,
|
|
985
|
+
"defaultValue": true,
|
|
986
|
+
"serializable": true,
|
|
987
|
+
"bake": "rebuild",
|
|
988
|
+
"range": null,
|
|
989
|
+
"options": null,
|
|
990
|
+
"optionLabels": null,
|
|
991
|
+
"optionDisabled": null
|
|
992
|
+
},
|
|
993
|
+
"bendDirection": {
|
|
994
|
+
"id": "trunk.bendDirection",
|
|
995
|
+
"group": "trunk",
|
|
996
|
+
"key": "bendDirection",
|
|
997
|
+
"label": "Bend Direction",
|
|
998
|
+
"description": "World heading of the bow in radians; null/unset picks a seeded heading. Construction-only.",
|
|
999
|
+
"type": "number",
|
|
1000
|
+
"control": null,
|
|
1001
|
+
"defaultValue": 0,
|
|
1002
|
+
"serializable": true,
|
|
1003
|
+
"bake": "rebuild",
|
|
1004
|
+
"range": {
|
|
1005
|
+
"max": 6.283,
|
|
1006
|
+
"min": -6.283,
|
|
1007
|
+
"step": 0.01
|
|
1008
|
+
},
|
|
1009
|
+
"options": null,
|
|
1010
|
+
"optionLabels": null,
|
|
1011
|
+
"optionDisabled": null
|
|
1012
|
+
},
|
|
1013
|
+
"leanOffsetAuto": {
|
|
1014
|
+
"id": "trunk.leanOffsetAuto",
|
|
1015
|
+
"group": "trunk",
|
|
1016
|
+
"key": "leanOffsetAuto",
|
|
1017
|
+
"label": "Auto Lean Offset",
|
|
1018
|
+
"description": "Pick the lean heading from the seed; off + π gives the serpentine S-trunk.",
|
|
1019
|
+
"type": "boolean",
|
|
1020
|
+
"control": null,
|
|
1021
|
+
"defaultValue": true,
|
|
1022
|
+
"serializable": true,
|
|
1023
|
+
"bake": "rebuild",
|
|
1024
|
+
"range": null,
|
|
1025
|
+
"options": null,
|
|
1026
|
+
"optionLabels": null,
|
|
1027
|
+
"optionDisabled": null
|
|
1028
|
+
},
|
|
1029
|
+
"leanOffset": {
|
|
1030
|
+
"id": "trunk.leanOffset",
|
|
1031
|
+
"group": "trunk",
|
|
1032
|
+
"key": "leanOffset",
|
|
1033
|
+
"label": "Lean Offset",
|
|
1034
|
+
"description": "Lean heading relative to the bow in radians (PI pins a serpentine S-trunk); null/unset picks a seeded offset. Construction-only.",
|
|
1035
|
+
"type": "number",
|
|
1036
|
+
"control": null,
|
|
1037
|
+
"defaultValue": 3.141592653589793,
|
|
1038
|
+
"serializable": true,
|
|
1039
|
+
"bake": "rebuild",
|
|
1040
|
+
"range": {
|
|
1041
|
+
"max": 6.283,
|
|
1042
|
+
"min": -6.283,
|
|
1043
|
+
"step": 0.01
|
|
1044
|
+
},
|
|
1045
|
+
"options": null,
|
|
1046
|
+
"optionLabels": null,
|
|
1047
|
+
"optionDisabled": null
|
|
1048
|
+
}
|
|
1049
|
+
},
|
|
1050
|
+
"skeleton": {
|
|
1051
|
+
"generator": {
|
|
1052
|
+
"id": "skeleton.generator",
|
|
1053
|
+
"group": "skeleton",
|
|
1054
|
+
"key": "generator",
|
|
1055
|
+
"label": "Generator",
|
|
1056
|
+
"description": "limbs: space-colonization growth toward the crown blobs (solid anime-style crowns). branching: recursive central-leader branching (open, realistic broadleaf/conifer silhouettes). drawn: no procedural wood at all — the tree is exactly the hand-drawn branchSpines (Tree Lab sketch mode). Construction-only.",
|
|
1057
|
+
"type": "select",
|
|
1058
|
+
"control": null,
|
|
1059
|
+
"defaultValue": "limbs",
|
|
1060
|
+
"serializable": true,
|
|
1061
|
+
"bake": "rebuild",
|
|
1062
|
+
"range": null,
|
|
1063
|
+
"options": [
|
|
1064
|
+
"limbs",
|
|
1065
|
+
"branching",
|
|
1066
|
+
"drawn"
|
|
1067
|
+
],
|
|
1068
|
+
"optionLabels": {
|
|
1069
|
+
"limbs": "Grown Limbs",
|
|
1070
|
+
"branching": "Recursive Branching",
|
|
1071
|
+
"drawn": "Hand-Drawn"
|
|
1072
|
+
},
|
|
1073
|
+
"optionDisabled": null
|
|
1074
|
+
},
|
|
1075
|
+
"levels": {
|
|
1076
|
+
"id": "skeleton.levels",
|
|
1077
|
+
"group": "skeleton",
|
|
1078
|
+
"key": "levels",
|
|
1079
|
+
"label": "Branch Levels",
|
|
1080
|
+
"description": "Recursion depth of the branching generator; each level subdivides into thinner children. Branching generator only. Construction-only.",
|
|
1081
|
+
"type": "number",
|
|
1082
|
+
"control": null,
|
|
1083
|
+
"defaultValue": 3,
|
|
1084
|
+
"serializable": true,
|
|
1085
|
+
"bake": "rebuild",
|
|
1086
|
+
"range": {
|
|
1087
|
+
"max": 4,
|
|
1088
|
+
"min": 1,
|
|
1089
|
+
"step": 1
|
|
1090
|
+
},
|
|
1091
|
+
"options": null,
|
|
1092
|
+
"optionLabels": null,
|
|
1093
|
+
"optionDisabled": null
|
|
1094
|
+
},
|
|
1095
|
+
"childrenCount": {
|
|
1096
|
+
"id": "skeleton.childrenCount",
|
|
1097
|
+
"group": "skeleton",
|
|
1098
|
+
"key": "childrenCount",
|
|
1099
|
+
"label": "Children",
|
|
1100
|
+
"description": "Lateral child branches sprouting along the trunk (deeper levels derive from them). The central leader continues separately, so children=1 forms one lateral limb plus the leader. Conifers use high counts (60-90) for dense whorled fronds. Branching generator only. Construction-only.",
|
|
1101
|
+
"type": "number",
|
|
1102
|
+
"control": null,
|
|
1103
|
+
"defaultValue": 6,
|
|
1104
|
+
"serializable": true,
|
|
1105
|
+
"bake": "rebuild",
|
|
1106
|
+
"range": {
|
|
1107
|
+
"max": 90,
|
|
1108
|
+
"min": 1,
|
|
1109
|
+
"step": 1
|
|
1110
|
+
},
|
|
1111
|
+
"options": null,
|
|
1112
|
+
"optionLabels": null,
|
|
1113
|
+
"optionDisabled": null
|
|
1114
|
+
},
|
|
1115
|
+
"branchAngle": {
|
|
1116
|
+
"id": "skeleton.branchAngle",
|
|
1117
|
+
"group": "skeleton",
|
|
1118
|
+
"key": "branchAngle",
|
|
1119
|
+
"label": "Branch Angle",
|
|
1120
|
+
"description": "Child pitch away from the parent axis, in degrees. Past 90 points branches below horizontal (conifer fronds ~110). Branching generator only. Construction-only.",
|
|
1121
|
+
"type": "number",
|
|
1122
|
+
"control": null,
|
|
1123
|
+
"defaultValue": 55,
|
|
1124
|
+
"serializable": true,
|
|
1125
|
+
"bake": "rebuild",
|
|
1126
|
+
"range": {
|
|
1127
|
+
"max": 130,
|
|
1128
|
+
"min": 10,
|
|
1129
|
+
"step": 1
|
|
1130
|
+
},
|
|
1131
|
+
"options": null,
|
|
1132
|
+
"optionLabels": null,
|
|
1133
|
+
"optionDisabled": null
|
|
1134
|
+
},
|
|
1135
|
+
"branchStart": {
|
|
1136
|
+
"id": "skeleton.branchStart",
|
|
1137
|
+
"group": "skeleton",
|
|
1138
|
+
"key": "branchStart",
|
|
1139
|
+
"label": "Branch Start",
|
|
1140
|
+
"description": "Fraction of the trunk kept bare before children begin — real trees hold their crown off the ground. Branching generator only. Construction-only.",
|
|
1141
|
+
"type": "number",
|
|
1142
|
+
"control": null,
|
|
1143
|
+
"defaultValue": 0.4,
|
|
1144
|
+
"serializable": true,
|
|
1145
|
+
"bake": "rebuild",
|
|
1146
|
+
"range": {
|
|
1147
|
+
"max": 0.9,
|
|
1148
|
+
"min": 0,
|
|
1149
|
+
"step": 0.01
|
|
1150
|
+
},
|
|
1151
|
+
"options": null,
|
|
1152
|
+
"optionLabels": null,
|
|
1153
|
+
"optionDisabled": null
|
|
1154
|
+
},
|
|
1155
|
+
"lengthRatio": {
|
|
1156
|
+
"id": "skeleton.lengthRatio",
|
|
1157
|
+
"group": "skeleton",
|
|
1158
|
+
"key": "lengthRatio",
|
|
1159
|
+
"label": "Length Ratio",
|
|
1160
|
+
"description": "Child branch length as a fraction of the trunk (deeper levels shorten from it). Branching generator only. Construction-only.",
|
|
1161
|
+
"type": "number",
|
|
1162
|
+
"control": null,
|
|
1163
|
+
"defaultValue": 0.45,
|
|
1164
|
+
"serializable": true,
|
|
1165
|
+
"bake": "rebuild",
|
|
1166
|
+
"range": {
|
|
1167
|
+
"max": 0.95,
|
|
1168
|
+
"min": 0.15,
|
|
1169
|
+
"step": 0.01
|
|
1170
|
+
},
|
|
1171
|
+
"options": null,
|
|
1172
|
+
"optionLabels": null,
|
|
1173
|
+
"optionDisabled": null
|
|
1174
|
+
},
|
|
1175
|
+
"radiusRatio": {
|
|
1176
|
+
"id": "skeleton.radiusRatio",
|
|
1177
|
+
"group": "skeleton",
|
|
1178
|
+
"key": "radiusRatio",
|
|
1179
|
+
"label": "Radius Ratio",
|
|
1180
|
+
"description": "Child radius as a fraction of the parent\\u2019s radius at the attach point — radius continuity is what makes forks read as one tree. Branching generator only. Construction-only.",
|
|
1181
|
+
"type": "number",
|
|
1182
|
+
"control": null,
|
|
1183
|
+
"defaultValue": 0.7,
|
|
1184
|
+
"serializable": true,
|
|
1185
|
+
"bake": "rebuild",
|
|
1186
|
+
"range": {
|
|
1187
|
+
"max": 0.9,
|
|
1188
|
+
"min": 0.3,
|
|
1189
|
+
"step": 0.01
|
|
1190
|
+
},
|
|
1191
|
+
"options": null,
|
|
1192
|
+
"optionLabels": null,
|
|
1193
|
+
"optionDisabled": null
|
|
1194
|
+
},
|
|
1195
|
+
"gnarliness": {
|
|
1196
|
+
"id": "skeleton.gnarliness",
|
|
1197
|
+
"group": "skeleton",
|
|
1198
|
+
"key": "gnarliness",
|
|
1199
|
+
"label": "Gnarliness",
|
|
1200
|
+
"description": "Random-walk curvature per growth section, amplified as branches thin: trunks stay stately, twigs wander. Branching generator only. Construction-only.",
|
|
1201
|
+
"type": "number",
|
|
1202
|
+
"control": null,
|
|
1203
|
+
"defaultValue": 0.15,
|
|
1204
|
+
"serializable": true,
|
|
1205
|
+
"bake": "rebuild",
|
|
1206
|
+
"range": {
|
|
1207
|
+
"max": 0.6,
|
|
1208
|
+
"min": 0,
|
|
1209
|
+
"step": 0.01
|
|
1210
|
+
},
|
|
1211
|
+
"options": null,
|
|
1212
|
+
"optionLabels": null,
|
|
1213
|
+
"optionDisabled": null
|
|
1214
|
+
},
|
|
1215
|
+
"forceStrength": {
|
|
1216
|
+
"id": "skeleton.forceStrength",
|
|
1217
|
+
"group": "skeleton",
|
|
1218
|
+
"key": "forceStrength",
|
|
1219
|
+
"label": "Growth Force",
|
|
1220
|
+
"description": "Growth force: every section steers toward vertical with 1/radius compliance. Positive sweeps tips skyward (broadleaf crowns); negative droops them (pines, willows). Branching generator only. Construction-only.",
|
|
1221
|
+
"type": "number",
|
|
1222
|
+
"control": null,
|
|
1223
|
+
"defaultValue": 0.02,
|
|
1224
|
+
"serializable": true,
|
|
1225
|
+
"bake": "rebuild",
|
|
1226
|
+
"range": {
|
|
1227
|
+
"max": 0.15,
|
|
1228
|
+
"min": -0.08,
|
|
1229
|
+
"step": 0.005
|
|
1230
|
+
},
|
|
1231
|
+
"options": null,
|
|
1232
|
+
"optionLabels": null,
|
|
1233
|
+
"optionDisabled": null
|
|
1234
|
+
},
|
|
1235
|
+
"phyllotaxisAngle": {
|
|
1236
|
+
"id": "skeleton.phyllotaxisAngle",
|
|
1237
|
+
"group": "skeleton",
|
|
1238
|
+
"key": "phyllotaxisAngle",
|
|
1239
|
+
"label": "Divergence angle",
|
|
1240
|
+
"description": "Azimuthal rotation in degrees between successive branch initiations.",
|
|
1241
|
+
"type": "number",
|
|
1242
|
+
"control": null,
|
|
1243
|
+
"defaultValue": 137.5,
|
|
1244
|
+
"serializable": true,
|
|
1245
|
+
"bake": "rebuild",
|
|
1246
|
+
"range": {
|
|
1247
|
+
"min": 30,
|
|
1248
|
+
"max": 180,
|
|
1249
|
+
"step": 0.5
|
|
1250
|
+
},
|
|
1251
|
+
"options": null,
|
|
1252
|
+
"optionLabels": null,
|
|
1253
|
+
"optionDisabled": null
|
|
1254
|
+
},
|
|
1255
|
+
"branchInternodeSpacing": {
|
|
1256
|
+
"id": "skeleton.branchInternodeSpacing",
|
|
1257
|
+
"group": "skeleton",
|
|
1258
|
+
"key": "branchInternodeSpacing",
|
|
1259
|
+
"label": "Branch internode",
|
|
1260
|
+
"description": "Average vertical spacing between primary branch initiations.",
|
|
1261
|
+
"type": "number",
|
|
1262
|
+
"control": null,
|
|
1263
|
+
"defaultValue": 0.65,
|
|
1264
|
+
"serializable": true,
|
|
1265
|
+
"bake": "rebuild",
|
|
1266
|
+
"range": {
|
|
1267
|
+
"min": 0.08,
|
|
1268
|
+
"max": 3,
|
|
1269
|
+
"step": 0.02
|
|
1270
|
+
},
|
|
1271
|
+
"options": null,
|
|
1272
|
+
"optionLabels": null,
|
|
1273
|
+
"optionDisabled": null
|
|
1274
|
+
},
|
|
1275
|
+
"gravitropism": {
|
|
1276
|
+
"id": "skeleton.gravitropism",
|
|
1277
|
+
"group": "skeleton",
|
|
1278
|
+
"key": "gravitropism",
|
|
1279
|
+
"label": "Upward growth",
|
|
1280
|
+
"description": "Long-term correction of growing axes against gravity.",
|
|
1281
|
+
"type": "number",
|
|
1282
|
+
"control": null,
|
|
1283
|
+
"defaultValue": 0.04,
|
|
1284
|
+
"serializable": true,
|
|
1285
|
+
"bake": "rebuild",
|
|
1286
|
+
"range": {
|
|
1287
|
+
"min": -0.1,
|
|
1288
|
+
"max": 0.25,
|
|
1289
|
+
"step": 0.005
|
|
1290
|
+
},
|
|
1291
|
+
"options": null,
|
|
1292
|
+
"optionLabels": null,
|
|
1293
|
+
"optionDisabled": null
|
|
1294
|
+
},
|
|
1295
|
+
"phototropism": {
|
|
1296
|
+
"id": "skeleton.phototropism",
|
|
1297
|
+
"group": "skeleton",
|
|
1298
|
+
"key": "phototropism",
|
|
1299
|
+
"label": "Light seeking",
|
|
1300
|
+
"description": "Bias growing tips toward the crown light direction.",
|
|
1301
|
+
"type": "number",
|
|
1302
|
+
"control": null,
|
|
1303
|
+
"defaultValue": 0.035,
|
|
1304
|
+
"serializable": true,
|
|
1305
|
+
"bake": "rebuild",
|
|
1306
|
+
"range": {
|
|
1307
|
+
"min": 0,
|
|
1308
|
+
"max": 0.2,
|
|
1309
|
+
"step": 0.005
|
|
1310
|
+
},
|
|
1311
|
+
"options": null,
|
|
1312
|
+
"optionLabels": null,
|
|
1313
|
+
"optionDisabled": null
|
|
1314
|
+
},
|
|
1315
|
+
"branchSag": {
|
|
1316
|
+
"id": "skeleton.branchSag",
|
|
1317
|
+
"group": "skeleton",
|
|
1318
|
+
"key": "branchSag",
|
|
1319
|
+
"label": "Branch sag",
|
|
1320
|
+
"description": "Downward compliance accumulated along horizontal, slender branches.",
|
|
1321
|
+
"type": "number",
|
|
1322
|
+
"control": null,
|
|
1323
|
+
"defaultValue": 0.018,
|
|
1324
|
+
"serializable": true,
|
|
1325
|
+
"bake": "rebuild",
|
|
1326
|
+
"range": {
|
|
1327
|
+
"min": 0,
|
|
1328
|
+
"max": 0.25,
|
|
1329
|
+
"step": 0.005
|
|
1330
|
+
},
|
|
1331
|
+
"options": null,
|
|
1332
|
+
"optionLabels": null,
|
|
1333
|
+
"optionDisabled": null
|
|
1334
|
+
},
|
|
1335
|
+
"tipUpturn": {
|
|
1336
|
+
"id": "skeleton.tipUpturn",
|
|
1337
|
+
"group": "skeleton",
|
|
1338
|
+
"key": "tipUpturn",
|
|
1339
|
+
"label": "Tip recovery",
|
|
1340
|
+
"description": "Upward correction near branch endpoints after sag and wind.",
|
|
1341
|
+
"type": "number",
|
|
1342
|
+
"control": null,
|
|
1343
|
+
"defaultValue": 0.12,
|
|
1344
|
+
"serializable": true,
|
|
1345
|
+
"bake": "rebuild",
|
|
1346
|
+
"range": {
|
|
1347
|
+
"min": 0,
|
|
1348
|
+
"max": 0.4,
|
|
1349
|
+
"step": 0.005
|
|
1350
|
+
},
|
|
1351
|
+
"options": null,
|
|
1352
|
+
"optionLabels": null,
|
|
1353
|
+
"optionDisabled": null
|
|
1354
|
+
},
|
|
1355
|
+
"windBias": {
|
|
1356
|
+
"id": "skeleton.windBias",
|
|
1357
|
+
"group": "skeleton",
|
|
1358
|
+
"key": "windBias",
|
|
1359
|
+
"label": "Prevailing wind",
|
|
1360
|
+
"description": "Persistent growth bias from the prevailing wind, separate from live animation.",
|
|
1361
|
+
"type": "number",
|
|
1362
|
+
"control": null,
|
|
1363
|
+
"defaultValue": 0,
|
|
1364
|
+
"serializable": true,
|
|
1365
|
+
"bake": "rebuild",
|
|
1366
|
+
"range": {
|
|
1367
|
+
"min": -0.2,
|
|
1368
|
+
"max": 0.2,
|
|
1369
|
+
"step": 0.005
|
|
1370
|
+
},
|
|
1371
|
+
"options": null,
|
|
1372
|
+
"optionLabels": null,
|
|
1373
|
+
"optionDisabled": null
|
|
1374
|
+
},
|
|
1375
|
+
"pipeExponent": {
|
|
1376
|
+
"id": "skeleton.pipeExponent",
|
|
1377
|
+
"group": "skeleton",
|
|
1378
|
+
"key": "pipeExponent",
|
|
1379
|
+
"label": "Pipe exponent",
|
|
1380
|
+
"description": "Area-preserving exponent used to distribute parent radius across child axes.",
|
|
1381
|
+
"type": "number",
|
|
1382
|
+
"control": null,
|
|
1383
|
+
"defaultValue": 2.18,
|
|
1384
|
+
"serializable": true,
|
|
1385
|
+
"bake": "rebuild",
|
|
1386
|
+
"range": {
|
|
1387
|
+
"min": 1.6,
|
|
1388
|
+
"max": 3.2,
|
|
1389
|
+
"step": 0.02
|
|
1390
|
+
},
|
|
1391
|
+
"options": null,
|
|
1392
|
+
"optionLabels": null,
|
|
1393
|
+
"optionDisabled": null
|
|
1394
|
+
},
|
|
1395
|
+
"junctionBulge": {
|
|
1396
|
+
"id": "skeleton.junctionBulge",
|
|
1397
|
+
"group": "skeleton",
|
|
1398
|
+
"key": "junctionBulge",
|
|
1399
|
+
"label": "Branch collar",
|
|
1400
|
+
"description": "Subtle radius reinforcement at the first ring of a child axis.",
|
|
1401
|
+
"type": "number",
|
|
1402
|
+
"control": null,
|
|
1403
|
+
"defaultValue": 1.1,
|
|
1404
|
+
"serializable": true,
|
|
1405
|
+
"bake": "rebuild",
|
|
1406
|
+
"range": {
|
|
1407
|
+
"min": 1,
|
|
1408
|
+
"max": 1.24,
|
|
1409
|
+
"step": 0.01
|
|
1410
|
+
},
|
|
1411
|
+
"options": null,
|
|
1412
|
+
"optionLabels": null,
|
|
1413
|
+
"optionDisabled": null
|
|
1414
|
+
},
|
|
1415
|
+
"conifer": {
|
|
1416
|
+
"id": "skeleton.conifer",
|
|
1417
|
+
"group": "skeleton",
|
|
1418
|
+
"key": "conifer",
|
|
1419
|
+
"label": "Conifer",
|
|
1420
|
+
"description": "Evergreen behavior: branches taper fully and children shorten toward the top \\u2014 the layered cone silhouette. Pair with high Children, Branch Angle ~110, negative Growth Force. Branching generator only. Construction-only.",
|
|
1421
|
+
"type": "boolean",
|
|
1422
|
+
"control": null,
|
|
1423
|
+
"defaultValue": false,
|
|
1424
|
+
"serializable": true,
|
|
1425
|
+
"bake": "rebuild",
|
|
1426
|
+
"range": null,
|
|
1427
|
+
"options": null,
|
|
1428
|
+
"optionLabels": null,
|
|
1429
|
+
"optionDisabled": null
|
|
1430
|
+
},
|
|
1431
|
+
"attractionCount": {
|
|
1432
|
+
"id": "skeleton.attractionCount",
|
|
1433
|
+
"group": "skeleton",
|
|
1434
|
+
"key": "attractionCount",
|
|
1435
|
+
"label": "Attraction Count",
|
|
1436
|
+
"description": "Number of crown attraction points the limbs grow toward; more points grow more, finer limbs. Construction-only.",
|
|
1437
|
+
"type": "number",
|
|
1438
|
+
"control": null,
|
|
1439
|
+
"defaultValue": 90,
|
|
1440
|
+
"serializable": true,
|
|
1441
|
+
"bake": "rebuild",
|
|
1442
|
+
"range": {
|
|
1443
|
+
"max": 200,
|
|
1444
|
+
"min": 10,
|
|
1445
|
+
"step": 1
|
|
1446
|
+
},
|
|
1447
|
+
"options": null,
|
|
1448
|
+
"optionLabels": null,
|
|
1449
|
+
"optionDisabled": null
|
|
1450
|
+
},
|
|
1451
|
+
"segmentLength": {
|
|
1452
|
+
"id": "skeleton.segmentLength",
|
|
1453
|
+
"group": "skeleton",
|
|
1454
|
+
"key": "segmentLength",
|
|
1455
|
+
"label": "Segment Length",
|
|
1456
|
+
"description": "Growth step length in meters; shorter steps grow smoother, curvier limbs. Construction-only.",
|
|
1457
|
+
"type": "number",
|
|
1458
|
+
"control": null,
|
|
1459
|
+
"defaultValue": 0.3,
|
|
1460
|
+
"serializable": true,
|
|
1461
|
+
"bake": "rebuild",
|
|
1462
|
+
"range": {
|
|
1463
|
+
"max": 0.8,
|
|
1464
|
+
"min": 0.1,
|
|
1465
|
+
"step": 0.01
|
|
1466
|
+
},
|
|
1467
|
+
"options": null,
|
|
1468
|
+
"optionLabels": null,
|
|
1469
|
+
"optionDisabled": null
|
|
1470
|
+
},
|
|
1471
|
+
"influenceRadius": {
|
|
1472
|
+
"id": "skeleton.influenceRadius",
|
|
1473
|
+
"group": "skeleton",
|
|
1474
|
+
"key": "influenceRadius",
|
|
1475
|
+
"label": "Influence Radius",
|
|
1476
|
+
"description": "How far an attraction point can pull on a growing limb, in meters. Construction-only.",
|
|
1477
|
+
"type": "number",
|
|
1478
|
+
"control": null,
|
|
1479
|
+
"defaultValue": 1.2,
|
|
1480
|
+
"serializable": true,
|
|
1481
|
+
"bake": "rebuild",
|
|
1482
|
+
"range": {
|
|
1483
|
+
"max": 2.5,
|
|
1484
|
+
"min": 0.3,
|
|
1485
|
+
"step": 0.05
|
|
1486
|
+
},
|
|
1487
|
+
"options": null,
|
|
1488
|
+
"optionLabels": null,
|
|
1489
|
+
"optionDisabled": null
|
|
1490
|
+
},
|
|
1491
|
+
"killRadius": {
|
|
1492
|
+
"id": "skeleton.killRadius",
|
|
1493
|
+
"group": "skeleton",
|
|
1494
|
+
"key": "killRadius",
|
|
1495
|
+
"label": "Kill Radius",
|
|
1496
|
+
"description": "Distance at which a limb consumes an attraction point and stops growing toward it. Construction-only.",
|
|
1497
|
+
"type": "number",
|
|
1498
|
+
"control": null,
|
|
1499
|
+
"defaultValue": 0.42,
|
|
1500
|
+
"serializable": true,
|
|
1501
|
+
"bake": "rebuild",
|
|
1502
|
+
"range": {
|
|
1503
|
+
"max": 1,
|
|
1504
|
+
"min": 0.1,
|
|
1505
|
+
"step": 0.01
|
|
1506
|
+
},
|
|
1507
|
+
"options": null,
|
|
1508
|
+
"optionLabels": null,
|
|
1509
|
+
"optionDisabled": null
|
|
1510
|
+
},
|
|
1511
|
+
"maxNodes": {
|
|
1512
|
+
"id": "skeleton.maxNodes",
|
|
1513
|
+
"group": "skeleton",
|
|
1514
|
+
"key": "maxNodes",
|
|
1515
|
+
"label": "Max Nodes",
|
|
1516
|
+
"description": "Skeleton node cap; lower keeps trees to a few clean limbs. Construction-only.",
|
|
1517
|
+
"type": "number",
|
|
1518
|
+
"control": null,
|
|
1519
|
+
"defaultValue": 140,
|
|
1520
|
+
"serializable": true,
|
|
1521
|
+
"bake": "rebuild",
|
|
1522
|
+
"range": {
|
|
1523
|
+
"max": 400,
|
|
1524
|
+
"min": 20,
|
|
1525
|
+
"step": 1
|
|
1526
|
+
},
|
|
1527
|
+
"options": null,
|
|
1528
|
+
"optionLabels": null,
|
|
1529
|
+
"optionDisabled": null
|
|
1530
|
+
},
|
|
1531
|
+
"radialSegments": {
|
|
1532
|
+
"id": "skeleton.radialSegments",
|
|
1533
|
+
"group": "skeleton",
|
|
1534
|
+
"key": "radialSegments",
|
|
1535
|
+
"label": "Radial Segments",
|
|
1536
|
+
"description": "Cross-section segment count of each bark tube. Construction-only.",
|
|
1537
|
+
"type": "number",
|
|
1538
|
+
"control": null,
|
|
1539
|
+
"defaultValue": 8,
|
|
1540
|
+
"serializable": true,
|
|
1541
|
+
"bake": "rebuild",
|
|
1542
|
+
"range": {
|
|
1543
|
+
"max": 16,
|
|
1544
|
+
"min": 3,
|
|
1545
|
+
"step": 1
|
|
1546
|
+
},
|
|
1547
|
+
"options": null,
|
|
1548
|
+
"optionLabels": null,
|
|
1549
|
+
"optionDisabled": null
|
|
1550
|
+
},
|
|
1551
|
+
"tipRadius": {
|
|
1552
|
+
"id": "skeleton.tipRadius",
|
|
1553
|
+
"group": "skeleton",
|
|
1554
|
+
"key": "tipRadius",
|
|
1555
|
+
"label": "Tip Radius",
|
|
1556
|
+
"description": "Radius of the thinnest twigs in meters; pipe-model radii grow from here toward the root. Construction-only.",
|
|
1557
|
+
"type": "number",
|
|
1558
|
+
"control": null,
|
|
1559
|
+
"defaultValue": 0.03,
|
|
1560
|
+
"serializable": true,
|
|
1561
|
+
"bake": "rebuild",
|
|
1562
|
+
"range": {
|
|
1563
|
+
"max": 0.15,
|
|
1564
|
+
"min": 0.005,
|
|
1565
|
+
"step": 0.001
|
|
1566
|
+
},
|
|
1567
|
+
"options": null,
|
|
1568
|
+
"optionLabels": null,
|
|
1569
|
+
"optionDisabled": null
|
|
1570
|
+
},
|
|
1571
|
+
"minLimbRadius": {
|
|
1572
|
+
"id": "skeleton.minLimbRadius",
|
|
1573
|
+
"group": "skeleton",
|
|
1574
|
+
"key": "minLimbRadius",
|
|
1575
|
+
"label": "Min Limb Radius",
|
|
1576
|
+
"description": "Limbs thinner than this get no bark tube and are left to the leaves. Construction-only.",
|
|
1577
|
+
"type": "number",
|
|
1578
|
+
"control": null,
|
|
1579
|
+
"defaultValue": 0.028,
|
|
1580
|
+
"serializable": true,
|
|
1581
|
+
"bake": "rebuild",
|
|
1582
|
+
"range": {
|
|
1583
|
+
"max": 0.15,
|
|
1584
|
+
"min": 0,
|
|
1585
|
+
"step": 0.001
|
|
1586
|
+
},
|
|
1587
|
+
"options": null,
|
|
1588
|
+
"optionLabels": null,
|
|
1589
|
+
"optionDisabled": null
|
|
1590
|
+
},
|
|
1591
|
+
"attractionReachAuto": {
|
|
1592
|
+
"id": "skeleton.attractionReachAuto",
|
|
1593
|
+
"group": "skeleton",
|
|
1594
|
+
"key": "attractionReachAuto",
|
|
1595
|
+
"label": "Auto Reach",
|
|
1596
|
+
"description": "Derive attraction depth from leaf placement (buried for canopy, near-shell for tips).",
|
|
1597
|
+
"type": "boolean",
|
|
1598
|
+
"control": null,
|
|
1599
|
+
"defaultValue": true,
|
|
1600
|
+
"serializable": true,
|
|
1601
|
+
"bake": "rebuild",
|
|
1602
|
+
"range": null,
|
|
1603
|
+
"options": null,
|
|
1604
|
+
"optionLabels": null,
|
|
1605
|
+
"optionDisabled": null
|
|
1606
|
+
},
|
|
1607
|
+
"attractionReach": {
|
|
1608
|
+
"id": "skeleton.attractionReach",
|
|
1609
|
+
"group": "skeleton",
|
|
1610
|
+
"key": "attractionReach",
|
|
1611
|
+
"label": "Attraction Reach",
|
|
1612
|
+
"description": "How deep into each crown blob attraction points sample (fraction of blob radius); null/unset is automatic (0.65 canopy mode, 0.92 tips mode). Construction-only.",
|
|
1613
|
+
"type": "number",
|
|
1614
|
+
"control": null,
|
|
1615
|
+
"defaultValue": 0.65,
|
|
1616
|
+
"serializable": true,
|
|
1617
|
+
"bake": "rebuild",
|
|
1618
|
+
"range": {
|
|
1619
|
+
"max": 1,
|
|
1620
|
+
"min": 0,
|
|
1621
|
+
"step": 0.01
|
|
1622
|
+
},
|
|
1623
|
+
"options": null,
|
|
1624
|
+
"optionLabels": null,
|
|
1625
|
+
"optionDisabled": null
|
|
1626
|
+
}
|
|
1627
|
+
},
|
|
1628
|
+
"canopy": {
|
|
1629
|
+
"width": {
|
|
1630
|
+
"id": "canopy.width",
|
|
1631
|
+
"group": "canopy",
|
|
1632
|
+
"key": "width",
|
|
1633
|
+
"label": "Canopy Width",
|
|
1634
|
+
"description": "X-axis crown reach multiplier. Construction-only: shapes the blob layout.",
|
|
1635
|
+
"type": "number",
|
|
1636
|
+
"control": null,
|
|
1637
|
+
"defaultValue": 1,
|
|
1638
|
+
"serializable": true,
|
|
1639
|
+
"bake": "rebuild",
|
|
1640
|
+
"range": {
|
|
1641
|
+
"max": 2.5,
|
|
1642
|
+
"min": 0.3,
|
|
1643
|
+
"step": 0.05
|
|
1644
|
+
},
|
|
1645
|
+
"options": null,
|
|
1646
|
+
"optionLabels": null,
|
|
1647
|
+
"optionDisabled": null
|
|
1648
|
+
},
|
|
1649
|
+
"depth": {
|
|
1650
|
+
"id": "canopy.depth",
|
|
1651
|
+
"group": "canopy",
|
|
1652
|
+
"key": "depth",
|
|
1653
|
+
"label": "Canopy Depth",
|
|
1654
|
+
"description": "Z-axis crown reach multiplier. Construction-only: shapes the blob layout.",
|
|
1655
|
+
"type": "number",
|
|
1656
|
+
"control": null,
|
|
1657
|
+
"defaultValue": 1,
|
|
1658
|
+
"serializable": true,
|
|
1659
|
+
"bake": "rebuild",
|
|
1660
|
+
"range": {
|
|
1661
|
+
"max": 2.5,
|
|
1662
|
+
"min": 0.3,
|
|
1663
|
+
"step": 0.05
|
|
1664
|
+
},
|
|
1665
|
+
"options": null,
|
|
1666
|
+
"optionLabels": null,
|
|
1667
|
+
"optionDisabled": null
|
|
1668
|
+
},
|
|
1669
|
+
"flatten": {
|
|
1670
|
+
"id": "canopy.flatten",
|
|
1671
|
+
"group": "canopy",
|
|
1672
|
+
"key": "flatten",
|
|
1673
|
+
"label": "Flatten",
|
|
1674
|
+
"description": "Vertical squash of the lobes; low values give the wide layered look.",
|
|
1675
|
+
"type": "number",
|
|
1676
|
+
"control": null,
|
|
1677
|
+
"defaultValue": 0.5,
|
|
1678
|
+
"serializable": true,
|
|
1679
|
+
"bake": "rebuild",
|
|
1680
|
+
"range": {
|
|
1681
|
+
"min": 0.1,
|
|
1682
|
+
"max": 1,
|
|
1683
|
+
"step": 0.05
|
|
1684
|
+
},
|
|
1685
|
+
"options": null,
|
|
1686
|
+
"optionLabels": null,
|
|
1687
|
+
"optionDisabled": null
|
|
1688
|
+
},
|
|
1689
|
+
"lobeCount": {
|
|
1690
|
+
"id": "canopy.lobeCount",
|
|
1691
|
+
"group": "canopy",
|
|
1692
|
+
"key": "lobeCount",
|
|
1693
|
+
"label": "Lobes",
|
|
1694
|
+
"description": "Satellite blobs ringing the crown core.",
|
|
1695
|
+
"type": "number",
|
|
1696
|
+
"control": null,
|
|
1697
|
+
"defaultValue": 6,
|
|
1698
|
+
"serializable": true,
|
|
1699
|
+
"bake": "rebuild",
|
|
1700
|
+
"range": {
|
|
1701
|
+
"min": 2,
|
|
1702
|
+
"max": 10,
|
|
1703
|
+
"step": 1
|
|
1704
|
+
},
|
|
1705
|
+
"options": null,
|
|
1706
|
+
"optionLabels": null,
|
|
1707
|
+
"optionDisabled": null
|
|
1708
|
+
},
|
|
1709
|
+
"spread": {
|
|
1710
|
+
"id": "canopy.spread",
|
|
1711
|
+
"group": "canopy",
|
|
1712
|
+
"key": "spread",
|
|
1713
|
+
"label": "Spread",
|
|
1714
|
+
"description": "Horizontal reach of the lobes (1 ≈ core radius).",
|
|
1715
|
+
"type": "number",
|
|
1716
|
+
"control": null,
|
|
1717
|
+
"defaultValue": 1.25,
|
|
1718
|
+
"serializable": true,
|
|
1719
|
+
"bake": "rebuild",
|
|
1720
|
+
"range": {
|
|
1721
|
+
"min": 0.5,
|
|
1722
|
+
"max": 2,
|
|
1723
|
+
"step": 0.05
|
|
1724
|
+
},
|
|
1725
|
+
"options": null,
|
|
1726
|
+
"optionLabels": null,
|
|
1727
|
+
"optionDisabled": null
|
|
1728
|
+
},
|
|
1729
|
+
"coreRadius": {
|
|
1730
|
+
"id": "canopy.coreRadius",
|
|
1731
|
+
"group": "canopy",
|
|
1732
|
+
"key": "coreRadius",
|
|
1733
|
+
"label": "Core Radius",
|
|
1734
|
+
"description": "Central blob radius.",
|
|
1735
|
+
"type": "number",
|
|
1736
|
+
"control": null,
|
|
1737
|
+
"defaultValue": 0.9,
|
|
1738
|
+
"serializable": true,
|
|
1739
|
+
"bake": "rebuild",
|
|
1740
|
+
"range": {
|
|
1741
|
+
"min": 0.4,
|
|
1742
|
+
"max": 1.2,
|
|
1743
|
+
"step": 0.05
|
|
1744
|
+
},
|
|
1745
|
+
"options": null,
|
|
1746
|
+
"optionLabels": null,
|
|
1747
|
+
"optionDisabled": null
|
|
1748
|
+
},
|
|
1749
|
+
"canopyScale": {
|
|
1750
|
+
"id": "canopy.canopyScale",
|
|
1751
|
+
"group": "canopy",
|
|
1752
|
+
"key": "canopyScale",
|
|
1753
|
+
"label": "Canopy Scale",
|
|
1754
|
+
"description": "Canopy-only scale relative to the trunk. Construction-only.",
|
|
1755
|
+
"type": "number",
|
|
1756
|
+
"control": null,
|
|
1757
|
+
"defaultValue": 1,
|
|
1758
|
+
"serializable": true,
|
|
1759
|
+
"bake": "rebuild",
|
|
1760
|
+
"range": {
|
|
1761
|
+
"max": 3,
|
|
1762
|
+
"min": 0.2,
|
|
1763
|
+
"step": 0.05
|
|
1764
|
+
},
|
|
1765
|
+
"options": null,
|
|
1766
|
+
"optionLabels": null,
|
|
1767
|
+
"optionDisabled": null
|
|
1768
|
+
}
|
|
1769
|
+
},
|
|
1770
|
+
"leaves": {
|
|
1771
|
+
"architecture": {
|
|
1772
|
+
"id": "leaves.architecture",
|
|
1773
|
+
"group": "leaves",
|
|
1774
|
+
"key": "architecture",
|
|
1775
|
+
"label": "Architecture",
|
|
1776
|
+
"description": "Branch-attached foliage layout: historical round clouds, stacked sprays, conifer whorls, or palm-like radial fronds. Construction-only.",
|
|
1777
|
+
"type": "select",
|
|
1778
|
+
"control": null,
|
|
1779
|
+
"defaultValue": "cloud-cards",
|
|
1780
|
+
"serializable": true,
|
|
1781
|
+
"bake": "rebuild",
|
|
1782
|
+
"range": null,
|
|
1783
|
+
"options": [
|
|
1784
|
+
"cloud-cards",
|
|
1785
|
+
"layered-sprays",
|
|
1786
|
+
"needle-whorls",
|
|
1787
|
+
"radial-fronds"
|
|
1788
|
+
],
|
|
1789
|
+
"optionLabels": {
|
|
1790
|
+
"cloud-cards": "Cloud Cards",
|
|
1791
|
+
"layered-sprays": "Layered Sprays",
|
|
1792
|
+
"needle-whorls": "Needle Whorls",
|
|
1793
|
+
"radial-fronds": "Radial Fronds"
|
|
1794
|
+
},
|
|
1795
|
+
"optionDisabled": null
|
|
1796
|
+
},
|
|
1797
|
+
"placement": {
|
|
1798
|
+
"id": "leaves.placement",
|
|
1799
|
+
"group": "leaves",
|
|
1800
|
+
"key": "placement",
|
|
1801
|
+
"label": "Leaf Placement",
|
|
1802
|
+
"description": "canopy: solid leaf mass hiding interior wood. tips: bushes only at branch ends with bare limbs between them (Sumeru silhouette). Construction-only.",
|
|
1803
|
+
"type": "select",
|
|
1804
|
+
"control": null,
|
|
1805
|
+
"defaultValue": "canopy",
|
|
1806
|
+
"serializable": true,
|
|
1807
|
+
"bake": "rebuild",
|
|
1808
|
+
"range": null,
|
|
1809
|
+
"options": [
|
|
1810
|
+
"canopy",
|
|
1811
|
+
"tips"
|
|
1812
|
+
],
|
|
1813
|
+
"optionLabels": {
|
|
1814
|
+
"canopy": "Solid Canopy",
|
|
1815
|
+
"tips": "Branch Tips"
|
|
1816
|
+
},
|
|
1817
|
+
"optionDisabled": null
|
|
1818
|
+
},
|
|
1819
|
+
"density": {
|
|
1820
|
+
"id": "leaves.density",
|
|
1821
|
+
"group": "leaves",
|
|
1822
|
+
"key": "density",
|
|
1823
|
+
"label": "Leaf Density",
|
|
1824
|
+
"description": "Crown leaf coverage. Below ~0.9 see-through gap pockets open and branches read through; above 1 packs extra cards (and fatter tufts) for lush crowns. Construction-only.",
|
|
1825
|
+
"type": "number",
|
|
1826
|
+
"control": null,
|
|
1827
|
+
"defaultValue": 1,
|
|
1828
|
+
"serializable": true,
|
|
1829
|
+
"bake": "rebuild",
|
|
1830
|
+
"range": {
|
|
1831
|
+
"max": 2,
|
|
1832
|
+
"min": 0.05,
|
|
1833
|
+
"step": 0.01
|
|
1834
|
+
},
|
|
1835
|
+
"options": null,
|
|
1836
|
+
"optionLabels": null,
|
|
1837
|
+
"optionDisabled": null
|
|
1838
|
+
},
|
|
1839
|
+
"cardCount": {
|
|
1840
|
+
"id": "leaves.cardCount",
|
|
1841
|
+
"group": "leaves",
|
|
1842
|
+
"key": "cardCount",
|
|
1843
|
+
"label": "Card Count",
|
|
1844
|
+
"description": "Base leaf-card count before density and coverage scaling; few LARGE overlapping cards keep the crown one fluffy mass. Construction-only.",
|
|
1845
|
+
"type": "number",
|
|
1846
|
+
"control": null,
|
|
1847
|
+
"defaultValue": 170,
|
|
1848
|
+
"serializable": true,
|
|
1849
|
+
"bake": "rebuild",
|
|
1850
|
+
"range": {
|
|
1851
|
+
"max": 600,
|
|
1852
|
+
"min": 20,
|
|
1853
|
+
"step": 1
|
|
1854
|
+
},
|
|
1855
|
+
"options": null,
|
|
1856
|
+
"optionLabels": null,
|
|
1857
|
+
"optionDisabled": null
|
|
1858
|
+
},
|
|
1859
|
+
"cardSizeMin": {
|
|
1860
|
+
"id": "leaves.cardSizeMin",
|
|
1861
|
+
"group": "leaves",
|
|
1862
|
+
"key": "cardSizeMin",
|
|
1863
|
+
"label": "Card Size Min",
|
|
1864
|
+
"description": "Min/max leaf-cluster card size in meters. Construction-only.",
|
|
1865
|
+
"type": "number",
|
|
1866
|
+
"control": null,
|
|
1867
|
+
"defaultValue": 1,
|
|
1868
|
+
"serializable": true,
|
|
1869
|
+
"bake": "rebuild",
|
|
1870
|
+
"range": {
|
|
1871
|
+
"min": 0.4,
|
|
1872
|
+
"max": 2,
|
|
1873
|
+
"step": 0.05
|
|
1874
|
+
},
|
|
1875
|
+
"options": null,
|
|
1876
|
+
"optionLabels": null,
|
|
1877
|
+
"optionDisabled": null
|
|
1878
|
+
},
|
|
1879
|
+
"cardSizeMax": {
|
|
1880
|
+
"id": "leaves.cardSizeMax",
|
|
1881
|
+
"group": "leaves",
|
|
1882
|
+
"key": "cardSizeMax",
|
|
1883
|
+
"label": "Card Size Max",
|
|
1884
|
+
"description": "Min/max leaf-cluster card size in meters. Construction-only.",
|
|
1885
|
+
"type": "number",
|
|
1886
|
+
"control": null,
|
|
1887
|
+
"defaultValue": 1.6,
|
|
1888
|
+
"serializable": true,
|
|
1889
|
+
"bake": "rebuild",
|
|
1890
|
+
"range": {
|
|
1891
|
+
"min": 0.4,
|
|
1892
|
+
"max": 2.4,
|
|
1893
|
+
"step": 0.05
|
|
1894
|
+
},
|
|
1895
|
+
"options": null,
|
|
1896
|
+
"optionLabels": null,
|
|
1897
|
+
"optionDisabled": null
|
|
1898
|
+
},
|
|
1899
|
+
"cardsPerCluster": {
|
|
1900
|
+
"id": "leaves.cardsPerCluster",
|
|
1901
|
+
"group": "leaves",
|
|
1902
|
+
"key": "cardsPerCluster",
|
|
1903
|
+
"label": "Cards Per Cluster",
|
|
1904
|
+
"description": "Cards per leaf tuft around each branch attachment. Construction-only. (In tips placement the built-in default becomes 9.)",
|
|
1905
|
+
"type": "number",
|
|
1906
|
+
"control": null,
|
|
1907
|
+
"defaultValue": 5,
|
|
1908
|
+
"serializable": true,
|
|
1909
|
+
"bake": "rebuild",
|
|
1910
|
+
"range": {
|
|
1911
|
+
"max": 20,
|
|
1912
|
+
"min": 1,
|
|
1913
|
+
"step": 1
|
|
1914
|
+
},
|
|
1915
|
+
"options": null,
|
|
1916
|
+
"optionLabels": null,
|
|
1917
|
+
"optionDisabled": null
|
|
1918
|
+
},
|
|
1919
|
+
"clusterRadius": {
|
|
1920
|
+
"id": "leaves.clusterRadius",
|
|
1921
|
+
"group": "leaves",
|
|
1922
|
+
"key": "clusterRadius",
|
|
1923
|
+
"label": "Cluster Radius",
|
|
1924
|
+
"description": "Radius in meters of each leaf tuft around its branch end. Construction-only. (In tips placement the built-in default becomes 0.62.)",
|
|
1925
|
+
"type": "number",
|
|
1926
|
+
"control": null,
|
|
1927
|
+
"defaultValue": 0.48,
|
|
1928
|
+
"serializable": true,
|
|
1929
|
+
"bake": "rebuild",
|
|
1930
|
+
"range": {
|
|
1931
|
+
"max": 1.5,
|
|
1932
|
+
"min": 0.1,
|
|
1933
|
+
"step": 0.01
|
|
1934
|
+
},
|
|
1935
|
+
"options": null,
|
|
1936
|
+
"optionLabels": null,
|
|
1937
|
+
"optionDisabled": null
|
|
1938
|
+
},
|
|
1939
|
+
"sprayLayers": {
|
|
1940
|
+
"id": "leaves.sprayLayers",
|
|
1941
|
+
"group": "leaves",
|
|
1942
|
+
"key": "sprayLayers",
|
|
1943
|
+
"label": "Spray Layers",
|
|
1944
|
+
"description": "Number of stacked foliage planes at each layered-spray attachment. Construction-only.",
|
|
1945
|
+
"type": "number",
|
|
1946
|
+
"control": null,
|
|
1947
|
+
"defaultValue": 3,
|
|
1948
|
+
"serializable": true,
|
|
1949
|
+
"bake": "rebuild",
|
|
1950
|
+
"range": {
|
|
1951
|
+
"max": 12,
|
|
1952
|
+
"min": 1,
|
|
1953
|
+
"step": 1
|
|
1954
|
+
},
|
|
1955
|
+
"options": null,
|
|
1956
|
+
"optionLabels": null,
|
|
1957
|
+
"optionDisabled": null
|
|
1958
|
+
},
|
|
1959
|
+
"spraySpread": {
|
|
1960
|
+
"id": "leaves.spraySpread",
|
|
1961
|
+
"group": "leaves",
|
|
1962
|
+
"key": "spraySpread",
|
|
1963
|
+
"label": "Spray Spread",
|
|
1964
|
+
"description": "Branch-local radius of each layered spray in meters. Construction-only.",
|
|
1965
|
+
"type": "number",
|
|
1966
|
+
"control": null,
|
|
1967
|
+
"defaultValue": 0.8,
|
|
1968
|
+
"serializable": true,
|
|
1969
|
+
"bake": "rebuild",
|
|
1970
|
+
"range": {
|
|
1971
|
+
"max": 4,
|
|
1972
|
+
"min": 0.05,
|
|
1973
|
+
"step": 0.01
|
|
1974
|
+
},
|
|
1975
|
+
"options": null,
|
|
1976
|
+
"optionLabels": null,
|
|
1977
|
+
"optionDisabled": null
|
|
1978
|
+
},
|
|
1979
|
+
"sprayThickness": {
|
|
1980
|
+
"id": "leaves.sprayThickness",
|
|
1981
|
+
"group": "leaves",
|
|
1982
|
+
"key": "sprayThickness",
|
|
1983
|
+
"label": "Spray Thickness",
|
|
1984
|
+
"description": "Separation between the stacked spray planes in meters. Construction-only.",
|
|
1985
|
+
"type": "number",
|
|
1986
|
+
"control": null,
|
|
1987
|
+
"defaultValue": 0.18,
|
|
1988
|
+
"serializable": true,
|
|
1989
|
+
"bake": "rebuild",
|
|
1990
|
+
"range": {
|
|
1991
|
+
"max": 2,
|
|
1992
|
+
"min": 0,
|
|
1993
|
+
"step": 0.01
|
|
1994
|
+
},
|
|
1995
|
+
"options": null,
|
|
1996
|
+
"optionLabels": null,
|
|
1997
|
+
"optionDisabled": null
|
|
1998
|
+
},
|
|
1999
|
+
"whorlArms": {
|
|
2000
|
+
"id": "leaves.whorlArms",
|
|
2001
|
+
"group": "leaves",
|
|
2002
|
+
"key": "whorlArms",
|
|
2003
|
+
"label": "Whorl Arms",
|
|
2004
|
+
"description": "Radial arm count around a conifer foliage attachment. Construction-only.",
|
|
2005
|
+
"type": "number",
|
|
2006
|
+
"control": null,
|
|
2007
|
+
"defaultValue": 6,
|
|
2008
|
+
"serializable": true,
|
|
2009
|
+
"bake": "rebuild",
|
|
2010
|
+
"range": {
|
|
2011
|
+
"max": 24,
|
|
2012
|
+
"min": 3,
|
|
2013
|
+
"step": 1
|
|
2014
|
+
},
|
|
2015
|
+
"options": null,
|
|
2016
|
+
"optionLabels": null,
|
|
2017
|
+
"optionDisabled": null
|
|
2018
|
+
},
|
|
2019
|
+
"whorlRadius": {
|
|
2020
|
+
"id": "leaves.whorlRadius",
|
|
2021
|
+
"group": "leaves",
|
|
2022
|
+
"key": "whorlRadius",
|
|
2023
|
+
"label": "Whorl Radius",
|
|
2024
|
+
"description": "Radius of each conifer foliage whorl in meters. Construction-only.",
|
|
2025
|
+
"type": "number",
|
|
2026
|
+
"control": null,
|
|
2027
|
+
"defaultValue": 0.48,
|
|
2028
|
+
"serializable": true,
|
|
2029
|
+
"bake": "rebuild",
|
|
2030
|
+
"range": {
|
|
2031
|
+
"max": 3,
|
|
2032
|
+
"min": 0.05,
|
|
2033
|
+
"step": 0.01
|
|
2034
|
+
},
|
|
2035
|
+
"options": null,
|
|
2036
|
+
"optionLabels": null,
|
|
2037
|
+
"optionDisabled": null
|
|
2038
|
+
},
|
|
2039
|
+
"frondCount": {
|
|
2040
|
+
"id": "leaves.frondCount",
|
|
2041
|
+
"group": "leaves",
|
|
2042
|
+
"key": "frondCount",
|
|
2043
|
+
"label": "Frond Count",
|
|
2044
|
+
"description": "Number of radial frond directions at each attachment. Construction-only.",
|
|
2045
|
+
"type": "number",
|
|
2046
|
+
"control": null,
|
|
2047
|
+
"defaultValue": 7,
|
|
2048
|
+
"serializable": true,
|
|
2049
|
+
"bake": "rebuild",
|
|
2050
|
+
"range": {
|
|
2051
|
+
"max": 24,
|
|
2052
|
+
"min": 3,
|
|
2053
|
+
"step": 1
|
|
2054
|
+
},
|
|
2055
|
+
"options": null,
|
|
2056
|
+
"optionLabels": null,
|
|
2057
|
+
"optionDisabled": null
|
|
2058
|
+
},
|
|
2059
|
+
"frondLength": {
|
|
2060
|
+
"id": "leaves.frondLength",
|
|
2061
|
+
"group": "leaves",
|
|
2062
|
+
"key": "frondLength",
|
|
2063
|
+
"label": "Frond Length",
|
|
2064
|
+
"description": "Maximum radial frond reach in meters. Construction-only.",
|
|
2065
|
+
"type": "number",
|
|
2066
|
+
"control": null,
|
|
2067
|
+
"defaultValue": 1.25,
|
|
2068
|
+
"serializable": true,
|
|
2069
|
+
"bake": "rebuild",
|
|
2070
|
+
"range": {
|
|
2071
|
+
"max": 4,
|
|
2072
|
+
"min": 0.1,
|
|
2073
|
+
"step": 0.01
|
|
2074
|
+
},
|
|
2075
|
+
"options": null,
|
|
2076
|
+
"optionLabels": null,
|
|
2077
|
+
"optionDisabled": null
|
|
2078
|
+
},
|
|
2079
|
+
"shellFill": {
|
|
2080
|
+
"id": "leaves.shellFill",
|
|
2081
|
+
"group": "leaves",
|
|
2082
|
+
"key": "shellFill",
|
|
2083
|
+
"label": "Shell Fill",
|
|
2084
|
+
"description": "Fill the blob shells between tufts so the crown reads as one solid mass; off leaves bare wood between end bushes. Construction-only. (Tips placement turns this off by default.)",
|
|
2085
|
+
"type": "boolean",
|
|
2086
|
+
"control": null,
|
|
2087
|
+
"defaultValue": true,
|
|
2088
|
+
"serializable": true,
|
|
2089
|
+
"bake": "rebuild",
|
|
2090
|
+
"range": null,
|
|
2091
|
+
"options": null,
|
|
2092
|
+
"optionLabels": null,
|
|
2093
|
+
"optionDisabled": null
|
|
2094
|
+
}
|
|
2095
|
+
},
|
|
2096
|
+
"flower": {
|
|
2097
|
+
"species": {
|
|
2098
|
+
"id": "flower.species",
|
|
2099
|
+
"group": "flower",
|
|
2100
|
+
"key": "species",
|
|
2101
|
+
"label": "Species",
|
|
2102
|
+
"description": "Common-flower head at every branch tip (see FLOWER_SPECIES).",
|
|
2103
|
+
"type": "select",
|
|
2104
|
+
"control": null,
|
|
2105
|
+
"defaultValue": "daisy",
|
|
2106
|
+
"serializable": true,
|
|
2107
|
+
"bake": "rebuild",
|
|
2108
|
+
"range": null,
|
|
2109
|
+
"options": [
|
|
2110
|
+
"tulip",
|
|
2111
|
+
"daisy",
|
|
2112
|
+
"blossom",
|
|
2113
|
+
"sunflower",
|
|
2114
|
+
"poppy",
|
|
2115
|
+
"rose",
|
|
2116
|
+
"cornflower",
|
|
2117
|
+
"buttercup"
|
|
2118
|
+
],
|
|
2119
|
+
"optionLabels": {
|
|
2120
|
+
"tulip": "Tulip",
|
|
2121
|
+
"daisy": "Daisy",
|
|
2122
|
+
"blossom": "Cherry Blossom",
|
|
2123
|
+
"sunflower": "Sunflower",
|
|
2124
|
+
"poppy": "Poppy",
|
|
2125
|
+
"rose": "Rose",
|
|
2126
|
+
"cornflower": "Cornflower",
|
|
2127
|
+
"buttercup": "Buttercup"
|
|
2128
|
+
},
|
|
2129
|
+
"optionDisabled": null
|
|
2130
|
+
},
|
|
2131
|
+
"pinHeadColor": {
|
|
2132
|
+
"id": "flower.pinHeadColor",
|
|
2133
|
+
"group": "flower",
|
|
2134
|
+
"key": "pinHeadColor",
|
|
2135
|
+
"label": "Pin Head Color",
|
|
2136
|
+
"description": "Use the explicit petal color below instead of the species default.",
|
|
2137
|
+
"type": "boolean",
|
|
2138
|
+
"control": null,
|
|
2139
|
+
"defaultValue": false,
|
|
2140
|
+
"serializable": true,
|
|
2141
|
+
"bake": "rebuild",
|
|
2142
|
+
"range": null,
|
|
2143
|
+
"options": null,
|
|
2144
|
+
"optionLabels": null,
|
|
2145
|
+
"optionDisabled": null
|
|
2146
|
+
},
|
|
2147
|
+
"headColor": {
|
|
2148
|
+
"id": "flower.headColor",
|
|
2149
|
+
"group": "flower",
|
|
2150
|
+
"key": "headColor",
|
|
2151
|
+
"label": "Head Color",
|
|
2152
|
+
"description": "Bloom petal color (when pinned).",
|
|
2153
|
+
"type": "color",
|
|
2154
|
+
"control": null,
|
|
2155
|
+
"defaultValue": [
|
|
2156
|
+
1,
|
|
2157
|
+
0.98,
|
|
2158
|
+
0.92
|
|
2159
|
+
],
|
|
2160
|
+
"serializable": true,
|
|
2161
|
+
"bake": "rebuild",
|
|
2162
|
+
"range": null,
|
|
2163
|
+
"options": null,
|
|
2164
|
+
"optionLabels": null,
|
|
2165
|
+
"optionDisabled": null
|
|
2166
|
+
},
|
|
2167
|
+
"headScale": {
|
|
2168
|
+
"id": "flower.headScale",
|
|
2169
|
+
"group": "flower",
|
|
2170
|
+
"key": "headScale",
|
|
2171
|
+
"label": "Head Size",
|
|
2172
|
+
"description": "Bloom size relative to the leaf tufts.",
|
|
2173
|
+
"type": "number",
|
|
2174
|
+
"control": null,
|
|
2175
|
+
"defaultValue": 1,
|
|
2176
|
+
"serializable": true,
|
|
2177
|
+
"bake": "rebuild",
|
|
2178
|
+
"range": {
|
|
2179
|
+
"min": 0.4,
|
|
2180
|
+
"max": 2,
|
|
2181
|
+
"step": 0.05
|
|
2182
|
+
},
|
|
2183
|
+
"options": null,
|
|
2184
|
+
"optionLabels": null,
|
|
2185
|
+
"optionDisabled": null
|
|
2186
|
+
}
|
|
2187
|
+
},
|
|
2188
|
+
"color": {
|
|
2189
|
+
"canopy": {
|
|
2190
|
+
"id": "color.canopy",
|
|
2191
|
+
"group": "color",
|
|
2192
|
+
"key": "canopy",
|
|
2193
|
+
"label": "Canopy Color",
|
|
2194
|
+
"description": "Canopy base color; the lit/shadow/crown palette derives from it. Also accepts richer resolveCanopyColor specs (color lists, {from,to} blends, HSL ranges) resolved per seed.",
|
|
2195
|
+
"type": "color",
|
|
2196
|
+
"control": null,
|
|
2197
|
+
"defaultValue": [
|
|
2198
|
+
0.30196078431372547,
|
|
2199
|
+
0.6352941176470588,
|
|
2200
|
+
0.34509803921568627
|
|
2201
|
+
],
|
|
2202
|
+
"serializable": true,
|
|
2203
|
+
"bake": "live",
|
|
2204
|
+
"range": null,
|
|
2205
|
+
"options": null,
|
|
2206
|
+
"optionLabels": null,
|
|
2207
|
+
"optionDisabled": null
|
|
2208
|
+
},
|
|
2209
|
+
"pinLit": {
|
|
2210
|
+
"id": "color.pinLit",
|
|
2211
|
+
"group": "color",
|
|
2212
|
+
"key": "pinLit",
|
|
2213
|
+
"label": "Pin Lit",
|
|
2214
|
+
"description": "Use the explicit lit tone below instead of the base color.",
|
|
2215
|
+
"type": "boolean",
|
|
2216
|
+
"control": null,
|
|
2217
|
+
"defaultValue": false,
|
|
2218
|
+
"serializable": true,
|
|
2219
|
+
"bake": "live",
|
|
2220
|
+
"range": null,
|
|
2221
|
+
"options": null,
|
|
2222
|
+
"optionLabels": null,
|
|
2223
|
+
"optionDisabled": null
|
|
2224
|
+
},
|
|
2225
|
+
"lit": {
|
|
2226
|
+
"id": "color.lit",
|
|
2227
|
+
"group": "color",
|
|
2228
|
+
"key": "lit",
|
|
2229
|
+
"label": "Lit Tone",
|
|
2230
|
+
"description": "Sunlit leaf tone (when pinned).",
|
|
2231
|
+
"type": "color",
|
|
2232
|
+
"control": null,
|
|
2233
|
+
"defaultValue": [
|
|
2234
|
+
0.30196078431372547,
|
|
2235
|
+
0.6352941176470588,
|
|
2236
|
+
0.34509803921568627
|
|
2237
|
+
],
|
|
2238
|
+
"serializable": true,
|
|
2239
|
+
"bake": "live",
|
|
2240
|
+
"range": null,
|
|
2241
|
+
"options": null,
|
|
2242
|
+
"optionLabels": null,
|
|
2243
|
+
"optionDisabled": null
|
|
2244
|
+
},
|
|
2245
|
+
"pinShadow": {
|
|
2246
|
+
"id": "color.pinShadow",
|
|
2247
|
+
"group": "color",
|
|
2248
|
+
"key": "pinShadow",
|
|
2249
|
+
"label": "Pin Shadow",
|
|
2250
|
+
"description": "Use the explicit shadow tone below instead of deriving it.",
|
|
2251
|
+
"type": "boolean",
|
|
2252
|
+
"control": null,
|
|
2253
|
+
"defaultValue": false,
|
|
2254
|
+
"serializable": true,
|
|
2255
|
+
"bake": "live",
|
|
2256
|
+
"range": null,
|
|
2257
|
+
"options": null,
|
|
2258
|
+
"optionLabels": null,
|
|
2259
|
+
"optionDisabled": null
|
|
2260
|
+
},
|
|
2261
|
+
"shadow": {
|
|
2262
|
+
"id": "color.shadow",
|
|
2263
|
+
"group": "color",
|
|
2264
|
+
"key": "shadow",
|
|
2265
|
+
"label": "Shadow Tone",
|
|
2266
|
+
"description": "Shaded leaf tone (when pinned).",
|
|
2267
|
+
"type": "color",
|
|
2268
|
+
"control": null,
|
|
2269
|
+
"defaultValue": [
|
|
2270
|
+
0.18,
|
|
2271
|
+
0.42,
|
|
2272
|
+
0.28
|
|
2273
|
+
],
|
|
2274
|
+
"serializable": true,
|
|
2275
|
+
"bake": "live",
|
|
2276
|
+
"range": null,
|
|
2277
|
+
"options": null,
|
|
2278
|
+
"optionLabels": null,
|
|
2279
|
+
"optionDisabled": null
|
|
2280
|
+
},
|
|
2281
|
+
"pinCrown": {
|
|
2282
|
+
"id": "color.pinCrown",
|
|
2283
|
+
"group": "color",
|
|
2284
|
+
"key": "pinCrown",
|
|
2285
|
+
"label": "Pin Crown",
|
|
2286
|
+
"description": "Use the explicit crown-crest tone below instead of deriving it.",
|
|
2287
|
+
"type": "boolean",
|
|
2288
|
+
"control": null,
|
|
2289
|
+
"defaultValue": false,
|
|
2290
|
+
"serializable": true,
|
|
2291
|
+
"bake": "live",
|
|
2292
|
+
"range": null,
|
|
2293
|
+
"options": null,
|
|
2294
|
+
"optionLabels": null,
|
|
2295
|
+
"optionDisabled": null
|
|
2296
|
+
},
|
|
2297
|
+
"crown": {
|
|
2298
|
+
"id": "color.crown",
|
|
2299
|
+
"group": "color",
|
|
2300
|
+
"key": "crown",
|
|
2301
|
+
"label": "Crown Tone",
|
|
2302
|
+
"description": "Sun-struck crest tone on the crown top (when pinned).",
|
|
2303
|
+
"type": "color",
|
|
2304
|
+
"control": null,
|
|
2305
|
+
"defaultValue": [
|
|
2306
|
+
0.55,
|
|
2307
|
+
0.78,
|
|
2308
|
+
0.42
|
|
2309
|
+
],
|
|
2310
|
+
"serializable": true,
|
|
2311
|
+
"bake": "live",
|
|
2312
|
+
"range": null,
|
|
2313
|
+
"options": null,
|
|
2314
|
+
"optionLabels": null,
|
|
2315
|
+
"optionDisabled": null
|
|
2316
|
+
}
|
|
2317
|
+
},
|
|
2318
|
+
"wind": {
|
|
2319
|
+
"speed": {
|
|
2320
|
+
"id": "wind.speed",
|
|
2321
|
+
"group": "wind",
|
|
2322
|
+
"key": "speed",
|
|
2323
|
+
"label": "Wind Speed",
|
|
2324
|
+
"description": "How fast the leaf-card flutter oscillates.",
|
|
2325
|
+
"type": "number",
|
|
2326
|
+
"control": null,
|
|
2327
|
+
"defaultValue": 1,
|
|
2328
|
+
"serializable": true,
|
|
2329
|
+
"bake": "live",
|
|
2330
|
+
"range": {
|
|
2331
|
+
"max": 4,
|
|
2332
|
+
"min": 0,
|
|
2333
|
+
"step": 0.01
|
|
2334
|
+
},
|
|
2335
|
+
"options": null,
|
|
2336
|
+
"optionLabels": null,
|
|
2337
|
+
"optionDisabled": null
|
|
2338
|
+
},
|
|
2339
|
+
"strength": {
|
|
2340
|
+
"id": "wind.strength",
|
|
2341
|
+
"group": "wind",
|
|
2342
|
+
"key": "strength",
|
|
2343
|
+
"label": "Wind Strength",
|
|
2344
|
+
"description": "How far leaf cards sway with the wind.",
|
|
2345
|
+
"type": "number",
|
|
2346
|
+
"control": null,
|
|
2347
|
+
"defaultValue": 0.05,
|
|
2348
|
+
"serializable": true,
|
|
2349
|
+
"bake": "live",
|
|
2350
|
+
"range": {
|
|
2351
|
+
"max": 0.5,
|
|
2352
|
+
"min": 0,
|
|
2353
|
+
"step": 0.005
|
|
2354
|
+
},
|
|
2355
|
+
"options": null,
|
|
2356
|
+
"optionLabels": null,
|
|
2357
|
+
"optionDisabled": null
|
|
2358
|
+
},
|
|
2359
|
+
"heading": {
|
|
2360
|
+
"id": "wind.heading",
|
|
2361
|
+
"group": "wind",
|
|
2362
|
+
"key": "heading",
|
|
2363
|
+
"label": "Heading",
|
|
2364
|
+
"description": "Horizontal (XZ) heading the canopy flutter drifts toward.",
|
|
2365
|
+
"type": "number",
|
|
2366
|
+
"control": null,
|
|
2367
|
+
"defaultValue": 0.29,
|
|
2368
|
+
"serializable": true,
|
|
2369
|
+
"bake": "live",
|
|
2370
|
+
"range": {
|
|
2371
|
+
"min": 0,
|
|
2372
|
+
"max": 6.29,
|
|
2373
|
+
"step": 0.01
|
|
2374
|
+
},
|
|
2375
|
+
"options": null,
|
|
2376
|
+
"optionLabels": null,
|
|
2377
|
+
"optionDisabled": null
|
|
2378
|
+
}
|
|
2379
|
+
}
|
|
2380
|
+
}
|
|
2381
|
+
};
|