Esri Technical Support Blog

Showing results for 
Show  only  | Search instead for 
Did you mean: 

Other Boards in This Place

Latest Activity

(380 Posts)
Esri Contributor

icon3.png3D data is becoming more ubiquitous nowadays and is especially promoted throughout the ArcGIS Platform. From web scenes, to CityEngine, to ArcGIS Pro, there are many different applications to import, manage, model, and share your 3D data. To get the output you are looking for, it may require numerous steps and tools. To navigate some of these steps and tools, here are some tips and tricks for working with 3D data in ArcGIS.

3D File Coordinate Systems

The majority of 3D formats do not store a coordinate system. GeoVRML and KML are the lone exceptions. KML will use a WGS 1984 coordinate system and meters for the unit of measurement. All other types (DAE, 3DS, OBJ) must be placed properly, otherwise they may import at "0,0" (off the coast of Africa).Trick #1

If you are using CityEngine, you can drag and drop your shape from the Navigator window into the scene (this workflow assumes a scene coordinate system is already set). When you export the shape to a multipatch feature class, the coordinate system is created with the data so you can bring it into another ArcGIS product.Import OverviewTrick #2

The same workflow can be accomplished in ArcGIS Pro. Create an empty multipatch feature class, navigate to Editor > Create Features > Select Model, and click the globe to place the model.SelectModel-300x125.pngTrick #3Use the Replace with Model tool (ArcScene or ArcGlobe) or the Replace with Multipatch tool (ArcGIS Pro).replace.pngArcGIS Desktop Replace with ModelArcGIS Pro Replace with MultipatchTrick #4

If you are using ArcScene, ArcGlobe, or ArcGIS Pro, manually place the model during an edit session using the Move, Rotate, or Scale operations.Move, rotate, or scale a featuremove.pngNote: There is known issue with the Import 3D files tool. The placement points parameter is not honored so as of ArcGIS 10.4.1 or ArcGIS Pro 1.3, this tool is not a viable option. This issue is planned to be fixed in a future release.


To import your 3D file with textures, you must ensure the texture resides next to the 3D file, either as an individual image file or a folder with the images.Note: Both the file and folder must have same name for the software to recognize the texture.Trick #1

Textures are only supported in file or enterprise geodatabases. Shapefile multipatches do not support textures, so make sure to import the multipatch into a geodatabase.


Make sure your 3D data has valid z-values. When sharing a web scene or importing the data into ArcGIS Pro, you want to make sure the elevation values are correct.Trick #1

If your multipatch is not at the correct elevation, you can use this trick. In ArcGIS Pro,Elevation-300x190.pngset the multipatch data "on the ground" and use the Layer 3D To Feature Class tool. The elevation values are then embedded into the multipatch.Trick #2

If you are using simple feature data (non-multipatch), use the Add Surface Information tool to add z-values to the data. Also, you can add z-values to an attribute table and with the Add Z Information tool, you can verify the values with the tool's output. If the data does not have valid elevation values, see the next tip.

Tools to Create 3D Data

Understand which tools can create 3D data: Layer 3D To Feature Class, Interpolate Shape, or Feature To 3D By Attribute.

Understanding 3D Data

Understand your 3D data. Extruded 2D polygons are not true 3D features, so you must export to multipatch to make the polygon a true 3D feature. Simple point, line, and polygon features can be considered 3D data if they have the correct z-values. 2D features can also be symbolized using 3D marker symbology.

Know the difference between a z-enabled feature class and a non-z-enabled feature class with a z field in the attribute table. Feature classes must be z-enabled to display at the correct elevation. You might see a z field in the attribute table, but that does not mean the geometry has the correct z-values. This can be verified by editing the vertices or adding z-values to an attribute table, as described above.

While this blog does not cover every facet of working with 3D data, it is my hope that this will provide some valuable information for working with 3D data on the ArcGIS Platform.
Andrew J. – Desktop Support Analyst

1 0 2,453
Esri Contributor

Get-map-data2.jpgThe CityEngine 2016.0 release was a ground breaking release. For those who are new to CityEngine and unfamiliar with the workflows, the new release cuts out a significant amount of time required to access and prepare data for use in CityEngine. For those who still want to use their own data…great!

You can find more information about preparing your data here.

For those who want a quick way of getting data and getting a CityEngine project up and running as quickly as possible, CityEngine 2016 is here to help with the Get map data wizard.

