Coons Mesh

The Coons Mesh generator provides the user with a simple yet effective tool to enable free-form mesh development by defining the four side-curves enclosing a region in space.

Usually found in CAD software, Coons Mesh is based on the Coons surface definition (Wikipedia) which requires four curves to meet at their reciprocal end points and defining the mesh vertex positions by bi-linearly interpolating the discrete positions across the curves.


To adapt to user’s individual workflow the Coons Mesh generator can operate using the standard approach pinning input curves as generator’s children or to populate the proper curve’s link in the Attribute Manager.


General parameters

  • S-steps: Number of mesh subdivisions in the “S” direction.
  • T-steps: Number of mesh subdivisions in the “T”direction.
  • Junction Type: Type of junction check to operate on the curves’ start/end points [Tight/Loose]. “Tight” mode forces the ending points of the curves to meet with the tolerance specified by the “Junction Tolerance” (see below). “Loose” mode permits the mesh to be created even if the four curves don’t match at ending points (“Junction Tolerance” is ignored).
  • Junction Tol.: Junction check tolerance value (used also to auto-flip curves’ direction).
  • Flip Normals: Invert mesh normals for coherent mesh connections.

N-th curve parameters:

  • Link: Link to the n-th input curve (disabled if children pinned under the generator).
  • Sampling: Sampling mode used to sample curve to define point positions [Natural/Uniform]. “Natural” mode samples the curve based on its slope variation. “Uniform” mode samples the curve applying a constant step.
  • Cleanup: Enables curve clean-up to remove redundant points found within the specified tolerance.
  • Tol.: Curve clean-up tolerance.

Best practice

  1. Keep the curves as simple as possible to avoid awkward point distribution in the final mesh.
  2. Avoid using splines with multiple segments. Please favour single segment splines with more points rather than splines featuring multiple segments with less points.
  3. When possible explode multi-segment splines to obtain single-segment splines.
  4. Start using low values for S/T steps in order to refine the model later on with other operators (Subdivision Surface, Connect object, Symmetry, etc.).
  5. Use open curves/splines. Closed splines may (and will) lead to unexpected results.
  6. All of Cinema 4D’s open procedural splines are supported (Arc, Cycloid, …).
  7. Prefer “Tight” junction connection type over “Loose”. Although “Loose” might be helpful in certain situations (i.e. when using splines obtained by deformers or other generators which could hardly be controlled to meet at a specific point), “Tight” provides you with the most coherent results creating a mesh whose shape and final appearance properly matches the expected result.
  8. Using the link-fields instead of child splines to define the generative curves, enables mutual updates when a curve is used on two or more Coons Mesh generators. Very useful to create connected patches of Coons Meshes (use Connect object as parent to get smooth seams).

Curves setup

The four curves enclosing the region can be specified following a CW or CCW order. Preferring the first to the second mode has no influence except for the orientation of the polygons’ normals.

The following orders for the input curves are allowed (1st ->2nd -> 3rd ->4th):

  • Red -> Yellow -> Blue -> Green
  • Yellow -> Blue -> Green -> Red
  • Blue -> Green -> Red -> Yellow
  • Green -> Red -> Yellow -> Blue
  • Green -> Blue -> Yellow -> Red
  • Blue -> Yellow -> Red -> Green
  • Yellow -> Red -> Green -> Blue
  • Red -> Green -> Blue -> Yellow


Curve cleanup

It might happen that during curve sketching multiple control points get positioned very close to each other, resulting in a very dense or degenerated curve. By activating “Cleanup” for a specific curve, the curve will be checked and if multiple points are found in a range specified by tolerance parameter only one is considered during the mesh creation time, leading to a cleaner and more evenly distributed mesh.

Junction Type

Although the Coons Mesh has been designed to work with a set of curves forming a closed loop, it might be useful, when input splines are generated procedurally by other tools, to let the Coons Mesh compute a result even if the splines’ end points are not matching. It’s relevant to note that final mesh extension depends on the position of curves 2 and 4 endpoints and is not influenced by the moving endpoints of curves 1 and 3.

  Coons Mesh (116.3 KiB)

Share this project

Please rate this


  1. very useful, but needs some improvments, i would to have generated splines in specific shapes like rectangle with number of points can add on each spline, this allows us to speed up workflow rather than did it manualy

  2. This looks good, we have spline patch so will compare. Is there anywhere we can suggest request plugins/issues? Would be great if you could turn on/off takes marks with a drag select like the traffic light system in the object manager. Takes ages if you have a large number of takes (no pun intended).

  3. Having played around with this for only a little while it already feels like a natural addition to the existing modeling toolkit that I will be able to use use on many occasions.
    Selecting two splines and then their overlapping points to move a corner of the shape is a bit cumbersome though. Maybe we could have a setting to snap/link endpoints between splines so you don’t have to constantly switch to object mode to select the spline and then back to points mode to select the points you want to manipulate. Hope this makes sense. Great work, thanks!

    • It looks fantastic! Cinema4D has a sketch spline tool, it would be cool to use this functionality.
      The only problem ignores spline depth of the space, as your example of video.

  4. What about allowing a 3 spline setup ? Imagine one arc XZ and two arcs XY plane rotated to start and end of XY arc. Splurf can do that even on parametric arcs, Spline patch can to it as well but needs splines ….

    • Something interesting to add and already on the todo. Thanks for sharing your comment.

Leave a Reply

Your email address will not be published. Required fields are marked *