Add Hex Colors to Buildings

07-18-2016 10:12 AM
Status: Open
Labels (1)
Esri Contributor

Currently it is hard to get correct colors for large amounts of buildings to show in 3D in ArcGIS Pro or City Engine.   I propose tools to do this.  One would select colors from a list and the other would apply colors from Imagery.   By using colors instead of textures in City Engine/ArcGIS Pro and scenes online, the draw time is much faster on procedural buildings.


The first tool to allow you to select building polygons and choose among many colors (hex) to assign to the buildings randomly.   A field would be added (default SideColor)  and you would choose from an extensive list of colors with a weight on it for the percentage of buildings you wish that have that color.     You would select the buildings in the area, check against Bing's Bird's Eye or Google or streetview of the colors used in that area on the sides of buildings..   Then you would weight the percentage with the colors selected.   The percentage would change as new ones were added (if you add 5% to a new one, all others selected would dropped by 5% to result in the total selected percentage to be 100%).   The tool would take those colors and percentages to apply randomly to the building footprints.


Enter Building Footprints: Buildings_Footprints

Enter Field to add and assign random hex colors to: SideColor


A second tool would use a resampled segment mean shift image to get the roof color from the imagery and apply it to the polygon field (default RoofColor).    It would take the centroid inside of the polygon to get the RGB color from the Segment Mean Shift of the resampled high resolution imagery and then convert that color to hex to populate the field.  A prototype of the tools is at Arthur's Feature Extraction from LiDAR, DEMs and Imagery


I have been experimenting with automated random coloring of the buildings, as well as cel shading:

This kind of rendering is very easy to implement. However, one problem that has been brought to my attention is that the color of the building is an important channel of communication with user for tools that presumably would want to use it for their purposes. Closing this channel by assigning forced colors would take away the meaningful part of output.



Applying color to a field that the user can symbolize that the user can symbolize for the building if they wish too, it's just another option.   My tool applies it to the 2D buildings as a field, then symbolize off of the field to make 3D with the color applied using Local Government Scenes symbology.   The next step is to make it a multipatch feature with the colors embedded.   The user can have two featureclasses, on to color to make it somewhat more realistic and one to apply colors to based off use.  An example of this is the FortBendTX_3D_Buildings_Scene_Layer on


The colors were added from imagery for the roofs from a Segment Mean Shift image using the Hex Color tool (see my blog).   The color applied to sides were from images of houses for sale in the county using the hex tool to get random colors to apply.

Arthur Crawford - Esri


There is a difference between what your tool does and what I want to solve. Your tool creates multipatches with actual color, so when it comes to rendering the color is already present in the polygons. What I want to do is to color the gray mass of multipatch buildings that come to the rendering with no embedded color at all. So the building materials (not only colors since we have lighting) in this case must be preset on the Scene level and cannot be assigned to polygons. This is where area building color/material percentages may come into play for me (I think this is the great idea!).


I need to cover the shell of 3D buildings with a series of even tiles. In fact, I am looking for a kind of fishnet toolbox for 3D buildings. Do you have any idea about that?


Hi Micheal, you could use our panelizer rule for this. You can find this rule in the Assess Visibility and Shadow Impact Analysis solutions. This rule allows you to create 3D panels on multipatches which you can then use to run analysis on. Let me know if this works for you. Gert