The Get map data wizard can be accessed by opening a scene in CityEngine and going to File > Get map data.  In the wizard, use the map to zoom to and select the area you want data from. The area selected can be from 500 m x 500 m to 100,000 m x 100,000 m. Three types of data can be grabbed by the wizard: Basemap, Esri World Elevation, and OpenStreetMap.

The basemap data is used as imagery (also referred to as texture) to be draped over the elevation layer. The basemap options allow you to select the basemap you want (Satellite, Streets, Topo, Dark Gray, or Light Gray), along with the image resolution. The resolution you select will determine the number of pixels the imagery has. The actual resolution of the imagery will depend on both the extent and resolution. For example, a 500 meter extent with a low resolution of 1024 pixels wide is less grainy than a 1,000 meter extent with the same resolution. As high resolution is not available across the globe, you may need to choose a lower resolution or larger area to get data. The Esri World Elevation will pull terrain data, or digital elevation model (DEM) data, from the Esri elevation service. OpenStreetMap data includes networks (streets) and polygons (building footprints).  OpenStreetMap is an open source, user-produced dataset, so coverage cannot be guaranteed, particularly for building footprints.

One thing to keep in mind when selecting data is that CityEngine is a memory intensive program and the larger the area and the higher the resolution, the more memory is required. If the computer has limited memory, you must consider that when selecting data to import.

With each new version of CityEngine, the software gets smarter, easier, and more groundbreaking. This blog only touched on the Get map data portion of the software, but there are more exciting features to check out, such as sharing scene packages, alembic modeling, and accessing data from ArcGIS Online. For a full list of new features, go here.

Rebecca R. & Andrew J. - Desktop Support

0 0 665
Esri Contributor

Looking for a way to model your city in 3D? Look no further! To create a 3D model of a real world city in CityEngine that can be used for city planning, modeling of 3D phenomena, or even in 3D gaming environments, all you need is a DEM, streets data, and building footprints.For those with CityEngine 2016.0, please read this post that shows you how to quickly prepare data for CityEngine with the Get map data wizard.

Before you bring your GIS data into CityEngine, however, there is some data preparation involved. Here, we review key information you need to know before getting started.Final-1024x762.jpg

Common Terms used in CityEngine

Terrain = Digital Elevation Model (DEM)

Texture = Aerial Image or image for building facades

Graph = Streets

Lot = Building Footprint

Terrain and Texture

The first step is to gather your terrain and texture to overlay on top of the terrain. If you do not have a DEM, you can download one from the USGS. For terrains, 16-bit and 32-bit images with a maximum size of 4000 by 4000 pixels are supported. In order to verify the bit depth and number of rows/columns of an image, you can load it into ArcMap and check the information on the Source tab of the Raster Layer Properties.

Another key part of preparing the DEM and Aerial Image is to ensure that they have the same extent. This can be done in ArcMap by drawing a polygon graphic for the project area and running the Clip tool on the raster to clip both the terrain and texture to the same extent, or exporting the raster with the selected graphics as the clipping extent.

Another common issue is that the image has four or more bands. When this is the case, the aerial image will appear washed out. To resolve this issue, use the Make Raster Layer Tool in ArcMap and create a raster with three or less bands. The output from this tool will be temporary so it must be exported out in order to bring it into CityEngine.


A terrain draped with a texture.

Streets and Buildings

The second step is to obtain feature data for streets and buildings. Commonly used street formats include shapefiles, geodatabases, KML, and OpenStreetMap (OSM).  When you import the street data into CityEngine, sometimes there are messy intersections and merged nodes. We recommend using the Cleanup Graph tool to clean up these intersections, or manually edit the streets. If there are street segments that extend beyond the area of interest, use the selection tool to select the segments and delete them. Streets may also appear below the DEM - this can be rectified by running the Align Shape To Terrain tool, or manually raising the streets.

Additionally, OSM contains options for importing building footprints. With CityEngine you have the ability to generate your own lots, use your own data, or use those provided by a third party, such as OSM. An important distinction is that lots in CityEngine can represent the entire legal lot for a parcel, the building footprint, or lots with building footprints. When importing an OSM file, check the Highways and Buildings in order to import both the streets and the building footprints. Once the streets are imported they may be offset from the terrain and this can be remedied by using the Align Graph to Terrain tool in CityEngine. 


Adding streets and building footprints.


