Main Content

How Surfaces Work in RoadRunner

Using the Surface Tool, you can model surfaces around roads, such as walkways, driveways, parking lots, and natural terrain. The terrain surface model interacts differently with various aspects of a scene.

Terrain Surface Model

Terrain surfaces are region graphs bounded by curves. For more details about region graphs, see Region Graph Editing.

RoadRunner creates some curves automatically, such as the curves on the boundaries of roads. You can create other curves manually by using the Surface Tool.

Here is an example of a single terrain surface bounded by manually created surface curves:

Bird's-eye view of flat, green, terrain surface bounded by curves

The points on the graph edge curve are curve end nodes, which can be shared by multiple curves. In most regards, these curves use the same UI concepts outlined in the Curve Editing and Polygon Editing topics.

In particular, each curve has a tangent direction that can be modified to change the shape of the curve, as shown in this image:

Surface with tangent highlighted at one of the curves

Each surface curve can have one surface connected to each side. The nodes can be shared by any number of surface curves. In this manner, the surface curves form a contiguous (nonoverlapping) patchwork of surfaces called a surface graph.

For example, you can split an initial surface into two surfaces by digitizing new surface curves in the interior, taking care to share end nodes on the perimeter of the surface:

Surface split into two sections

Surfaces also support enclosed surfaces, that is, surfaces within surfaces. Any time a loop of surface curves lies entirely within the interior of another surface, it creates a new surface in the interior.

The following image shows two nested levels of enclosed surfaces:

Green surface with a gray, circular interior surface nested inside it. A smaller, red, circular surface is nested inside the gray surface.

Avoid overlapping surfaces. Surfaces that overlap in the xy dimension cause visual artifacts, or "z-fighting" artifacts.

These artifacts can be seen in the following example, where a new loop of surface curves crosses the existing surface curves:

Overlapping surfaces containing visual artifacts

To correct this issue, you must split the original surface curves to introduce nodes. Multiple surface curves then share these nodes

This image includes corrected nodes.

Overlapping surfaces with corrected nodes

Surfaces and Roads

Roads automatically participate in the surface graph.

Roads that lie entirely within a terrain surface behave much like enclosed surfaces. Terrain surface curves are automatically created around the perimeter of the road network, forming an enclosed road surface.

In the following image, a simple intersection that was created using the Road Plan Tool has been digitized in the interior of the surface:

Simple intersection added to surface

As with overlapping surfaces, roads that overlap a surface curve can cause visual artifacts.

For example, dragging the end of a road such that it crosses a surface curve causes artifacts:

Intersection crossing a surface curve that contains visual artifacts

One way to correct this issue is to adjust the containing surface such that the roads are fully enclosed:

Intersection enclosed within a surface curve, with no visual artifacts

You can also connect surfaces directly to roads. This connection enables surfaces to automatically move when the roads are moved, helping to avoid overlaps.

In the following image, the three nodes attached to the roads are highlighted in red. The two nodes at the end of the road are created automatically and cannot be removed or deleted in the Surface Tool. Nodes can also be added parametrically along the side of a road. These points can be inserted anywhere along a road, dragged along the road, or deleted.

Surface connected to a road. The surface nodes attached to the road are displayed in red.

When surfaces are attached to these road surface nodes, moving the road automatically adjusts the surfaces.

In the following image, the end of the road is moved clockwise:

Road moved clockwise, with the connected surface adjusted for the move


Only nonbridge portions of road surfaces participate in the surface graph. For more details, see the Road Construction Tool. The surface graph ignores road construction spans that are marked as bridges.

For example, the selected construction span in the following image is marked as a bridge:

Road bridge span above another road


A bridge span that has similar elevation to the surfaces underneath it can produce visual artifacts. To avoid artifacts, use the Road Height Tool to change the elevation of the bridge span so that it is above the ground surface beneath it.

Extruded Surfaces

Surfaces have an optional height attribute. If the height is nonzero, the surface is vertically extruded upwards. By increasing the height, you can create simple mock buildings, as shown here:

Nested surfaces with heights increased to form simple mock buildings

Surfaces and Elevation

By default, the heights within a surface are automatically interpolated from the heights of the surrounding surface curves.

For example, this image shows a surface containing curves that have a nonzero height, represented as a positive z-coordinate:

Surface that has a nonzero height and trees on it.

In scenes with elevation maps, that is, Elevation Map Assets, each surface can optionally use the elevation maps to define the interior elevations of the surface. For more details, see Control Whether a Surface Uses Elevation Samples.

See Also

| | |

Related Topics