
Explore procedural plant generation in Unity through mesh fundamentals, space colonization, L-system, and semi procedural drawing, then build growth, senescence, and branch components.
Explore procedural plant generation with unified theory and live Unity coding, then examine scientific research goals: simulate, design, and reproduce plants using positional information and images.
Explore the scientific objectives of procedural plant generation and compare design versus biological perspectives, while surveying generation techniques like l-system and iterated function systems in a video game context.
Explore procedural plant generation in videogames to rapidly produce diverse, rule-driven plants for real-time environments, while noting the development time and risk of wrong results requiring testing.
Classify plant generation into simulation, procedural (fractal and non-fractal, including space-colonization), and semi-procedural addition methods, highlighting fast, low-data procedural approaches with parameters and need for human input in addition methods.
Explore procedural plant generation in Unity using space colonization, generative grammar, and semi procedural drawing; animate growth and senescence, create 2D and 3D meshes, and time lapse sequences.
Explore how a mesh combines vertices, edges, and faces to define polygons and polyhedral shapes in 2D and 3D space, including how Unity transforms apply to a mesh.
Explore how Unity uses a left-handed Cartesian coordinate system with an orthonormal basis to describe 3D space with points and vectors, and compare it to polar, cylindrical, and spherical systems.
Explore the polar coordinate system, describing points by radius and angle, and learn to convert between polar and Cartesian coordinates while applying this approach to circles and meshes.
Discover how vectors describe direction in 2D and 3D space and perform operations to move, rotate, and scale objects in Unity's procedural plant generation.
Explore vector addition and subtraction as the core tool for moving points and deforming meshes in Unity and 3D engines, with clear 2D examples of AB and BC.
Explore scalar multiplication of vectors in Unity, understanding how multiplying a vector by a scalar scales its magnitude while preserving direction, and yields the additive inverse with negative scalars.
Discover the dot product as a scalar work of a force in three-dimensional space, compare polar and Cartesian definitions, and compute magnitude, angle, or axis-wise component sums.
Understand the cross product, which provides a direction vector rather than a scalar and use it to calculate 3d points for the procedural plant along a catmull-rom spline.
Blend cylinder and cone to form a branch mesh with adjustable bottom and top radii and sides, then attach a skeleton to drive growth, senescence, and pull movements.
Normals are perpendicular vectors to a plane that determine surface orientation from a lighting source, and Unity can calculate them for each triangle in a plant mesh using cross products.
Explore uv mapping, projecting a 3d model surface to a 2d image for texture mapping, and applying textures to unfolded meshes, from simple shapes to complex ones for plant rendering.
Set up a Unity project for procedural plant generation using the space colonization algorithm, creating folders, scripts, a scene, a space colonization script, a visual generator, and a Catmull-Rom spline.
Develop a C# debug manager to automatically switch to the scene view in the Unity editor during play, instead of the game view, controlled by a use scene view boolean.
Leads students through the space colonization algorithm to generate plant architecture by iteratively moving a cursor, attracting to leaves, branching, and forming diverse, controllable trees with vectors.
Generate 200 Vector3 attraction points inside a sphere radius of 10 for the space colonization algorithm and visualize them as editor spheres while exposing a public points list.
Learn common Unity classes for procedural plant generation, including branch, skeleton with Catmull-Rom splines, a generation module for 3D meshes and line renderers, and hierarchical branches.
Procedural plant generation uses a BranchPart class to model branch parts with start and end positions, direction, size, attraction points, and a branch path hierarchy of parents and children.
Create a visual generator in Unity to drive a 3D plant generation workflow with a public generate plot mesh function and a serialized 2D/3D toggle in global parameters.
Learn how Unity builds branch meshes by creating vertices and triangulating them to form a cylinder-cone hybrid, using polar coordinates to generate bottom, sides, and top bases.
Learn to build a bottom branch mesh in Unity’s procedural plant generation, using vertices and triangles, circle-based vertex placement, and linking first and last triangles.
Fix a memory leak in branch mesh construction by not creating new meshes; assign vertices and triangle indices directly to the game object's mesh.
Optimize the branch mesh construction by removing unnecessary index additions, reducing triangles from twelve to ten, and ensuring the correct number of indices for bottom optimization.
Demonstrate the top branch mesh construction in procedural plant generation with Unity, covering vertex initialization, top radius, branch length along the y axis, normals, and triangle indexing.
Construct the branch mesh sides in Unity by iterating vertices, calculating radius, and creating two-triangle segments with updated vertices and triangle indices.
Apply the space colonization algorithm to propagate plant growth over time, using attraction points, kill range, time steps, and mean-direction space quantization to generate new branches.
Link the space colonization algorithm screen script with the visual generator and call generate plant to convert branches into mesh cylinders and cones, updating vertices and triangle indices progressively.
Create a green material in a materials folder, expose a material variable in the visual generator script, and assign it to the branch mesh renderer to color branches green.
Refactors the Unity-based procedural plant generation by renaming variables and adding per-part vertex counts to fix a vertex length issue and ensure correct vertex and triangle construction.
The visual generator script uses a vector free direction and a quaternion rotation to orient branches, compute vertices, and extend branches via direction and branch length toward a plant-like form.
Create a spline branch class to model plant branches in Unity, linking branch parts, spline points, and the space colonization algorithm for procedural generation.
Format the branches part into spline branches by recursively converting branch paths to individual game objects with meshes and spline points, forming a hierarchical structure in Unity.
Learn step-by-step branch generation in Unity by formatting spline branches, creating a parent relationship, and generating separate meshes for stems and branches through a procedural space colonization workflow.
Explore procedural plant generation using Hermite cubic splines and CatmullRom splines, with P0, P1 and tangents to sculpt branch skeletons in Unity.
Implement a Catmull-Rom spline class in Unity to generate plant curves using control points and resolution, with an evaluate function calculating positions and tangents.
Integrate Catmull-Rom spline into spline branch in Unity to grow a plant along dynamically updated spline points, with resolution control and live visualization.
Learn mesh optimization for procedural plant generation in Unity by skipping unnecessary top and bottom bases in mid-branch, generating top vertices and triangles to create a cone-cylinder form.
Refactor a Unity procedural mesh generator to optimize branch meshes by adding per-part vertex counts for bottom, top, and sides, and adjust triangle calculations for clearer indexing.
Optimize the branch mesh by adding a bottom part only for the first stem branch. Adjust vertex counting and triangle indices to build the bottom part once, improving vertex linkage.
Link the current branch segment to the previous vertex number to achieve a smooth continuation between branch parts, including top and bottom sections, with refined vertex and triangle construction.
Explore smooth plant growth in the visual generator by using a timeElapsed variable updated with delta time, and a time-to-wait parameter to interpolate branch lengths on spline branches.
learn to generate plant meshes by using catmull-rom spline points to drive branch construction, creating smooth growth along the spline through updates in the visual generator.
Use a serialized animation curve to drive branch radius along growth, adjusting bottom and top radii via evaluate, with index-based divergence to compute root radii for realistic, scalable branches.
Explore procedural plant growth in Unity by implementing a growth effect using spline point limits, time lapse duration, and timed steps to animate stem and branches with a smooth progression.
Learn to procedurally generate plants in Unity by animating growth branch after branch, iterating over spline branches with per-branch time steps and parent-then-child generation.
Introduce a public float progression growth to drive plant branch generation in the visual generator as the plant grows, triggering spline branches when the parent's progression passes the current branch.
Improve branch radius in procedural plant generation with Unity by introducing time-based progression, a branch growth radius variable, and parent-aware coefficients to produce smooth, progressive branch sizes.
Learn to introduce randomness into procedural plant generation with Unity by adding delays and varied growth durations for stems and branches.
Control branch length by introducing a new variable, pass branch path length from the space colonization algorithm to the visual generator, and adjust spline branch resolution for smoother growth.
Implement a smooth growth effect for procedural plant generation in Unity by using a progression variable to animate branch path growth along spline points.
Modify plant branches by animating the catmull-rom spline points in the editor, updating spline point positions when changes occur, and triggering events and debug logs for movement.
Link spline points across branches to ensure moving a point updates connected branches, by updating spline points and applying the calculated direction to all branch parts.
Realize a growing animation using a skeleton to steer growth direction and shape branches. Interpolate growth, scale branches, and animate senescence and falling branches within a space colonization framework.
Animate growth by driving a spline-based plant along its points, rotating points around their positions as time elapsed and growth progress advance, using a polar coordinate approach.
Describe elastic plant animation in Unity by applying stiffness to spline points, maintaining total and segment lengths, and updating positions with displacement, direction, and time delta to create branch-wide elasticity.
Enables senescence animation in procedural plant generation with Unity using isSenescent and animateSenescence to end growth when all branches mature; set stiffness to 0.2 and add randomness for natural fall.
Explore L-system as a generative grammar for procedural plant generation, highlighting its advantages—simple rules, branching control, infinite diversity, and reusable rules—while noting the difficulty of predicting global form.
Set up a Unity L-system by creating a system folder, a scene, and scripts, add a debug manager and prefabs, and define the initial and current formulas, rules, and iterations.
Apply l-system rules to transform the initial formula into a new one, then interpret the result to initialize and draw branches with position, angle, and length in Unity.
Create procedural L-system branches in Unity by computing start and end via quaternions, building branch parts with parent links, and assigning spline points, mesh filter, and mesh renderer.
Link L-system branch parts to spline branches in Unity by interpreting F as a branch part, formatting splines, and reordering children so the last becomes the direct child.
Explore how the Unity L-system fixes a bug by using the last system branch with branches to become the direct parent for its child branches.
Reproduce famous fractal plant forms by implementing an L-system in Unity, iterating rules and symbols from Wikipedia, and refining branch positions to match the reference.
Improve the l-system in procedural plant generation by fixing a zero radius in mesh creation with a conditional parent coefficient; branches become visible and the system works.
Explore the semi procedural approach in Unity by drawing a basic global form to generate specific branch shapes for 3D and 2D plants, with interactive control and infinite diversity.
Set up the semi procedural workflow in Unity by creating the semi procedural scene, folders, and scripts, and configure the visual generator and orthographic camera for drawing plant branches.
Link the Canva user interface object to the PlantDrawer to trigger plant drawing and display in 3d, while a state machine handles waiting, drawing, and moving with mouse input.
Draw drone points as lines with GL lines and a line material. Use mouse-driven point creation via screen to world point and distance checks, and set the camera to orthographic.
Link plantdrawer and branchpart to set up and extend branch paths, calculating points and directions, and adding branch paths with parent references for hierarchical space colonization in procedural plant generation.
Press space to trigger validate and draw the mesh via the visual generator, after preparing the main camera, iterating branch parts, and then set draw gap to 1.2 and fix point order.
Access and integrate open-source assets, textures, and meshes into your Unity project, assign sprite 2d textures to flowers, and recreate materials using albedo and transparency settings for seamless plant textures.
Explore uv mapping in Unity by using a Vector2 uv array to assign textures to branch mesh, enabling per-part textures via 2d sprites on the 3d mesh.
Apply UVs to a generated Unity mesh by creating a Vector2 UV array, assigning per-vertex x and y, and adjust tiling and material properties to control the texture.
Learn to generate 2D plants in Unity using a line renderer, toggling between 3D mesh and 2D line-based growth with spline branches, texture mode tile, and dynamic line widths.
Create and apply a dedicated line renderer material to stem and branches, configure tiling and rendering mode, and test in 2D space colonization to achieve a tiled, continuous plant model.
Construct a leaf mesh in Unity in 2D along the y axis by placing symmetric points on the x-axis, triangulating with a y-axis point, and replicating to form a leaf.
Implement a live leaf drawing workflow in Unity by using a live mesh builder to convert plotted points into a complete leaf, mirroring left and right sides.
Create a leaf mesh in Unity by building left, middle, and right vertex sets, then generate a flipped mesh with inverted normals and combine both to form a full leaf.
Explore external assets with careful permission to diversify renderings and styles, enabling time-lapse capable plants through L-system formulas with new signs (L, P, B) to create varied forms.
Design and implement a shape system for procedural plant generation in Unity, featuring shape visual mesh and sprite components, leaf and flower types, and a system-driven visual generator.
Learn to set up external assets in Unity for procedural plant generation by unpacking prefabs, configuring mesh and sprite visuals, setting min/max sizes, and adjusting pivot points for correct display.
Create a shape object in the shape class for 3d or 2d visuals. Attach mesh and sprite components, assign materials, and update shape scale using interpolation in the visual generator.
Add a counter to the shape class to inject randomness into growth timing, using a random target size between min and max for varied shapes in Unity.
Explore procedural plant generation in Unity with a virtual camera in timeline for timelapse rendering, balancing environment around plants with artistic assets and controlled randomness for natural growth.
Explore how procedural plant generation uses simple shapes and mesh creation to build 3D plants, animate in real time, and export meshes or sprites for 2D or 3D Unity games.
Welcome to the Procedural Plant Generation course!
In this course, we will explore the fascinating world of procedural generation of plants. Plants are complex natural structures that have always been a source of inspiration for artists, architects, and scientists. With the development of procedural generation algorithms, we can now create realistic, fantastic and diverse plant structures in a fraction of the time it would take to manually model them.
The course is divided into four main parts.
First, I will quickly introduce this course, my pedagogy, and we will cover the latest scientific research on procedural plant generation, the advantages and drawbacks of procedural generation inside videogames and the project that will structure this course.
In the second part, we will explain the theoretical approach behind procedural mesh generation. We will see the basic theory to understand how to create procedural plant with coordinate systems, vectors and some mathematics calculations.
The third part is subdivided respectfully into 3 parts corresponding to theses algorithms: Space Colonization with Animation System, LSystem & Semi-Procedural approach. It's the heart of this course. We will see how to generate for these 3 algorithms a plant global form with Catmull-Rom Spline and also how to animate it smoothly.
The last part will show how to integrate external assets inside LSystem Plant Generation to create a basic timelapse.
It is important to note that this course DOES NOT COVER topics such as :
Procedural Terrain Generation
Specific Flower / Tree / Plant Species Generation & Animation
Procedural Generation of Specific Parts of Flower / Tree / Plant like Leaves / Petals / Buds / Fruits etc.
However, you will understand and learn the essential skills to create meshes looking like plants, from a coding perspective and how to integrate asset resources (3D models & 2D sprites) on it to enhance your creations.
Lastly, I want to emphasize that all the assets used in the projects are free to be used, as long as the creators are cited and all conditions of their respective license are filled. I really want to encourage the use of free resources and the support of talented creators.
Whether you are an artist, a (game) developer, or a computer graphics enthusiast, this course will provide you with the knowledge and tools to create your own procedurally generated plants. By the end of this course, you will have a solid understanding of the theory and practice of procedural plant generation, and you will be able to create your own complex plant structures, realistic or on the contrary completely unreal.
Let's get started!