Once you have the terrain, texture, streets, and building data, the next step in data preparation is ensuring that your data is correctly projected. It is good practice to ensure that all layers are in the same Projected Coordinate System. CityEngine does not support Geographic Coordinate Systems such as WGS 1984 or NAD 1983 for the scene coordinate system, so the scene will need to be in a Projected Coordinate system. Additonally, CityEngine can only apply datum transformations for vector data. For terrains and textures you must ensure the datum matches the datum used in the scene. We recommend bringing the data into ArcMap prior to importing into CityEngine to ensure that everything lines up correctly and has the same projection. If you are downloading your data from OpenStreetMap, the OSM data format is not supported by ArcMap, so CityEngine will reproject the data to the scene projection and perform a datum transformation, if necessary (OSM uses the WGS 1984 Geographic Coordinate System.)

CGA rules

Once all data has been added to your scene, you can start the actual modeling. CityEngine uses CGA (Computer Generated Architecture) rules to programmatically generate buildings from footprints or lots. These rules determine the geometry of each building created (has four walls and a roof) as well as color, textures, height, number of floors, roof shape, and so forth. CGA rules usually have an element of randomness so that the city has a natural and varied appearance. For example, a rule could be created that all buildings are between 30 and 50 feet high and have roofs with pitches between 20 and 30 degrees.

Writing CGA rule files can be an involved process, but fortunately there are a number of pre-existing CGA rule files available to get you started:

  • The Buildings_From_Footprints.cga file found in the Esri.lib project (installed with CGA.)
  • A number of CityEngine projects with CGA files have been made available for public use and are available on ArcGIS Online by the CityEngine team here.
  • Esri also provides a number of tutorials and examples, most of which come with pre-made CGA files which can be copied and modified, and these can be found here.

If you are interested in writing your own CGA files, check out this tutorial as well as the CityEngine manual.


The building footprints and streets after CGA rules have been applied

3D models

If you have areas of the city with distinct architecture or landmark buildings, you may want to consider adding pre-constructed 3D models. These models can be created in one of the many 3D modeling software programs, such as Blender or 3ds Max, or purchased on a 3D warehouse such as 3D Warehouse or Turbo Squid. Just be sure that the models are in one of the supported formats (multipatch, DAE, FBX, KML, KMZ, and OBJ). Most 3D models are not created in projected space, but once they are added to CityEngine they can be scaled, rotated, and positioned as needed.


Adding 3-D models to the scene

How big can I go?

One question that we are frequently asked is “How big of a city can I have in CityEngine?”

There is no hard and fast rule for this, as it depends on the number of shapes, the complexity of the models, the number of textures, as well as your system memory and graphics card. You can check the system requirements and recommendations to see if your system can support CityEngine.

Remember that CityEngine is a modeling tool and not a visualization tool. When you are testing your rule files, it is generally good practice to only generate a portion of your city. This will improve performance both for the model generation and drawing. Then, when you have finalized the rules, you can generate all the models and export it to several different file formats (such as multipatch, DAE, FBX, KML/KMZ, OBJ, CityEngine Web Scene 3ws, Renderman RIB, and e-on Vue VOB) with the expectation that this may take some time if your city is very large.

Once the data is prepared, creating your model is just a question of bringing the data into a scene and applying the rule files. From there, you can refine your model by improving the CGA rule files, growing new streets and parcels to plan new developments, or creating a complex city with different rules for different sections of the city.

For more information about getting started with CityEngine, check out the links below.

Additional Resources:

Rebecca R. and Andrew J. - Desktop Support Analysts

0 0 4,316
Esri Contributor

furtureNYC-300x248.jpgCityEngine is a great way to create entire cities of textured, 3D building models without designing every building. These models can be used in 3D scenes, animations, and game platforms. However, when exporting models made in CityEngine to third-party software, there are a number of considerations. This blog post reviews settings options in the Export wizard to help you render CityEngine models in third-party software.

When you select your models and open the Export wizard (File > Export Models), you must first choose a format. The formats available for exporting models from CityEngine 2015 to 3D modeling software are:

  • Keyhole Markup Language (KML)
  • CityEngine Web Scene (.3ws)
  • Collada DAE
  • Wavefront OBJ
  • Autodesk FBX
  • E-On Software Vue VOB
  • Pixar RenderMan RIB
  • Esri FileGDB

The format you select depends on what formats are supported by third-party software. Some software products partially support formats (e.g., the software supports geometry, but not textures), and others do not fully support texture (e.g., OBJ only allows for one texture layer).

