Intro #
In this guide we will show you how to get going with the iMeshh Roof Generator for Blender!
This system can allow users to instantly create a variety of different roof types for Blender including Metal Panel roofs and Tile roofs!
Some parameters are the same between tile roof types and metal roof types. However some parameters are unique to each type.

Differences between Metal and Tile roof types #
The most obvious difference is the way in which it uses a collection of geometry for the tile generator and a profile for the metal panel roof generator. We will cover these differences below.
Attributes #
Introduction To Attributes #
Both of these roof systems will be using attributes, so it makes sense to talk through this first.
Attributes are a bit like Vertex Groups, where we can assign vertices, edges, or faces to a specific data type—such as a boolean, float value—allowing us to fine-tune our roof system.
While you can create your own attributes with any names, the roof generators come pre-configured with a variety of attributes that can be used out of the box. These can be found in the Object Data Properties tab under Attributes.

If you see this box in the Geometry Nodes system called an Input Attribute Toggle, it means the input can be used on part of the roof rather than the whole.

How To Use Attributes #
We will use a real example. We can see here that there is a parameter called “Ridge Overhang” with an input value of 0.049. This means all the ridges in this system will have the exact same overhang value of 0.049 but we can see there is an Input Attribute Toggle button.

If we click that button, the field is now empty. This means there’s no attribute already in this box for this parameter, so we can add one. In this case, we can write an attribute called ridge_overhang or anything else unique. It’s best to make the name the same as the parameter input for easy understanding.
Now, as we start typing, we can see there’s already an attribute in Object Data Properties called ridge_overhang—so let’s use that! It means we’ve already set this up, so let’s click it!

Now we are telling this roof system to use this attribute for the ridges. Next, we need to tell Blender which edges should have this attribute and how much the individual overhang should be.
If we go to the Object Data Properties tab, we can find this attribute—so let’s select it. We can now see that it’s assigned to an Edge domain type, which makes sense because all the ridges will be placed on the edges of the object.

So lets go into Edit mode, select the edge we want to adjust, keep this attribute selected and Press F3 and type “Set Attribute” and now we can tell that edge to have an overhang value of 0.91

Now i selected the other ridge edge and gave that another unique value

Lets do another example.
Under gutters we can see that there is an already exposed attribute called add_gutters.
Use the attribute “selected_faces” This will allow you to to click the attribute button and then go to Object Data Properties, go into edit mode, select the faces you want, click in “selected_faces” in the attributes list and assign which ever face you want to get the tiles.
If I now go to the Object Data Properties tab and find add_gutters, I can click it, then click the edges I want, then press F3 and type “Set Attribute”. This is a boolean checkbox (basically an on/off switch), instead of a float value like before (float means a number with a decimal point, useful for choosing things like lengths, etc).


Tile Roof Generator #
Now we know how to use attributes, let’s go through all the parameters for each roof system.
Initial Settings #

Show Emitter: This will hide or show the original base geometry used for the roof system
Face Selection: Click the Input Attribute Toggle button, use the attribute “selected_faces” and go into edit mode, select the faces you want, then in the Object Data Properties click on “selected_faces” in the attributes list and assign which ever face you want to get the tiles.
Use UV: Here we can use the UV map itself to adjust the tile locations and orientations. Make sure your roof base mesh is already unwrapped, and ensure your UV islands are at 90-degree increments, or you’ll get tiles going off at the wrong angles.
Offset X and Y: These values let you shift the tiles along the X and Y plane. Please note, if you want to visually see a difference in the Offset Y, you must disable Constant/Adaptive (explained below).
Show Tiles: This will show or hide the tiles.
Tiles Collection: Here we can choose the collection for the tiles. This collection can have multiple tiles in it, and the system will randomise through the tiles in that collection.
Tiles Subdivision: This can be useful if your roof system is having trouble with the boolean trim methods. Sometimes there can be errors so adding a bit more geometry can help this.
Seed: Here we can change the seed of the tile randomisation.
Bond Pattern: We can choose between Half, Straight and Quarter. Some roof tiles need half for example to work correctly.
Constant/Adaptive: By default, this is on, so it will always try to fit a whole number of tiles along the Y axis (up and down in this case). This is useful if you have some tiles cut in half at the top or bottom of the system. Disabling this will allow you to shift the tiles without snapping to full tile sizes.
Overlap: This will tell the roof system how much each tiles should overlap. Some tiles are built to overlap, while others are not
Height: This will move the tiles up away from the roof base geometry.
Trim Method: This is a little more involved, so a larger section just below will explain.
Trim Methods #
None
No boolean will happen at the edges.

