Vitruvio - CityEngine Plugin for Unreal Engine 4

Document created by SArisona-esristaff Employee on Jan 21, 2020Last modified by SArisona-esristaff Employee on Mar 31, 2020
Version 9Show Document
  • View in full screen mode

Disclaimer: This is an experimental preview version of the Vitruvio plugin, with known bugs and limitations. We are working on a future stable version which will be released on Github.

 

 

Overview

Vitruvio is a plugin for Epic Games' Unreal Engine 4 (UE4), co-developed by Esri, Epic Games and The Glimpse Group. It provides an actor called BP_PRTActor that allows the execution of Esri CityEngine ‘rules’ within UE4. Therefore, game designers or artists do not have to leave their familiar UE4 editor environment to make use of CityEngine’s procedural modeling power. Complicated export-import pipelines are no longer needed, which also means that the procedural building models do not need to be “baked” anymore. The buildings stay procedural during the entire modeling workflow (in future also in-game). Consequently, the artists can change the height, style and appearance of buildings easily with a parametric interface at any point during production.

 

Vitruvio requires rule packages (RPK) as input which are authored in CityEngine. An RPK includes assets and a CGA rule file which encodes an architectural style. The download section below provides a link to the comprehensive "Favela" RPK, which can be used “out-of-the-box” in Vitruvio.

 

Vitruvio is well suited for managing the procedural generation of architectural 3D content. However, Vitruvio is restricted to the procedural generation of single buildings/objects. Vitruvio does not include the city layouting and street network editing tools of CityEngine i.e. the rich CityEngine toolset to design a city from scratch (or based on geographic data) is still needed.

 

Vitruvio is free for non-commercial use. Commercial use requires at least one commercial license of the latest CityEngine version installed in the organization. No redistribution is allowed. Please refer to the licensing section below for more detailed licensing information.

 

The power of CityEngine inside Unreal Engine: The Petronas Towers generated using Vitruvio.

 

Getting started

Currently, we provide an Unreal Engine demo project, which already contains the Vitruvio project and sample content. We recommend starting out with this project for a first look at Vitruvio. In addition, we also provide the "bare" Vitruvio Unreal Engine plugin, which can be integrated into empty or existing Unreal Engine projects. This section gives setup instructions for both the demo project as well as for using the plugin alone.

 

Prerequisites

  • Microsoft Windows with Visual Studio 2017 or 2019
  • Unreal Engine 4.24. Refer UE4 requirements and development setup for further information.
  • The Vitruvio plugin. Available for download below.
  • CityEngine 2019.1. Optional but required to create custom RPKs. A trial version is available here.

 

Using the demo project

To setup and explore the demo project, follow these steps:

  • Download the Vitruvio_Minimal_Demo.zip 
  • Open the Unreal Project. The editor will ask you to rebuild the Vitruvio module. Confirm by pressing the "Yes" button.
    Note: The build will also download the CityEngine SDK libraries.
  • The Unreal project should now be open. See Using the Vitruvio plugin for further instructions on how to use the plugin.

 

Using the plugin in a new or existing Unreal Engine project

To use the Vitruvio plugin in an empty or existing Unreal Engine project, follow these steps:

  • Download the Vitruvio_Plugin.zip
  • Open the Epic games launcher and launch the Unreal Engine editor.
  • Create a new Unreal Engine C++ project called "VitruvioExample" (or any name you prefer).
  • Using the Windows File Explorer go to the VitruvioExample folder
    • Create a folder named Plugins
    • Go into the Plugins folder and unzip the Vitruvio Plugin downloaded before
    • Go into the VitruvioExample/Content folder and create a Folder named Vitruvio (this is were the RPKs and Initial Shapes belong)
  • Restart the Unreal Editor and open the VitruvioExample project again. 
  • The editor will ask you to rebuild the Vitruvio module. Confirm by pressing the "Yes" button.
    Note: The build will also download the CityEngine SDK libraries.
  • The Unreal project should now be open. See Using the Vitruvio plugin for further instructions on how to use the plugin. 

 

Using the Vitruvio plugin

This section describes how to setup the Unreal Engine project and how to use the Vitruvio plugin.

 

Project initialization

  • Update project if the editor asks for it and verify that the Vitruvio plugin is active.
  • In the Content Browser, select "View Options" (lower right) and make sure that "Show Plugin Content" is selected.

 

Adding RPKs and initial shapes

RPKs (CityEngine Rule Packages) and Initial Shapes (as OBJ files) need to be copied into the Content/Vitruvio folder of your project.

 

Note: After adding or remoing RPK or Initial Shape files the Editor needs to be restarted.

Note: Initial Shapes can be exported from CityEngine with the OBJ exporter and by setting the Export Geometry to Shapes.

 

Generating a model

To generate a model, Vitruvio executes the CityEngine Procedural Runtime (PRT), which takes the selected RPK, an Initial Shape and a set of attributes as inputs. The generation process starts with the Initial Shape as start shape, from which shape grammar rules are expanded. The attributes are parameters that control shape generation. To get more information on rule-based modeling in CityEngine, refer to the CityEngine documentation.

 

The following steps show how to add a BP_PRTActor, select RPKs and Initial Shapes and how to change attributes which control the procedural generation of a model:

  • In the Content Browser, locate the Vitruvio Content folder which contains the BP_PRTActor:
  • Drag a BP_PRTActor into your level to create an instance. Select the BP_PRTActor in the World Outliner.
  • The RPK and the Initial Shape files can be changed in the "RPK File" group of the Details panel. To generate the model, press the Regenerate button.
  • Attributes can be changed in the "RPK Attributes" groups in the Details panel. After changing an attribute, press the Regenerate button to generate the model again with the new attributes.

 

Limitations and known issues

  • Vitruvio is currently an editor-only plugin.
  • Procedurally generated meshes can not be saved.
  • Initial shapes must be in OBJ format.
  • Generation runs on the game thread and blocks the editor.
  • Currently, only materials with base color and normal maps are supported.
  • If you add RPKs, restart the editor to update the list of available RPKs in the details panel.

 

Downloads

  • The Vitruvio plugin for UE4 4.24: Vitruvio_Plugin.zip
  • Minimal UE4 4.24 demo project, containing the plugin, ready to use: Vitruvio_Minimal_Demo.zip
  • Favela RPK: A large CityEngine RPK from the Palladio project available for experimentation.

 

Feedback and support

We look forward to hearing from you! Feel free to use the comment section of this page if you need help or if you have suggestions how we can improve Vitruvio until the official release.

 

Licensing

Vitruvio is available under the same license as the included CityEngine SDK. An exception is the Vitruvio source code (without CityEngine SDK, binaries, or object code), which is licensed under the Apache License, Version 2.0 (the “License”); you may not use this work except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.

 

Further information

CityEngine: https://www.esri.com/en-us/arcgis/products/esri-cityengine/overview 

CityEngine SDK: https://github.com/Esri/esri-cityengine-sdk 

Palladio (CityEngine plugin for SideFX Houdini): https://esri.github.io/palladio/ 

Serlio (CityEngine plugin for Autodesk Maya): https://esri.github.io/serlio/ 

1 person found this helpful

Outcomes