Park Generator

park_generator 0.1.0 gridpark #3
Grid Park 3

Park Generator for SketchUp creates a park model based on text rules and an input region. The plugin is available at the SketchUp Extensions page [NOTE currently temporary unavailable because of the company migration issues of the Extension Warehouse site], which also includes a quick start guide.

Park creation process consists of two parts: a) Generation of a layout b) Assignment of materials and distribution of objects within the new regions. Input region is where the park should be generated, and it is supplied to the Generator by selecting a face in SketchUp UI (Viewport). At the moment it is recommended to use a square or rectangular region (although I have another plugin to remedy this to a certain extent). Textual rules are supplied in the file input field of Generator Window UI. Rules are related to the CGA grammar rules of Esri CityEngine.

A single rule looks as something like this:

MatchLabel --> RuleName(RuleParameter1, ...) { SelectorStatements1 } ...

Rule-based procedural generation starts by matching a label (MatchLabel) “Park” of a rule (RuleName)  to the input region. A rule produces regions as specified in SelectorStatementsN blocks (or Label Selector Lists), giving them new labels and attributes. Labels of these produced regions are matched to appropriate rules found in the rest of the rule file and which are in turn called, and so forth until no more matching rules are found. The layout is then returned to SketchUp which places objects (those specified in Scatter rule) and assigns materials according to the type attribute.



Rule Parameters

Rule Statements

Advantages of Procedural Synthesis

A grammar-based procedural modelling system is different from writing a script in Python or Ruby since such system only specifies shape replacement steps in order to construct a model. The idea is to tell the system what is to be done, rather than how it is done, somewhat similar to functional programming languages.

Design reuse

Once the rule is written, it can be applied multiple times in different contexts. It could be a different input region or a subregion within another design.

Different Input Regions

A procedural system can accept an arbitrary input or axiom region. For instance, a region does not have to be a rectangle for the resulting model that is produced within it to be valid. A rule production is context-sensitive, meaning it will only succeed within a suitable target region. This means that a different park will be generated for regions of different sizes (see image above).


Stochastic production allows to create variation, where are single rulefile can produce different content each time it is instanced. Variation can be controlled and can be applied both to finer detail and at the level of layout design.