Boolean
This is the most accurate but can be slow to calculate, especially when the geometry is quite complex.
You may get errors where some parts are not being booleaned correctly. If this happens, try adding additional “Tile Subdivision” to increase the geometry, which can help with the boolean.

Alpha Map
This will look just like “None” however if you go into render preview mode you will see all the edges get cleaned up. The benefit is improved viewport performance however solid view will look a bit ugly.


You may get some errors with this method—if so, add additional subdivisions to your model.
You may also see black edges when looking along the edge of a face. This is because we’re using an alpha map, so there’s a limited number of transparent bounces. Try setting it to 20 or higher, and the black will start to disappear.

Creating Your Own Tiles And Ridges #
When making tiles, the origin point is important. This will determine the start of the tiles. Generally the tiles will overlap on the Y axis up the roof slightly. So make sure to set the origin point slightly inside of the tile.

If you set the origin point outside of the object, then you’ll get a gap.

You can also rotate this tile in edit mode to rotate all tiles.

To scale the tile, I am going to set the 3D cursor to the origin point, then go to edit mode, set the pivot point to be the 3D cursor and then scale. Then all the tiles will keep their current overlap, but get smaller or bigger.

For ridges, it is a similar system. The origin point is important. Some ridges require an overlap while others do not. The ones which require an overlap I will set the origin point slightly inside of the ridge object, and the ones I do not want to overlap I will set the origin point slightly outside of the object.
And like before, if you scale the tile and keep the origin point in the same place, it will get smaller. Just take note of the origin position to make sure it looks correct.


Randomization #
This parameter, once enabled will let you easily set the minimum and maximum values for randomising the tiles.


If you want the tiles to look more rough around the edges where it is being cut then you can enable Rough Edge. However this may not look quite right if the randomisation is too strong like in this example. Use randomisation sparingly.

Offset #
Edge Offset: This will let you offset evenly along all edges
Offset Bottom: This will let you offset along the bottom edge
Offset Side: This will let you offset along the sides
Remove: This is an attribute. If you go into edit mode, select the edge you want and then the remove_offset attribute you can remove this offset for that specific edge.
Ridge & Hip #
Ridges are horizontal, hips are angled.

Ridge Collection: Choose a collection of your ridges, this will randomise between all the objects in that collection.
Ridge Cap Object: At the ends of the ridges you can choose another object, this is nice if you want to close off the end or add a decorative item to the end.
Ridge Height: Here you can offset the ridge from the roof.
Ridge Overhang: This lets you move the ridge over the edge of the roof
Hip Collection: Choose a collection of your hips, this will randomise between all the objects in that collection.
Hip Cap Object: At the ends of the hips you can choose another object, this is nice if you want to close off the end or add a decorative item to the end.
Hip Height: Here you can offset the hip from the roof.
Hip Overhang: This lets you move the hip over the edge of the roof
Seed: If you have a collection of randomised objects, you can change the randomisation
Reverse: Some ridges or hips are not symmetrical and the geonodes system may put them facing the wrong direction. This attribute can fix that.
Remove: This attribute can remove these hips or ridges if you do not want them where it has automatically been placed.
Fascia & Soffit #
These are the parts that protect the roof from below.

Show: Show or hide these parts
Depth: Depth is the thickness of the board
Remove: This attribute lets you remove these parts
Fascia material: You can choose a specific material for this part
Soffit width: This is the depth of soffit
Soffit Depth: How far up into the object the soffit goes.
Soffit Additional Height: You can increase the height of soffit cover on the inside if you see a gap there
Soffit material: Here you can choose a specific material for this soffit.
Soffit Geometry: You can choose a specific object to be the planks or underside object. Useful if you need grills or planks for example.
Soffit Geometry Width: This lets you change the width of the selected soffit geometry.
Soffit Geometry Depth: This lets you change the depth of the selected soffit geometry.
Soffit Geometry Offset: This lets you change the offset of the selected soffit geometry. For example if the planks on one edge are cut off but you want a whole plank at the edge you can offset this
Valley #
This part is used to drain the rain at the edges of tile faces.