Once you select a format, you must adjust several settings to ensure the models display correctly in third-party software. As these settings vary from format to format, I will cover the concepts involved, rather than specific settings for each format.

Export Geometry: There are two options for exporting the scene, as shapes (i.e., building footprint polygons) or as models (3D buildings). There is also an option to export the shape fallback, which exports the scene with 3D models but falls back to the polygon footprint if the model cannot be exported.
Normals: Normals (vectors perpendicular to surfaces) are used in 3D modeling programs to determine surface appearance given a set light source. Normals can be calculated for either the faces or vertices of a model. Models with face normals appear more faceted, whereas models with vertex normals look smoother.
UVs: UVs record where and how textures are applied to 3D objects. Without UVs, textures cannot be applied to 3D models. In CityEngine, UVs are created for each surface, and UV mapping for the entire model is not supported. This means there is a UV map and a texture for each surface in the model, rather than a single map and texture for the model. Additionally, multiple textures may be applied to a surface (e.g., a building may have both a brick texture and a dirt texture to seem weathered), so surfaces can also have multiple UV maps. OBJ files only support one UV per surface, so when exporting a CityEngine model to OBJ, only the first UV layer is included.
Global Offset: Scenes in CityEngine have projections, so the coordinates of the models are usually very large. In contrast, most 3D modelling software is built around an origin at ‘0,0’ and does not have real-world coordinates. Clicking the center button calculates the center of the models and subtracts the center coordinates from the coordinates of the models, so when models are exported to other programs, the programs draw centered on ‘0,0’. However, if you bring models into an existing 3D scene, you may need to scale the models to the correct size and position.
Textures and Materials: Textures are image files applied to a surface; materials are comprised of one or more textures and information about surface reflectivity. To maintain the applied textures from CityEngine in a different software, materials must be included in the model, and textures must be collected (i.e., copied to the same location as the model). Some model formats also allow you to embed textures, which copies the images to the actual model, rather than next to the model in the folder.

For more information about exporting models in CityEngine, check out the CityEngine documentationthis CityEngine Essential Skills video, the documentation of your third-party software, as well as the following Esri Knowledge based articles:FutureCityUnity.jpg
Rebecca R. - Desktop Support Analyst

0 0 1,724
Esri Notable Contributor

The Keyhole Markup Lanuage (KML) is a popular format for distributing GIS data and models.  KML files are usually small enough to email, and they can be opened in a variety of free viewers.  KML is an option when exporting models from CityEngine.  You may find that the models are not being displayed in the expected orientation when viewed in Google Earth.


©2012 Google and ©2012 Commonwealth of Virginia

ArcGIS and Google Earth store and interpret KML files differently in that the Google Earth version is rotated by 180 degrees.  Because of this rotation difference, you will need to use one of the export presets based upon the software that will be used to view the data.KML_PresetOption.jpgThe Google Earth option sets a heading correction of 180 degrees.  This allows the model to display correctly.  Keep in mind though, if you apply the Google Earth preset, the KML will not display correctly in ArcGlobe.

©2012 Google and ©2012 Commonwealth of Virginia

Timothy H. - Raster/3D Support Analyst

0 0 489
by Anonymous User
Not applicable

buildings.pngCityEngine, through the use of CGA rules, allows for mass modeling of cities. In the current software, GIS support is available in the advanced version of CityEngine. You can access values such as land use, building heights, roof type, tree heights, etc. from a GIS feature's attribute table and then use that value to drive mass modeling rules. Below is a screen shot from the CityEngine Inspector window that shows GIS attributes for a shape that has been initialized for use through a rule file.


To access the GIS attribute table of a shape in your CityEngine scene, you will first need to “activate” the attribute in your rule file. This can be done by setting an initial value for that attribute at the beginning of your rule file. You can do this by initially setting all the values to zero for numeric values or to “” if it is a string field. For example, the CGA rule below will extrude shapes based on their value within the HEIGHT attribute.InitalizeGISCE.png

For further information and great examples of using GIS data to drive your model in CityEngine, check out the resources below.

Video: Generate 3D urban content based on standard GIS data

Forum post thread: GIS Data Mini Tutorial: Building Height and Floor SplitsCarrie D. – Raster Support Analyst

0 0 1,229
Esri Notable Contributor

