Skip to content

Generate a plant

Produce a procedural plant from species, age, and position. Useful for method comparison, sensitivity analysis, and synthetic training data. See Plant models for the conceptual background.

Run it

  1. Click Generate Plant (sprout icon) in the toolbar. The popup opens.

  2. Species — pick from the dropdown. Species are grouped:

    • Trees — almond, apple, apple (fruiting wall), eastern redbud, olive, pistachio, walnut
    • Vines — bougainvillea, plus grapevine in seven training systems (VSP, Wye, GDC, Geneva double curtain, vertical shoot positioned, sprawl, unilateral cordon)
    • Cereals — maize, rice, sorghum, wheat
    • Vegetables — asparagus, bean, butter lettuce, capsicum, cherry tomato, cowpea, soybean, strawberry, sugarbeet, tomato
    • Weeds — bindweed, cheeseweed, ground cherry weed, puncturevine

    A sixth Other group appears if the backend offers a model that isn't in one of the groups above. The default selection is bean.

  3. Age — target age in days. Younger plants are smaller and have fewer branches; the same species at 30, 365, and 1825 days looks very different.

  4. Position — (X, Y, Z) of the plant base, in meters. Defaults to the world origin. Set this when generating multiple plants so they don't overlap.

  5. Generate as canopy — toggle this to build a regularly spaced grid of plants instead of one. See Generate a canopy below.

  6. Advanced Options → Use Random Seed — off by default, meaning no seed is sent and each run produces a different plant. Tick it and enter a seed to pin the result so the same species/age/seed regenerates identically.

  7. Click Generate Plant.

Generation takes anywhere from a couple of seconds (young vegetable) to a minute (mature tree). While it runs, the popup stays open and shows a progress bar with the current phase ("Growing plants…", "Packing geometry…") and a Cancel button if you want to abort a long build. Cancelling genuinely stops the work: it signals the backend to break out of the build, so a long canopy or growth simulation halts between plants (or growth steps) and its memory is released within a moment rather than running to completion in the background. When it finishes, the mesh appears in the Meshes list and the Plant panel opens at the right for further control.

Changing a plant's age

Once a plant is in the scene, open the Plant Growth panel (from the command palette, ⌘/Ctrl+KPlant Growth Panel) with the plant selected. It regrows the plant to a new age in place — much faster than re-running Generate:

  • Current Age — the plant's age in days.
  • Quick Adjust-1 / +1 day buttons.
  • Custom Step — step by an arbitrary number of days.
  • Go to Age — type a target age and click Go.

The panel also has a Growth Animation section: set a start and end age, then Start to play the plant's development, or Make GIF to record it (with background and camera-view options). Stop ends it early.

Changing a plant's age is not undoable — it recreates the backend session, so it clears the undo history for that plant.

Generate a canopy

To build a regularly spaced stand of plants in one step, toggle Generate as canopy in the Generate Plant popup. The single-plant Position becomes the Canopy center, and these controls appear:

  • Spacing (m) — distance between neighboring plants in X and Y.
  • Count (plants) — number of columns (X) and rows (Y). The popup shows the total (columns × rows).
  • Advanced → Germination rate — probability (0–1) that each grid position is filled. 1.0 fills every position; lower values leave random gaps, simulating a realistic stand with missing plants.

All species share the chosen age. Click Generate Canopy. The whole grid comes back as a single merged mesh — one row in the Meshes list, named like bean canopy 3×3 (30d) — so you can hide, color, and export the canopy as one object. Because a canopy can build many plants, generation takes proportionally longer than a single plant — the popup's progress bar tracks the build, and Cancel stops it.

Canopies are fixed-age

Unlike single plants, a canopy has no live age slider — it is built at the chosen age. To change the age, regenerate the canopy.

Generate several plants individually

If you need plants you can hide, color, and export independently, repeat the Generate Plant workflow (canopy toggle off) with different positions. Each plant is then its own mesh entry.

Common follow-ups

Common problems

"Generation crashes or hangs." Most likely cause: the requested age is unrealistic for the species (e.g., 10,000 days for an annual). Check the species' typical lifespan and stay within it. The next most common cause is running out of memory on a very dense species (mature trees with full foliage). Reduce age or switch to a smaller species.

"The plant looks wrong / unrealistic." The Helios species library is parameterized from published literature but defaults may not match your specific cultivar. Use Morph a plant to adjust. If you find consistently better parameters, save them via Morph → Export parameters and reuse.