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 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:
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:
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:
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:
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:
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.
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:
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:
One way to correct this issue is to adjust the containing surface such that the roads are fully enclosed:
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.
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:
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:
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.
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:
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:
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.