I am currently modelling a chinese roof. The shape of the roof is easily created with lattice modifier. The tiling of the roof, however, is much more complicated. In essence I have pursued two different routes for tiling the roof.
Dupli-faces
I created one of the roof sides, and kept all faces equal (except for triangles at the corners). I then used the duplicate face option and duplicated my tile object. The result is great, but it is difficult to control spacing and sizing, as this is related to the size of the dupli-face parent faces.
Curves in array used as curve modifier on tile object array
The roof was created without perfect square faces. A lattice modifier was used to obtain the shape. A subdivided line was converted to a curve, and the same lattice modifier was applied to this curve array. That is, the curves follows the surface of the roof. What I want to do is have the tile array follow these curves, but this seems not to be possible. How can this be done?
A third option is to use an array modifier on the tile object to populate the surface, and apply the lattice modifier to this. The tiles will indeed follow the roof surface, but they will be distorted too (the round tiles will appear skewed at the eaves). I really want to avoid this, and hence this path has not been pursued.
I believe path nr. 2 is the one that would give the best result if I could get it to work. It offers no distortions and perfect control over distance between tiles.
Am I on the right path, or should I approach this differently?
The blend file is of course included, with the different cases separated in different layers pagodarooftest.blend (151.9 KB)
You can’t use the arrayed curves as a curve guide. Also, the lattice modifier on the curve wont affect your curve modifier unless you apply the deformation.
Something you could try is creating multiple curve guides and shifting each one over a little bit, then applying the lattice deform. It’s a fair bit more manual, but it will give you good control and minimal distortion.
If I understand you correctly I would create duplicate curves with a manual shift along the roof, and then apply lattice, that is the curves are the same as in the screenshot above, but separate curves? Say there are 20 tiles along the roof ridge, wouldnt I need to “pair” 20 copies of the tile object with 20 different curves? That gives me little control if I need to tweek the shifting distance of them later, and alot of time to pair the object with the curve. Also if I later decide to change the shape of the roof with the lattice, the tiles will not follow the change. In the dupli-face method they do. Seems like I cannot have the best of the two methods…
If it was only possible to use the curve modifier in “inverse”, that is, apply the curve modifier on the curve and select the mesh to duplicate along the curve…
I’ve finally found the solution! Duplifaces is indeed the answer, but the pairing should not be between the tile mesh and the original roof mesh. Instead I made a square face, and used two array modifiers to distribute the squares over the roof area. Two boolean modifiers were used to cut it to the shape of the roof, and then duplifaces were used on this mesh. Now I have full control over the distribution of the roof tiles by using the array modifier, without applying any modifier!