Mesh or surface, understanding the difference

I’m trying to understand the difference between a mesh and a surface.
More accurately, i’m trying to understand when to use mesh and when to use surface.

So far google has only found this answer for me

"A mesh is a collection of triangles and quadrilaterals. It is defined internally as a list of vertices (points) and faces (each face connects either three or four vertices). Meshes also support per vertex normals and colours, as well as a host of other properties.

A surface is, well, a surface. It consists of a single smooth area but may have custom edges. If a surface is just a (deformed) rectangle and it has no custom edges, it is called an ‘untrimmed’ surface. Surfaces with custom edges or holes punched into it is called a ‘trimmed’ surface.

A brep is one or more surfaces joined together. If a brep only contains a single face, then it is the same thing as a surface. For surfaces to be joined together into a brep, they need to share some of their edges." Source

And while it explain some difference, i’m also looking to understand the processing speed of both.
Cause i’ve been reading around a bit, and the general consensus seems to be that mesh computes way faster than a surface and even more so with higher and higher complexity.
This consensus is what makes me wonder, why even work in surfaces if meshes are superior in compute time?
What are the advantages and disadvantages of both?

Thanks for reading and best regards, WCPM, an achitecture student.

1 Like

Meshes are to (NURBS-) surfaces what pixels are to vectors, I would say. Meaning, meshes have a “resolution” & don’t scale well :wink:

A “surface” is continuous, defines the shape of it’s edges and the shape everywhere within the edges. Surface data is a set of numbers which can be used in a formula to determine the coordinates of a point anywhere on a surface. Also the direction perpendicular to the surface, the curvature of the surface and other characteristics can be determined anywhere on a surface.

A mesh is a set of points called vertices, and information about how the vertices are linked. By itself a mesh does not define anything between the vertices. “Faces” which are small, individual surfaces, can be created from mesh data and are often used to define the shape between the vertices. There are other schemes such as sub-sivision for filling the spaces between mesh vertices. Repeat sub-division repeatedly and the set of points approaches a surface. However sub-division generally offers only limited control over the resulting shape.

Whether a mesh or a surface is better or faster depends on the task and the geometry involved. Meshes are inherently faster for the computations involved in displaying geometry on a screen. Rhino creates a display mesh whenever a surface is to be displayed. The display mesh is automatically updated when the surface is changed. Meshes may be easier to use to model a complex shape such as a face, plant or rock.

Surfaces are usually better if smooth surfaces or geometric shapes are involved, such as automobiles furniture, boats, aircraft, consumer products. Accurate modeling is usually easier with surfaces. Surfaces also provide any desired level of control of the shape. Operations such as intersection or trimming can be simpler due to the inherent ability to calculate the coordinates anywhere on a surface. Such operations with meshes usually use the faces which is equivalent to using a set of simple surfaces.

Creating a mesh from a surface, even a complex surface, is computationally simple or even trivial, and is easy to automate. Creating a complex surface from a mesh can take orders of magnitude more computations and may require significant human intervention.

Distinctions between meshes and surfaces becomes somewhat blurred for planar surfaces and faceted shapes.


Quick list of pros and cons.

Surface good:

  • Analytically defined geometry (it’s smooth no matter how far you zoom in).
  • Small memory/file footprint (you do not need many points to define a curvy surface, however the benefits are somewhat mitigated by the fact that every surface carries around a display mesh used for shading).
  • Simple topology (a surface is always a finite uv patch topologically speaking, makes it easier to develop algorithms for them).
  • Accuracy (because surfaces are analytical, things like intersections yield accurate results).

Surface bad:

  • The maths involved is difficult.
  • It’s difficult if not impossible to exchange surface data with other 3D applications.
  • Topologically limited (sort of the flip-side of the topological simplicity argument. Sometimes you need a higher genus shape and then a single surface will no longer cut the mustard).

Mesh good:

  • Simple definition (points, polygons connecting those points, there done).
  • Highly exchangeable with other apps.
  • Modern graphics hardware is really good at displaying meshes fast.
  • No topological constraints.
  • Lots of published research and algorithms for meshes, not so much for nurbs surfaces.
  • You can associate specific colours with specific points on the mesh.

Mesh bad:

  • It’s not smooth, it’s discrete.
  • It can be really difficult to perform operations on the mesh shape, because there is no intrinsic parameterisation.
  • There’s lots of ways in which a mesh can be invalid.

Thanks to you both.
Very thorough explanation and a huge insight.
Much appreciated

@DavidRutten Do you mean that it is It’s difficult if not impossible for Rhino to exchange surface data with any other 3D application, or do you mean that is It’s difficult if not impossible to exchange surface data with other 3D applications which do not use surfaces? I’d be very surprised if you mean the former, though I will not be surprised to see you quoted by folks who claim Rhino has problems with data exchange such as in a recent post on Boat Design Forum. Perhaps an edit would be useful.

1 Like

I‘m confused by this particular statement either. And somehow not:

In my experience there is only a problem with trimmed surface data, since some application store trimmed data 2d others 3d or both and some express trimmed data as a closed Nurbs while others store them as single curves per edge. A few programs can deal with any case some do not. So it has to get converted correctly. Usually every program which implements the basic denominator, iges or even step formats should at least be able to load in untrimmed surfaces with ease. Sometimes heavy and weird trimmed surfaces create display errors, since surface tesselation is different in any CAD and depending on the complexity sometimes tesselation fails or is inproper. But this also means if you create clean and light geometry it will also be beneficial on export/import. But arguing like this, some mesh/polygon modeller encounter same issues if they do not support n-gons, sub-ds or a certain meshtype, missing uvs etc.
But its also true that, because of the simplicity of meshes, export usually is much easier and reliable. Cross mixing is generally a bad idea. Especially Mesh to Nurbs. Meshes in surface modellers should be nothing more then a better reference.

A very nice list. Here’s a few more, with an accent on Subdivision meshes and rendered output.

Mesh good:
Meshes with Subdivison surfaces optimized topology are far more suitable for vertex level animation than surface models (all animated 3D characters are made with meshes). For animation visually extremely complex models may get represented with very slim underlying topology (rendertime subdivision, normal mapping, displacement). Similar isn’t doable with surface models.

Nurbs bad:
Nurbs surface models automatically have UVs which traditionally gets brought forward as a great advantage over meshes. In practice one typically ends up with Nurbs polysurfaces and convoluted UV layouts which prove useless for realistic texturing work.

A model like, say a car rim may easily consist of hundreds of small surfaces and every little fillet carries its own silly UV set. With Subdivision Surfaces meshes it very easy to let something made from one piece of meat appear like one piece of meat.

With meshes it’s also easier to retain existing UV work after model-changes. Nurbs modeling often means actively replacing existing topology – or the software needs to recreate surfaces under the hood. Consequenty one needs to redo the UVs after every model update. The inherent disadvantage for texture work is one of the reasons why finished Nurbs models are often remodeled as meshes for marketing purposes.