Show: Show or hide the valley
Width: Change the width of all the valleys
Overlap: Under the tiles where the valley is added you can increase how far under the tiles the valley will extend. Useful if you can see gaps between valley and tiles
Add: This is an attribute if you need to add a valley to another specific edge which is not automatically added
Remove: If it automatically adds a valley that you do not want, you can remove it.
Material: You can choose a specific material for this valley
Bevel weight: You can increase or decrease the bevel strength of the valley
Flashing #
This part goes around the edges for window holes

Show: Show or hide the Flashing.
Width: Adjust the width
Depth: Adjust the depth
Depth Thickness: Lets you offset the lower outside edge to make a “lip” type shape
Thickness: This then lets you change the thickness of this “lip”
Shrink: If there is some overlap of some tiles on the inside edge, you can shrink the overall shape so the tiles are not clipping through.
Add: This is the attribute to use on the edges where you want flashing. If you do not use this for window holes the system will more than likely try adding a Fascia and Soffit and it will look broken
Material: Choose a specific material for the flashing.
Bevel Weight: Change how strong the bevel is.
Gutters #
Gutters will only show up if you use the attribute add_gutters onto your chosen edges.
Vertical parts will always snap to the closest roof edge. To make a vertical part all you need is a vertical edge with no connecting faces. A standalone edge essentially.
You can see in the image below, this edge is not connected to the roof itself, and yet it is snapped correctly to the right area. Very useful! You can add as many of these vertical parts as you require.

Show: Show or hide the gutter system.
Add: Attribute to define which edges should have gutters.
Horizontal Height: Move the horizontal gutter section up or down.
Horizontal Offset: Push the horizontal gutter in or out from the roof edge.
Horizontal Overhang: Extend the horizontal gutter outwards.
Horizontal Profile Curve: Select the shape used for the horizontal gutter.
Horizontal Fillet Radius: Round the edge of the horizontal gutter.
Horizontal Fillet Resolution: Controls how smooth the fillet rounding is.
Horizontal End Points: Object used at the end of each horizontal gutter.
Horizontal Connectors: Object used to connect two horizontal sections.
Horizontal Connectors Distance: Controls spacing between connectors.
Horizontal Supports: Object used as the horizontal gutter support.
Horizontal Supports Distance: Distance between each horizontal support.
Horizontal Supports Offset: Moves horizontal supports in or out.
Horizontal Surface: The object used to determine rotation of horizontal gutters supports.
Vertical Profile Curve: Select the shape used for the vertical downpipe.
Vertical Fillet Radius: Rounds the corners of the vertical pipe.
Vertical Fillet Resolution: Controls how smooth the vertical rounding is.
Vertical Start Points: Object placed at the start of the downpipe.
Vertical End Points: Object placed at the bottom of the downpipe.
Vertical Connectors: Object used between vertical pipe sections.
Vertical Connectors Distance: Spacing between vertical connectors.
Vertical Supports: Object used to support the vertical pipe. While connectors are added automatically, these vertical supports will only show up if you assign specific vertices to a vertex group called Supports.
Vertical Surface: The object used to determine where vertical pipes go.
Material: Choose a material for the entire gutter system.
Snow Guard #

Show: Show or hide the snow guard system.
Snow guard collection: Choose the collection of snow guard objects to use.
Clip variation: This will cycle through all the Snow Guard options within the collection.
Rows count: Number of snow guard rows.
Rows between: Space between each row.
Columns between: Space between each column.
Offset row: Move rows up or down.
Offset column: Move columns left or right.
Flip: Flip the direction of the snow guards start position along the roof face x axis.
Horizontal offset: Shift snow guards left or right.
Vertical offset: Shift snow guards up or down.
Height: Raise or lower the snow guards from the roof surface.
Rotation: Rotate the snow guards.
Delete near edge: Remove snow guards close to the roof edge.
Rails curve object: Select the curve used for snow guard rails. This can be found inside the Snow Guard collection, any profile works.
Rails material: Material used for the rails.
Grid part object: Object used for the grid between the snow guards clips
Extend: Extend the grid part outwards.
Culling #
Enabling camera culling will show or hide tiles which are not visible to the camera. This is great for viewport performance if there are 1000s of tiles.

