Geometric Definitions for Roadways

Hey, all!

I’m attempting to come up with a way to accurately model roadways based on civil engineering construction data. I’ve managed to use two curves (one defining the top-view road centerline, the other applied as a bevel object defining the cross section of the roadway) which gives fine results that are an approximation of the real roadway. But I need to be able to enter the actual design geometry to get accurate results.

First, I need to be able to get the top-view (plan) centerline of the roadway into Blender from CAD. I haven’t tried bringing it in as a path yet, but I assume this is the way to do it. Anyone have a suggestion as to the best format? (eps, ai, etc)

Next, I need to get the vertical (profile) of the road into Blender. In my approximations discussed above, I’ve just tweaked the Z-values of the 3D roadway curve. But actual roadway designs use vertical profiles with parabolic curves defined by three parameters: 1) calling out a specific point along the alignment (the Station), 2) the point of intersection (P.I.) of the in-coming and out-going tangents of the vertical curve, and 3) the elevation of that point of intersection.

Using a 3D Bezier curve to define the roadway centerline doesn’t seem to be the answer, since the actual roadway geometry for the top view and profile view would need to have control points at different locations.

My guess is that I’ll need to define the top-view with a Bezier curve and then somehow break subdivide that curve into a large number of small segments. After this is done, each of the small segments will have their control points adjusted vertically to their proper elevation based on the geometric profile definition.

I know this is a bit technical, but I’m hoping somebody has already tackled it. In order to help with my explanations, here is a link to a roadway Plan and Profile construction sheet showing what the profile geometry looks like:

Thanks in advance for any and all suggestions!


I hope I understand you correctly!
On the image attached below i did the following steps:

  1. Create curve of the horisontal road profile.
  2. Bevel that curve with straight curve defining the road width. Convert to mesh at this point.
  3. Create curve of the vertical road profile.
  4. Use the latter as curve modifier on the created mesh.

Note: All curves are 2D, axis orientation is very important in this case. The length of the horisontal and vertical curves should be equal.

As you can see the curves have different control points for defining horisontal and vertical curvature of the road. Both surfaces on the figure match together in top view.

If that is what you want to do and still cannot figure it out I will send you the blend file.


Hey, wow! Thank you for putting so much effort into your response!

I’m pretty new to Blender (though not to 3D in general), so I’ll have to see if I can figure out how to do steps 3-4. It looks like there’s a good possibility this’ll work.

The one concern I have is that applying the vertical curve (step 4) will vertically distort the road cross roadway cross section (the “bevel” curve applied to the original top-view curve). I’ll see if I can figure out how to do step 4 and see what I end up with.

Did you have an opinion on the best format to import the horizontal/vertical curves from CAD?

Thanks again for the great response! I’ll let you know if I can’t figure out how to do step 4.


Okay! Progress! :slight_smile:

I figured out how to apply the vertical curve to the mesh created by the original horizontal curve and the cross section. There doesn’t appear to be any vertical distortion on the cross section, so that’s excellent!

When you say that “the length of the horizontal and vertical curves should be equal,” I assume that you mean the curvilinear length, aka the length along the curve itself. Is there a way to find out what the curvilinear length is for a curve? The Object Properties only gives me the X, Y, and Z rectilinear dimensions. So I’d be in trouble if, say, my horizontal curve goes around a 90-degree turn.

In any case, this definitely puts me in much better shape than I was in before. Thank you so much for the assist! And any further help on this problem would be very very welcome. I still haven’t tried bringing the horizontal and vertical curves in from CAD and would welcome any tips in this department.


I meant the linear distance between start and end points of the curves on the coordinates, not the actual length. Unfortunally I don’t know easy way to find that length.
I could find it in this manner:

  1. Duplicate the curve.
  2. Move down a bit. In edit mode select all internal CPs and delete them (X). Set end CP to Vector type.
  3. Select end CPs and Scale them to 0 along the apropriate axis (Hold Ctrl for precision). You’ll get a straight line.
  4. To measure the length of that line there is a PrintLen button in Curve and Surface panel. Click on it and you’ll get the length in Blender Units. Note: PrintLen works only if you turn on CurvePath button!!! You can measure the curve of the road the same way if you need that information;)
    About the Import type of your drawings I cannot advize you which is the best. Just to know that even if you import a mesh type the edges could be converted to curve through script. Then set all CPs to Automatic and Blender will try to smooth the curve out.
    I think those links could be helpfull: