Example: stock market

Tutorial 9: Advanced shape grammar - Esri Support …

Tutorial 9: Advanced shapegrammarCopyright 1995-2015 Esri. All rights of ContentsTutorial 9: Advanced shape grammar .. 3 Tutorial 9: Advanced shape grammarCopyright 1995-2015 Esri. All rights 9: Advanced shape grammarDownload items Tutorial data Tutorial PDFC omplex facade patternsThis Tutorial shows how to model a building from a picture and introduces some more complex CGA setupOpen the scene if it's not already the buildingThis Tutorial explains how to create a set of CGA rules to recreate a building from a real-world photograph with pure CGA. The facadeyou're going to model is shown in the following photograph.

Attributes, variables, and assets Attributes are defined at the beginning of the rule file. These attributes are used through the entire rule set and can be modified via

Tags:

  Phases, Advanced, Grammar, Tutorials, Tutorial 9, Advanced shape grammar

Information

Domain:

Source:

Link to this page:

Please notify us if you found a problem with this document:

Other abuse

Advertisement

Transcription of Tutorial 9: Advanced shape grammar - Esri Support …

1 Tutorial 9: Advanced shapegrammarCopyright 1995-2015 Esri. All rights of ContentsTutorial 9: Advanced shape grammar .. 3 Tutorial 9: Advanced shape grammarCopyright 1995-2015 Esri. All rights 9: Advanced shape grammarDownload items Tutorial data Tutorial PDFC omplex facade patternsThis Tutorial shows how to model a building from a picture and introduces some more complex CGA setupOpen the scene if it's not already the buildingThis Tutorial explains how to create a set of CGA rules to recreate a building from a real-world photograph with pure CGA. The facadeyou're going to model is shown in the following photograph.

2 Due to the tricky patterns of the tile and window layout in this example,you'll need to use some Advanced CGA mechanisms such as nested repeat splits and parameter perspective of the generated building: Tutorial 9: Advanced shape grammarCopyright 1995-2015 Esri. All rights generate the building in advance: one of the lots in the 3D the generate button from the top analysisWhen planning a new CGA rule, it's helpful to sketch the crude layout and define some of the shape names before starting to writethe facade you'll model consists mainly of three floor types: top, ground, and upper. The lower floors are made of tiles containingwindows, whereas the top floor only contains window elements.

3 Every other lower floors is identical, so you'll pass the index (thefloorIndex) with the Floor shape to create the correct look (tile and window alignment) for a specific to the pattern of the tiles, you'll define an intermediate DoubleTile shape , which contains two Tile shapes and which will behelpful once you encode the floor 9: Advanced shape grammarCopyright 1995-2015 Esri. All rights , you'll define the detailed subshapes in a tile. It consists of two main parts: the MilkGlass and Window shapes. The Windowshape contains a Blind on the top and an embedded Subwindow shape . The position of these elements depend on the horizontalposition of the tile on the floor, so you need to store this position index (call ittileIndex) as a parameter of the Tile shape to be ableto place the subshape structure file in the Navigator to open the CGA editor and to see the rules that createyour toCGA textual mode, in case the visual representation opens.

4 The buttons are on CGA editor the 9: Advanced shape grammarCopyright 1995-2015 Esri. All rights , variables, and assetsAttributes are defined at the beginning of the rule file. These attributes are used through the entire rule set and can be modified viatheWindows>Inspectoroutside the CGA grammar User Attribute@Group("Building", 1) @Range(5,40)attr buildingH = 27 // building height@Group("Facade", 2) @Range(3,6)attr floorH = // floor height@Group("Facade") @Range(3,6)attr groundfloorH = floorH + 1 // groundfloor height@Group("Facade") @Range(1,4)attr nSymmetries = 2@Group("Facade") borderwallW = // width of border wall stripe@Group("Facade")

