Gable Roofs

09-18-2013 03:30 AM
New Contributor
Hello everybody.

I'm trying to generate some gable roofs here using the roofGable operation. The building footprints are static shapes.
It happens that some of them are not being generated as required. I attached an image below.

Corner buildings 4, 5, 8, as well front building 3 got some "unexpected" results.
- Building 3: The ridge appears to follow the longest distance between facades (in this case, building width < building depth)
- Building 5: The footprint shape is rectangular. There's no way to know where to put a roof valley (?).
- Buildings 4 and 8: It doesn't recognize the L shape...

The question is:
Is it possible to input ridge (or eave) orientation to the roof?
I'd like to put eaves along the whole border of the block...

Best regards.
Tags (2)
0 Kudos
3 Replies
Frequent Contributor II

Improving the roof() operations are a high priority on our wishlist - currently, not all is possible. This shall be improved in future !

I'd recommend :
manual way:
- for now, model special roof forms with the 'Polygonal Shape Creation' tool (tutorial 14)

procedural way:
- check the additional orientation flag in the roof CGA documentation
- case 5 : add a shapeL() on the rectangle first on the footprint

Ok so far ?

0 Kudos
New Contributor
Thanks again for the answer Matthias.

As you've already noticed, I'm trying to reproduce an existing downtown which is very specific and strictly designed... and I'd like to do it by using rule-based modeling as much as possible so that I don't lose data. This is my main goal.

About case 5:
You told me to add a ShapeL() to the footprint before I extrude it, right?
Is it possible to get footprint dimensions (width / depth) and use them as shapeL parameters as it follows?
attr footprint_depth = ? //based on the footprint, variable
attr footprint_width = ? //based on the footprint, variable
Lot --> shapeL(footprint_depth - 0.1, footprint_width - 0.1) {shape : BuildingFootprint | remainder : NIL}
*(-0.1) to minimize the void (not built).

May I add this operation only to the roof in order to maintain the floors (area)?

How to control the L shape orientation (right / left corner)?

In order to solve the other cases, I'll try to check the combining polygonal modeling with rules process...
Then I'll come back with more questions.

Sorry for the "silly" questions.
Thank you so much for your help.
0 Kudos
Frequent Contributor II

CityEngine was not designed to reconstruct 'as is' scenarios as closely as possible. So in any way, if you need to do this, use the shape modeling tools.

Nevertheless, yes, you can also make a shapeL() on top of the gound floor, just to create the roof.

For this, do something like :

[ Code incomplete ]

attr angle = 360
attr mirrorX = False
attr mirrorZ = False

Lot -->
    comp(f) {
        mirrorScope(mirrorX, False, mirrorZ)
        | side : Facade.

ok ?
0 Kudos