Enable camera culling: Hides objects outside the camera view.
Expand camera view: Adds a margin around the camera view to avoid cutting too early.
Enable self culling: Hides parts of the object that face away from the camera or sides which the camera cannot see.
Field of view: Sets the camera’s field of view.
Resolution X: Horizontal resolution of the render.
Resolution Y: Vertical resolution of the render.
Aspect X: Horizontal pixel aspect ratio.
Aspect Y: Vertical pixel aspect ratio.
Shift X: Moves the camera view left or right.
Shift Y: Moves the camera view up or down.
Clip start: Distance from the camera where rendering starts.
Clip end: Distance from the camera where rendering stops.
Texture #
This texture option allows you to add moss to the roof. This moss is added using a variety of different variables such as height away from the surface to ambient occlusion to distance away from the edges. All these together creates a very realistic effect for how moss would actually look on a roof.
There are just 2 controls. Show to display it, and Moss height which basically tells it how far away from the roof normal direction the moss should be displayed. It starts closer to the roof and slowly moves further away.

Helper #
Limit: Limits the total number of tiles being displayed
Fill Holes: This will try to fill any holes left by the boolean trim method.
Overwrite UVMap: Works with Realise Instances enabled. Temporarily overwrites tiles UVMap with emitters UVMap. Useful for texture painting.
Realise Instances: For texture painting or to apply the GN modifier.
Panel Roof Generator #
Initial Settings #

Show Emitter: This will hide or show the original base geometry used for the roof system
Face Selection: Click the Input Attribute Toggle button, use the attribute “selected_faces” and go into edit mode, select the faces you want, then in the Object Data Properties click on “selected_faces” in the attributes list and assign which ever face you want to get the metal panels.
Use UV: Here we can use the UV map itself to adjust the tile locations and orientations. Make sure your roof base mesh is already unwrapped, and ensure your UV islands are at 90-degree increments, or you’ll get tiles going off at the wrong angles.
Offset: This lets you offset the panel along the X axis. The panels are not duplicated in the Y axis so there is no need for a Y offset here.
Show Panels: This will show or hide the metal panels.
Profile Collection: Here you can add any collection that contains the profiles for the metal panels, much like the roof tiles. However, in this case, they must be curve objects. If you have multiple curve profiles, they must all be the same length.
Resolution: This lets you add additional resolution to the input curve profile.
Smooth angle: You can change when the surface is smooth or flat.
Thickness: You can change how thick the metal panels are.
Fill Bottom: This lets you fill in the bottom edge when using thickness.
Flip: If you want the profiles to run in the other direction on the X axis then click this button.
Resample length: This can help with shading of the panels. It may also help with boolean too because it adds geometry to the panel.
Material: Here you can add your own material to the metal panels.
Offset #
Edge Offset: This will let you offset evenly along all edges
Offset Bottom: This will let you offset along the bottom edge
Offset Side: This will let you offset along the sides
Remove: This is an attribute. If you go into edit mode, select the edge you want and then the remove_offset attribute you can remove this offset for that specific edge.
Drip Edge #

Show: Show or hide the drip edge.
Width: Set the width of the drip edge.
Height: Set the height of the drip edge.
Remove: Toggle to remove the drip edge.
Material: Choose the material for the drip edge.
Bevel weight: Set how strong the bevel is for the drip edge.
Dry Verge #

