Ivy Generator: How to create ivy with Blender
Learn how to create ivy in Blender with this helpful tutorial by Filippo Veniero
Vegetation and plants can turn a flat image into a successful work, but created by hand, realistic ivy can become a nightmare even for an expert 3D artist. Luckily, we can use a Blender plug-in: IvyGen. This plug-in implements a procedural system that produces realistic ivy on our mesh. It's free and very easy to use, you can use it in Blender or as standalone software, and it is available here. You'll find a standalone version for Linux, MacOS and Windows and a lot of good textures. This isn't a biological simulation of growing ivy but it produces complex and convincing vegetation.
Free tutorial resources
Free textures to accompany this tutorial are available here.
Step 1: Scene setup
For this tutorial we'll use Suzanne (as usual). So, open Blender, delete the default cube and add a monkey (Shift+A > Mesh > Monkey). Add subsurf modifier and set level at 2 (Ctrl+2). Change shading to smooth. Add a plane (Shift+A > Mesh > Plane) and move below Suzanne. In edit mode (tab) select 2 vertex and extrude (E) along the z axis. Add some loop cut, subsurf modifier and set shading as smooth. Rotate Suzanne and place her on the plane like the image below.
Step 2: IvyGen
First of all, enable the IvyGen plug-in (File > User preferences > add-on > Add Curve: IvyGen). Then select Suzanne and jump to edit mode and select a vertex; snap the cursor to selected vertex (Shift+S > cursor to selected). Ivy will grow from this point.
In object mode, add a new curve and select Add Ivy to Mesh. Et voilà! Let's see the main options:
- Maximum Time: The time to run the ivy generation, very useful to prevent the computer from freezing (a long Ivy could use more than 3 million vertices).
Size Setting: In this tab we have the maximum ivy length settings in Blender units (1 blend unit = 1 meter) – the length of the ivy segments, maximum length of a branch without sticking to an object and how a branch will feel the effects of adhesion.
Weight Setting: Here, we can detail how the ivy will grow (how much growth is influenced by the force of gravity, adhesion to the object, primary direction along z axis or random direction). Don't forget that ivy will grow towards the selected object.
Branch Setting: Here, there are 2 fields: the first is the probability to create a new branch and the second is the size. The last tab is for the leaves settings: the size and probability of a leaf forming.
Step 3: Textures and materials
Select Cycles render engine and divide viewport into 3 parts; one for node setup; one for UV layout and the last for 3Dview. Select the leaves and add a new material. Connect the color input of diffuse material with a texture node (use the efeu0.jpg texture). Use UV texture co-ordinate (by default Blender UVs overlap all planes used as leaves).
Mix diffuse material with a glossy shader (95% diffuse and 5% glossy) and add the next texture node, select normal map image (efeu0_norm.jpg) set as non color data and connect with a normal map node. Now connect the normal output with the normal input of diffuse and glossy shader. Mix diffuse and glossy material with a transparent shader and use a black and white image (efeu0_alpha.jpg) as a mask.
The last thing to do is add a bump map; add another texture node (efeu0_bump.jpg) and connect with displacement input (I usually use a math node set to multiply to decrease the bump effect). I used a simple material for branch; a mix of diffuse brown and glossy (if you want to do a close-up render you could use some wood textures).
Select Suzanne, jump to edit mode and mark as seam all the vertices around the face, unwrap mesh (U) and add a new material. Use the marble texture as the color input for the diffuse shader and displacement input. If you want to change the color use a color mix node.
Step 4: Light setup
We will use the classic 3-point lighting; add a plane above Suzanne and set as the emission shader (strength 1, color pure white), an emission plane on the left side (warm light, strength 3) and another on the right side (cold light, strength 1). Move the camera and set the focal length at 50 millimeters. In the world tab, set strength as 0, change the view mode from solid to rendered and wait for a render test.
Step 5: Render setup
In the render tab, set render the samples to 500 and hit F12. If you want to create a more complex scene (more ivy, more mesh) set samples to 1000; don't forget that a lot of leaves need a long render time. In my scene, I created a box with a window on the top and a sun lamp outside; in this way light is stronger and shadows will make a more realistic stone material. Volumetric light was added in postproduction using Gimp.
Top tip 1: Random leaves color
In the real world, leaves aren't all the same, so we'll add a random color to our ivy. Select leaves and jump to edit mode. Separate the leaves (press P and choose 'by loose part'). Be careful if you have a lot of leaves as this action could freeze the PC! Now, in the node editor window add a color mix node (blend mode set as mix) between diffuse node and image texture. Add a color ramp node and set constant blend (select 3 or 4 colors, the length of the ramp will be the probability that a leaf takes the color). Connect color ramp to mix node. Add an object info node and connect the random output to the fact input of color node.
Random leaves colouring
Top tip 2
Unfortunately the plug-in only has 2 options about the growth of leaves; we can choose the probability that a leaf is created and its size. If we want more control, we can use a particles system. So, uncheck the grow leaves option in the IvyGen panel and use the plug-in to create a branch. In a different layer, add a plane (call it leaf) and add a leaf material as seen in step 3. Now convert Ivy to a mesh and add a particles system and choose Object > leaf in the render tab of the particles system option. Now we can control the number of leaves, dimension and rotation. The best way to control where the leaves grow is to use the 'weight paint' mode on branches.