Have you ever set up a workspace in CityEngine, copied your project into the workspace folder, but found that CityEngine didn't recognize the new folder? This can be avoided by following the import project workflow described below.

CityEngine Workspace1. Go to File > Import...2. Select Project > Existing Projects into Workspace.


3. Select the root directory and then select the project to be imported.

You can also choose the option to copy the project data over.  If this option is not selected, the project content will be linked into the workspace.


Once the import process completes, the projects folder will display in the navigator for the current workspace.  If it does not show, you may need to refresh the worksapce (File > Refresh Workspace).

Updated Workspace

Timothy H. - Raster/3D Support Analyst

0 0 637
Esri Notable Contributor

buildings_colored-150x150.pngCityEngine is a powerful product that can build amazing cityscapes.  Digging into this software can be a little tricky at first; however, the more you use it, the easier the functionality becomes.  Esri CityEngine on the ArcGIS Resource Center is a great place to start, as you take on the learning curve.  There are some tutorial videos and data templates available that will help you to better understand the software.  In addition to these resources, here are five quick tips for basic functionality within CityEngine.

Downloading Tutorials and Example Data
DownloadContext.jpgOpen the Help menu > Download Tutorials, then download the desired Tutorials and Examples from the Download Tutorials and Examples dialog.

During the download process, the option to run in the background can be set in the data status window, so that you can continue to work on your scene while the data is loaded.

View Settings
cityengine_viewsettings.jpgThere are a wide range of view settings that can be accessed from the Viewport settings dropdown. To the scene, you can alter lighting settings, activate reference information (grid, axes, compass, etc.).

There are also settings for the 3D display, such as wireframe, shaded, textured, or textured display with wireframe. Also, take note of the shortcut keys for toggling these settings.

Save Screenshot
SaveSnapshot.jpgFrom the bookmarks button in the viewport, you can access the functionality to save a snapshot/screenshot. The output dimensions can be set along with additional information elements. There are a variety of formats available to save the screenshot (.png, .jpg, .tiff, .bmp, etc.).

CityEngine Shortcuts
shortcuts.jpgThe Key Assist can be accessed from the Help menu or by pressing CTRL + SHIFT + L.  This will open a dialog at the bottom right corner with a list of all the shortcut keys.

With the Key Assist Window you can press CTRL + SHIFT + L again, to open the Preference dialog, where the default settings can be modified.

Window Layout
WindowLayoutSmall.jpgThere are many windows available within CityEngine, and you may find yourself looking for a specific one, such as the Viewport or Navigator. The Window Menu will give you access to all windows individually.
Using the spacebar, you can maximize a window to the full screen, docking the other window on the right border. Predefined layouts are available via the Window Menu > Layout.

There is also the ability to save a custom perspective if you have a particular setup you like.
I hope these tips have helped get you started using CityEngine. If you need additional help, visit the CityEngine section in the Support Knowledge Base or the CityEngine forums.

Timothy H. - Raster/3D Support Analyst

0 0 443
by Anonymous User
Not applicable

I am sure many of you have already heard about CityEngine, and some of you may have even already contacted Support Services with questions related to it. For those who haven't been introduced, CityEngine is a stand-alone software product that provides professional users in architecture, urban planning, entertainment, GIS and general 3D content production with a unique conceptual design and modeling solution for creating 3D cities and buildings. It allows professional users in GIS, CAD and 3D to do the following:

  • Quickly generate 3D cities from existing 2D GIS data.
  • Do conceptual design in 3D, based on GIS data and procedural rules.
  • Efficiently model virtual 3D urban environments for simulation and entertainment.

CityEngine screenshots of Rotterdam

CityEngine also provides advanced capabilities for the direct export of the generated 3D city models out to other software tools, such as data management/analysis packages (like ArcGIS), 3D editing software (like Maya or 3DS Max), geo-visualization tools (like ArcGlobe or Google Earth), game engines (like Unity or Unreal), high-end rendering solutions (such as RenderMan), or web-ready cloud rendering services (like RealityServer).

If you work with 3D data, I would strongly recommend trying out CityEngine. You can start by downloading the CityEngine Free 30-day Trial. If you would like to know more about CityEngine, please contact us or review the information on the linked pages below.
If you are already using CityEngine and have ideas to further enhance the product, please post your ideas at CityEngine Ideas portal and/or post your comments at CityEngine Forums.Pavan Y. - Raster Unit Development Technical Lead

0 0 532