Show: Show or hide the dry verge.
Width: Set the width of the dry verge.
Height: Set the height of the dry verge.
Thickness: Set the thickness of the dry verge.
Edge offset: Move the dry verge away from the edge.
Add cap: Add an end cap to the dry verge.
Close gap: Extend dry verge to panels.
Fill bottom: Fill the underside of the dry verge.
Remove: Toggle to remove the dry verge.
Material: Choose the material for the dry verge.
Bevel weight: Set how strong the bevel is for the dry verge.
Ridge & Hip #
Ridges are horizontal, hips are angled. (the picture below is of 2 ridges)

Show: Show or hide the ridge and hip pieces.
Width: Set the width of the ridge/hip.
Thickness: Set the thickness of the ridge/hip.
Ridge overhang: Extend the ridge section outward.
Hip overhang: Extend the hip section outward.
Close gap: Try to fill small gaps between sections.
Fill bottom: Fill the underside of the ridge/hip.
Remove: Attribute to remove specific ridge parts.
Material: Choose the material for the ridge/hip.
Bevel weight: Set the bevel strength.
Fascia & Soffit #
These are the parts that protect the roof from below.

Show: Show or hide these parts
Depth: Depth is the thickness of the board
Remove: This attribute lets you remove these parts
Fascia material: You can choose a specific material for this part
Soffit width: This is the depth of soffit
Soffit Depth: How far up into the object the soffit goes.
Soffit Additional Height: You can increase the height of soffit cover on the inside if you see a gap there
Soffit material: Here you can choose a specific material for this soffit.
Soffit Geometry: You can choose a specific object to be the planks or underside object. Useful if you need grills or planks for example.
Soffit Geometry Width: This lets you change the width of the selected soffit geometry.
Soffit Geometry Depth: This lets you change the depth of the selected soffit geometry.
Soffit Geometry Offset: This lets you change the offset of the selected soffit geometry. For example if the planks on one edge are cut off but you want a whole plank at the edge you can offset this
Valley #
This part is used to drain the rain at the edges of tile faces.

Show: Show or hide the valley
Width: Change the width of all the valleys
Overlap: Under the tiles where the valley is added you can increase how far under the tiles the valley will extend. Useful if you can see gaps between valley and panels.
Add: This is an attribute if you need to add a valley to another specific edge which is not automatically added
Remove: If it automatically adds a valley that you do not want, you can remove it.
Material: You can choose a specific material for this valley
Bevel weight: You can increase or decrease the bevel strength of the valley
Flashing #
This part goes around the edges for window holes

Show: Show or hide the Flashing.
Width: Adjust the width
Depth: Adjust the depth
Depth Thickness: Lets you offset the lower outside edge to make a “lip” type shape
Thickness: This then lets you change the thickness of this “lip”
Shrink: If there is some overlap of some tiles on the inside edge, you can shrink the overall shape so the tiles are not clipping through.
Add: This is the attribute to use on the edges where you want flashing. If you do not use this for window holes the system will more than likely try adding a Fascia and Soffit and it will look broken
Material: Choose a specific material for the flashing.
Bevel Weight: Change how strong the bevel is.
Gutters #
Gutters will only show up if you use the attribute add_gutters onto your chosen edges.
Vertical parts will always snap to the closest roof edge. To make a vertical part all you need is a vertical edge with no connecting faces. A standalone edge essentially.
You can see in the image below, this edge is not connected to the roof itself, and yet it is snapped correctly to the right area. Very useful! You can add as many of these vertical parts as you require.

Show: Show or hide the gutter system.
Add: Attribute to define which edges should have gutters.
Horizontal Height: Move the horizontal gutter section up or down.
Horizontal Offset: Push the horizontal gutter in or out from the roof edge.
Horizontal Overhang: Extend the horizontal gutter outwards.
Horizontal Profile Curve: Select the shape used for the horizontal gutter.
Horizontal Fillet Radius: Round the edge of the horizontal gutter.
Horizontal Fillet Resolution: Controls how smooth the fillet rounding is.
Horizontal End Points: Object used at the end of each horizontal gutter.
Horizontal Connectors: Object used to connect two horizontal sections.
Horizontal Connectors Distance: Controls spacing between connectors.
Horizontal Supports: Object used as the horizontal gutter support.
Horizontal Supports Distance: Distance between each horizontal support.
Horizontal Supports Offset: Moves horizontal supports in or out.
Horizontal Surface: The object used to determine rotation of horizontal gutters supports.
Vertical Profile Curve: Select the shape used for the vertical downpipe.
Vertical Fillet Radius: Rounds the corners of the vertical pipe.
Vertical Fillet Resolution: Controls how smooth the vertical rounding is.
Vertical Start Points: Object placed at the start of the downpipe.
Vertical End Points: Object placed at the bottom of the downpipe.
Vertical Connectors: Object used between vertical pipe sections.
Vertical Connectors Distance: Spacing between vertical connectors.
Vertical Supports: Object used to support the vertical pipe. While connectors are added automatically, these vertical supports will only show up if you assign specific vertices to a vertex group called Supports.
Vertical Surface: The object used to determine rotation of vertical gutters supports.
Material: Choose a material for the entire gutter system.
Snow Guard #