5 LedgeH = // ledge height@Group("Window",3) @Range(1,5)attr windowW = // window width@Group("Window") @Range(1,5)attr milkGlassW = windowW/2 // milkglass blend width@Group("Window") blindH = // blind height@Group("Window") frameW = // frame width@Group("Balcony",4) @Range(3,6)attr balconyDepth = 2@Group("Colors",5)attr brightblue = "#86b1c7"@Group("Colors",5)attr darkblue= "#33556c"@Group("Colors",5)attr red = "#5c3f40"@Group("Colors",5)attr grey ="#6b7785"@Group("Colors",5)attr white = "#ffffff"Annotations such as @Group or @Range are added to attributes to control their appearance in the variables and assets are defined in the following block:tileW = windowW + milkGlassW // total tile widthconst barDiameter = assetsconst cyl_v = "general/ "const cyl_h = "general/ "const window_tex = "facade/ "const milkGlass_tex = "facade/ " Tutorial 9: Advanced shape grammarCopyright 1995-2015 Esri.

6 All rights actual creation of the building starts now. First, the mass model is created with the extrude operation. The top floor is split fromthe main part and split again to create the set-back -->extrude(buildingH) // Extrude the buildingsplit(y){ ~1: MainPart | floorH: UpperPart } // Split top floor from lower floorsUpperPart -->split(z){ ~1: TopFloor | balconyDepth: Balcony } // Create a set-back by splitting in the direction of the building depthComponent splits are applied then to the different volume parts to distinguish the front, side and top faces and to trigger facade, walland roof -->comp(f){ front: Facade | side: Wall | top.}

7 Roof } // Create a facade on the front face, walls on the side faces, and a roof on the top faceTopFloor -->comp(f){ front: Floor(-1) | side: Wall | top: Roof } // Create a floor (marked with -1 as top floor) on the front face, walls on the side and roof on the top faceThe dimensions of the balcony are set. The railing will be placed on the faces of the current shape , so you'll use a component split toget the front, left, and right faces for the Railing -->s( *borderwallW, , ) center(x) // Set balcony height to meters (railing height)comp(f){ front: Railing | left: Railing | right: Railing }Crude building shape after volume modeling:Facade and floorsYou'll now subdivide the front facade further.

8 The first split subdivides the facade into a ground floor part and a set of upper floors withthe help of a repeating split {..}*. The tilde sign (~) before the split size (for example, ~groundfloorH) allows a flexible height andensures matching floors with no holes in the facade. By passing (which represents the floor index) as a parameter,you can later trigger specific floor -->// Split the facade into a groundfloor and repeated upper floors// (all floors are marked with their split index, which represents the floor number)split(y){ ~groundfloorH: Floor( ) | { ~floorH: Floor( ) }* }Every floor has a narrow wall area on its left and right borders.

9 You'll create this with a simple split in 9: Advanced shape grammarCopyright 1995-2015 Esri. All rights (floorIndex) -->// create a narrow wall element on both sides of every floorIndex parameter is passed on to be used latersplit(x){borderwallW: Wall | ~1: FloorSub(floorIndex) | borderwallW: Wall }Depending on the floor index, special horizontal elements are now created for every floor with horizontal split commands: The upper floors only feature a top ledge. The top floor has no additional elements and triggers the TileRow shape directly. You'll use the floor index again in a later rule, so ass it again as a parameter with the TileRow (floorIndex) -->case floorIndex == 0: // ground floor with index (y){ 1: Wall | ~1: TileRow(floorIndex) | ledgeH: Wall}case floorIndex > 0: // upper floorssplit(y){ ~1: TileRow(floorIndex) | ledgeH: Ledge }else: // topfloor with index (floorIndex)Facade with floor and ledge splits:TilesYou'll now split the floors into tiles.

10 For the top floor, it's relatively easy; there is no special pattern, just repeating window elements. Toaddress these tiles later, you mark them with the parameter create the special repeating pattern for the main floors, you'll create an intermediate shape calledDoubleTile. To align thewindow elements correctly in a later step, you need the floor and the tile index ( ), which you pass as (floorIndex) -->case floorIndex == -1:split(x){ ~windowW: Tile(-1) }*// Repeating shape Tiles on the top floor, marked again with -1else:split(x){ ~tileW*nSymmetries: DoubleTile(floorIndex, ) }*// the floor is subdivided into regular DoubleTile shapes, the floor index is passed as parameterThe combination of floor and tile index determines the alignment of the windows.


Related search queries