Arch Tiler For Bender 4.0.2 [Pavement, Wall And Roof Tile Generator]
ARCH TILER - MANUAL
Installation:
-IMPORTANT: Before starting, ensure your geometry is corrected by applying the scale, merging vertices, and deleting loose vertices.
- append from the original file "rooftiles_V_xxx.blend":
-If you want to start your roof and tiles from scratch all you need is the node tree called "ARCH_TILER", create your input roof geometry shape and create the tile collections.
-if you want to use some basic templates from the file append all the collections, then just select your geometry, then select one from the templates, press ctrl+L and copy modifiers, (be aware on some template geometry are extra modifiers as subdivision so delete these afterwards)
-or you can join you geometry to one of the templates and delete the template in edit mode. Select your shape, select template, ctrl+J.
All this should work on the common 3D topology with no tweaks. There are exposed angle values to decide where to split the roof, detect the ridges, valleys, holes (windows), bottom of the roof and the apex tips. The signed angle is used, so for the ridge valleys it goes to the negative values. The crease edges are considered as split angles (but not in the manual attributes mode). If this does not work for you, there is still the option to use the MANUAL attributes.
The collections are used to specify all the category elements - tiles/ridges/end ridge tiles/edge ridge tiles/apex. Valleys are negative ridges (where the water runs down during the rain) so there is no collection for this, in modifier you can subtract a gutter gap later in this area. There are two modes for the main ridge geometry. I called it I and V according to the section of the geometry. In the "I ridge mode" there is one ridge element for all ridge tiles, that should be a flat squared element (small metal border panel), in this mode is this element used for the valleys as well. You can add more elements to each collection for some randomization, but be aware that the dimensions (the bounding box) of the largest element is considered to be the main for all of them.
Shader parameters for UV adjustments, including tiling, random offsets, and rotation, if you export to other software you have to use its native randomization (for instance VRayUVWRandomizer)
Some limitations:
There is FAST instance mode with no booleans and for the booleans it is recommended to use the most simple geometry for the tile elements and the check holes option, it should fill the empty holes after the boolean . If you still getting some errors with the check border option, then enable the "bool hole fix" it should clear the invalid filling geometry. Only the instances and after only their faces intersecting with the boolean mesh are recognised for the boolean operation but even with this the results are not perfect in rare situations. If you are getting some missing tiles near the roof borders expand the "tile border offset fix" value - needed mainly for large panels. If you still get wrong boolean results, you should slightly increase the spacing and the tilt to keep the tiles more apart, slightly shift the tiles or use different seed values if you use any random mode. Bool thickness is the value you need to increase if you tilt large tiles too much, there should not be any performance cost. In my testing here apart from the boolean errors the blender geonodes on this task performs faster than the railclone plugin in 3dsmax.
Manual attributes to set:
split - edge boolean domain
ridge - edge boolean domain
cut - edge boolean domain
edge - edge boolean domain
hole - edge boolean domain
apex - point boolean domain
valley - edge boolean domain
modifier parameters:
mat tiles - material for the tiles and "mode V ridge" tiles
mat V ridge - material for the "mode V ridge" tiles
mat I ridge - material for the "mode I ridge" tiles
mat roof under - material for the basic roof shape (under the tiles)
TILE X
*pattern is the distribution grid of the tiles, there are Y rows and X columns
-spacing/gaps - XY gaps between the tiles (tile is scaled with the pattern)
-scale X tile - of the all tiles pattern in the X dimension, keeps the spacing between the tiles
-scale X tile random - scales the individual tiles randomly, it does not keep the spacing, if they overlap too much adjust the spacing or overlapping
-overlap X tile - overlaps the tiles in the X dimension - it is good when you want to apply the tilt Y tile later
-columns X rand - scales the pattern columns in the X dimension randomly
-shift n X tile - shifts each second row of the tile pattern in the X dimension from 0 to 1/2 tile X dimension
-shift left/right X all - shifts all the tile pattern in the X dimension
-shift rand X tile - shifts randomly all the points of the tile pattern in the X dimension, it changes the tile X scale as well according to the shift amount
TILE Y
-scale Y tile - of the all tiles pattern in the Y dimension, keeps the spacing between the tiles (tile is scaled with the pattern)
-scale Y tile random - scales the individual tiles randomly, it does not keep the spacing, if they overlap too much adjust the spacing or overlapping
-overlap Y tile - overlaps the tiles in the Y dimension - it is good when you want to apply the tilt Y tile later
-rows Y rand - scales the pattern columns in the Y dimension randomly
-shift n Y tile - shifts each second column of the tile pattern in the Y dimension from 0 to 1/2 tile Y dimension
-shift down/up Y all - shifts all the tile pattern in the Y dimension
-shift rand Y tile - shifts randomly all the points of the tile pattern in the Y dimension, it changes the tile X scale as well according to the shift amount
TILE Z
-scale Z tile - it scales the Z tile dimension, the tilt is automatically adjusted according to this scale
-offset Z tile - offsets entire tile pattern in the Z local normal average of the roof island
-rand Z tile - randomize the Z position of the tiles
TILE TILT
*The default X tilt parameter is automatically computed from the tile bounding box Z value and the overlap value, in the modifier tab the default is 0, the value is exposed in cm (how far you shift the end of the tile up in cm on top of the basic tilt). You need to tweak this value for some profiled tiles and you can disable the automatic tilt on/off for the flat metal sheet roofs.
-tilt on/off tile - disable the automatic tilt
-tilt X tile cm up/down - it adds or subtracts from the automatic tilt (tilt on/off tile has to be enabled)
-tilt Y tile - rotate the tiles -90 - +90 degrees around the Y axis
-tilt rand X tile - randomize the X tile tilt (tilt on/off tile has to be enabled)
-tilt rand Y tile - randomize the Y tile rotation
MISC
*roof island is the area of the roof defined by the split edges (manual edge creases or automatic split angle value)
-roof tiles off
-ridges off
-edge tiles off
-inside mesh off
-ROOF down uncut - it automatically detects the bottom (gutter part) of the roof and disables the boolean (cut) for these tiles. Manual attribute "cut"
-RC avg or front - default recommended is avg, this is raycast grid direction, avg raycasts from the average of the roof island normal, the front raycasts from XZ (like from the elevation view). The front keeps the Z distance of the rows, you need to adjust the Y scale of the tiles after. Best experiment yourself in "!FAST mode!"
-rotate flat roofs 90 - the row tile direction on the flat parts of the roof is set according to the longest straight edge queue, if this does not work for you, you can rotate all flat parts 90 degrees here or you can set manually the edge creases 1 to split this part differently for automatic mode or just disable automatic mode by setting the manual attributes.
-tile FIX border offset - this parameter is good to increase when you have large tiles and there are some tiles missing in the border parts of the roof island. This value works differently in the "!FAST mode" ; for this mode there is another border offset considered (next parameter below). Best to experiment with this parameter yourself, don't use the "!FAST mode!", turn on the "I: offset" for visual feedback.
-collection instance rand/seq - this is how are instances picked from the collection, they can be distributed randomly or in repeating row ( only if you have more objects in one collection)
-MANUAL ATTRIBUTES - this disables all automatic recognition of the roof shape and you need to set this manually in edit mode of the basic roof mesh geometry.
RIDGE
-mode V/I ridge - this is called I and V according to the X section of the tile geometry, "I" is distributed on the roof island borders, "V" is distributed on the "ridge split angle" edges of the entire roof
-spacing ridge - gaps between ridge/edge tiles
-shift Z ridge - adjust the Z position of the ridge tiles
-scale ridge - scale the ridge tiles uniformly, but keeps the spacing
-scale rand ridge - it randomly scales the ridge tiles in small amount, it does not keep the spacing
-shift X /I ridge - it moves the "I ridge" outside or inside of the roof island borders
-extens all ends ridge -
-extens down ridge - it extends the ridge ends at the bottom parts of the roof (where is the gutter), this is necessary when you use the "uncut mode"
-inner ends /I ridge extension - this extends the border "I ridges" in the corners of the roof island mesh holes (windows and other cuts)
-scale edge ridge - scale the edge ridge tiles uniformly, but keeps the spacing
-shift X edge ridge - this moves all edge tiles in the local X direction
-shift Z edge ridge - this moves all edge tiles in the local Z direction
-valley ridge boolean - this is more experimental feature, the boolean here is expensive and causes many artifacts, it joins some of the tiles during the process as well so randomness of the UV shifting and island indexes is in some parts broken
-valley ridge thickness - how wide this part is
-reverse top ridge tiles -
-apex Y shift - move the apex in local Y space
-apex Z shift - move the apex in local Z space
ROOF SHAPE
-bool thickness - thickness of the boolean element used for cutting the tiles
-bool hole check - boolean value, recommended to use
-bool hole fix - delete the filling (sometimes error) geometry after "bool hole check"
-bool self check - boolean value, not necessary, expensive
-angle roof split - the value where the roof splits to islands
-angle valley - the value for the ridge valleys (signed angle is used, so it goes to the negative values)
-angle ridges - the value for the ridges
-ridge --/^^ epsilon - this is the tolerance where to decide if the ridge is top horizontal ridge or sloped ridge
-I: offset - only visual feedback to show the border edge offset
-I: grid - show the distribution grid pattern
-I: BB - show bounding boxes of the roof islands
-I: bool - show boolean geometry
-I: all unassembled - show all unassembled helpers
-I: show instances - visual control how many objects is kept as instance
VIDEOS:
-modifier options description: https://youtu.be/YZnL_TMzMnQ
-example weatherboard: https://youtu.be/hTVn5T5JMxY
-example metal roof: https://youtu.be/Nar8j3ycIMk
-example rhomb tiles: https://youtu.be/-1un0SCOYlU
-manual attributes setup: https://youtu.be/N-kSzB-k6Mc
-"I" ridge vs "V" ridge: https://youtu.be/Ai0bZaIkS8I
-scene file viewport walkthroug: https://youtu.be/_GscX1dMsI4
-video benchmarking modifier: https://youtu.be/TFPsBXa3duM