Show: Show or hide the snow guard system.
Snow guard collection: Choose the collection of snow guard objects to use.
Clip variation: This will cycle through all the Snow Guard options within the collection
Rows count: Number of snow guard rows.
Rows between: Space between each row.
Columns between: Space between each column.
Offset row: Move rows up or down.
Offset column: Move columns left or right.
Flip: Flip the direction of the snow guards start position along the roof face x axis.
Horizontal offset: Shift snow guards left or right.
Vertical offset: Shift snow guards up or down.
Height: Raise or lower the snow guards from the roof surface.
Rotation: Rotate the snow guards.
Delete near edge: Remove snow guards close to the roof edge.
Rails curve object: Select the curve used for snow guard rails. This can be found inside the Snow Guard collection, any profile works.
Rails material: Material used for the rails.
Grid part object: Grid part object: Object used for the grid between the snow guards clips
Extend: Extend the grid part outwards.
Bolts #
Working very similarly to snow guards, you can use the grid method to procedurally add bolts over the surface in a realistic way.

Show: Show or hide the bolts.
Bolts collection: Choose the collection of bolt objects to use.
Variation: Use different bolt variations from the collection.
Rows count: Number of bolt rows.
Distance between rows: Spacing between each row.
Rows between: Number of empty rows between bolt rows.
Columns between: Number of empty columns between bolt columns.
Offset column: Shift columns horizontally.
Flip: Flip the bolt layout direction.
Horizontal offset: Move bolts left or right.
Vertical offset: Move bolts up or down.
Height: Raise the bolts off the surface.
Rotation: Rotate each bolt.
Delete near edge: Remove bolts placed near the mesh edge.
Texture #
This texture option allows you to add moss to the roof. This moss is added using a variety of different variables such as height away from the surface to ambient occlusion to distance away from the edges. All these together creates a very realistic effect for how moss would actually look on a roof.
There are just 2 controls. Show to display it, and Moss height uses tile height between 0 and 1which basically tells it how far away from the roof normal direction the moss should be displayed. It starts closer to the roof and slowly moves further away.

Helper #
Overwrite UVMap: Works with Realise Instances enabled. Temporarily overwrites tiles UVMap with emitters UVMap. Useful for texture painting.
Realise Instances: For texture painting or to apply the GN modifier.
Texture Painting #
Texture painting allows you to paint directly on the tiles/panels. Now it is important to realise that each tile will have its own UV map while the main surface of the roof has its own UV. So to paint onto the surface we must paint onto the surface of the object and add that new painted mask onto the tiles material. Let’s do that now
- First enable Overwrite UVMap and Realise Instances, then make sure your main roof object is unwrapped (no overlapping UV islands).

2. In the tile material create a new image called “mask” or anything else unique.

3. Go to Texture Paint mode, click on the mode and click Single Image and set it to your new Mask image

4. Paint onto the roof. This can be done with simple painting or you can use special brushes to paint any effect directly onto the roof

5. Go to UV image editor, find the mask, click Image* and click Save As so you do not lose this new mask.

6. In the Material editor, add a mix shader, a new material (this can be anything you like). Plug the new mask into the Mix Shader factor like below

7. Add the Roof_data node group and plug the Surface UV output into the new mask Vector input

8. Disable Overwrite UVMap and Realise Instances

9. Render and see your new graffiti
